Monday, 14 December 2009

Juletip 12: SYN scan IPv6 with scapy

Så er der blevet tid til at skrive næste indlæg, øv hvor kan tiden flyve når man har det sjovt - eller arbejder.

De planlagte indlæg tager også længere tid end forventet, måske fordi jeg leger så godt :-) Planen for de indlæg der mangler er nogle helt nede på jorden eksempler med pakker, til rigtige formål. Altså eksempler på programmer som man reelt kan bruge i sit eksisterende arsenal med Nmap, Python, Perl, Nemesis osv.

Det første som er blevet mere færdigt er en lille sød IPv6 portscanner, som snildt kan udvides med mere funktionalitet. Ideen med portscanneren er at s  More text

Posted by hlk at CET 17:12 14/12/2009 in Toolbox entries

Email address change for Henrik Kramshoej

Hi There

I am changing my email adress, the one I thought I would keep until I die ... hlk@kramse.dk

You should update your address book if you want to continue sending me email. The new address is: hlk@kramse.org

The new address has been available for some time and the old one will be removed December 2010

Thanks in advance Henrik

PS You can always find updated contact information at: http://kramshoej.tel

Posted by hlk at CET 07:12 14/12/2009 in Toolbox entries

Saturday, 12 December 2009

Juletip 11: N900 tcpdump

Update 15:14: Jeg er en tumpe, tcpdump virker - hvis man vælger det rigtige interface :-)

Hovsa, jeg tror julemanden kom forbi, for jeg har fået fat på en N900 til lidt leg :-)

Jeg har tidligere snakket en del om min Nokia N810 som jeg har leget en del med, både med tcpdump, airodump osv. - det er en sød lille hackerplatform. Dog er den lidt begrænset med specs:

  • Procesor TI OMAP 2420, 400Mhz
  • Memory DDR RAM 128MB
  • Flash 256MB
  • Storage Up to 2GB int  More text

Posted by hlk at CET 09:12 12/12/2009 in Toolbox entries

Thursday, 10 December 2009

Juletip 10: tiden flyver, og man føler man går i ring

Øv, jeg mangler stadig julegaverne ...

Men dagen idag skal handle om NTP, eller mere specifikt om NTP Denial of Service, altså ude af drift angreb mod NTP server. Først finder man indlæg som CVE-2009-3563 google søgning.

Super, der er noget nyt DoS - men hvordan verificerer vi så denne? Hvis bare der var et tool der kunne lave pakkerne der får NTP serveren til at gå i smadder - så kan vi vurdere hvor al  More text

Posted by hlk at CET 18:12 10/12/2009 in Toolbox entries

Wednesday, 9 December 2009

Juletip 9: Scapy sendpfast'er than anything else

Igår så vi på PCS og optimerede afsendelse af pakkerne, ved at lave nogle fornuftige ændringer i det første eksempelprogram.

Idag vil jeg så råt kaste et nyt værktøj ind, Scapy som ligeledes kan lave pakker. Programmet, eller bibliotekerne om man vil er ligesom PCS skrevet i Python og det virker ret nemt.

Fidusen ved Scapy er at man stakker sine pakker sammen - lidt ligesom dominobrikker og så gør Scapy forøvrigt en hel masse. Resultatet bliver nogle små programmer der er nemme at forstå, men som kan lave alverdens ball  More text

Posted by hlk at CET 12:12 09/12/2009 in Toolbox entries

Tuesday, 8 December 2009

Juletip 8: Faster, Pussycat! Kill! Kill!

Ups, tiden flyver - og idag skete der andre ting som kom i vejen. Men jeg vil aligevel lige forsøge at smide et blogindlæg i pakkekalenderen.

Dagens indlæg omhandler hastighed, med en tam reference til Russ Meyer - men hastighed er nøgleordet idag. Jeg har forøvrigt set et par Russ Meyer film og de er sjove/underlige. Lidt ligesom Orgazmo.

De sidste par dage (undtagen igår :-( ) har vi jo snakket om pakker der blev lavet med python, og det er jo meget sjovt - men måske li  More text

Posted by hlk at CET 16:12 08/12/2009 in Toolbox entries

Monday, 7 December 2009

Juletip 7: Vi sender sender sender pakker pakker pakker

sorry det er mandag og alting har drillet, der kommer ikke noget Juletip 7 idag, hvis jeg føler mig inspireret opdateres indlægget måske senere på måneden med et tip :-(

Update onsdag 9. dec: her kommer så Juletip 7, lidt forsinket:

Vi har nu set på nogle eksempler på pakker man kan bygge med PCS, men ofte er det jo et stort bøvl, hvis man "bare skal have noget trafik". Derfor vil jeg idag præsentere et lækkert program der som input tager noget eksisterende trafik, i PCAP filer selvfølgelig, og smider det ud på netværket igen.

Programmet findes på BackTrack og he  More text

Posted by hlk at CET 15:12 07/12/2009 in Toolbox entries

Sunday, 6 December 2009

Juletip 6: Vi bygger IPv6 pakker med PCS

Dagen idag bliver lidt kortere, men forhåbentlig så mere fokuseret :-)

Målet idag er således at vise hvordan man bygger IPv6 pakker med PCS som vi igår brugte til IPv4 pakker.

Til at starte med er det relativt nemt at ændre lidt imports, som man ligeledes skal opdatere hvis det er andre typer pakker man vil sende:

from pcs.packets.ethernet import ethernet
from pcs.packets.ipv6 import *
from pcs.packets.icmpv6 import *
from pcs import *

Tilsvarende ændrer man selvfølgelig til IPv6 på Ethernet niveau og på IPv6   More text

Posted by hlk at CET 10:12 06/12/2009 in Toolbox entries

Saturday, 5 December 2009

Juletip 5: Vi bygger pakker

Pakker er der nok af på vores IP netværk og de fleste kommer (forhåbentlig) fra applikationer som vi bruger. Andre igen kommer fra kernen, som svar på problemer. Enhelt tredie kategori er pakker vi selv bygger og det kan man gøre med mange værktøjer, eksempelvis:

Det første er et C bibliotek som har været tilgængeligt i mange år. Hvis man kaster sig over libnet vil man måske i første omgang mene det er lidt gammeldags, men i f  More text

Posted by hlk at CET 14:12 05/12/2009 in Toolbox entries

Friday, 4 December 2009

Juletip 4: IPv4 gråzoner og magiske konstanter

4. december og jeg har stadig ikke købt julegaver :-(

Idag skal det handle om IPv4, selvom det meste i denne kalender handler om IPv4 :-) Men mere præcist snakker jeg idag om IPv4 pakkens header. Lad os derfor tage en tur tilbage med tidsmaskinen til RFC-791 og snakke om IP protokollerne:

        INTERNET PROTOCOL
                                    
                                    
      DARPA INTERNET PROGRAM
                                    
      PROTOCOL SPECIFICATION
                                                                    
         September 1981


          prepared for
Defense Advanced Research Projects Agency
 Information Processing Techniques Office
          1400 Wilson Boulevard
        Arlington, Virginia  22209

Wauuw, vi taler altså om protokoller som stammer fra de tidlige 1980'ere? Ja, selvom vi skifter vores gadgets i samme tempo som konen køber sko og tøj så bruger vi en oldgammel teknologi! - eller ok, måske ikke oldgammel, men så ihvertfald 25 år gammel da, som i internetår ER oldgammelt, men næppe er på radaren for en arkæolog. Til gengæld skal det måske bemærkes at IP erstattede en ældre protokol og hele historien om routere på internet generelt er spændende.

Personligt undersøgte jeg en masse dokumenter da jeg skrev mit speciale om IPv6, og det er fantastisk hvor holdbare ideerne omkring netværk og pakkekommunikation har vist sig at være. Nå lad os komme igang.

Hvad kendetegner internet idag, det er et fælles adresserum baseret på 32-bit adresser, og så et nyt adresserum på 128-bit (IPv6). Typisk skriver vi adresserne i dot-notation, dvs med 10.0.2.1 eller evt. med subnetmasken 10.0.2.1/24 - altså en subnetmaske på 24 bit=255.255.255.0. Faktisk er det underveje blevet besluttet at subnetmasker SKULLE være et antal 1-bit efterfulgt af 0-bit. Denne notation kaldes for CIDR notation, efter princippet om Classless Inter-Domain Routing. Men hov, det betyder jo at man har ændret IP undervejs?

Ja, IP protokollerne udvikles hele tiden, konservativt og langsomt med de eksisterende protokoller - men der sker en udvikling. Se bare på IPv6 hvorlænge den har været undervejs, selvom den i praksis vil lette en hel masse.

Godt, vi har altså IP som er en samling netværkprotokoller, hvor en af dem hedder IP som er karakteriseret ved:

  • Best effort - pakkerne sendes ud på netværket og vi håber den kommer frem
  • Uafhængigt af hardware som benyttes både netværket og systemerne vil være heterogene (smart!)
  • Lagdelt - både i designet, der er flere lag - men også implementationen er typisk holdt adskilt
  • Netværket antages at tabe pakker og end-to-end princippet er centralt.

Princippet med at opdele det komplekse problem giver god mening, og man kan løse problemerne uafhængigt. Ligeledes er det forudseende at man ikke forsøger at forudsige hvad der vil ske i al fremtid. Så med end-to-end princippet overlader man et stort arbejde til end-to-end protokoller. Tænk bare på HTTP som blev opfundet i 1990'erne. Ønsker man at læse mere om dette anbefales RFC-1958 Architectural Principles of the Internet fra 1996.

Så IP er altså både et sammensurium af protokoller og en protokol selv, og min favorittegning af dette er:

compare-osi-ip.png

Tegningen viser lagdelingen og vi har talt om ARP og hardwarenære ting tidligere og idag er det så IP laget.

IPv4 pakken

Ser vi nu idag udelukkende på IP pakkernes headere (godt dansk ord headere ...) er der fra RFC-791 følgende oversigt, alle felter er big-endian, eller network byte order:

    0                   1                   2                   3   
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Version|  IHL  |Type of Service|          Total Length         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |         Identification        |Flags|      Fragment Offset    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |  Time to Live |    Protocol   |         Header Checksum       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Source Address                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Destination Address                        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Options                    |    Padding    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Example Internet Datagram Header

Disse felter i pakken er således defineret og der er nogle interessante observationer:

Version er 4-bit og burde vel være 4? Jo, den er 4 - men det behøver man vel ikke checke? I version 6 er det ligeledes antaget at værdien ER 6, men det er ikke beskrevet at man skal checke dette ... pudsigt. Dette fik jeg forklaret af Radia Perlman på en konference.

Internet Header Length er naturligvis længden på pakken, antallet af 32-bit words i headeren.

Type of Service er interessant, selvom det har levet en kummerlig tilværelse i mange år er der kommet mere fokus på det i de senere år. Blandt andet revolutionen med IP telefoni, streaming af lyd og video giver et ønske om bedre kvalitet af internetforbindelserne.

Total length er hele pakkens længde i bytes, og bemærk af der kan ske fragmentering i IP - hvor en stor pakke opdeles i mindre, så modtageren kan godt risikere at få data over flere pakker - hvor fragmentation offset således ikke er 0. Når vi nu snakker om fragmenter kan vi angive at identification bruges til at identificere pakkerne - som de oprindeligt blev sendt. Tidligere blev dette IP ID felt blot talt een op for hver pakke - men dette kunne faktisk bruges til stealth scanning og de fleste implementationer er mere tilfældige idag.

Time to Live er en valgfri øvre grænse for levetiden for en IP pakke, som tælles ned på routere på vejen fra afsender til modtager. Hvis den når 0 smides pakken væk og der sendes en ICMP fejlbesked tilbage til afsenderen. Denne besked hedder ICMP time exceeded in-transit og udnyttes blandt andet af traceroute programmet. Traceroute er forøvrigt lidt af et hack udviklet af Van Jacobson omkring 1988.

Protocol er feltet der angiver næste protokol, dvs typiske værdier er ICMP protokol 1, TCP 6, UDP 17, samt IPsec protokollerne ESP 50 og AH 51 du kan finde en liste i /etc/protocols

Flags er et bit-felt der bruges som en del af fragmentering.

Various Control Flags.
Bit 0: reserved, must be zero
Bit 1: (DF) 0 = May Fragment,  1 = Don't Fragment.
Bit 2: (MF) 0 = Last Fragment, 1 =   More text
                                                                    

Posted by hlk at CET 13:12 04/12/2009 in Toolbox entries

Thursday, 3 December 2009

Juletip 3: ARP vs NDP, IPv6 Neighbor Discovery Protocol

Så er vi nået til den 3. december, har du købt dine julegaver? Jeg har ikke :-(

Idag vil jeg fortsætte på nogenlunde samme niveau som igår - blot med IPv6. Til dem der ikke kender IPv6 i forvejen så er det den nye internet protokol, og se så at komme igang! Start evt. med at slå det til på din arbejdsstation og du vil blive forbløffet over så meget der efterhånden bruger IPv6 - uden du ved det.

I flæng kan jeg eksempelvis nævne at mine Airport Express nægtede at spille musik på et tidspunkt, og det viste sig at de krævede noget IPv6 for at virke :-)

Så dagen idag  More text

Posted by hlk at CET 10:12 03/12/2009 in Toolbox entries

Wednesday, 2 December 2009

Juletip 2: Ethernet og ARP

Ups, jeg var lige ved at glemme julekalenderen!

Ethernet

Når vi snakker netværk idag er det typisk TCP/IP protokollerne - som er dem der bruges på internet. Tidligere da jeg begyndte at arbejde med netværk var der andre ting som IPX og NetBEUI. Når vi så bruger TCP/IP, dvs IP protokollerne på vores netværk er det ofte ved hjælp af Ethernet og de mange varianter af Ethernet som findes.

Så lad o  More text

Posted by hlk at CET 15:12 02/12/2009 in Toolbox entries

Tuesday, 1 December 2009

Juletip 1: Pakker, pakker og pakker

Hej Allesammen

Sidste år lykkedes det at lave 24 blogindlæg i december, og det vil jeg forsøge at gøre igen i år. Det bliver hårdt og jeg lover ikke noget :-)

Hvis du ikke så indlæggene fra sidste år kan du finde dem på følgende link: http://blog.kramse.org/blojsom/blog/default/2008/12/

I år vil jeg forsøge at holde et overordnet emne som er pakker! Pakker med bits og protokoller med masser af søde pakker, og måske et par bitre sure onde pakker. Disse pakker vil blive gennemgået i sammenhæng med div  More text

Posted by hlk at CET 10:12 01/12/2009 in Toolbox entries

Wednesday, 1 July 2009

Perl IPv6 sockets, grmpf

This blog entry is about IO::Socket::INET6 - Object interface for AF_INET|AF_INET6 domain sockets which is used for IPv6 socket communication from Perl.

Make sure that you install the module first. Using Backtrack 4 pre final I used something like:

hlk@sylvia:~$ sudo apt-get install libio-socket-inet6-perl

The built-in Perl from /usr/bin/perl on Mac OS X has this module, but if you are using a locally built /usr/local/bin/perl from Macports or Fink you might not have it inst  More text

Posted by hlk at CEST 11:07 01/07/2009 in Toolbox entries

Monday, 22 June 2009

CUDA and Pyrit on BT4 Prerelease

Lets move on, continued from last post - which was very short.

I upgraded this nice little machine for doing cracking of passwords, WPA-PSK and whatever.

The CPU was an upgrade to AMD Athlon64 X2 7750 Black Edition 2.7Ghz, which according to the installed BackTrack 4 Linux is:

Booting processor 1 APIC 0x1 ip 0x6000
Initializing CPU#1
Calibrating delay using timer specific routine.. 5427.09 BogoMIPS (lpj=9041756)
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 512K (64 bytes/line)
CPU: Physical Processor ID: 0
CPU: Processor Core ID:  More text
                                                                    

Posted by hlk at CEST 07:06 22/06/2009 in Toolbox entries