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 auditdplatformę na swojej platformie i upewnij się, że auditctl -lcoś 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ć b32w 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_INETma wartość 2 i SOCK_DGRAM2. Używałby połączeń TCP, SOCK_STREAMktóre by się ustawiły a1=1. ( SOCK_DGRAMw drugim parametrze może być ORed przy pomocy SOCK_NONBLOCKlub SOCK_CLOEXEC, stąd &=porównanie). To -k SOCKETnasze 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 pingpolecenie spowodowało otwarcie gniazda. Mógłbym wtedy uruchomić strace -p 14510proces, 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 -az -d.
auditctl -d exit,always -F arch=b64 -F a0=2 -F a1\&=2 -S socket -k SOCKET