mejborn.dk

Gør din server mere sikker med Tariq

af Mathias den aug.04, 2010, under IT

Jeg læste for nyligt om Tariq og blev så begrejstret at jeg synes jeg ville forsøge at sætte mig lidt ind i det. Det er blevet til en del leg men også et blogindlæg om hvordan man kommer igang med Tariq.

Tarig kan hentes her

Introduktion

Tariq benytter sig af port-knocking. Port-knocking er en teknik der bruges til at åbne porte på en firewall, ved at forsøge at tilslutte sig på et predefineret set af lukket porte. Efter den korrekte sekvens af tilslutningsforsøg er opnået, så vil firewallen automatisk tilføje en regel i dens ACL som giver computeren adgang.

Dette kan bruges for at skjule sig for portskannere, eller til at gøre usikre protokoller som eksempelvis FTP og Telnet sikre at benytte.

Der er i sig selv ikke noget nyt i port-knocking, hvad der er nyt er måden som Tariq gør det på. Tariq benytter sig af kryptering, stenografi(gemmer informationer/kommandoer i billeder) og authentificering.

Tariq er skrevet i python og virker ved at man kører applikationen TariqServer i sniffing mode, på den server der skal modtage forbindelser. Klienterne der skal tilslutte til serveren skal kører TariqClient for at åbne porte eller eksekverer kommandoer på serveren.

Flowet i Tariq kan beskrives således (TariqClient vil herefter blive kaldt klient og TariqServer vil blive kaldt server);

  • Klienten tilføjer kommandoen til en png fil, ved hjælp af stenografi.
  • Klienten tilføjer billedet til en TCP SYN pakke, som den sender til en pre-defineret port (konfigureret på serveren).
  • Serveren modtager pakken og sikrer sig at den indeholder et billede.
  • Serveren henter kommandoen fra billedet.
  • Serveren udvælger et tilfældigt tal og krypterer det ved at benytte sig af klientens publik GnuPG nøgle.
  • Serveren sender dette tal tilbage som svar på SYN pakken som klienten tidligere sendte. Dette gøres for at færdiggøre authentifikations processen (fra serverens side).
  • Klienten modtager pakken og udpakker tallet som den dekrypterer ved hjælp af sin private GnuPG nøgle.
  • Klienten krypterer tallet ved hjælp af serverens publik GnuPG nøgle og sender det retur til serveren, for at sikre authentifikations processen fra klientens side.
  • Serveren dekrypterer tallet ved hjælp af sin private nøgle og sikrer sig at tallet er det samme som blev sendt til klienten. Hvis det er tilfældet så udfører serveren herefter den kommando som stod i billedet der blev sendt i den første SYN pakke.

Alt dette gøres uden at nogen åbne porte, how sweet is that! :)

Installationskravene er:

  • Python version 2.6 eller nyere
  • Python-imaging (PIL)
  • GnuPG
  • Scapy
  • En linux kerne der understøtter iptables (2.6 eller nyere)

Opsætning af klient

Det første der skal klares er oprettelsen af en mappe til gnupg og genereringen af et par nøgler:

mkdir /etc/tariq/.client-gpg
chmod 600 /etc/tariq/.client-gpg
gpg --homedir /etc/tariq/.client-gpg -gen-key

Den publikke nøgle skal lige eksporteres:

gpg --homedir /etc/tariq/.client-gpg -a --export bruger@domain.dk > key.pub.txt

client.conf filen skal lige ændres, så den ved hvor gpg mappen er og hvem gpg brugeren er:

client_gpg_dir=/etc/tariq/.client-gpg
user=bruger@domain.dk

Husk også at angiv hvor billedemappen til stenografi findes, mappen skal indeholde et billede, som passende kan være det der følger med Tariq:

sample.png:
img_dir=/usr/share/TariqClient/img

Nu skal port-knocking rækkefølgen angives, der er ikke nogen krav til den – blot at det er den samme som du senere hen konfigurer serveren til at lytte efter.

secret_ports=14000,6666,9999,12345,10101,77777

Så nem var opsætningen af klienten :)

Opsætning af server

Ligesom på klienten skal der også på serveren oprettes en mappe til gnupg:

mkdir /etc/tariq/.server-gpg
chmod 600 /etc/tariq/.server-gpg

Så skal klientens publik nøgle importeres:

gpg --homedir /etc/tariq/.server-gpg --import < client-pub.txt
gpg --homedir /etc/tariq/.server-gpg --edit-key bruger@domain.dk

Vi skal lige rette lidt i iptables så vi har en chain til tariq serveren:

iptables -P INPUT DROP
iptables -N tariq
iptables -A INPUT -j tariq
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Så skal server.conf tilrettes, så serveren lytter på den port-knocking rækkefølge som vi tidligere valgte på klienten:

secret_ports=14000,6666,9999,12345,10101,77777

Vi skal også lige huske at angive serverens gpg sti og den iptables chain vi lavede ovenfor:

server_gpg_dir=/etc/tariq/.server-gpg
iptables_chain=tariq

I vores eksempel kan man bede serveren om at åbne TCP eller UDP porte, vi skal derfor også lige tilføje lidt iptables kode til filen:

open_tcp_port=-A tariq -s {ip} -p tcp -m state -- state NEW -m tcp --dport {dport} -j ACCPET

Og en så vi kan åbne UDP porte:

open_udp_port=-A tariq -s {ip} -p udp -m state -- state NEW -m udp --dport {dport} -j ACCPET

Sådan bruges Tariq

Det kan ikke være mere simpelt at benytte tariq, serveren startes sådan:

./TariqServer

Hvis man fra klienten eksempelvis vil åbne for port 22 for at tilgå serveren over SSH og serveren befinder sig på mejborn.dk, skriver man:

./TariqClient -u bruger@domain.dk mejborn.dk O 22

Tariq serveren vil med et predefineret interval tjekke om der er forbindelse til den port man har åbnet, hvis der ikke er så vil Tariq sørge for at den bliver lukket. Man kan også selv lukke porten, det gøres sådan her:

./TariqClient -u bruger@domain.dk mejborn.dk C 22

Man kan også genstarte en service via tariq, det gøres sådan:

./TariqClient -u bruger@domain.dk mejborn.dk E service sshd restart

Kilde: hakin9
Skriv en kommentar :, , , , , mere...

CISSP certificering hos PwC

af Mathias den jul.22, 2010, under Fritid, IT

Her for et par uger siden fik jeg CISSP certificeringsforløbet godkendt af min chef,  så jeg starter op til oktober sammen med et par andre kollegaer fra BEC og et par stykker fra JN data.

Senere i dag bliver jeg færdig med første gennemgang af bogen fra Shon Herris. Lørdag går turen til Tjekkiet sammen med mine søskende og deres påhæng. Forhåbentlig får jeg tid til at begynde på den officielle bog fra ISC2 omkring CISSP certificeringen, den skal læses færdig i løbet af ferien så jeg er klar til anden omgang af bogen fra Shon Herris. Jeg synes jeg er lidt bagud i forhold til min oprindelige plan, men det har taget lidt tid at komme på plads i det nye hus.

Et lille tip til de af jer der har en Android telefon og af og til læser certificeringer, så kan jeg anbefale Studydroid, som er en lille applikation hvor du kan hente (eller skrive nye) memorycards så du kan teste dig selv på forskellige områder.

Der ligger allerede et par CISSP “kortbunker” derinde og jeg er igang med at lave en dansk.

Jeg har overvejet lidt at blogge lidt om de punkter i CBK’en hvor jeg synes jeg ikke er så skarp, for på den måde at få arbejdet lidt mere med det men nu må vi se. Der er efterhånden en del ting jeg mangler at blogge om :)

Skriv en kommentar mere...

Siden sidst

af Mathias den jul.01, 2010, under Fritid

Som nogen af jer nok har bemærket, så er der ikke sket meget på bloggen den seneste tid og serveren har også været nede i en “længere” periode.

Det skyldes at Sabrina og jeg har købt hus og er flyttet til Væggerløse. Jeg havde i den forbindelse trukket lidt nye kabler i ejendommen så jeg kunne få placeret serverne godt (i et skab) i stedet for i stuen, hvor det eksisterende rj-11 stik sad. Det gav lidt problemer og det tog også et par dage at få flyttet linjen.

Serverne er nu installeret sådan nogenlunde, der mangler dog at blive trukket noget strøm direkte fra tavlen og ned til serverskabet samt lidt andre småting. Der kan derfor forekomme flere udfald det næste stykke tid, men jeg skal forsøge at lave rettelserne om natten så de generer mindst muligt(jeg burde investerer i en UPS).

Der er meget at se til når man bliver husejer og min TODO liste er da også vokset en del efter at vi flyttede og efterhånden som man kommer på plads. Jeg skal prøve at få blogget lidt indimellem men ellers vil der nok være lidt stille henover sommeren.

Jeg mangler stadigvæk at komme med lidt flere Google hacks og har også lidt andre blogideer i tankerne.

Ellers går det fremad med CISSP læsningen, jeg er i løbet af weekenden færdig med Shon Harris’ 5. edition bogen og går så igang med “official guide to the CISSP by ISC2″ den kan jeg nok nå at læse i ferien :)

Skriv en kommentar :, , , mere...

Google hacking #2

af Mathias den apr.18, 2010, under IT

Dette indlæg bliver lidt en efterfølger til det sidste. Jeg vil blot udvide med lidt flere filtyper som man kan søge efter, blot for at sætte tankerne lidt igang til hvad man ellers kan søge efter.

Excel ark med navnet finance

Excel ark med navnet passwords

Man kan blive overrasket over hvor mange kodeord man kan finde ved søgningerne ovenfor, forhåbentlig giver en søgning på dine sider ingen resultater.

Mysql database dumps

Ligeledes forbavsende hvor mange der ligger deres database dumps online, enten ved uheld eller på forums i forbindelse med hjælp. Her er virkelig meget information at hente.

Skriv en kommentar :, , , , mere...

Google hacking #1

af Mathias den apr.16, 2010, under IT

Det første indlæg handler som sagt om de fejl man som bruger af computere ofte får smidt i hovedet, når tingene ikke altid fungerer som de skal. Google cacher og indekserer enorme mængder af data dagligt. Det sker at de kommer forbi en hjemmeside som indeholder fejlmeddelelser og disse bliver naturligvis også cachet hvilket hackere i stor stil benytter sig af.

Man kan roligt sige at Google er “The hackers #1 tool”.
Jeg glemte vist i første indlæg at fortælle at jeg ikke har til hensigt at “udstille” nogle hjemmesider med mine søgninger.

Jeg vil kort forklare søgningen og hvorfor den er relevant samt komme med et link til hvad der skal søges efter på Google. Så må det være op til jer selv hvordan i vil bruge den information. Jeg har dybt respekt for ethical hackere, ikke hackere i almindelighed.

Serien vil derfor vise hvilke ting en hacker bruger Google til. På denne måde bliver man selv bedre til at forhindre at disse ting havner hos Google til at starte med.

mysql query warning
En af de mest udbredte open source databaser er uden tvivl mysql, hvilket selvsagt også gør den til et yndet mål for hackere.

En mysql query warning kan egentlig være mange ting, men oftest opstår fejlen hvis man har foretaget et ugyldigt opsalg mod databasen. Hvad mere interessant er dog at fejlen i visse tilfælde også opstår i forbindelse med ugyldigt login. En mysql warning vil ikke afslører kodeordet på den person der prøver at tilgå databasen men blot vise om der er forsøgt med eller uden kodeord.
Desværre afslører en mysql warning ofte dele af database strukturen, som man ikke er interesseret i at andre skal kende til. Det kan eksempelvis være hvad den tabel hedder som man gemmer brugerene i, hvordan kolonnen som man opbevarer brugernes koder i er defineret osv.

Google søgningen ser sådan ud:
“Warning: mysql_query()” “invalid query” og i linkform.

Man kan som altid kombinerer flere søge kriterier ad gangen. Hvis man eksempelvis kun vil se danske sider, kan ovenstående søgning kombineres med site:*.dk, altså: “Warning: mysql_query()” “invalid query” og i linkform. Hvis man ønsker at se om en bestemt side indeholder mysql query errors så erstatter man jo selvfølgelig bare site:*.dk med site:denSideJegVilUndersøge.dk.

Indeholder nogle af oplysningerne ipadresser og man gerne vil vide “hvem der står bag” så er det næste naturlige skridt at lave en whois på ipadressen. Det kan i Linux gøres ved at åbne terminalen og skrive “whois 192.168.2.1″ hvor ipadressen naturligvis skal erstattes med den du ønsker at undersøge.

Når man så har et domænenavn så ville næste naturlige skridt at gå til netcraft.com for at finde ud af hvilke andre ipadresser der findes samt hvilke operativsystemer deres webservere kører. Selvfølgelig kan man bare fyrer op under nmap men det er lidt mere afslørende end et opslag på netcraft :)

Et simpelt opslag på netcraft med en søgning efter pet.dk viser at de benytter sig af Windows 2000 og IIS 5.0, nogle af deres maskiner er sidst patchet i 2003. Nu skal man ikke lade sig narre af disse oplysninger, forhåbentligt er det oplysninger pet har facket omkring deres operativ system (og de kører forhåbentlig noget helt andet i virkeligheden) :o

En tilsvarende søgning på netcraft med adressen cia.gov viser at de har gjort noget af det pet burde have gjort.

Jeg ved ikke helt hvad næste indlæg skal handle om men mon ikke vi udvider søgekriterierne lidt og finder lidt flere spændende ting.

Skriv en kommentar :, , , , mere...

Leder du efter noget?

Brug formen nedenfor til at søge på siden:

Hvis du stadigvæk ikke finder hvad du søger, så kontakt mig venligst.

Besøg mine venner!

Et par links til vennernes blogge...