Libor Bešenyi / 06. 02. 2007, 00:00
Dneska si ukážeme, ako sa dá využiť HTTP na pašovanie príkazov dvoch zariadení.
Teraz sa vráťme ku problému s trójskym koňom. Ako dostávať správy od klienta mimo LAN, keď serverová časť (časť obete, ktorá vykonáva príkazy – slúži – je otrokom – z latinčiny servo – teda server) „sedí“ za bránou s NAT protokolom?
Tu si pomôžeme inou službou, napríklad http. Ak na strane obeti je povolené prezerať stránky, tak celá aplikácia sa bude ovládať z textu, ktorý si prečíta na stránke. Tento text sa zasa bude meniť podľa toho, ako si to „želá“ klient. Takže keď sa pozrieme na obrázok v 2. kapitole o tunelovaní zistíme, že útočník vlastne ovláda redirektor, teda server, ktorý zasa ovláda klienta.
Čo potrebujeme, aby nám to fungovalo? Znalosti z nejakého vyššieho jazyka a webového jazyka napr. Perl, PHP, teda podľa potreby, čo máme „po ruke“ na redirektore. Náš program bude úplne primitívny a dokáže len jedinú vec – poslať príkaz obeti na otvorenie ľubovoľného programu (v ceste).
Ak nemáme po ruke žiaden server, nezúfajme. Celú komunikáciu si môžeme nasimulovať na jednom PC! Najprv si stiahneme a nainštalujeme PHP serever s webovým serverom Apache. Najlepšie je nájsť nejaký balíček, ktorý sa rýchlo a jednoducho inštaluje a so všetkým, čo potrebujeme (PHP Home alebo niečo podobné).
Teraz už len stačí spustiť server Apache (C:/Apache/Apache.exe) a ak chceme prácu skončiť len program vypneme. Na overenie, či program vlastne pracuje správe sa pozrieme tak, že spustíme prehliadač stránok a zadáme našu IP, teda localhost a uvidíme, nejakú stránku, ktorá sa spúšťa z nášho PC – teda sme si vytvorili vlastný webový server – to je práve Apache. PHP je modul tohoto programu. Ak chceme vyskúšať prácu aj s PHP, stránky, ktoré sa spúšťajú sú implicitne v adresári Apache/HTDOCS. Vymažeme obsah celého adresára a vložíme tam súbor index.php s takýmto obsahom:
<?PHPAko by mal vyzerať náš skript? No, mal by vedieť zapisovať text do súboru, vedieť ho vymazať a vypísať jeho obsah. Je to preto, že útočník vyšle správu tomuto skriptu, už nie ako: „Otvor mechaniku“, ale „Povedz obeti, nech otvorí mechaniku“. Teda skript si zapíše dôležitý údaj „Otvor mechaniku“ do súboru s príkazmi a v určitých intervalov sa bude program nainštalovaný v obetiach prihlasovať na rovnaký skript typu: „Nie je tu pre mňa nejaký príkaz?“ a skript mu vypíše súbor s príkazom (príkazmi), ktoré má vykonať. Skript vytvoríme tak, aby mohla obeť aj vracať nejaký text a útočník bude pracovať podobne, v určitých intervaloch sa bude pýtať skriptu, či obeť mu niečo neposlala.
Skript teda bude musieť vedieť pracovať s dvoma súbormi s rovnakými funkciami. Teda si napíšeme obidve funkcie, aby sme nemali zbytočne dlhý zdroják.
Pozor: Aplikácie nie sú výplodom Hi-Tech možností a sú plné chýb a použitých metód, ktoré sa neodporúčajú pri programovaní z hľadiska bezpečnosti apod. To však pre tento seriál nie je podstatné – najdôležitejšie je jednoducho demonštrovať funkcionalitu!
http://www.[niečo].[niekde]/[skript]?[premenná1]=[obsah1]&[premenná2]=
[obsah2]&...
Vieme, že pridať príkaz musíme vykonať cez dve premenné: OP a S. Takže napíšme niečo ako na obrázku:
Programy so zdrojovými kódmi nájdeme tu. Ak chceme vedieť, či to funguje na jednom počítači, musíme mať dobrú fantáziu a veriť hornému výkladu, že to fakt takto funguje ;-). Spustíme Apache, pozrieme, či existuje náš skript na „svojom“ mieste, spustíme program klient.exe a aj server.exe. Čo sa týka „reči“, ktorá sa pašuje týmto spôsobom, je na každom z nás. Ja som zvolil jediný príkaz (toto už je na samotných aplikáciách, pozri zdrojové kódy): exec:[program], teda namiesto zátvoriek dosadíme názov programu v ceste a server ho na svojom PC spustí (spúšťam kalkulačku – príkazom exec:calc, ktorý napíšem klientovi):
ZobraziťA aby neboli ukrátení tí, ktorí to chcú vyskúšať v praxi ako sa „má“, tak tu je postup. Uploadujme na svoj webový server súbor index.php. Teda napríklad:
Na počítač vo vnútri nejakej sieti spustíme serverovú časť. Druhý počítač (môže byť aj v tej istej sieti, ale na takúto prácu sa efektívnejšie hodí aplikácia z kapitoly o Sociálnom inžinierstve a škodlivých programoch) nech je tiež pripojený do Internetu. Do oboch aplikácií v časti URL napíšeme http://www.liborbes.devnet.sk/Utoky/tunnel a vyskúšame komunikáciu tak, že v klientovi napíšeme inkriminovaný riadok na spústenie kalkulačky (prípadne cmd na spustenie shell) a za pár sekúnd sa fakt spustí daný program vo vnútri chránenej siete!
Programy sú veľmi primitívne a hlúpe. Ale slúžia ako príklad veľmi pekne, pretože sú nenáročné na zdrojový kód. Preto sú však náchylné na chyby ako nesynchronizovaný vstup do súboru apod. To však nie je problematikou tohto dokumentu.
Ináč, keď si všimneme architektúru tohto programu, dalo by sa povedať, že sa jedná o aplikáciu klient – server. Aj tenký klient a tak najideálnejší názov sa javí ako: klient – tenký server J.
Celý tento krátky seriál si môžete stiahnuť v celku na tomto mieste.
Pozn.: Keď som po čase prechádzal zdrojové kódy, tak som sa musel pousmiať, preto prosím, ich berte len ako demonštračné kúsky, ale neučte sa z nich ;-)
[1] Pozor, existujú aj neviditeľné polia, ktoré sa posielajú, no nezobrazujú sa v URL. To ale nepatrí do tohto článku
Copyright © 2002 - 2013 inet.sk, s. r. o. | Všetky práva vyhradené | Neprešlo jazykovou úpravou | ISSN 1336-1899
Využívame kvalitný webhosting za rozumnú cenu od Inet.sk