Kontrola systemu Linux może pomóc. Przynajmniej zlokalizuje użytkowników i procesy wykonujące połączenia sieciowe datagramów. Pakiety UDP są datagramami.
Najpierw zainstaluj auditd
platformę na swojej platformie i upewnij się, że auditctl -l
coś zwraca, nawet jeśli mówi, że nie zdefiniowano żadnych reguł.
Następnie dodaj regułę, aby obejrzeć wywołanie systemowe socket()
i oznacz ją, aby łatwo znaleźć później ( -k
). Muszę założyć, że jesteś na architekturze 64-bitowej, ale można podstawić b32
w miejsce b64
, jeśli nie jesteś.
auditctl -a exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET
Musisz wybrać strony socket(PF_INET, SOCK_DGRAM|X, Y)
podręcznika i pliki nagłówkowe, aby to zbudować, ale to, co przechwytuje, to w zasadzie to wywołanie systemowe: gdzie trzeci parametr jest nieokreślony, ale często zerowy. PF_INET
ma wartość 2 i SOCK_DGRAM
2. Używałby połączeń TCP, SOCK_STREAM
które by się ustawiły a1=1
. ( SOCK_DGRAM
w drugim parametrze może być ORed przy pomocy SOCK_NONBLOCK
lub SOCK_CLOEXEC
, stąd &=
porównanie). To -k SOCKET
nasze słowo kluczowe, którego chcemy użyć przy późniejszym wyszukiwaniu ścieżek audytu. Może to być wszystko, ale lubię to upraszczać.
Odczekaj kilka chwil i przejrzyj ścieżki audytu. Opcjonalnie możesz wymusić kilka pakietów, wysyłając polecenie ping do hosta w sieci, co spowoduje wyszukiwanie DNS, które korzysta z UDP, co powinno wyzwolić nasz alert kontroli.
ausearch -i -ts today -k SOCKET
Pojawią się dane wyjściowe podobne do poniższej sekcji. Skracam to, aby podkreślić ważne części
type=SYSCALL ... arch=x86_64 syscall=socket success=yes exit=1 a0=2 a1=2 ... pid=14510 ... auid=zlagtime uid=zlagtime ... euid=zlagtime ... comm=ping exe=/usr/bin/ping key=SOCKET
Na powyższym wyjściu możemy zobaczyć, że ping
polecenie spowodowało otwarcie gniazda. Mógłbym wtedy uruchomić strace -p 14510
proces, jeśli nadal był uruchomiony. ppid
(Rodzic proces ID) jest również wymieniona w przypadku jest to skrypt, który ikra problem dziecko dużo.
Teraz, jeśli masz duży ruch UDP, nie będzie to wystarczająco dobre i będziesz musiał skorzystać z OProfile lub SystemTap , które są obecnie poza moją wiedzą.
To powinno pomóc zawęzić sytuację w ogólnym przypadku.
Kiedy skończysz, usuń reguły kontroli przy użyciu tej samej linii użyty do jego utworzenia, zastąpić tylko -a
z -d
.
auditctl -d exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET