Możesz użyć kontrolowanego frameworka do tego typu rzeczy. Nie są zbyt „przyjazne dla użytkownika” ani intuicyjne, więc wymagają trochę pogrzebania z twojej strony.
Najpierw upewnij się, że masz zainstalowany audyt, działasz i że jądro go obsługuje.
W systemie Ubuntu możesz apt-get install auditd
na przykład go zainstalować .
Następnie dodajesz connect
zasadę audytu, aby monitorować wszystkie takie wywołania systemowe:
auditctl -a exit,always -F arch=b64 -S connect -k MYCONNECT
Jeśli używasz 32-bitowej instalacji systemu Linux, musisz zmienić b64 na b32.
To polecenie wstawi zasady do struktury kontroli, a wszystkie wywołania systemowe connect () będą teraz logowane do twoich plików dziennika kontroli (zwykle /var/log/audit/audit.log
), abyś mógł je obejrzeć.
Na przykład połączenie z netcat do portu 80 news.ycombinator.com spowoduje coś takiego:
type=SYSCALL msg=audit(1326872512.453:12752): arch=c000003e syscall=42 success=no exit=-115 a0=3 a1=24e8fa0 a2=10 a3=7fff07a44cd0 items=0 ppid=5675 pid=7270 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts4 ses=4294967295 comm="nc" exe="/bin/nc.openbsd" key="MYCONNECT"
type=SOCKADDR msg=audit(1326872512.453:12752): saddr=02000050AE84E16A0000000000000000
Tutaj możesz zobaczyć, że aplikacja /bin/nc.openbsd zainicjowała wywołanie connect (), jeśli otrzymujesz wiele wywołań połączenia i chcesz tylko wyodrębnić określony adres IP lub port, musisz wykonać konwersję. Linia SOCKADDR zawiera argument saddr, zaczyna się od 0200, po którym następuje numer portu w systemie szesnastkowym (0050), co oznacza 80, a następnie adres IP w systemie szesnastkowym (AE84E16A), który jest adresem IP news.ycombinator.com na poziomie 174.132.225.106.
Struktura audytu może generować wiele dzienników, więc pamiętaj, aby ją wyłączyć po zakończeniu misji. Aby wyłączyć powyższe zasady, po prostu zamień -a na -d jako takie:
auditctl -d exit,always -F arch=b64 -S connect -k MYCONNECT
Dobra dokumentacja ram audytu:
http://doc.opensuse.org/products/draft/SLES/SLES-security_sd_draft/part.audit.html
Konwertuj adresy IP na / z hex, dec, binarne itp. Na:
http://www.kloth.net/services/iplocate.php
Ogólny konwerter hex / dec:
http://www.statman.info/conversions/hexadecimal.html
Krótkie wprowadzenie do audytu z IT Security Stack Exchange.
http://security.blogoverflow.com/2013/01/a-brief-introduction-to-auditd/
Edycja 1 :
Innym szybkim i trzydziestym (szwedzkim: fulhack) sposobem jest utworzenie szybkiej pętli, która zrzuca dane połączenia do Ciebie, w następujący sposób:
while true;do
ss -ntap -o state established '( dport = :80 )'
sleep 1
done
To polecenie używa ss
polecenia (statystyki gniazda), aby zrzucić bieżące ustanowione połączenia z portem 80, w tym proces zainicjowany. Jeśli jest to dużo danych, które możesz dodać | tee /tmp/output
po zakończeniu, aby zarówno wyświetlić dane wyjściowe na ekranie, jak i zapisać je w katalogu / tmp / output w celu późniejszego przetwarzania / kopania. Jeśli nie uda się złapać szybkiego połączenia haproxy, spróbuj usunąć, sleep 1
ale zachowaj ostrożność przy rozległym logowaniu, jeśli jest to mocno używana maszyna. Zmodyfikuj w razie potrzeby!
ausearch -i
dosaddr
automatycznego dekodowania tych ciągów heksadecymalnych.Możesz także grep ogromne logi, które otrzymujesz z "ausearch -i", aby zobaczyć tylko te gniazda, które pomyślnie nawiązały połączenie z innym hostem w Internecie. Napisałem uproszczony skrypt, aby pobrać każdy proces i polecenie, które utworzyło gniazdo do połączenia z hostem w Internecie wraz z adresem połączenia tego hosta docelowego i bieżącym czasem, w którym gniazdo zostało „utworzone”. Oto on:
źródło