Sebelumnya, saya ingin berbagi pengalaman pribadi mengenai interview yang berujung scam, justru berbahaya untuk kita sendiri
karena data kita bisa di curi, secara tidak sadar( Karena interview nya live & share screen dengan orang yang bersangkutan jadi jika
tidak fokus, mungkin bisa saja kita terjebak).Untungnya pada kasus saya si attacker tidak berhasil melancarkan aksinya.Berikut ceritanya.
Di siang hari yang cerah, saya iseng-iseng buka Linkedin.Ada notifikasi chat oleh seseorang menawarkan
untuk posisi sebagai full time remote, berikut chat nya
Dengan tawaran seperti itu, saya sangat tertarik.Lalu dia membuatkan link untuk tahap interview mengunakan google meet
Setelah itu, saya di interview oleh beliau dan menanyakan project apa yang pernah saya kerjakan, Role sebagai apa, Sallary expectation
Lalu, beliau bertanya user github saya, kemudian saya di invite kesebuah project mengunakan nodejs dan dia meminta saya untuk
share screen , karena dia bilang ini tahap screening ( Sejauh ini tidak ada yang mencurigakan )
Setelah di invite, saya disuruh baca mengenai project tersebut, dan clone project tsb.
Clone project pun sudah saya lakukan, kemudian saya selalu check fungsi-fungsi berbahaya seperti eval ( why eval ??? coz eval is evil)
karena fungsi eval mampu mengeksekusi string sebagai kode.
Jika string tersebut berasal dari sumber yang tidak terpercaya (seperti input pengguna), maka penyerang dapat menyisipkan kode berbahaya untuk dijalankan.
bisa membaca lebih lengkap disini atau artikel lainnya how-evil-is-eval
Disini saya menyadari ada file yang sangat mencurigakan pada file ./server/app.js:152 kemudian saya coba check like code tsb
dan benar saja, fungsi tsb di panggil saat calling utils.assets() pada file ./server/config/util.js
dan tidak sampai disitu saya cek file ./public/models/.svn/bower_components/assets
Kemudian, dalam sesi interview saya hanya bilang ke si interviewer (nice try diddy, kemudian saya end-call)
disini ada hal diamana saya curiga code javascript yang di obfuscated seperti tsb.Biasanya code yang di obfuscated itu sengaja agar
code nya itu sulit di baca orang & menyulikan untuk di reverse atau memang isinya sengaja di masukan malicious code ( memungkinkan untuk mencuri file-file penting di laptop kita)
Dalam bahasan ini akan saya bagi menjadi beberapa bagian:
1. Static Analisis
2. Dynamic Analysis & Simulasi
Static Analysis
pada revesing kali ini, kita fokuskan pada bagian fungsi javascript yang tadi, file js tsb, saya simpan di sini
code tsb setelah di de-obfuscated bisa di check (namun masih ada beberapa code yang perlu di rapihkan agar tetap bisa di baca) sini
disini ada beberapa fungsi yang saya skip, jadi hanya fungsi penting saja yang saya bahas.
pada fungsi tsb, _0x3c0bfd terlihat untuk mendapatkan informasi seperti hostname, platform, homedir & tmpdir
kemudian ada initial host http://86.104.74.51:1224
jika saya check host tersebut sudah di bikin dari tanggal 2024-03-28
selain itu code yang di obfuscated tadi, akan mengambil data sensitif seperti:
1.Wallet config Solana (Jika anda pemain crypto currency, sudah tidak asing dengan hal ini)
2.Firefox (bisa mencuri informasi password yang disimpan di browser Firefox )
3.Wallet Exodus (wallet yang digunakan untuk menyimapn crypto )
4.Keychain (layaknya password management yang bisa menyimpan informasi seperti password, para pegguna mac pasti sudah tidak asing )
5.Chrome (bisa mencuri informasi password yang disimpan di browser Chrome)
6. Brave Browser (bisa mencuri informasi password yang disimpan di browser Brave)
7.App Data/Config App (akan mengambil beberapa info config pada setiap aplikasi yang di install)
kemudian setelah mendapatkan informasi penting tersebut, akan di upload ke server http://86.104.74.51:1224/uploads
dengan http method POST
Dynamic Analysis
Langkah awal, siapkan VMware atau environtment khusus untuk menghindari serangan, dan ubah host tersebut menjadi localhost,
contoh : http://86.104.74.51:1224 menjadi http://127.0.0.1:1224, jadi nanti kita bikin localhost server sendiri.
dan jangan lupa gunakan debugger.
setelah itu buka Chrome DevTools dengan cara mengakses chrome://inspect dan klik Open dedicated DevTools for Node
setelah itu, otomatis console akan kebuka seperti ini, kemudian klik Step
bisa kita lihat isi setiap variable
_0x1e3887: sohais-MacBook-Air.local // hostname
_0x20b1f0: darwin // platform
_0x4753a5: /Users/sohai // homedir
_0x171a9c: /var/folders/d_/865r6lh90g5cn8bcy1p99z6m0000gn/T //tmpdir
setelah itu, mengecall fungsi _0x59c6d8 terdapat pengecekan platform, karena platform yang saya gunakan darwin
maka, code melakukan request ke URL http://127.0.0.1:1224/client/5/507 karena saya set nya ke localhost, maka sewajarnya 404
namun jika saya ubah request langsung dengan curl dengan host aslinya http://86.104.74.51:1224/client/5/507,
isinya berupa code python yang di encode mengunakan base64 kemudian di compress mengunakan zlib dengan iterasi 50x, dan bahayanya kode tersebut jika di execute
dalam compailer python akan lansgung di eksekusi.
hasil decode seperti ini ( selanjutnya akan saya bahas setiap fungsi nya)
bisa kita lihat terdapat 3 fungsi utama, yakni:
1. download_payload
2. download_browse
3. download_mclip
yang nantinya setiap fungsi tersebut akan merequest sebuah file pada host http://86.104.74.51:1224/ kemudian akan menyimpan file tersebut pada homedir
dan di execute secara background.
1. download_payload
melakukan request URL http://86.104.74.51:1224/client/5/507 file di save pada /homedir/.n2/pay atau /Users/sohai/.n2/pay
setelah itu file tersebut di exekusi. untuk file decode nya bisa di cek disini
* ada hal menarik, jika os Darwin maka code tersebut langsung di hentikan / exit.
2. download_browse
melakukan request URL http://86.104.74.51:1224/brow/5/507 file di save pada /homedir/.n2/bow atau /Users/sohai/.n2/bow
setelah itu file tersebut di exekusi. untuk file decode nya bisa di cek disini
jika saya check code merupakan malware namun cukup unik untuk mencari payload nya, karena disimpan dalam host pastebin dengan merandom
beberapa list URL kemudian di XOR mengunakan key !!!HappyPenguin1950!!! sebagai contoh dari pastebin https://pastebin.com/raw/suEqUQBY
jika saya XOR lagi outputnya adalah http://23.254.229.101/cat-video ( saya membuat decodernya bisa di check disini )
3. download_mclip
melakukan request URL http://86.104.74.51:1224/mclip/5/507 file di save pada /homedir/.n2/mlip atau /Users/sohai/.n2/mlip
setelah itu file tersebut di exekusi. untuk file decode nya bisa di cek disini
dirancang khusus sebagai keylogger, jika aplikasi seperti chrome.exe & brave.exe running, maka akan merekam setiap ketikan keyboard
kemudian ada pengecheckan ismnemonic ( ini khusus untuk wallet crypto) dengan kata lain, si attacker sengaja mengincar wallet crypto kemudian
semua data akan di kirim ke host http://95.164.7.171:8637/api/clip dengan method POST
lanjut ke debugger,
jika file tersebut berhasil di download.Maka payload tadi akan disimpan dalam nama file /Users/sohai/.sysinfo
lalu akan menge eksekusi file tersebut python3 /Users/sohai/.sysinfo
setelah itu code akan menge call fungsi _0x4e6119(), bisa kita lihat di sebelah tab kanan
code tersebut berhasil mengelisting setiap aplikasi seperti Chrome, Brave, Opera,
serta beberapa extension plugin pada chrome seperti :
[
'nkbihfbeogaeaoehlefnkodbefgpgknn',
'ejbalbakoplchlghecdalmeeeajnimhm',
'fhbohimaelbohpjbbldcngcnapndodjp',
'ibnejdfjmmkpcnlpebklmnkoeoihofec',
'bfnaelmomeimhlpmgjnjophhpkkoljpa',
'aeachknmefphepccionboohckonoeemg',
'hifafgmccdpekplomjjkcfgodnhcellj',
'jblndlipeogpafnldhgmapagcccfchpi',
'acmacodkjbdgmoleebolmdjonilkdbch',
'dlcobpjiigpikoobohmabehhmhfoodbb',
'mcohilncbfahbmgdjkbpemcciiolgcge',
'agoakfejjabomempkjlepdflaleeobhb',
'omaabbefbmiijedngplfjmnooppbclkk',
'aholpfdialjgjfhomihkjbmgjidlcdno',
'nphplpgoakhhjchkkhmiggakijnkhfnd',
'penjlddjkjgpnkllboccdgccekpkcbin',
'lgmpcpglpngdoalbgeoldeajfclnhafa',
'fldfpgipfncgndfolcbkdeeknbbbnhcc',
'bhhhlbepdkbapadjdnnojkbgioiodbic',
'gjnckgkfmgmibbkoficdidcljeaaaheg',
'afbcbjpbpfadlkmhmclhkeeodmamcflc',
]
salah satunya adalah metamask.
ada beberapa step yang saya skip, seperti (mengecheck setiap Profile sampai 200)
contoh iterasi ke 71
dan setelah semua data berhasil di ambil, terakhir semua file tersebut akan di upload ke server attacker.
karena disini host aslinya saya ganti menjadi http://127.0.0.1:1224.
Dari dynamic analisis, bisa kita dapatkan List API pada host 86.104.74.51
1. GET http://86.104.74.51:1224/client/5/507 ( init dropper backdoor )
2. POST http://86.104.74.51:1224/uploads ( upload logger )
3. GET http://86.104.74.51:1224/brow/5/507 ( dropper berupa malware )
4. GET http://86.104.74.51:1224/mclip/5/507 ( dropper berupa keylogger )
5. GET http://86.104.74.51:1224/pdown ( download compailer python3 untuk windows )
kemudian host tambahan 95.164.7.171 sebagai penampung keylogger
1. POST http://95.164.7.171:8637/api/clip ( upload hasil keylogger )
List port yang terbuka:
siapa tahu, ada yang mau silaturahim ke host tersebut, ( mau coba hack balik mungkin)
Kesimpulan, sebagai developer kita harus selalu hati-hati ketika ada orang yang tidak di kenal untuk mengjalankan suatu program,
walaupun itu terlihat seperti soal interview.Dan selalu check library yang kita gunakan, mungkin saja library yang kita gunakan jg tidak aman.
dependency-confusion
dan terimakasih untuk kalian, yang mau menyisihkan waktu untuk membaca artikel ini.