Есть ли способ отследить конкретный DNS-запрос до отправившего его приложения?

Используйте rm -rf directoryвместо rm -rf *.

Первоначально мы выполняли rm -rf *в каталоге, чтобы очистить содержимое, и думали, что это будет максимально быстро. Но затем один из наших старших инженеров предложил избегать использования звездочек(*)и вместо этого передавать родительский каталог, например rm -rf directory.

После долгих дебатов о том, что это не имеет значения, мы решили протестировать его вместе с третьим методом использования find. Вот результаты:

time rm -rf *                   2m17.32s
time rm -rf directory           0m15.60s
time find directory -delete     0m16.97s

rm -rf directoryпримерно в 9 РАЗ БЫСТРЕЕ, чем rm -rf *!

Само собой разумеется, мы купили этому инженеру пива!

Итак, теперь мы используем rm -rf directory; mkdir directoryдля удаления каталога и повторного -его создания.

2
20.11.2020, 10:55
1 ответ

Это грубо, но вы можете использовать iptablesдля отслеживания пакета, а затем lsof, чтобы найти, что использует порт, который сделал запрос.

В основном это:

iptables -I OUTPUT -p UDP --dport 53 -m string --algo bm --string foobar.su -j LOG --log-uid --log-prefix FOOBAR_MATCH

journalctl -t kernel -f | perl -ne '/FOOBAR_MATCH/ && /SPT=(\d+)/ && system("lsof -i udp:$1")'

^ Измените foobar.suна то, что вы ищете.

Если в вашей системе включен IPv6, вам нужно взять эту команду iptablesи запустить ее во второй раз как ip6tables.

После этого снова запустите команду iptables, но с -Dвместо -I, чтобы удалить правило (s ).

 

Параметр --log-uidв правиле iptablesявляется необязательным. Я включил его на тот случай, если по какой-то причине lsofне сможет зафиксировать процесс, тогда вы все равно сможете получить некоторую потенциально полезную информацию.

Вам также может понадобиться добавить другое правило iptables, чтобы отклонить запрос. В противном случае приложение может получить ответ и исчезнуть слишком быстро, чтобы lsofего не уловил.

1
28.04.2021, 23:04

Теги

Похожие вопросы