LINUX.ORG.RU
решено ФорумAdmin

nmap: хост пингуется, но nmap считает, что хост недоступен.

 


0

1

Столкнулся со странным поведением nmap: хост пингуется, но nmap считает, что хост недоступен.

При этом, nmap не отправляет никаких icmp пакетов (в снифере видны только отправка tcp пакетов на 80 и 443 порты).

Это такой баг, или я чего-то не понимаю?

$ nmap 192.168.128.26
Starting Nmap 7.70 ( https://nmap.org ) at 2019-09-05 12:13 MSK
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.04 seconds

tcpdump:

12:13:35.643771 IP 192.168.65.14.46960 > 192.168.128.26.80: Flags [S], seq 1355181642, win 29200, options [mss 1460,sackOK,TS val 860506560 ecr 0,nop,wscale 7], length 0
12:13:35.643794 IP 192.168.65.14.44864 > 192.168.128.26.443: Flags [S], seq 1327317304, win 29200, options [mss 1460,sackOK,TS val 860506560 ecr 0,nop,wscale 7], length 0
12:13:37.645092 IP 192.168.65.14.44868 > 192.168.128.26.443: Flags [S], seq 751563836, win 29200, options [mss 1460,sackOK,TS val 860508561 ecr 0,nop,wscale 7], length 0
12:13:37.645120 IP 192.168.65.14.46968 > 192.168.128.26.80: Flags [S], seq 314395223, win 29200, options [mss 1460,sackOK,TS val 860508561 ecr 0,nop,wscale 7], length 0
★★★★★

Последнее исправление: Harliff (всего исправлений: 2)
Ответ на: комментарий от Harliff

Глянул man nmap:

If no host discovery options are given, Nmap sends an ICMP echo request, a TCP SYN packet to port 443, a TCP ACK packet to port 80, and an ICMP timestamp request.

То есть, пинги должны быть…

Harliff ★★★★★
() автор топика
Ответ на: комментарий от Harliff

Всё, разобрался.

man nmap: When executed by an unprivileged user, only SYN packets are sent (using a connect call) to ports 80 and 443 on the target

И правда, туплю сегодня. Спасибо, @Anoxemian !

Harliff ★★★★★
() автор топика

Да, это местами неочевидный момент, мне в этом плане повезло - у меня был дистрибутив с hardened-ядром и отсутствием suid-бита у ping. Вот тогда то я и познал, что TCP и UDP-сокеты - доступны обычному пользователю, а чтоб слать ICMP - нужен доступ к RAW-сокетам, а значит - либо права рута, либо(вроде, могу ошибаться) CAP_NETADMIN

С тех пор запускаю nmap и traceroute только из под рута

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Отступая немного от темы:

не пойму, почему, если вызвать /bin/ping из shell’a, то он работает, а если из strace - то нет (ping: socket: Operation not permitted). Есть какая-то разница в том, как shell и strace запускают исполняемый файл?

Кстати, suid-бита там нет, там

# getcap /bin/ping
/bin/ping = cap_net_raw+ep
Harliff ★★★★★
() автор топика
Ответ на: комментарий от Harliff

Судя по этому ману и паре экспериментов strace дропает все capability при запуске не из под рута

то есть:

1) strace ping из под юзера - не работает;
2) strace ping из под рута - работает;
3) strace -u user ping из под рута - тоже работает.

Может для этих игрищ есть какая-то отдельная capability. Например CAP_SYS_ADMIN или CAP_SYS_PTRACE

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.