Yakalanmadan FTP iletişimi

medyahacker

Katılımcı Üye
19 Nis 2013
371
0
SANANEVELET
Selamün Aleyküm.

Uzun süredir delphi forumunda pek bir etkinlik gösteremiyorum. Birkaç gündür bu dökümanı hazırlayıp paylaşma isteğim vardı. İnşAllah faydalı olur.

Bilirsiniz üst düzey malware fonksiyonlarıyla uğraşmak zordur ve uzmanlık ister. Bu yüzden yeri geldiğinde basit çözümler etkili olabiliyor. FTP ile iletişim kuran malware programcıları eğer kernel mode rootkit, antivirüs bypass gibi konularda uzman değillerse kullandıkları ftp api, componentleri antivirüslere yakalandığında çaresiz kalabilir. Bunu bir nebze olsun aşmak için bir çözüm geliştirdim. Yaygın olarak kullanılan antivirüslerin çoğunda firewall özelliği yok. Benim hipotezim, ftp ile iletişim kurarken hazır apileri değil de kendi methodunuzu kullanırsanız antivirüslere yakalanmazsınız. Bu hipotezi sınamak için 2 gün boyunca uğraşarak ftp’yi çözmeye çalıştım ve ClientSocket’lerle iletişimi taklit ettim. Her aşamasını çözmek için baya uğraştığımı söyleyebilirim :)

Anladığım kadarıyla FTP’yi kısaca anlatıyorum.

FTP sunucusuna standart bağlantı portu 21’dir.

FTP’de komutlar sayılarla ifade edilir ama ingilizce olarak açıklamaları da paket içinde gönderilir.

Bir ftp sunucusuna 21 portundan bağlanırsanız ilk mesaj sunucudan gelir.

Sunucu Mesajı: 220 Welcome. FTP Server ready.

Bu mesajı alınca sizin sırayla komutları göndermeniz gerekir. Tek tek komutları açıklamıyorum çünkü asıl anlattığım protokol değil taklit.

İletişimi özetliyorum:

Gelen: 220 Welcome. FTP Server ready.

Giden: USER admin

Gelen: 331 Password required for admin

Giden: PASS Cyber

Gelen: 230 User admin logged in

Giden: OPTS UTF8 ON

Gelen: 200 UTF8 set to on

Giden: CWD /

Gelen: 250 CWD command successful

Giden: PWD

Gelen: 257 "/" is the current directory

Giden: TYPE A

Gelen: 200 Type set to A

Giden: PASV

Gelen: 227 Entering Passive Mode (255,255,255,255,185,77).

Burada benim öğrenmek için çok uğraştığım bir durum var. FTP iletişimi iki türlü yapılıyor: aktif ve pasif. Aktif’de bilgisayarınızda port açmanız gerekir ki normalde pasif modu kullanırız. Son gelen paket bize diyor ki verdiğim ip ve porttan veri iletim bağlantı noktasına bağlan. FTP’de yönlendirme komutları 21 portundaki bağlantıdan yapılır ama merkez bağlantının yükünün artmaması için veri aktarımı başka bağlantı noktalarından (port) gerçekleştirilir. Peki bu son gelen mesajı nasıl yorumlayacağız? Burada diyor ki ilk 4 sayı grubu bağlantı ip’si 255.255.255.255. Port numarasını ise bir formülle alıyorsunuz. IP’den sonraki ilk sayı bloğu yani baştan 5. bloğun 256 ile çarpılıp sonuca 6. bloğun eklenmesi bize port numarasını veriyor. Örneklendirirsek, Entering Passive Mode (k,l,m,n,a,b). şeklinde olan paket bize diyor ki veri aktarımını k.l.m.n:a*256+b bağlantı noktasına yap.

Bu paket geldikten hemen sonra ikinci bir client socket ile bu bağlantı noktasına bağlanırız ama veri yollamayız. Bağlandıktan sonra 21 port numaralı bağlantıdan sunucuya şu paket yollanır.

Giden: STOR Deneme.txt, Dosya uploada başlama komutu.

Gelen: 150 Opening ASCII mode data connection for Deneme.txt

Bu mesajı alınca başka bir bilgi içermeksizin ikinci client socket’e veri yollanır. Stream ya da text olması farketmiyor nasıl yollarsanız yollayın. Veri yollama bitince sunucunun anlaması için 2. client socketin bağlantısını kesmeniz gerekir. Kesince aktarım tamamlanmış ve belirttiğiniz dosya adına içerik yazılmış demektir. Aktarımın tamamlandığına dair şu mesajı alırsınız:

Gelen: 226 Transfer complete, Aktarımın tamamlandığı anlamına geliyor.

Ben bu iletişimi pratikte taklit etmeyi başardım. Gelişmiş bir şey değil ama işimi gördü. Birkaç noktaya değinmem lazım. Komut içeren paketlerde string sonuna boş bir satır ekleniyor yani iletişim şöyle kurulacak: ClientSocket1.SendText(’USER admin’+#10);. #10 etiketini her paket sonuna ekleyin (Dosyayı ikinci bağlantıdan gönderirken yapılmaz) yoksa anlamıyor sunucu. Son olarak da bazı komutların sunucudan gelen cevapları aynı sayı ile oluyor en son ne gönderdiğinizi takip etmeniz ya da sayının devamındaki veriyi programla okumanız gerekir. Ben ikincisini yaptım ama ilkini öneriyorum. Belki her ftp aynı açıklamayı kullanmıyordur.

Link:
FTP Upload.rar - Speedy Share - upload your files here

Anlamadığınız yer olursa sorun yardımcı olmaya çalışırım. Selametle.
http//cyber-warrior.org alıntıdır!!!!
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.