___ ___                                 .__              
     /   |   \   ____ ___  ___         _______|__| ____   ____  
    /    ~    \_/ __ \\  \/  /  ______ \___   /  |/    \_/ __ \ 
    \    Y    /\  ___/ >    <  /_____/  /    /|  |   |  \  ___/ 
     \___|_  /  \___  >__/\_ \         /_____ \__|___|  /\___  >
           \/       \/      \/               \/       \/     \/ 
    
            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.