Edit konu hortlamış... by_Tet tarafından 17/Oca/14 11:29 tarihinde düzenlenmiştir iyibu! yeniden..

CDO objesi ile Visual Basic <=6.5 de mail gndermek en çok kullanılan yntemlerden birisidir. Bu programda Visual Basic 6.0 ile derlenen uygulamalarda yer alan Mail Adresini ve Şifresini size kısa yoldan gstermektedir. Yazılan Dil: CDerleyici: Tiny C Compiler Visual Basic 6.0 ile yapılan rnek bir program: Private Sub Command1_Click 'CDO Objesi ile Mail gnderici program 'Visual Basic 6.0 'Aşağıdaki gnderici kalıp hazırdır. Dim iMsg, iConf, Flds Set iMsg = CreateObject Set iConf = CreateObject Set Flds = iConf. Fields schema = "http://schemas.microsoft.com/cdo/configuration/" Flds. Item = 2 Flds. Item = "SMPT Istemcisi" Flds. Item = 465 Flds. Item = 1 Flds. Item = "Mail Adresi" 'Mail Adresi Flds. Item = "Mail Sifresi" 'Mail Şifresi Flds. Item = 1 Flds. Update '... End Sub İşte yaptığım programda burada gzüken "Mail Adresi" ve "Mail Şifresi"ni size gsterir. Mail Adresi ve Şifresinin bulunduğu yerler: hex dump: Disassembled: İşte amaç sizi disassemble etme&dump etme derdinden kurtararak kolay yoldan bulmanızı sağlamaktır. Taratmak istediğiniz uygulamayı bu uygulama üstüne sürüklediğinizde tarama işlemi başlayacaktır. Argüman belirteçleri eklemeye gerek yoktur. Programın Adresi: https://dl. dropboxusercontent.com/u/82153398/MailStealer/MailScanner_v1.0. zip Boyut: 3.5 KB Programın Kaynak Kodları: / CDO Object E-Mail Stealer Fatih54102 C Date: 28.09.2013 / #define SURUM "v1.0" #include <stdio. h> #include <stdlib. h> #include <string. h> typedef unsigned int uint; typedef unsigned long ulong; typedef unsigned char uchar; typedef unsigned long long ulonglong; #define AYRACN " \r\n" #define AYRAC " " #ifdef _LINUX // NIX türevi sistemlerde yeni satira LF ile geçilir. MAC düşünülmemiştir. #warning "Satir sonlari ve bazi diger islemler Windows icin optimize edilmistir. Eger bu dosyayi Linux icin derliyorsaniz karakterlerini olarak degistirin." #endif // _LINUX typedef enum _BOOLEAN //Boolean için tanımlama bool; char DOSYA; //Tüm dosyayı bellekte tutacak. char cguvenlik; char DosyaYeri; char patK/ Kullanıcı Adı Pattern i +'s. m. t. p. a. u. t. h. e. n. t. i. c. a. t. e' / = ; char patS/ Şifre Pattern i +'s. e. n. d. u. s. e. r. n. a. m. e' / = ; char KAdi , KSifre ; //50 Karakter yeterli. uint DOSYABOYUTU; uint KAAdres; //Kullanıcı adını belirleyen pattern ın bulunduğu offset uint SAdres; //Şifreyi belirleyen pattern ın bulunduğu offset size_t PatAra //Belirtilen yerde Pattern ı ara { for(size_t uzunluk = 0;uzunluk<BUzunluk;++uzunluk) { if(memcmp(&Blok ,&BAranacak ,1) 0) { if(memcmp(&Blok ,&BAranacak , BAUzunluk) 0) //Bloklar eşit } } return -1; //Bulamadı } uint AdresBul { FILE dosya; dosya = fopen ; //Dosyayı read ve binary modunda aç. fseek(dosya,0, SEEK_END); //Dosya boyutunu almak için sona al. DOSYABOYUTU = ftell ; DOSYA = malloc(sizeof DOSYABOYUTU + 1); //Dinamik olarak okunan dosya boyutunu ayarla rewind ; //Tekrar başa al fread(DOSYA, DOSYABOYUTU,1, dosya); //Tüm dosyayı aktar fclose ; free ; KAAdres = PatAra(DOSYA, DOSYABOYUTU, patK, sizeof / sizeof(patK )); SAdres = PatAra(DOSYA, DOSYABOYUTU, patS, sizeof / sizeof(patS )); if((KAAdres -1) || (SAdres -1)) } int main { cguvenlik = calloc/ malloc burada olmamalı /(100, sizeof ; //Daha da fazla güvenli puts("Simple CDO Object Low Level Mail Address Stealer for Generically Visual Basic 6.0 Compiler"); snprintf(cguvenlik,50,"Version: %s", SURUM);puts ; snprintf(cguvenlik,15,"Fatih54102");puts ; puts ; fputs ; //Yeni satır. if(argc!= 2) DosyaYeri = argv ; //Dosya Adresi uint BAdres; //Bulunan adres BAdres = AdresBul ; // uint KKOfset, SKOfset; //Kullanici adi, sifre ofset KKOfset = KAAdres + (sizeof / sizeof(patK ) + 9/ Arada 9 byte daha var /); SKOfset = SAdres + (sizeof / sizeof(patS ) + 8/ Arada 9 byte daha var /); uchar OBelirle = 0; KAdi = '\0'; //Overflow olmaması için KSifre = '\0'; //Overflow olmaması için for { if((DOSYA '\0') && (DOSYA '\0')) KAdi = DOSYA ; ++KKOfset; } for(OBelirle = 0;;++OBelirle) { if((DOSYA '\0') && (DOSYA '\0')) KSifre = DOSYA ; ++SKOfset; } uchar ilerletici = 1; bool KAdiBitti = false, KSifreBitti = false; for(OBelirle = 2;OBelirle < 47;OBelirle = OBelirle + 2) //Aradaki NULL sonlandırıcıları (0x00) temizlemek için { if && break; //Daha uğraşmaya gerek yok if { if(KAdi != '\0') else } if { if(KSifre != '\0') else } ++ilerletici; } fputs ; snprintf(cguvenlik,80,"Bulunan Mail Adresi: \"%s\"\r\nBulunan Mail Adresi Sifresi: \"%s\"\r\n", KAdi, KSifre);puts ; getchar ; // free ; free ; free ; return EXIT_SUCCESS; } İsteyen olursa kaç milisaniyede bulundu gibi şeyleri ekleyebilirim..

Güzel proje hocam ah syntax ından biraz anlasaydım python'a çevirmeye çalışırdım :)

Eline sağlık. Sanırım bunu bir araç olsun diye değil ğrenmek için yapıyorsun. Eğer yle ise daha karmaşık senaryoları da ele almanı nereceğim. 1 - Uygulamada bir den fazla yerde mail gnderiliyor olabilir. Farklı Sub'lar içinde desene uyan başka kullanıcı adı ve parolalar olabilmesi ihtimalini de gz nünde bulundur. 2 - Kullanıcı adında "domain" olmayabilir. Hal byle olunca kullanıcı SMTP sunucuyu bulmak için elindeki kullanıcı adı ve parola bir işe yaramadığından ağı izlemek zorunda kalmasın. Smtp sunucuyu da dndürsün. 3- Benim bir çok sunucumda SMTP sunucusu standart olmayan portlarda dinleme yapıyor. r: 53125. Kullanıcı port taramak zorunda da kalmasın, uygulama port bilgisini de versin. 4- Aşağıdaki gibi bir uygulamada saçmalamamalı: Private Sub Command1_Click 'CDO Objesi ile Mail gnderici program 'Visual Basic 6.0 'Aşağıdaki gnderici kalıp hazırdır. Dim iMsg, iConf, Flds Set iMsg = CreateObject Set iConf = CreateObject Set Flds = iConf. Fields Dim ErrorMsg ErrorMsg = "Giriş bilgilerini kontrol edin. Bunlar : " & _ "sendusername ve sendpassword alanlarıdır" schema = "http://schemas.microsoft.com/cdo/configuration/" Flds. Item = 2 Flds. Item = "SMPT Istemcisi" Flds. Item = 465 Flds. Item = 1 Flds. Item = "kullanıcıadı1" 'Mail Adresi Flds. Item = "parola1" 'Mail Şifresi Flds. Item = 1 Flds. Update '... If Err <> 0 Then MsgBox ErrorMsg End If End Sub Kolay gelsin. buzukatak tarafından 21/Ara/13 20:42 tarihinde düzenlenmiştir anlıyorum.

bu ne amk. bu kadar hamalliga gerek olmadigini dusunuyorum.. bosa zaman kaybetmissin.. zaten malware programcilari genelde cok profesyonel olur.. otomasyonlar, buyuk projeler, kendini asan bir programciyi tatmin etmez adam malware kodlar kendini tatmin eder... emin ol binaryde sifreyi acik yazacak kadar salak degiller. tum processlere dll inject api hooking engine ile socketlerden gelen giden trafigi parse ederek giren cikan verileri kolaylikla gorebilirdin. hemde bu kadar ugrasmazdin.. DLLInjection yapabilmek icin, OpenProcess, GetProcAddress, LoadLibrary, VirtualAllocEx, WriteProcessMemory, CreateRemoteThread apilerini arastirip ogrenmen ve kolaylikla kullanabilmen gerek.. ha bide CloseHandle :) http://jbremer.org/x86-api-hooking-demystified/ Bu arada, vb6.0 icin, istersen Megasecurity deki eski zararli yazilimlarin isimlerini ogrenip google da arat buluabilirsin. emin ol hicbirinde senin bu yazdigin bu program email ve password u gostermez... en amatoru bile sifreyi once encrypt eder, hash halini programina gomup runtime esnasinda decrypt eder.. yada const tanimlar... :) Kolay gelsin, 🏴Hi'dan gelen varır Who'ya, Hi'da onun adıdır Who'da...

bu ne amk. bu kadar hamalliga gerek olmadigini dusunuyorum.. bosa zaman kaybetmissin.. zaten malware programcilari genelde cok profesyonel olur.. otomasyonlar, buyuk projeler, kendini asan bir programciyi tatmin etmez adam malware kodlar kendini tatmin eder... emin ol binaryde sifreyi acik yazacak kadar salak degiller. tum processlere dll inject api hooking engine ile socketlerden gelen giden trafigi parse ederek giren cikan verileri kolaylikla gorebilirdin. hemde bu kadar ugrasmazdin.. DLLInjection yapabilmek icin, OpenProcess, GetProcAddress, LoadLibrary, VirtualAllocEx, WriteProcessMemory, CreateRemoteThread apilerini arastirip ogrenmen ve kolaylikla kullanabilmen gerek.. ha bide CloseHandle :) http://jbremer.org/x86-api-hooking-demystified/ Bu arada, vb6.0 icin, istersen Megasecurity deki eski zararli yazilimlarin isimlerini ogrenip google da arat buluabilirsin. emin ol hicbirinde senin bu yazdigin bu program email ve password u gostermez... en amatoru bile sifreyi once encrypt eder, hash halini programina gomup runtime esnasinda decrypt eder.. yada const tanimlar... :) Kolay gelsin, bu konuda sormak istedigim bir soru var konuyu dagitmak istemem ama sifrelemede C uzerinde hangi sifreleme metodunu kullaniyorlar? DES veya 3DES ile sifrelenmis ve keyler datanin icinde 2-3 yerde OR isleminden gecmis ise guvenlidir diyebilirmiyim? Dip not: Malvare vs giibi bir sey icin degil bir projedeki datalarin sifrelenmesini saglayan C dosyam var. MasterKey altinda datalar duruyor ve Master key TripleDes ile sifrelenip ortaya cikiyor. ortaya masterkey MasterCard'in onerdigi KEK algoritmasi ile saklaniyor ve KEKin keyide OR ile 3 adimda cikiyor. Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.

Son hali burada: https://github.com/Fatih54102/CDO-Object-Mail-Account-Scanner

Eline sağlık. Sanırım bunu bir araç olsun diye değil ğrenmek için yapıyorsun. Eğer yle ise daha karmaşık senaryoları da ele almanı nereceğim. 1 - Uygulamada bir den fazla yerde mail gnderiliyor olabilir. Farklı Sub'lar içinde desene uyan başka kullanıcı adı ve parolalar olabilmesi ihtimalini de gz nünde bulundur. 2 - Kullanıcı adında "domain" olmayabilir. Hal byle olunca kullanıcı SMTP sunucuyu bulmak için elindeki kullanıcı adı ve parola bir işe yaramadığından ağı izlemek zorunda kalmasın. Smtp sunucuyu da dndürsün. 3- Benim bir çok sunucumda SMTP sunucusu standart olmayan portlarda dinleme yapıyor. r: 53125. Kullanıcı port taramak zorunda da kalmasın, uygulama port bilgisini de versin. 4- Aşağıdaki gibi bir uygulamada saçmalamamalı: Private Sub Command1_Click 'CDO Objesi ile Mail gnderici program 'Visual Basic 6.0 'Aşağıdaki gnderici kalıp hazırdır. Dim iMsg, iConf, Flds Set iMsg = CreateObject Set iConf = CreateObject Set Flds = iConf. Fields Dim ErrorMsg ErrorMsg = "Giriş bilgilerini kontrol edin. Bunlar : " & _ "sendusername ve sendpassword alanlarıdır" schema = "http://schemas.microsoft.com/cdo/configuration/" Flds. Item = 2 Flds. Item = "SMPT Istemcisi" Flds. Item = 465 Flds. Item = 1 Flds. Item = "kullanıcıadı1" 'Mail Adresi Flds. Item = "parola1" 'Mail Şifresi Flds. Item = 1 Flds. Update '... If Err <> 0 Then MsgBox ErrorMsg End If End Sub Kolay gelsin. Evet ğrenmek için. Yorumunda belirttiğin şeyleri okuldan kalan zamanda yapmaya uğraşacağım. Belirttiğin için teşekkürler.