Kali ini saya akan memberikan sidikit ilmu mengenai Intelligance Gathering menggunakan Metasploit. Materi ini merupakan materi lanjutan dari materi sebelumnya yang bisa kamu pelajari disini.
Intelligance Gathering merupakan salah satu komponen penting dalam penetration testing. Yang memiliki tujuan “harus mendapatkan informasi akuran mengenai target tanpa mengungkapkan kehadiran kamu”. Hal ini dilakukan untuk mempelajari bagaimana organisasi beroperasi dan menentukan rute terbaik pada saat pengeksekusiannya nanti.
Jika kamu melewatkan fase ini, kamu mungkin akan kehilangan kesempatan untuk mengetahui kerentanan atau faktor serangan yang layak. Dibutuhkan waktu dan kesabaran dalam fase ini. Seperti memilah halaman web, melakukan Google hacking, dan mempetakan sistem secara menyeluruh dalam upaya untuk memahami infrastruktur target tentu.
Intelligance Gathering membutuhkan perencanaan yang matang, penelitian dan yang paling penting “kemampuan untuk berpikir seperti seorang penyerang”. Pada langkah ini kamu akan mencoba mengumpulkan sebanyak mungkin informasi tentang target. Yang bahkan informasi sepele yang didapat dalam tahap ini pun mungkin nantinya akan menjadi berguna. Jadi jangan lewatkan hal sekecil apapun.
Sebelum memulai, pertimbangkan bagaimana kamu akan merekam semua yang dilakukan dan hasil yang kamu capai. Kamu harus ingat dan mencatat sebanyak mungkin rincian dari penetration testing ini.
Passive Information Gathering
Dengan menggunakan metode pasif dan secara tidak langsung, kamu dapat menemukan informasi tentang target tanpa menyentuh sistem mereka. Misalnya untuk mengidentidikasi batas-batas jaringan, pengelola jaringan, dan bahkan mempelajari sistem operasi apa, software web server apa yang digunakan target.
Open Source Intelligance (OSINT) merupakan bentuk Intelligance Gathering menggunakan informasi yang terbuka. Seperti menggunakan Yeti dan whois. Pada bagian ini kita akan mengeksplorasi proses pengumpulan informasi pasif. Juga tools yang akan digunakan pada materi kali ini.
Sebagai contoh kita akan mengumpulkan informasi dari https://errorcybernews.id/. Namun pada beberapa kasus, kita juga tidak bisa mengidentifikasi sistem target.
1. whois Lookups
Langsung saja, mari kita mulai dengan menggunakan whois. Untuk menemukan informasi dari domain errorcybernews.id ini.
2. Netcraft
Netcraft (http://searchdns.netcraft.com/) merupakan tool berbasis web. Tool ini dapat kita gunakan untuk menemukan alamat IP dari server hosting situs web tertentu. Seperti yang ditunjukkan pada gambar dibawah ini:
Dan disini kita memiliki identifikasi IP dari errorcybernews.id itu 104.18.50.157. Lalu kita mencoba mengidentifikasi alamat IP tersebut dalam whois:
Active Information Gathering
Dalam metode pengumpulan informasi aktif, kita akan berinteraksi langsung dengan sistem. Tujuannya untuk mempelajar lebih lanjut mengenai sistem tersebut. Misalnya, melakukan scanning port untuk mengetahui port yang terbuka dalam sistem target. Atau melakukan scanning untuk mencari layanan apa saja yang sedang berjalan. Tapi hati-hati, jika kamu ceroboh dalam metode ini, kamu mungkin akan tertangkap oleh sistem IDS atau intrusion prevention system (IPS).
1. Port Scanning menggunakan Nmap
Setelah mengidentifikasi IP range target dengan mengumpulkan informasi pasif, Kita dapat mulai memindai port yang terbuka. Pemindaian ini biasanya disebut dengan port scanning.
Nmap sejauh ini merupakan alat port scanning yang paling populer. Dan terintegrasi cukup elegan dengan Metasploit. Nmap ini bisa menyimpan output dari pemindaian dalam backend database untuk digunakan nanti. Nmap juga memungkinkan kamu memindai host untuk mengidentifikasi layanan yang sedang berjalan.
Sebelum kita mulai, mari lihat dulu perintah dasar Nmap dengan memasukan “nmap” dalam baris perintah:
Salah satu opsi favorit dari Nmap adalah -sS. Opsi ini untuk menjalankan scan TCP Stealth yang menentukan apakah spesifik TCP berbasis port terbuka atau bukan.
Opsi lain yang menjadi opsi favorit yaitu -pn. Dimana opsi ini memberitahu Nmap tidak menggunakan ping untuk menentukan layanan yang sedang berjalan dalam sistem. Sebaliknya, menganggap semua host “alive”. Jika kamu melakukan penetration testing berbasis internet, mungkin opsi ini harus digunakan. Karena sebagian besar jaringan tidak mengizinkan Internet Control Message Protocol (ICMP). Yang merupakan protokol yang menggunakan ping. Namun jika kamu melakukan scan secara internal, opsi ini dapat diabaikan.
Seperti yang bisa kamu lihat, Nmap melaporkan daftar port yang terbuka. Juga bersama dengan deskripsi terkait untuk setiap layanan.
Untuk lebih detail, coba gunakan opsi -A. Opsi ini akan mencoba enumerasi layanan lebih lanjut dan banner grabbing. Yang dapat memberikan informasi lebih detail tentang sistem target.
2. Working with Databases dalam Metasploit
Ketika kamu menjalankan penetration testing kompleks dengan banyak target, mencatat segala sesuatu bisa menjadi suatu tantangan. Untungnya, Metasploit telah menutup hal tersebut dengan dukungan yang ekspansif untuk multiple sistem database.
Untuk memastikan bahwa dukungan database yang tersedia untuk sistem yang kamu gunakan, kamu harus memustukan sistem database apa yang akan digunakn. Metasploit mendukung MySQL dan PostgreSQL. Karena PostgreSQL adalah opsi default, maka kita akan menggunakannya dalam pembelajaran ini.
Setelah PostgreSQL berjalan, kamu harus menghubungkan Framework ke database. Koneksi ini memerlukan username, password, nama host yang akan dijalankan database, dan nama database yang akan digunakan.
Metasploit menyediakan sejumlah perintah yang dapat kita gunakan untuk berinteraksi dengan database. Untuk saat ini, kita akan menggunakan perintah db_status untuk memastikan apakah sudah terhubung atau belum.
3. Importing Nmap Results ke dalam Metasploit
Selanjutnya, kita akan mempelajari cara mengimpor file dasar nmap yang dihasilkan dari XML ekspor (dihasilkan dengan opsi -oX nmap) ke dalam Framework.
Pertama, kita memindai menggunakan opsi -oX untuk menghasilkan file Subnet1.xml:
Setelah menghasilkan file XML, kita menggunakan perintah db_import untuk impor ke database. Kita kemudian dapat memverifikasi bahwa impor bekerja dengan menggunakan perintah hosts, yang berisi daftar entri sistem yang telah dibuat.
4. Advanced Nmap Scanning: TCP Idle Scan
TCP Idle Scan memungkinkan kita untuk memindai target diam-diam menggunakan spoofing alamat IP dari host lain pada jaringan. Pertama kita perlu mencari host idle pada jaringan yang menggunakan IP ID tambahan (yang digunakan untuk melacak pesanan paket). Ketika kita menemukan sebuah sistem idle yang menggunakan IP ID tambahan, IP ID menjadi dapat diprediksi, dan kemudian dapat memprediksi ID berikutnya.
Untuk mempelajari lebih lanjut tentang modul dan urutan IP ID ini, kunjungi https://www.rapid7.com/db/modules/auxiliary/scanner/ip/ipidseq/.
Daftar ini akan menampilkan opsi yang diperlukan untuk memindai ipidseq. Salah satu opsi favorit yaitu Rhosts. Yang dapat mengambil rentang IP (seperti 192.168.1.20-192.168.1.30). Classless Inter-Domain Routing (CIDR) range (seperti 192.168.1.0/24). Multiple range yang dipisahkan dengan koma (seperti 192.168.1.0/24, 192.168.3.0/24). Dan file teks dengan satu host per baris (seperti file: /tmp/hostlist.txt). Semua pilihan ini memberikan kita sedikit fleksibilitas dalam menentukan target kita.
THREADS menetapkan jumlah thread konkuren untuk menggunakan scanning sementara. Secara default, semua modul scanner memiliki nilai THREADS mereka yang awalnya diatur ke 1. Kita bisa menaikkan nilai ini untuk mempercepat scan atau menurunkannya untuk mengurangi lalu lintas jaringan. Secara umum, kamu tidak harus mengatur nilai THREADS lebih besar dari 16 ketika menjalankan Metasploit pada Windows. Dan tidak lebih besar dari 128 pada sistem operasi UNIX-like.
Sekarang mari kita coba mengatur nilai dan menjalankan modul. Saya akan menetapkan nilai untuk Rhosts ke 192.168.43.0/24, mengatur THREADS 50, dan kemudian menjalankan scan.
Jika kamu melihat sejumlah potensi idle host yang dapat digunakan untuk melakukan idle scanning, cobalah untuk memindai host menggunakan sistem. Dengan menggunakan opsi -Si di baris perintah untuk menentukan host idle. Contoh:
msf auxiliary(ipidseq) > nmap -PN -sI 192.168.1.109 192.168.1.155 [*] exec: nmap -PN -sI 192.168.1.109 192.168.1.155 Idle scan using zombie 192.168.1.109 (192.168.1.109:80); Class: Incremental Interesting ports on 192.168.1.155: Not shown: 996 closed|filtered ports PORT STATE SERVICE 135/tcp open msrpc 139/tcp open netbios-ssn 445/tcp open microsoft-ds MAC Address: 00:0C:29:E4:59:7C (VMware) Nmap done: 1 IP address (1 host up) scanned in 7.12 seconds msf auxiliary(ipidseq) >
Dengan menggunakan idle host, kamu mampu menemukan sejumlah port yang terbuka pada sistem target tanpa mengirimkan paket tunggal ke sistem.
5. Menjalankan Nmap Dari MSFconsole
Sekarang kita sudah akan melakukan enumerasi lanjutan pada target, mari kita hubungkan Nmap dengan Metasploit. Untuk melakukan ini, pertama pastikan dulu sudah terhubung ke database msf.
Sekarang kita harus bisa memasukkan perintah db_nmap dari dalam msfconsole untuk menjalankan nmap. Dan nanti sesuatu yang berhasil kita peroleh akan secara otomatis disimpan dalam database.
Untuk memastikan bahwa hasil dari scan disimpan dalam database, coba jalankan perintah services:
Sekarang kita mempunyai gambaran target dan port terbuka untuk digunakan sebagai potensi serangan.
6. Port Scanning with Metasploit
Selain kemampuannya untuk menggunakan scanner pihak ketiga, Metasploit memiliki beberapa port scanner yang dibangun ke modul tambahannya. Yang langsung terintegrasi dengan sebagian besar dari aspek Framework.
Dalam materi selanjutnya nanti, kita akan menggunakan port scanner ini untuk meningkatkan kompromi dengan sistem untuk mengakses dan menyerang. Proses ini juga sering disebut dengan pivoting. Yang memungkinkan kita bisa menggunakan sistem terhubung secara internal untuk rute lalu lintas ke jaringan yang dapat diakses.
Sebagai contoh, kamu mengganggu sebuah sistem dibalik firewall yang menggunakan Network Address Translation (NAT). Sistem dibalik firewall berbasis NAT menggunakan alamat IP pribadi. Yang mana kita tidak dapat menghubungi langsung dari internet.
Jika kamu menggunakan Metasploit untuk kompromi sistem dibalik NAT, kamu mungkin dapat menggunakan sistem internal yang dikompromikan. Yang bertujuan melewatkan lalu lintas (pivot) untuk sistem berbasis IP host internal dan privat agar bisa menembus jaringan dibalik firewall.
Untuk melihat daftar alat port scanning yang ditawarkan Framework, masukkan perintah berikut ini:
Saya akan coba melakukan scan sederhana menggunakan Metasploit SYN Port Scanner. Kita mulai scan dengan memasukan perintah use scanner/portscan/syn, mengatur Rhosts ke 192.168.43.1, set Threads ke 50, dan kemudian menjalankan scan.
Dari hasil scan diatas, kamu dapat melihat port 53 terbuka pada alamat IP 192.168.43.1. (Gambar hasil scan diatas hanya sebagai contoh saja. Saya tidak melakukan scanning sampai complete 100% pada gambar contoh diatas)
Targeted Scanning
1. Server Message Block Scanning
Metasploit dapat menjelajahi jaringan dan berusaha untuk mengidentifikasi Microsoft Windows menggunakan modul smb_version nya.
Note: Jika kamu belum familiar dengan Server Message Block (SMB, protokol umum file-sharing), Pelajarilah meskipun sedikit sebelum melanjutkan pembelajaran ini. Disini kamu perlu memahami informasi dasar port. Untuk mempelajari bagaimana cara menyerang sistem agar berhasil.
Kita coba menjalankan modul, daftar pilihan, mengatur Rhosts, dan mulai memindai:
Seperti yang bisa kamu lihat, scanner smb_version menunjukan sistem operasi Windows 10 Pro (build:10240). Karena saya hanya memindai satu sistem, maka saya membiarkan THREADS di set ke 1. Jika kita memindai sejumlah sistem, mungkin kita akan mempertimbangkan upping THREADS menggunakan set THREADS. Hasil scan ini disimpan dalam database Metasploit untuk digunakan pada lain waktu. Dan dapat diakses dengan perintah hosts.
2. Hunting Konfigurasi Yang Kurang Baik Dari Microsoft SQL Server
Konfigurasi yang kurang baik dari Microsoft SQL Server sering memberikan langkah awal untuk mengeksploitasi target. Bahkan, banyak administrator menginstall Microsoft SQL Server karena salah satu prasyarat untuk beberapa software. Seperti Microsoft Visual Studio. Instalasi seperti ini biasa ditemukan dalam kondisi unpatched atau bahkan tidak dikonfigurasi sama sekali.
Ketika MS SQL terinstal, hal itu secara default listening baik pada TCP port 1433 atau port TCP dynamic random. Jika MS SQL ini listening pada port yang dinamis, cukup permintaan UDP Port 1434 untuk menemukan apa TCP port dinamis MS SQL itu listening. Tentu saja, Metasploit memiliki modul yang dapat memanfaatkan ini. Yaitu fitur mssql_ping.
Karena mssql_ping menggunakan UDP, bisa cukup lambat untuk berjalan di seluruh subnet karena masalah dengan timeout. Tapi pada LAN lokal, pengaturan THREADS ke 255 akan mempercepat scan. Jika Metasploit mendapati server MS SQL, hal ini akan menampilkan semua detail yang bisa diekstrak. Termasuk port TCP listener.
Output diatas, saya tidak menemukan sistem yang menjalankan MS SQL. Berikut contoh output jika kamu menemukan sistem yang menjalankan MS SQL:
[*] SQL Server information for 192.168.43.155: [*] ServerName = V-XPSP2-BARE [*] InstanceName = SQLEXPRESS [*] IsClustered = No [*] Version = 10.0.1600.22 [*] tcp = 1433
3. SSH Server Scanning
Jika selama pemindaian kamu menemukan sistem yang menjalankan Secure Shell (SSH), kamu harus menentukan versi yang berjalan pada target. SSH adalah protokol aman, tapi kerentanan dalam berbagai implementasi telah berhasil diidentifikasi. Kamu tidak pernah tahu kapan kamu mungkin beruntung dan menemukan mesin tua yang belum diperbarui. Kamu dapat menggunakan modul ssh_version untuk menentukan versi SSH yang berjalan pada server target.
Output diatas, saya tidak menemukan sistem yang menjalankan SSH. Berikut contoh output jika kamu menemukan sistem yang menjalankan SSH:
[*] 192.168.43.1:22, SSH server version: SSH-2.0-dropbear_0.52 [*] Scanned 044 of 256 hosts (017% complete) [*] 192.168.43.101:22, SSH server version: SSH-2.0-OpenSSH_5.1p1 Debian-3ubuntu1 [*] Scanned 100 of 256 hosts (039% complete) [*] 192.168.43.153:22, SSH server version: SSH-2.0-OpenSSH_4.3p2 Debian-8ubuntu1 [*] 192.168.43.185:22, SSH server version: SSH-2.0-OpenSSH_4.3
4. FTP Scanning
FTP adalah protokol yang rumit dan tidak aman. Server FTP sering dijadikan jaringan target dengan cara yang mudah. Dan kamu harus terus memindai, mengidentifikasi, dan fingerprint setiap server FTP yang berjalan pada target kamu.
Output diatas, saya tidak menemukan sistem yang menjalankan FTP. Berikut contoh output jika kamu menemukan sistem yang menjalankan FTP:
[*] 192.168.43.155:21 FTP Banner: Minftpd ready
Jika pemindaian berhasil mengidentifikasi server FTP, sekarang mari kita lihat apakah FTP server ini memungkinkan login anonymous menggunakan scanner/ftp/anonymous.
msf > use auxiliary/scanner/ftp/anonymous msf auxiliary(anonymous) > set RHOSTS 192.168.43.0/24 RHOSTS => 192.168.43.0/24 msf auxiliary(anonymous) > set THREADS 50 THREADS => 50 msf auxiliary(anonymous) > run [*] Scanned 045 of 256 hosts (017% complete) [*] 192.168.43.155:21 Anonymous READ/WRITE (220 Minftpd ready)
Pemindai melaporkan bahwa akses anonim diperbolehkan. Dan pengguna anonim memiliki akses read and write ke server. Dengan kata lain, kita memiliki akses penuh ke sistem remote dan kemampuan untuk meng-upload atau men-download file apa saja yang dapat diakses oleh perangkat lunak server FTP.
5. Simple Network Management Protocol Sweeping
Simple Network Management Protocol (SNMP) biasanya digunakan di perangkat jaringan untuk melaporkan informasi seperti pemanfaatan bandwidth, collision rates, dan informasi lainnya. Namun, beberapa sistem operasi juga memiliki server SNMP yang dapat memberikan informasi seperti penggunaan CPU, memori bebas, dan rincian sistem yang lainnya.
Kenyamanan bagi administrator sistem bisa saja menjadi tambang emas bagi penetration tester. Dan jika server SNMP dapat diakses, mungkin akan menawarkan informasi yang cukup tentang sistem tertentu. Atau bahkan memungkinkan untuk berkompromi dengan perangkat remote. Jika misalnya kamu mendapatkan read/write SNMP community string untuk router Cisco, Kamu dapat mendownload seluruh konfigurasi router, memodifikasinya, dan meng-upload kembali ke router.
Metasploit Framework menghadirkan built-in modul tambahan yang disebut scanner/snmp/snmp_enum. Yang dirancang khusus untuk penyisiran SNMP. Sebelum memulai pemindaian, perlu diingat bahwa read-only (RO) dan read/write (RW) community string akan memainkan peran penting dalam jenis informasi dari perangkat tertentu. Pada perangkat berbasis Windows yang dikonfigurasi dengan SNMP, kamu bisa sering menggunakan RO atau RW community string. Untuk mengekstrak tingkat patch, layanan, nama pengguna, uptime, rute, dan informasi lainnya yang dapat membuat hal-hal menjadi lebih mudah bagi kamu selama penetration testing berjalan. (Community String pada dasarnya itu password yang digunakan query perangkat untuk informasi atau untuk menulis informasi konfigurasi ke perangkat)
Setelah kamu menebak community string, SNMP itu sendiri (tergantung pada versi) dapat memperbolehkan sesuatu dari keterbukaan informasi yang berlebihan untuk kompromi penuh ke sistem. SNMPv1 dan v2 adalah protokol inheren yang cacat. SNMPv3, yang menggabungkan enkripsi dan mekanisme pemeriksaan yang lebih baik, secara signifikan lebih aman. Untuk mendapatkan akses ke switch, pertama-tama kamu harus mencoba untuk menemukan community string masyarakat. Dalam Framework ini digunakan modul scanner/snmp/snmp_login yang akan mencoba daftar word list.
Output diatas, saya tidak menemukan sistem yang menjalankan SNMP. Berikut contoh output jika kamu menemukan sistem yang menjalankan SNMP:
[*] >> progress (192.168.43.0-192.168.43.255) 0/30208... [*] 192.168.43.2 'public' 'GSM7224 L2 Managed Gigabit Switch' [*] 192.168.43.2 'private' 'GSM7224 L2 Managed Gigabit Switch' [*] Auxiliary module execution completed
Membuat Custom Scanner
Framework ini memiliki banyak fitur yang dapat berguna ketika kamu sedang membangun sebuah scanner khusus. Termasuk menawarkan akses ke exploit class & methods, dukungan untuk proxy, Secure Sockets Layer (SSL), pelaporan, dan threading. Hal ini dapat sangat berguna untuk menulis scanner kamu sendiri selama penilaian keamanan. Karena hal itu akan memungkinkan untuk menemukan setiap contoh bad password atau layanan unpatched dengan cepat pada sistem target.
Modul scanner Metasploit Framework berbagai mixin. Seperti mengeksploitasi mixin untuk TCP, SMB, d.l.l. Dan juga scanner mixin tambahan yang dibangun ke Framework. Mixin adalah bagian dari kode dengan fungsi yang telah ditetapkan dan pemanggilan yang dikonfigurasi untuk kamu. Auxiliary::Scanner mixin overloads methods run Auxiliary memanggil metode modul saat runtime dengan run_host (ip), run_range (range), atau run_batch (batch). Dan kemudian memproses alamat IP. Kita bisa memanfaatkan Auxiliary::Scanner untuk memanggil opsi tambahan, built-in fungsi Metasploit.
Berikut ini adalah contoh script Ruby untuk TCP scanner sederhana yang akan terhubung ke remote host pada port default dari 12345. Dan setelah connect, mengirim “HELLO SERVER”, menerima respon dari server, dan print it out bersama dengan alamat IP server.
#Metasploit require 'msf/core' class Metasploit < Msf::Auxiliary include Msf::Exploit::Remote::Tcp include Msf::Auxiliary::Scanner def initialize super( 'Name' => 'My custom TCP scan', 'Version' => '$Revision: 1 $', 'Description' => 'My quick scanner', 'Author' => 'Kernel Panic', 'License' => MSF_LICENSE ) register_options( [ Opt::RPORT(12345) ], self.class) end def run_host(ip) connect() sock.puts('HELLO SERVER') data = sock.recv(1024) print_status("Received: #{data} from #{ip}") disconnect() end end
Scanner sederhana ini menggunakan Msf::Exploit::Remote::Tcp mixin untuk menangani jaringan TCP. Dan Msf::Auxiliary::Scanner mixin memaparkan berbagai pengaturan yang diperlukan untuk scanner dalam Framework. Scanner ini dikonfigurasi untuk menggunakan port default 12345. Dan setelah menghubungkan ke server, mengirimkan pesan, menerima balasan dari server, kemudian mencetaknya bersama dengan alamat IP server.
Looking Ahead
Dalam bab ini, kamu belajar bagaimana memanfaatkan Metasploit Framework untuk Intelligance Gathering seperti diuraikan dalam PTES. pengumpulan intelijen membutuhkan latihan dan membutuhkan pemahaman yang mendalam tentang bagaimana sebuah organisasi beroperasi dan bagaimana mengidentifikasi potensi terbaik untuk serangan. Kamu harus beradaptasi dan meningkatkan metodologi kamu sendiri sepanjang penetration testing.
Dalam bab berikutnya, kita akan melanjutkan ke langkah penting selama tahap analisis kerentanan. Dalam bab-bab selanjutnya, kita juga akan mengeksplorasi lebih mendalam, contohnya cara membuat modul sendiri, eksploitasi, dan Meterpreter script.