wz


Mephisto BD series 3 - vrcholné dílo

Ξ April 9th, 2007 | → | ∇ Můj soft |

Celý velikonoční weekend jsem strávil hluboko ponořen ve vývojovém prostředí Microsoft Visual Studio 2005, v jazyce C++/CLI a horlivě jsem se věnoval jednomu projektu, který jsem včera večer dokončil a můžu s radostí říci, že je dokončen a že je to moje zatím nejvíce použitelné a nejvíce mocné dílo.

Již dříve jsem se věnoval aplikacím, známým také jako backdoory nebo “zadní vrátka”. Podařilo se mi jednou i takový program udělat, ale měl značná omezení: Oběť musela mít veřejnou IP. Programové jádro bylo navíc tvořené cizím programem, který je v povědomí mnoha antivirů, antispywarů a podobných znepříjemňovačů života. Využití tohoto programu bylo takřka nulové. Test sice proběhl úspěšně na spolužákovi, který měl věřejnou IP, ale byl asi tak jediný koho znám.

Nyní, díky Microsoft .NET Frameworku, jsem objevil velice zajímavou třídu - System::Net::Sockets::NetworkSteam. NetworkStream dokáže mezi klientem a serverem otevřít duplexní komunikační kanál. A duplexní myslím doslova. Dostal jsem nápad, že by se klient mohl chovat ve své podstatě jako server a server v podstatě jako klient, tzn. že by klient vykonával rozkazy serveru. Vetšinou je server ta aktivní část, protože je automatizovaná a vykonává příkazy od pasivní části - klienta, u kterého sedí člověk a obsluhuje to. Moje myšlenka je, že to bude přesně naopak - u serveru bude sedět člověk a bude posílat rozkazy automatizovanému klientovi, u kterého nikdo nebude. Tím se rozšiřuje obor použitelnosti na naprosto každý počítač. Počítač za deseti NATama může být obětí stejně dobře jako počítač připojen přes ISDN. A podmínka je jediná - útočník musí mít veřejnou IP adresu, nebo udělaný portforwarding tak, aby na svém počítači rozběhl server. A to není nikterak náročná podmínka.

Realizovat toto jsem se rozhodl v jazyce, ve kterém se chci zdokonalit na mistra - C++/CLI. C++/CLI je C++ využívající všech možností CLI - Common Language Interface - Interface, který zajistí propojení vašeho projektu s třídami .NET Frameworku. V C# bych tohoto nikdy nebyl schopen, protože bych nemohl využít staré windows API funkce. Tak tedy C++/CLI. Ale tím, že budu používat Windows API funkce vznikne jeden velký problém - problém, který mi zabral asi pětinu celkového času - Interoperabilita. Interoperabilitou je myšlena kompatibilita základních datových typů a struktur C++ a základních datových typů a struktur .NET Frameworku. Ten nejtvrdší oříšek byl převod System::String na char*. Nakonec jsem to vyřešil (jak jinak:)) a protože jsem se u toho opravdu hrozně vztekal, poskytnu tady ostatním řešení:

Convert System::String to Char Pointer:

using namespace System::Runtime::InteropServices;
System::String ^str1;
char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str1);

No a potom to šlo jednoduše. Velikost datového bufferu jsem zvětšil na 16kB, kvůli dlouhým výpisům příkazu dir, který bude asi jeden z nejpoužívanějších.

Betatestů se zůčastnili: Kesy, Kivan.
Kesy byl mnohem ochotnější a důvěřivější než kivan, tak jsem mohl otestovat všechny funkce. Kivan nevypadal moc nadšeně, protože jsem mu předtím řekl, že pomocí toho programu mu dokážu rozebrat systém. Dokonce jsem si s ním jednou hrál na localhostu a vyzkoušel jsem příkaz “shutdown /s”, který mi vypnul počítač :) … “shutdown /s” jsem ale u betatesterů nepoužil.

Teď bych se mohl zmínit o použití.
V balíčku jsou tři soubory - jeden je návod k použití, který jsem v rychlosti napsal a druhé dva soubory bd_server a bd_client jsou server a klient.

obsah návodu je takový:

MEPHISTO BD SERIES 3 DUPLEX COMMUNICATION PROGRAM
by Michal “Leviathan” Frdlík 2007
distributed as freeware for non-commercial usage
distribuováno jako freeware pro nekomerční využití

Mephisto BD3 umožňuje uživateli vlastnícímu veřejnou IP adresu ovládat jakýkoliv
pasivní počítač v internetu pomocí příkazů příkazové řádky.
V pasivním počítači je nutno spustit bd_client a v aktivním bd_server.
bd_client se periodicky pokouší spojit s bd_serverem, jehož adresu a port jste
mu zadal. Je-li na počítači s veřejnou IP adresou spuštěn a správně nastaven
na lokální IP adresu bd_server, bd_client se spojí s bd_serverem a okamžitě
předá řízení bd_serveru.
Dojde-li k deaktivaci bd_serveru, bd_client se začne znovu periodicky pokoušet
o spojení. Dojde-li k deaktivaci bd_clientu, bd_server zavře soket, následně
znovu otevře a čeká na signál od bd_clinetu.

Ještě dodám že drive je písmeno diskové (nebo disketové) jednotky, kam se uloží malý dočasný soubor nutný k běhu klienta.

A teď nějaké ty obrázky a potom download:

nahoře: zde je vidět ideální provoz

nahoře: zde je vidět klient po připojení odpojení serveru

:D :D nahoře: a zde je vidět server po odpojení klienta :D … je pravda, že je to trochu hrubší ošetření vyjímky … nechávat to na systému :D .. ale budiž :)

A nyní slíbený download: DOWNLOAD

V budoucnu ještě dodám schovávací mechanismus pro klienta a nějaký to automatický spouštění při startu, ale to můžete s trochou šikovnosti udělat vy sami ;).

Kopyrajt samozřejmě Michal ”Leviathan” Frdlík 2007 :)

 

21 Responses to ' Mephisto BD series 3 - vrcholné dílo '

Subscribe to comments with RSS or TrackBack to ' Mephisto BD series 3 - vrcholné dílo '.

  1. kivan said,

    on April 9th, 2007 at 10:57 am

    Prej že kivan nebyl tolik ochotnej..pche..dyž vám někdo předtim řekne co všechno to umí budete taky skeptický a Michal mívá někdy fakt černej humor, taxem měl projistotu kurzor myši na odpojení w-lanky od pc :D ale jo, dost zajímavá věcička…

  2. michaelf.ms said,

    on April 9th, 2007 at 11:50 am

    kivan: černej humor? :) viz campanula? :)

    dobrý je “shutdown /p”, což bez ptaní vypne počítač :)

  3. kivan said,

    on April 9th, 2007 at 8:24 pm

    joo Campanula..Přiznávám, taky mam rád černej humor - vlastně ho použím hodně často. A to v Campě po něm volalo :)) Ale…To sem moc nepatří - můžeš napsat třeba článek :D

  4. michaelf.ms said,

    on April 10th, 2007 at 2:52 pm

    musíme se tam zas jít nalejt (ale nalejt! ne žádný autoškoly nebo autobusy!), protože jinak je tu docela velká pravděpodobnost, že se stanu největším haxorem v budějcích :) Ve škole už jsem, všechny ty geeky bych strčil do kapsy. Oni jsou možná chytřejší než já .. ale chybí jim jedno … fantazie.
    WOW o čem to tady mluvim … no co, admin si může dovolit OT :)


  5. on April 11th, 2007 at 2:35 pm

    > Využití tohoto programu bylo takřka nulové.

    Zajímalo jaký využití má tenhle prográmek. Pro vzdálený ovládání jsou daleko lepší programy (i s GUI) a maj pořešený i vzdálený spouštění programů.

  6. michaelf.ms said,

    on April 11th, 2007 at 4:21 pm

    No … ale u tech programu klient vi ze mu neco delas s pocitacem a co mu delas s pocitacem. Klient musi potvrzovat. Nejsou to backdoory.


  7. on April 11th, 2007 at 5:20 pm

    Samozřejmě že to ví, klient to chce. Myslel jsem, že to je účel i u toho tvýho programu. Nenapadlo mně že bys chtěl využít k hackingu program, u kterýho si musí oběť nejdřív nainstalovat klienta a spustit ho v cmd.exe.

  8. michaelf.ms said,

    on April 11th, 2007 at 6:10 pm

    nemusi nic instalovat a nemusi to spoustet v cmd.exe. to nema nic spolecnyho s cmd.exe.

    proc by to mel asi spoustet v cmd.exe? spoustis si snad notepad v cmd.exe? muj program je plne funkcni samostatna 32bitova aplikace ktera jako interface vyuziva interni systemovou sluzbu znamou jako konzole.

    program cmd.exe take vyuziva interni systemovou sluzbu znamou jako konzole a je to opravdu to jediny co maj spolecnyho

    cmd.exe nerovnase konzole
    cmd.exe je program pouzivajici konzoli jako interface.

    konzole vs gui: oboje jsou to interfacy a kdyz nepredpokladam ze s tim programem bude delat uplnej n00b nebudu se srat s gui, konzole mi staci.


  9. on April 11th, 2007 at 6:19 pm

    No tak tu cmd.exe tak neprožívej :o).

    No, i když to nemusí instalovat, tak jako tak musí toho klienta dobrovolně spustit a dle printsceenů to navíc vypadá, že ta konzole klienta zůstane po spuštění otevřená - to mě zajímá jak by si s tim na někoho zaútočil. Možná bys mohl použít fyzickej hack do domu oběti, kdy bys jí na PC spustil klienta a pak si mohl slavnostně vzdáleně použít příkaz DIR … vše za předpokladu že oběť není doma, protože jinak by klienta zavřela :o). Sorry já nerad rejpu, ale tohle k tomu vybízí.

  10. michaelf.ms said,

    on April 11th, 2007 at 6:27 pm

    no však si přečti poslední větu:

    V budoucnu ještě dodám schovávací mechanismus pro klienta a nějaký to automatický spouštění při startu, ale to můžete s trochou šikovnosti udělat vy sami .

    ;)


  11. on April 11th, 2007 at 6:48 pm

    Tak dobře, je to super program, ale nemáš pořešenou distribuci. Hoď to někam na nejvice-obavany-hackersky-nastroj.gov ať si to stáhne aspoň pět lidí a ať někdo reportne, jestli se mu s tim podařilo někoho hacknout. Nebo s tim klidně nekoho hackni ty a dej mi důkaz a já jsem ochotnej dát tomuhle programu nálepku ,,první frdlův užitečný program” :o).

  12. michaelf.ms said,

    on April 11th, 2007 at 7:33 pm

    no … zejtra to pustim ruzickovi na jednom z tech kompu a doma zkusim jestli to projde firewallem (teda pokud to nevypne). otevru mu to tam na neoficialnim microsoftackym testovacim portu TCP13000 a zkusim taky 80. jestli se mi povede navazat spojeni tak dam asi ruzickovi echo ze jejich firewall je opravdu shitka.


  13. on April 11th, 2007 at 10:42 pm

    Nevim jeslti je v moci firewallu zabránit něčemu takovýmu potom, co mu tam fyzicky hodíš nějakej software. To je jako by jsi povolil v nastavení firewallu všechny pakety na určitým portu a pak se divil, že firewall přes ten port propouští útoky.

  14. michaelf.ms said,

    on April 12th, 2007 at 2:35 pm

    Je to v jeho moci … i ma mym pocitaci se mne firewall pta a tady muzu kliknout na Allow, protoze mam admina.

  15. Tonda said,

    on April 14th, 2007 at 4:10 pm

    Samozřejmě, že si můžeš firewall nastavit do manuálu tak, že budeš třeba každej paket povolovat / zakazovat, ale to je možný u tebe doma, ale nemyslitelný na serveru, kterej pracuje automaticky a asi za nim nebude někdo celej den sedět.
    Funkce firewallu je chránit počítač před útoky z internetu popř. z lokálního intranetu, ne před lokálními útoky.

  16. michaelf.ms said,

    on April 15th, 2007 at 9:27 am

    nn, firewall chrani jak z vnejsi site tak z vnitrni site, zase to mam vyzkouseny.

  17. Touny said,

    on April 15th, 2007 at 11:17 am

    Do háje, tohle nesnášim … napsal jsem snad že ne nebo nevíš co to je intranet ?

  18. michaelf.ms said,

    on April 15th, 2007 at 11:31 am

    “Funkce firewallu je chránit počítač před útoky z internetu popř. z lokálního intranetu, ne před lokálními útoky.” - to si napsal. Ja reagoval na to “ne před lokálními útoky”. Intranet je web v lokalni siti a toho se to taky tyka


  19. on April 15th, 2007 at 10:01 pm

    Proste si napsal, ze firewall chrani jak z vnejsi site tak z vnitrni … ale nevim proc, protze já napsal uplne to samí, akorad jsem místo misto vnitrni site napsal intranet. A to co ty chces provadet u ruzi je lokalni utok …. a cekas ze to firewall nejak ovlivni.
    >Intranet je web … aha, radší už toho nech :D

  20. michaelf.ms said,

    on April 16th, 2007 at 5:42 am

    precti si radsi co si napsal a uz tadyten clanek nekomentuj, no more comments

  21. David said,

    on February 7th, 2009 at 1:41 pm

    Bože dííííík.. za ten převod mezi System::String^ a char…. já už sem myslel, že si něco udělám…. dokonce sem si přečetl z radosti i nějakou tvoji báseň.. děkuji děkuji děkuji

Leave a reply



kdojsi

Leviathan

    kdo je Leviathan

    Jsem student aktuálně čtvrtého ročníku střední průmyslové školy strojní a elektrotechnické v českých budějovicích

     


 


RSS Zdroj

    ::

    RSS 2.0 < ZDE

    Přidejte si můj zdroj do vaší RSS čtečky

     

Statistiky