Python-Assisted Red-Teaming Operation

Ini adalah rangkuman presentasi yang saya berikan pada Sabtu, 23 November 2019 di PyCon ID 2019 berkolaborasi dengan M Dzikri Ramdhani. Secara singkat kami membahas bagaimana Red-Team bekerja dan bagaimana Python dapat dimanfaatkan untuk mendukung kegiatan Red-Team.

Slide terkait telah dibagikan ke slideshare [1].

Security, terutama Cyber Security, adalah praktik meminimalisir risiko ancaman yang dapat merusak hingga melenyapkan suatu aset penting dengan cara mengidentifikasi dan menanggulangi potensi terjadinya ancaman.

Seringkali kita melihat dalam suatu pandangan terbatas, menangani apa yang dapat kita lihat dari sudut pandang diri kita sendiri. Kita tidak siap ketika hal-hal yang tidak terduga terjadi. Kita tidak bisa memperkirakan bagaimana attacker menyerang kita. Kita tidak terbiasa melihat dari sudut pandang orang lain.

Tapi pertanyaannya, bagaimana kita bisa memprediksi serangan yang dapat mengarah ke kita secara langsung dan tak langsung?

Mari kita coba mengubah pandangan kita dengan mencoba melihat layaknya seorang “musuh”.

Introduction to Red Team

“Attack is the secret of defence; defence is the planning of an attack”

Men in red suites

Red Teaming berasal dari praktik militer, dimana security posture dievaluasi dengan cara berperan sebagai musuh untuk menyerang. Red Teaming (dilakukan oleh Red-Team) yang sesungguhnya adalah simulasi serangan secara full-scope, multi-layered yang didesain untuk mengukur seberapa baik security control sebuah organisasi dapat menahan serangan dari ancaman nyata.

Full-scope berarti serangan dilakukan menyeluruh terhadap semua aspek yang mungkin dimiliki oleh organisasi. Entah itu sistem maupun manusia yang mengoperasikannya, baik secara langsung maupun tidak langsung.

Multi-layered berarti bahwa simulasi serangan tidak berhenti pada satu titik saja. Tidak akan puas ketika mencapai satu lapis saja. Red-Team berusaha untuk melakukan compromise sedalam mungkin hingga tujuan tercapai.

Semua aspek dalam simulasi direncanakan dan dieksekusi dengan baik sehingga dapat benar-benar meniru bagaimana serangan sesungguhnya terjadi.

Red-Team membutuhkan kriteria yang cukup banyak. Seorang yang sedang melakukan Red-Teaming haruslah memiliki:

  1. Pemahaman yang dalam terhadap sistem (sistem komputer, protokol, libraries, dsb).
  2. Kemampuan berpikir kreatif dan tak terduga.
  3. Kemampuan mengembangkan software.
  4. Kemampuan penetration testing.
  5. Kemampuan social engineering.

Meskipun seorang praktisi bekerja dalam sebuah tim, seorang anggota Red Team sebaiknya menguasai semua aspek tersebut sehingga dapat bertindak secara fleksibel, menyesuaikan situasi.

Tactics, Techniques, Procedures

“Inside the mind of Threat Actor”

Red-Teaming adalah simulasi serangan dengan penuh perencanaan dan dieksekusi dengan baik untuk mencapai hasil yang optimal. Untuk menyimulasikan serangan nyata, dikenal istilah TTP (Tactics, Techniques, procedures) yang menjabarkan langkah-langkah sistematis sebuah serangan.

Tactics, adalah garis besar tahap-tahap yang dilakukan dalam serangan, tahap berbeda dalam sebuah operation/ campaign. Tactics mendeskripsikan, dari awal hingga akhir, cara Threat Actor beroperasi dalam pandangan global.

Techniques, adalah pendekatan teknologi yang dilakukan untuk mencapai sebuah tujuan jangka pendek atau menengah selama campaign. Techniques adalah penjabaran ide dari sebuah Tactic dalam skala yang lebih praktikal. Misal kita akan melakukan phishing, korban akan menerima sebuah payload berupa browser exploit yang akan mengambil alih browser ketika sebuah pesan dibuka.

Procedures, adalah deretan aksi yang dilakukan. Procedure mendeskripsikan dengan detail apa yang harus dilakukan untuk mencapai target berdasarkan Technique yang dipilih. Langkah-langkah ini menjabarkan detail bagaimana sebuah technique dieksekusi.

TTP tidak harus direncanakan secara utuh dari awal. TTP dapat dirangkai dan diimprovisasi sejalan dengan aktivitas Red-Teaming. Merangkai TTP yang tepat sesuai dengan situasi merupakan hal utama.

Untuk memudahkan Red-Team (maupun Blue-Team), beberapa serangan telah diidentifikasi dan dirangkum ke dalam katalog yang disebut sebagai MITRE ATT&CK [2]. Katalog MITRE ATT&CK dapat diakses secara bebas.

Lockheed Martin Cyber Kill Chain

Lockheed Martin, setelah melakukan observasi yang sangat teliti, menyimpulkan bahwa sebuah Red-Team dapat terbagi menjadi beberapa tahap kunci yang disebut sebagai Cyber Kill Chain. Meskipun serangan sesungguhnya dapat dieksekusi dengan cara yang berbeda, namun setidaknya Cyber Kill Chain memberikan gambaran bagaimana sebuah serangan (APT atau Advanced Persistent Treat) bekerja.

Metodologi Cyber Kill Chain terdiri atas 7 (tujuh) tahapan, yaitu:

  1. Reconnaissance
  2. Weaponization
  3. Delivery
  4. Exploitation
  5. Installation
  6. Command & Control
  7. Exfiltration

Reconnaissance, adalah tahap dimana Red-Team akan mengumpulkan segala informasi mengenai target. Mesin yang dapat diakses secara publik, identitas dan informasi personal dari pegawai sebuah organisasi, dokumen yang dipublikasikan, dsb. Semua situasi dalam dan luar organisasi dikumpulkan untuk dapat merangkai tactics yang tepat.

Weaponization, adalah tahap mempersiapkan eksploit dan payload (sebagai weapon) yang tepat untuk dikirimkan ke target. Weapon ini kemudian menjadi sarana bagi Red-Team untuk mendapatkan akses awal menuju sistem secara keseluruhan.

Delivery, adalah tahap menyampaikan atau mengirimkan weapon ke target yang telah dipilih. Delivery mempertimbangkan jenis interaksi yang dilakukan terhadap target (langsung atau tak langsung), tingkatan interaksi yang dilakukan, serta banyaknya korban yang ditargetkan.

Exploitation, adalah tahap eksekusi “weapon” yang dikirimkan kepada korban untuk mendapatkan akses awal ke sistem.

Installation, adalah tahap dimana Red-Team menanamkan keberadaan di sistem. Red-Team akan berusaha untuk mendapatkan akses tetap dan dapat diandalkan sehingga eksploitasi lebi dalam dapat dilakukan dalam waktu yang lama. Pada tahap ini, Red-Team umumnya menggunakan banyak kombinasi seperti malware, eksploit, dsb untuk dapat menguasai dan mengendalikan bagian dari sistem.

Command & Control, adalah tahap dimana sistem yang telah compromised melapor ke suatu node yang disebut sebagai Command & Control. Bagian sistem yang dikuasai dapat dikendalikan secara jauh untuk mempermudah eksploitasi lebih dalam.

Exfiltration, adalah tahap dimana Red-Team mengakses asset penting organisasi dan mengambil informasi tersebut.

Seperti yang dapat dilihat, Cyber Kill Chain menitikberatkan kepada serangan terhadap manusia yang terlibat dalam sistem sebagai tahap awal operasi.

Sejauh ini kita bahas Red-Team, bagaimana dengan Python?

Cyber Security ❤ Python

“Python Bytes”

Cute but venomous

Sebagian besar kalangan security menyambut positif Python. Apa yang membuat Python begitu populer?

  1. Python didesain untuk rapid prototyping. Artinya, mengembangkan proof of concept menjadi lebih mudah.
  2. Python sangat sederhana dengan struktur yang bersih sehingga kode dapat mudah dibaca dan digunakan.
  3. Python memiliki library yang sangat banyak, sehingga memudahkan interfacing.
  4. Python banyak diadopsi, sebagian besar distro linux memasukkan Python sebagai software default. Compromise sebuah mesin Python berarti memberikan akses ke lingkungan yang sangat kaya.

Populernya Python menyebabkan banyak tools dikembangkan menggunakan Python. Selain itu, banyak tools yang meski tidak dikembangkan dengan Python telah menyediakan fitur scripting berbasis Python untuk mengakses semua fitur yang ada pada tools tersebut. Yang tidak kalah penting, apabila tools yang sesuai kebutuhan tidak tersedia, maka kita bisa mengembangkannya dengan mudah.

Offensive Python

“Python for Red-Team Operations”

Dimana Python bisa digunakan? Setidaknya dalam pengalaman kami di MII Cyber Security, kami melihat ada 3 (tiga) lokasi dimana Python bersinar:

  1. Infrastructure Preparation
  2. Attack & Exploitation
  3. Miscellaneous

Infrastructure Preparation

Intrastruktur merupakan hal yang menunjang operasi. Infrastruktur yang baik akan sangat membantu dalam operasi jangka panjang. Setiap bagian dalam campaign seperti mengirimkan payload, menerima hasil, hingga mengendalikan sistem lain membutuhkan infrastruktur memadai. Tentunya setiap bagian infrastruktur haruslah dapat dipersiapkan dengan cepat untuk menghadapi situasi-situasi tertentu.

Infrastuktur yang digunakan haruslah dapat melindungi informasi yang dipertukarkan, tersebar, dan terlindungi dengan baik sehingga menghindari deteksi dari pihak Blue Team. Infrastruktur juga haruslah fleksibel dan mampu beradaptasi menyesuaikan prioritas atau tujuan.

Kami menilai setidaknya terdapat empat bagian infrastruktur yang menjadi kunci.

  1. Command & Control Server
  2. Payload Server
  3. Phishing Server
  4. Redirector.

Apabila dibutuhkan campaign dalam waktu lama, maka kami menganjurkan untuk memisahkan keempat server sebagai entitas berbeda.

Terdapat bahasan di kalangan praktisi Red-Team, apakah sebaiknya sebagian atau semua infrastruktur diterapkan secara serverless atau tidak. Serverless maupun tidak memiliki pertimbangan masing-masing. Namun untuk bahasan kali ini, kami tidak akan jauh masuk ke pembahasan tersebut.

Command & Control (C2) Server adalah server yang digunakan untuk mengenalikan mesin yang telah dikuasai. Sebuah C2 server dapat digunakan untuk beragam operasi secara bersamaan dengan beragam target. Server C2 yang baik haruslah dapat memberikan akses yang andal dan tersembunyi.

Payload Server adalah server yang menyimpan semua eksploit dan payload yang akan diberikan ke target. Payload server dapat pula bertindak sebagai server pertama yang dihubungi oleh korban untuk segala hal yang bertujuan menipu dan memanipulasi korban.

Phishing Server adalah server secara khusus digunakan sebagai delivery dalam kegiatan phishing. Phishing Server adalah sebuah SMTP server dengan reputasi yang bagus sehingga menghindari terdeteksi sebagai spam. Server ini menangani penjadwalan pengiriman email.

MII Cyber Sec memiliki beberapa Phishing Server yang tersebar dalam berbagai region. Server dikoordinasikan dengan sebuah script python sehingga pengiriman pesan dapat terjadi secara fleksibel.

Redirectors adalah “proxy” yang diletakkan di depan tiap server penting untuk memberikan ketahanan (resilience) dan kerahasiaan (concealment) terhadap server-server kritikal. Redirector adalah server yang sengaja dibangun dengan konsep dapat ditinggalkan sewaktu-waktu.

Infrastruktur yang telah dipersiapkan tidak begitu saja dapat langsung digunakan. Sebagian server memerlukan identitas palsu untuk dikenalkan kepada dunia. Salah satunya adalah domain name. Domain dengan reputasi baik akan memperbesar kemungkinan untuk melewati deteksi dari perangkat security.

Tidak semua domain memiliki reputasi yang baik di awal. Umumnya, domain yang berafiliasi dengan entitas besar (perusahaan multinasional, misalnya) besar kemungkinan memiliki reputasi yang baik.

Salah satu praktik yang dilakukan dalam persiapan sebuah infrastruktur adalah berburu domain dengan reputasi baik. Banyaknya domain yang berafiliasi dengan entitas besar umumnya memiliki kendala dalam pengelolaan nama sehingga seringkali dijumpai beberapa domain berstatus kadaluwarsa (expired) dan dapat dengan bebas diperoleh.

[3] Tools: DomaiHunter (https://github.com/threatexpress/domainhunter)

Hunt expired domains for categorization / reputation

Attack & Exploitation

Python dapat digunakan dalam sebagian besar tahapan Cyber Kill Chain, terutama saat melakukan serangan dan eksploitasi. Bergantung pada strategi yang digunakan serta situasi yang ada, eksploitasi dapat dilakukan tahap-tahap tertentu atau digunakan secara intensif.

Umumnya, ada beberapa tahap yang membutuhkan eksploitasi:

  • Mendapatkan pijakan awal untuk masuk ke sistem target.
  • Lateral movement atau compromise sistem lebih luas dan lebih dalam.
  • Compromise pihak ketiga yang memiliki kaitan dengan target.

Di bagian ini kita akan bahas beragam tahapan dalam Cyber Kill Chain yang dapat memanfaatkan Python.

Kill Chain: Reconnaissance

Reconnaissance atau mengumpulkan segala informasi terkait target. Kita dapat memanfaatkan beragam tools yang ada untuk mendapatkan inforamsi tentang asset (machine, application), identitas (pegawai, pemilik, mitra, dsb), dokumen, hingga metadata.

OSINT (Open Source Intelligence) atau praktik mengumpulkan informasi dari sumber publik, salah satu praktik yang sedang hangat dibahas. Terdapat beberapa tools python yang digunakan untuk mengumpulkan tipe informasi yang spesifik maupun agregasi dari berbagai tipe informasi sekaligus.

Setidaknya terdapat tiga tools yang kami anggap cukup baik dalam kategori ini:

[4] Tools: Recon-NG ( https://github.com/lanmaster53/recon-ng)

Reconnaissance framework, module based, powerful environment to conduct web-based reconnaissance

[5] Tools: Belati ( https://github.com/aancw/Belati)

Collecting public data & public document from website and other service.

[6] Tools: Pwndb ( https://github.com/davidtavarez/pwndb)

Search leaked credentials

Tidak jarang, information gathering dilakukan secara aktif dengan scanning dan probing suatu application.

Bagaimana layout dari suatu jaringan? Bagaimana implementasi segmentasi jaringan yang dilakukan? Policy seperti apa yang diterapkan? Packet seperti apa yang dianggap berbahaya? Dan terkadang untuk menjawab pertanyaan-pertanyaan tersebut kita memerlukan custom tools yang memanfaatkan protokol jaringan tertentu.

[6] Tools: Scapy ( https://scapy.net/ )

Packet manipulation and decoder to send, sniff, dissect, and forge network packets.

Apa saja web application yang dimiliki? Direktori apa saja yang ada pada suatu domain? Pertanyaan tersebut bisa dijawab dengan melakukan scanning terhadap direktori-direktori yang umum digunakan.

[7] Tools: OpenDoor ( https://github.com/stanislav-web/OpenDoor )

Directory Scanner

Dalam kasus tertentu, kita memerlukan untuk fuzzing satu atau lebih bagian tertentu dari URL, untuk menentukan error point yang dapat kita manipulasi.

[8] Tools: Wfuzz ( https://github.com/xmendez/wfuzz/ )

Web Fuzzer framework

[9] Tools: Pyfuzz ( https://github.com/AyoobAli/pyfuzz)

URL fuzzing tool

Kill Chain: Delivery

Apabila kita akan berinteraksi dengan manusia yang berkaitan dengan target (pegawai, pemilik, mitra, dsb), seberapa jauh interaksi itu akan kita lakukan? Apakah hanya menjebak mereka untuk memberikan credentials? Atau mengeksploitasi dan menginfeksi perangkat mereka? Baik kedua situasi tersebut memerlukan phishing site yang andal.

Phishing site menjadi alternatif yang banyak digunakan dalam Red-Teaming. Untuk setiap campaign phishing yang dilakukan, perlu satu atau lebih halaman site yang fungsional dan tidak dapat disangka sebagai halaman palsu.

Beberapa hal yang perlu kita perhatikan adalah:

  • dukungan terhadap SSL connection.
  • dukungan terhadap 2FA.
  • fleksibilitas dalam pengembangan campaign baru

[10] Tools: CredSniper ( https://github.com/ustayready/CredSniper)

Phishing framework on top of micro-framework for rapid development

Kill Chain: Command & Control

Setelah Red-Team menanamkan keberadaanya di infrastruktur target, Red-Team perlu bergerak efisien untuk dapat mencapai target. Apakah eksploitasi lebih lanjut perlu dilakukan? Apakah keberadaan Red-Team di infrastruktur diketahui? Bagaimana sebuah campaign dapat dilakukan dalam jangka panjang?

Red-Team perlu mengelola semua mesin yang telah dikuasai untuk dapat digunakan kemudian. Baik untuk eksploitasi lebih lanjut atau bahkan sebagai decoy (mengelabui pihak defender). Red-Team harus dapat mengetahui status dari sebuah mesin dan dapat memerintahkan eksekusi sebuah perintah dari jarak jauh. Dan tentu saja, tanpa diketahui.

Untuk mengelola dan mengendalikan mesin yang telah dikuasai dalam satu panel yang sama, Red-Team memanfaatkan Command & Control center atau C2. Beberapa Alternatif C2 yang sering digunakan:

[11] Tools: Empire ( https://github.com/EmpireProject/Empire)

Post Exploitation framework for Windows, Linux, OS X target

[12] Tools: SILENTTRINITY ( https://github.com/EmpireProject/Empire)

Asynchronous collaborative post-exploitation agent

Kill Chain: Exploitation

Bagaimana jika terdapat case dimana sebuah application diterapkan di lingkungan cloud? Serangkaian eksploitasi bisa dilakukan secara spesifik terhadap cloud environment.

[13] Tools: Pacu ( https://github.com/RhinoSecurityLabs/pacu )

[14] Tools: AWS Pwn ( https://github.com/dagrz/aws_pwn )

AWS exploitation framework and toolkit

Bagaimana jika eksploitasi dilakukan untuk lingkungan enterprise yang memanfaatkan teknologi enterprise tertentu?

Umumnya kalangan enterprise menerapkan Active Directory untuk mengatur device, people,dan data ke dalam satu sistem yang tersentralisasi. Beberapa tools dapat membantu untuk mengumpulkan informasi dan melakukan eksploitasi terhadap jaringan enterprise yang memanfaatkan teknologi file sharing, single-sign on dan naming.

[15] Tools: CrackMapExec ( https://github.com/byt3bl33d3r/CrackMapExec )

Map SMB network, crack credentials, and execute command.

[16] Tools: DeathStar ( https://github.com/byt3bl33d3r/DeathStar)

Using Empire’s RESTful API to automate gainining domain Admin in Active Directory.

[17] Tools: Responder ( https://github.com/SpiderLabs/Responder )

LLMNR, NBT-NS, MDNS poisoner and rogue authentication server.

Dan seringkali kita memerlukan malicious code tertentu yang dapat menghindari deteksi oleh sistem pertahanan.

[18] Tools: Winpayloads ( https://github.com/SpiderLabs/Responder )

Undetectable windows payload generation.

[19] Tools: Cloak ( https://github.com/s0md3v/Cloak )

Generate payload and inject into pyhon scripts

Kill Chain: Data Exfiltration

Goal semua Red-Team adalah untuk mendapatkan informasi berharga maupun hal-hal lain yang dapat menjadi ancaman bagi sebuah organisasi. Data berharga umumnya berupa dokumen dalam berbagai format, maupun data yang tersimpan dalam database.

Data exfiltration dapat dilakukan secara manual dengan cara membangun komunikasi yang aman antara target dan Red-Team. Komunikasi aman haruslah senyap dan tak terdeteksi. Agar dapat dilakukan tanpa diketahui, Red-Team tidak mengambil seluruh data sekaligus melainkan mengirimkannya dalam beberapa bagian, sepotong demi sepotong. Red-Team juga menghindari metode konvensional dan memilih untuk mengirimkan data dengan menyembunyikannya. Misal, Attacker menyematkan data ke body saat HTTP request, DNS resolve, ping request, dsb.

Selain secara manual, terdapat pula tool yang dirancang untuk mempermudah melakukan data exfiltration.

[20] Tools: PyExfil ( https://github.com/ytisf/PyExfil)

Python package for data exfiltration

Reference

[1] https://www.slideshare.net/xathrya/pythonassisted-redteaming-operation

[2] https://attack.mitre.org/

[3] https://github.com/threatexpress/domainhunter

[4] https://github.com/lanmaster53/recon-ng

[5] https://github.com/aancw/Belati

[6] https://github.com/davidtavarez/pwndb

[7] https://github.com/stanislav-web/OpenDoor

[8] https://github.com/xmendez/wfuzz/

[9] https://github.com/AyoobAli/pyfuzz

[10] https://github.com/ustayready/CredSniper

[11] https://github.com/EmpireProject/Empire

[12] https://github.com/byt3bl33d3r/SILENTTRINITY

[13] https://github.com/RhinoSecurityLabs/pacu

[14] https://github.com/dagrz/aws_pwn

[15] https://github.com/byt3bl33d3r/CrackMapExec

[16] https://github.com/byt3bl33d3r/DeathStar

[17] https://github.com/SpiderLabs/Responder

[18] https://github.com/nccgroup/Winpayloads

[19] https://github.com/s0md3v/Cloak

[20] https://github.com/ytisf/PyExfil

--

--