Не важно, как медленно ты продвигаешься, главное, что ты не останавливаешься.


Thursday 30 April 2015

Top Hat Sec : Reversing Mini Series Part 2

Top Hat Sec mempublish sebuah challenge tentang reverse engineering yang cocok untuk pemula yang ingin belajar dan mengenal tentang reversing. Challenge yang dibuat THC kali ini adalah kita harus menebak magic number yang ada diaplikasi crackme2, kira-kira seperti ini tampilannya.

Gambar 1 : Crackme2

File challenge dapat di download pada link ini : Crackme2[*]

Langsung saja, langkah yang pertama adalah mengamati alur dari aplikasi itu sendiri. Sebelumya, download aplikasi debugger seperti ollydbg , immunity debugger, dll. sesuai dengan selera masing-masing, yang saya gunakan pada saat ini adalah immunity debugger. Tidak lupa baca juga artikel tentang assembly language paling tidak sampai paham pengunaan general purpose register, karena jika kita berbicara tentang reverse engineer, pasti akan menemui bahasa "aneh" yang satu ini.

Gambar 2 : Proses ketika tebakan angka salah

Dari percobaan diatas, secara singkat alur dari program tersebut dapat digambar di bawah ini :

Gambar 3 : Flowchart
Flowchart pada gambar 3 merupakan hasil analisis sederhana terhadap perilaku aplikasi tersebut. Untuk melihat lebih dalam lagi, perlu menggunakan debugging tool.

Gambar 4 : Immunity Debugger Start
Lanjut ke analisa aplikasi melalui immunity debugger, run crackme2 step by step (F8) atau bisa juga dengan klik tanda panah pada gambar 4, dan amati perlakunya.

Gambar 5 : Breakpoint 1
Perhatikan, pada saat pointer menunjuk address 00401290 (highlight biru), aplikasi memanggil fungsi di alamat crackme2.00401000 dan menampilkan output seperti gambar sebelah kanan. Untuk lebih jelas proses apa yang dipanggil, follow (tekan enter) address 00401000.

Gambar 6 : Follow
Supaya bisa melanjutkan proses analisis, pasang breakpoint (tekan F2) pada address 00401000, re-run immunity dan lanjutkan step (F8).

Gambar 7 : Breakpoint 2
Pada address 004010F8, aplikasine loncat lagi ke address crackme2.0046A894, maka perlu dipasang breakpoint lagi, kemudian follow address 0046A894.

Gambar 8 : Breakpoint 3
Sampai disini (0046A894), Terlihat tanda dari crackme yang dijalankan, dari ASCII yang ada, dapat disimpulkan ketika magic number salah, maka print [FAIL], jika magic number yang kita masukkan benar, maka print [SUCCESS]. Pertanyaanya adalah, apa kondisi yang menyatakan bahwa x input adalah magic number?. Pasang breakpoint (F2), pada address 0046A894, kemudian lanjut lagi step by step (F8), jangan lupa untuk di re-run.
Gambar 9 : 0046A8CA User Input
0046A8CA, Call crackme2.00446864. output yang ditampilkan aplikasi meminta input magic number, sebagai contoh saya masukkan angka 88 dan perhatian step selanjutnya yaitu PUSH EDX. Jadi hasil input yang dimasukkan (88) dimasukkan ke register EDX.
Gambar 10 : EDX
Dan dapat dilihat pada gambar 10, nilai EDX sekarang adalah 00000058. 58? padahal input yang dimaukkan tadi adalah 88. Tidak ada yang salah dengan ini, 58 yang ada di EDX merupakan bilangan HEX, maka jika 58 diconvert ke decimal maka hasilnya 88. (silahkan dicek www.asciitohex.com)

Gambar 11 : CMP
Step selanjutnya setelah PUSH EDX adalah CMP nilai yang ada di [EBP-C] dengan 15E. Apa itu CMP? (silahkan dibaca di CMP artikel) yang menarik disini adalah bilangan yang dibandingkan dengan value dari [EBP-C]. Nilai dai [EBP-C] ternyata bilangan yang sudah dimasukkan 88 (0x58). nilai ini yang dibandingkan 15E, dan jika kita convert ke decimal maka 15E=350. Perhatikan instruksi selanjutnya JE crackme.0046A92B, apa itu JE? (baca). Sedikit saya jelaskan, JE (Jump Equal) artinya jika hasil compare 0x58 sama denngan 0x15E maka loncat ke address 0046A92B, yang artinya magic number yang seharunya dimasukkan adalah 15E atau 350.

Gambar 12 : Success
Ada apa di jump address 0046A92B, langsung saja di follow, seperti gambar diatas, terdapat ASCII code "[SUCCESS]". Setelah mengetahui magic number yang seharunya dimasukkan, mari ita coba lagi tanpa debugger.

Gambar 13 : 350, Success
And yes, 350, Success.

Sekian, semoga bermanfaat.


5 λ .: April 2015 Top Hat Sec  mempublish sebuah challenge tentang reverse engineering yang cocok untuk pemula yang ingin belajar dan mengenal tentang reversi...

Friday 17 April 2015

DFIR Challenge 2015


Digital Forensic and Incident Response (DFIR) challenge diselenggarakan oleh SANS yang tahun ini bertema network forensic challenge. Hadiah yang ditawarkan berupa training yang diadakan pada saat DFIR Monterey 2015. Sebagian besar soal yang diberikan berupa analisis dari paket capture dan juga log dari IDS.

File yang dibutuhkan dapat didownload di : http://dfir.to/FOR572-Challenge-Data

Pembahasan soal bisa dilihat pada link berikut :

DFIR Challenge Part 1
DFIR Challenge Part 2
DFIR Challenge Part 3
DFIR Challenge Part 4
DFIR Challenge Part 5
DFIR Challenge Part 6
5 λ .: April 2015 Digital Forensic and Incident Response (DFIR) challenge diselenggarakan oleh SANS yang tahun ini bertema network forensic challenge. Had...

DFIR Challenge Part 6

Difficulty: Very Hard
Evidence: snort.log.1340504390.pcap
Question: The traffic in this Snort IDS pcap log contains traffic that is suspected to be a malware beaconing. Identify the substring and offset for a common substring that would support a unique Indicator Of Compromise for this activity.
Bonus Question: Identify the meaning of the bytes that precede the substring above.

Dari barang bukti yang diberikan, didalam file pcap tersebut berisi traffic yang ditujukan ke 184.82.188.7. Sulit, ketika clue yang diberikan hanya file pcap dan kata kunci "substring", maka diperlukan analisa pada setiap traffic untuk mendapatkan substring yang dimaksud. Pada saat event berjalan saya tidak yakin dengan jawaban yang saya dapat, saya hanya 'mencurigai' substring tersebut adalah jawaban dari soal terakhir ini. Dari traffic yang ada file tersebut, ada substring di bagian data yang tidak berubah disetiap packet, lihat gambar 1.




Jika diperhatikan, pada setiap traffic terdapat substring yang tidak berubah yaitu "ULQENP2" (yang diwarnai kuning). jadi menurut saya, jawabannya adalah ULQENP2.

Jawaban : ULQENP2, pada offset 0x46

Pertanyaan bonus, apa arti dari substring sebelum "ULQENP2". Pertanyaan bonus ini tidak terjawab, namun saya coba untuk membahasnya dari writeup para peserta lain.

4fe6c274
4fe6c275
4fe6c277

Dikatakan bahwa substring (dalam bentuk hex) diatas merupakan timestamp, namun masih berupa code hex. Code python berikut dibuat untuk konversi hex ke format timestamp.

import datetime
import sys

print datetime.datetime.utcfromtimestamp(int(sys.argv[1],16))


Gambar 2: Convert.py

5 λ .: April 2015 Difficulty: Very Hard Evidence: snort.log.1340504390.pcap Question: The traffic in this Snort IDS pcap log contains traffic that is suspec...

Tuesday 14 April 2015

DFIR Challenge Part 5

Difficulty: Hard
Evidence: stark-20120403-full-smb_smb2.pcap
Question: What is the byte size for the file named “Researched Sub-Atomic Particles.xlsx”

Barang bukti yang diberikan berupa file pcap yang berisi SMB traffic. Dalam wireshark, terdapat fitur export untuk file yang dikirim melalui SMB. Klik File > export objects > SMB/SMB2, maka wireshark akan menampilkan list file yang dikirim melalui SMB. Pada gambar 1, dapat dilihat file researched sub atomic particle.xlsx terdapat pada packet dengan number 110725 file tersebut sebesar 13625 byte. 

Gambar 1 : List SMB File
Jawaban : 13.625 byte
5 λ .: April 2015 Difficulty: Hard Evidence: stark-20120403-full-smb_smb2.pcap Question: What is the byte size for the file named “Researched Sub-Atomic Par...

Tuesday 7 April 2015

DFIR Challenge Part 4

Difficult: Medium
Evidence: nfcapd.201405230000 (requires nfdump v1.6.12. Note that nfcapd.201405230000.txt is the same data in nfdump’s “long” output format.)
Question: How many IP addresses attempted to connect to destination IP address 63.141.241.10 on the default SSH port?

Soal ke-4, diberikan file capture yang membutuhkan nfdump untuk membacanya, juga dilampirkan file .txt untuk yang tidak menggunakan nfdump.

Gambar 1 : nfdump command
Dari command pada gambar 1, didapatkan hasil :
Gambar 2 : Hasil nfdump
Terdapat 55 flow data, yang menjadi pertanyaan adalah berapa ip address yang mencoba masuk melalui port SSH, maka dari hasil deretan IP dari nfdump harus difilter lagi agar mendapatkan IP yang benar-benar unik. Dari perintah nfdump diatas, ditambahkan option -q agar header/footer dari hasil nfdump tidak dicetak kelayar, sehingga informasi yang tercetak hanya IP addressnya saja.

Gambar 3 : Unik IP Address
Jawaban : 49 IP Address
5 λ .: April 2015 Difficult: Medium Evidence: nfcapd.201405230000 (requires nfdump v1.6.12. Note that nfcapd.201405230000.txt is the same data in nfdump’s “l...

DFIR Challenge Part 1

Difficulty: Easy
Evidence: SWT-syslog_messages
Question: At what time (UTC, including year) did the portscanning activity from IP address 123.150.207.231 start?

Tantangan yang pertama, peserta diminta untuk mencari kapan aktifitas portscanning dari ip 123.150.207.231 dimulai. Barang bukti yang diberikan berupa file log SWT-syslog_messages. Search ip source tersebut dengan cara manual atau dengan grep. Saya gunakan editor text biasa, dan saya dapatkan informasi sebagai berikut.

Aug 29 09:51:51 gw named[1004]: validating @0x7fa168551830: choices.truste.com A: no valid signature found
Aug 29 09:55:00 gw nfcapd[1213]: Ident: 'localhost' Flows: 7980, Packets: 36506, Bytes: 19442138, Sequence Errors: 0, Bad Packets: 0
Aug 29 09:55:00 gw nfcapd[1213]: Total ignored packets: 0
Aug 29 09:58:55 gw kernel: FW reject_input: IN=eth0 OUT= MAC=08:00:27:53:38:ee:08:00:27:1c:21:2b:08:00 SRC=123.150.207.231 DST=98.252.16.36 LEN=44 TOS=0x00 PREC=0x00 TTL=41 ID=35517 PROTO=TCP SPT=38553 DPT=3306 WINDOW=1024 RES=0x00 SYN URGP=0 
Aug 29 09:58:56 gw kernel: FW reject_input: IN=eth0 OUT= MAC=08:00:27:53:38:ee:08:00:27:1c:21:2b:08:00 SRC=123.150.207.231 DST=98.252.16.36 LEN=44 TOS=0x00 PREC=0x00 TTL=34 ID=45569 PROTO=TCP SPT=38553 DPT=587 WINDOW=1024 RES=0x00 SYN URGP=0 
Aug 29 09:58:56 gw kernel: FW reject_input: IN=eth0 OUT= MAC=08:00:27:53:38:ee:08:00:27:1c:21:2b:08:00 SRC=123.150.207.231 DST=98.252.16.36 LEN=44 TOS=0x00 PREC=0x00 TTL=26 ID=46106 PROTO=TCP SPT=38553 DPT=53 WINDOW=1024 RES=0x00 SYN URGP=0 

Dari data yang dicetak merah, aktifitas port scanning terjadi pada waktu Aug 29 09:58:55, bagaimana cara membedakan portscanning atau bukan, tinggal perhatikan destination portnya (DPT) yang berubah-ubah, maka dapat disimpulkan dari log tersebut bahwa kegiatan yang dilakukan adalah port scanning. Kembali ke soal, dimana yang ditanyakan adalah waktu dalam UTC, ada bukti lain yang mendukung waktu pada syslog sudah dalam UTC atau belum.

Aug 29 07:07:40 gw kernel: rtc_cmos rtc_cmos: setting system clock to 2013-08-29 11:07:08 UTC (1377774428)

Dari log diatas, didapatkan bahwa clock diset ke waktu 2013-08-29 11:07:08 UTC berbeda 4 jam jika dibandingkan waktu yang ada disyslog Aug 29 07:07:40. Maka perbedaan waktu yang disyslog adalah UTC-4. 

Maka kejadian portscanning yang dilakukan pertama kali oleh ip 123.150.207.231 dilakukan pada waktu 9:58 + 4 jam = 13:58 UTC sehingga:

Jawaban : 29 Aug 2013 13:58:55 UTC
5 λ .: April 2015 Difficulty: Easy Evidence: SWT-syslog_messages Question: At what time (UTC, including year) did the portscanning activity from IP address ...

DFIR Challenge Part 2

Difficulty: Easy
Evidence: nitroba.pcap
Question: What IP addresses were used by the system claiming the MAC Address 00:1f:f3:5a:77:9b?

Soal kedua diberikan file nitroba.pcap, yang berisi aktifitas jaringan yang direkam, yang dicari adalah ip yang digunakan oleh MAC address 00:1f:f3:5a:77:9b. Solusinya, buka file tersebut menggunakan wireshark, kemudian filter source mac address dengan 00:1f:f3:5a:77:9b.

Gambar 1 : Wireshark filter
Setelah difilter, terdapat packet ARP dari mac addess 00:1f:f3:5a:77:9b. Terdapat beberapa packet yang menyatakan mac address 00:1f:f3:5a:77:9b telah diketahui sebagai ip address 169.254.90.183, 192.168.1.64, dan 169.254.20.167


Cara yang lain adalah menggunakan tshark, dengan perintah :
tshark -r nitroba.pcap -Y "eth.src==00:1f:f3:5a:77:9b and ip" -T "fields" -e "ip.src"


Gambar 2 : Tshark filter
Jawaban : 169.254.80.183 , 192.168.1.64 , 169.254.20.167
5 λ .: April 2015 Difficulty: Easy Evidence: nitroba.pcap Question: What IP addresses were used by the system claiming the MAC Address 00:1f:f3:5a:77:9b? ...

DFIR Challenge Part 3

Difficulty: Medium
Evidence: ftp-example.pcap
Question: What IP (source and destination) and TCP ports (source and destination) are used to transfer the “scenery-backgrounds-6.0.0-1.el6.noarch.rpm” file?

Buka file pcap, kemudian filter menggunakan ftp, maka akan muncul paket seperti gambar 1.

Gambar 1 : Wireshark Filter FTP
Ditanyakan ip source dan destination, dari gambar 1 didapat ip source : 149.20.20.135 dan ip destinationnya adalah 192.168.75.29.

Gambar 2 : Port Information
Untuk melihat port source dan destiantion, klik packet tersebut maka akan muncul informasi seperti gambar 2. Port source 21 dan destination 37028. Ingat port diatas digunakan untuk inisialisasi pada saat pengiriman data melalui FTP. Setelah melihat packet dengan frame number >= 5841 maka,

Gambar 3 : Transfer File.
Setelah melakukan inisialisasi, maka ftp akan melakukan tranfer data, port ini yang ditanyakan pada soal ke 3. maka,

Gambar 4 : Port Information
Port source 30472 dan destination 51851

Jawaban :

IP Source : 149.20.20.135 Port src : 30472
IP Destination :192.168.75.29 Port Des : 51851



5 λ .: April 2015 Difficulty: Medium Evidence: ftp-example.pcap Question: What IP (source and destination) and TCP ports (source and destination) are used t...

Saturday 4 April 2015

Netcat : The Swiss Army Knife


Netcat sebagai port listener, fungsi yang satu ini membuat netcat dapat berperan sebagai port listener, artinya netcat akan membuka sebuah port dengan status listen.Netcat merupakan tool security yang sangat populer dan banyak digunakan. Berdasarkan data dari sectools.org, netcat masuk kedalam 10 besar network security tools. Bagi anda yang sudah mempelajari socket programming, pasti sudah tidak asing dengan aplikasi ini. Salah satu fungsi dari netcat adalah membuat koneksi menggunakan protocol TCP/UDP, baik sebagai server maupun client. Selain itu, netcat dapat digunakan untuk transfer file meskipun tanpa FTP, banner grabbing, dan port scanning.

netcat (server)

Contoh : port listening pada port 7777
Pada saat menjalakan perintah tersebut, host adakan membuka port 7777 pada status listen, simplenya akan bertindak sebagai server. Untuk meladeninya menggunakan netcat juga, cukup arahkan ke ip server dan port yang terbuka.

netcat (client)

Setelah berhasil masuk ke server 10.10.10.100 port 7777, client dapat mengirimkan pesan ke server, maka disisi server akan muncul pesan "hello from client". Sebaliknya, server juga dapat meresponse pesan dari client.

netcat response

Maka sisi client akan muncul pesan dari server.

netcat response
-Transfer file menggunakan netcat.

netcat transfer file (server)
Salah satu fungsi netcat yang berguna tanpa memakai ftp, transfer file dapat digunakan dengan cara memasukan file input pada saat netcat melakukan listening. konsepnya sama seperti mengirim pesan, hanya saja file yang ikirim berupa file.

Pada saat port 6060 dalam keadaaan listening, netcat client tinggal melakukan koneksi ke port tersebut, jangan lupa untuk membuat output file yang akan diterima.

netcat download file (client)
File berhasil dikirim, server menutup port.

netcat transfer file
- Remote terminal menggunakan netcat.

nc -nlvp 8888 -e cmd.exe

listening port 8888 dan menyisipkan cmd ke port tersebut, sehingga client yang masuk ke port 8888 bisa meremote cmd yang berada diserver.

netcat windows, sebagai server
Pada sisi client cukup jalankan netcat ke ip server.

netcat connect to sever


5 λ .: April 2015 Netcat sebagai port listener, fungsi yang satu ini membuat netcat dapat berperan sebagai port listener, artinya netcat akan membuk...
< >