This blog talks about Computer, Security, Information technology, SEO, Video, etc. Now you can find all free things, Information Technology and Tips and Trick in this blog. JOIN ME KANG ASU

Breaking

Saturday, 3 April 2021

CallObfuscator - Hack API dengan ini

 Kang Asu

CallObfuscator - Mengaburkan Windows Apis Tertentu Dengan API Berbeda



Mengaburkan (menyembunyikan) impor PE dari alat analisis statis / dinamis.


Teori

Ini cukup maju, katakanlah saya telah menggunakan VirtualProtectdan saya ingin mengaburkannya dengan Sleep, alat akan memanipulasi IAT sehingga thunk yang menunjuk VirtualProtectakan mengarah ke Sleep, sekarang saat mengeksekusi file, windows loader akan memuat Sleepalih-alih VirtualProtect, dan memindahkan eksekusi ke titik masuk, dari sana eksekusi akan diarahkan ke shellcode, alat yang diletakkan sebelumnya, untuk menemukan alamat VirtualProtectdan menggunakannya untuk menggantikan alamat Sleepyang ditetapkan sebelumnya oleh loader.




Cara Penggunaan

  • Ini dapat dimasukkan langsung sebagai perpustakaan, lihat cuplikan berikut (berdasarkan contoh), Anda juga dapat melihat di cli.cpp .
#include <cobf.hpp>

int main() {
cobf obf_file = cobf("sample.exe");
obf_file.load_pe();
obf_file.obf_sym("kernel32.dll", "SetLastError", "Beep");
obf_file.obf_sym("kernel32.dll", "GetLastError", "GetACP");
obf_file.generate("sample_obfuscated.exe");
obf_file.unload_pe();
return 0;
};
  • Juga dapat digunakan sebagai alat baris perintah dengan menyediakannya dengan jalur PE input, jalur PE output dan secara opsional jalur ke file konfigurasi (defaultnya adalah config.ini).
    cobf.exe <input file> <out file> [config file]
    File konfigurasi berisi kebingungan yang diperlukan (dll, simbol, ...).
    Berikut adalah template untuk konten file konfigurasi
; Template for the config file:
; * Sections can be written as:
; [dll_name]
; old_sym=new_sym
; * The dll name is case insensitive, but
; the old and the new symbols are not.
; * You can use the wildcard on both the
; dll name and the old symbol.
; * You can use '#' at the start of
; the old or the new symbol to flag
; an ordinal.
; * The new symbol should be exported
; by the dll so the windows loader can resolve it.
; For example:
; * Obfuscating all of the symbols
; imported from user32.dll with ordinal 1600.
[user32.dll]
*=#1600
; * Obfuscating symbols imported from both
; kernel32.dll and kernelbase.dll with Sleep.
[kernel*.dll]
*=Sleep
; * Obfuscating fprintf with exit.
[*]
fprintf=exit


Contoh

Buat contoh kode ini

#include <windows.h>
#include <stdio.h>

int main() {
SetLastError(5);
printf("Last error is %d\n", GetLastError());
return 0;
};

Setelah membuatnya, seperti inilah tampilan impor kernel32



Sekarang mari kita mengaburkan keduanya SetLastErrordan GetLastErrordengan Beepdan GetACP(sebenarnya api apa pun dari kernel32 akan baik-baik saja meskipun tidak diimpor sama sekali).
Konfigurasi yang digunakan adalah

[kernel32.dll]
SetLastError=Beep
GetLastError=GetACP

Berikut adalah outputnya (Anda juga bisa menggunakan library secara langsung seperti yang ditunjukkan di atas).



Sekali lagi mari kita lihat impor kernel32



Tidak ada SetLastErroratau GetLastError
konfirmasi bahwa dua file akan bekerja dengan baik



Dampak

IDA HexRays Decompiler



Debugger IDA


 

Panduan


 

ApiMonitor



Itu karena semua alat analisis statis bergantung pada apa nama api yang tertulis di IAT yang dapat dimanipulasi seperti yang ditunjukkan.
Untuk ApiMonitor, karena menggunakan pengait IAT, masalah yang sama muncul.

Di sisi lain, untuk alat seperti x64dbg, nama api yang ditampilkan hanya akan bergantung pada apa yang sebenarnya dipanggil (bukan yang tertulis di IAT).



Tambahan

  • Menghapus PE yang dikaburkan dari memori tidak akan membatalkan penyamarannya , karena IAT yang dimanipulasi akan sama.
  • Tujuan utama alat ini adalah mengacaukan proses analisis (membuatnya lebih lambat).
  • Seseorang dapat mengaburkan simbol yang diimpor (dengan nama atau ordinal) dengan simbol lain (nama atau ordinal).
  • Kode shell dijalankan sebagai callback tls pertama yang memproses simbol yang dikaburkan yang diperlukan oleh callback tls lain sebelum titik masuk dieksekusi.
  • Kode shell dikirimkan sebagai kode c, dibuat saat alat dikompilasi untuk memudahkan pengeditan.
  • Nama simbol yang dikaburkan diselesaikan dengan hash bukan dengan nama secara langsung.
  • Alat tersebut menonaktifkan relokasi dan menghapus salah satu simbol debug.
  • Alat tersebut membuat bagian rwx baru yang diberi nama .cobfuntuk menyimpan kode shell dan data lain yang diperlukan.
  • Ini dapat digunakan beberapa kali pada PE yang dikaburkan yang sama.
  • Diuji hanya pada Windows 10 x64.
  • Dapatkan sumber dengan .git clone https://github.com/d35ha/CallObfuscator
  • Unduh binari dari Bagian Rilis .


SEMUA

  • Shellcode kebingungan (mungkin dengan obfusion ).
  • Mendukung simbol-simbol yang memuat penundaan.
  • Minimalkan ukuran bagian yang dibuat.
  • Kompilasi hashing waktu.
  • Pengujian yang lebih baik.




Regards

Kang Asu

No comments:

Post a Comment

# Silahkan berkomentar, bertanya dan kritik dengan sopan
# Disini anda boleh menyisipkan Link di kolom komentar
# Tetapi akan saya moderasi atau Review terlebih dahulu tiap komentar
# Jangan sampai komentar anda mengandung SPAM.

# Terima Kasih - Regards Muhammad Sobri Maulana