linux网络扫描,Linux 下的非常规网络扫描方式

本文介绍了在渗透测试中如何利用Linux系统自带的ping、traceroute、telnet等工具,以及ftp、curl、wget等协议进行隐蔽的内网主机存活探测和端口开放情况检查。通过编写shell脚本,避开常见的安全监控,实现更加隐秘的网络扫描。这种方法可以降低被安全设备检测到的风险,但效率相对较低,适用于小规模的扫描任务。
摘要由CSDN通过智能技术生成

渗透中,当我们拿下一个linux服务器作为跳板去进一步渗透内网时,往往需要收集内网资产以扩大攻击范围,通过扫描去收集是常用手段之一,但是考虑到对方可能部署的一些安全手段,如果扫描出现过于明显的特征将触发安全警报,导致我们前功尽弃,所以一些非常规的扫描手段是非常有必要的。

通常情况下,可以使用linux系统默认自带的旧版nmap和阉割版nc进行扫描,但是这两个工具可以说是重点关注对象了,我们需要看起来更加正常的行为去扫描,尽量使用系统常规功能去完成。

一、ping批量探测存活主机

内网环境下禁ping的不多,所以我们通过批量ping去探测存活主机是一个不错的选择,如下简单的扫描c段存活ip的shell脚本示例:

(1)扫描指定c段

#!/bin/bash

for ip in $(seq 1 254)

do

ping -c 1 10.1.0.$ip &>/dev/null

if [ $? -eq 0 ];then

echo 10.1.0.$ip >>up.txt

fi

done

(2)扫描指定ip列表

#!/bin/bash

for ip in `cat iplist.txt` #一个ip一行

do

ping -c 1 $ip &>/dev/null

if [ “$?” = 0 ];then

echo $ip >>up.txt

fi

done

这样扫描的好处是不依赖任何第三方,只需要使用系统自带功能即可完成探测,不容易触发安全规则,但是效率较低,不适合大批量的扫描,而且如果服务器禁ping或者把UDP数据包屏蔽了,就没有返回ICMP。

除了ping可以扫描之外,内网使用traceroute探测同路由下存活ip也是不错的选择,同路由下,存活的ip使用traceroute只有一节点,不存活时会尝试多个节点,所以也是一个很好的判断依据,当然使用arp -a、netstat -an也可以给出一些结果。

同路由下traceroute存活ip,只测试一节点

server:~ admin$ traceroute 192.168.0.103

traceroute to 192.168.0.103 (192.168.0.103), 64 hops max, 52 byte packets

1192.168.0.103 (192.168.0.103)103.589 ms3.100 ms13.657 ms

同路由下traceroute不存活ip,要测试多节点

server:~ admin$ traceroute 192.168.0.222

traceroute to 192.168.0.222 (192.168.0.222), 64 hops max, 52 byte packets

1* * *

2* *traceroute: sendto: No route to host

traceroute: wrote 192.168.0.222 52 chars, ret=-1

……

在禁ping的情况下,同样可以编写bash脚本使用traceroute进行存活主机探测,但是效率可能会更低一点。

二、telnet批量探测开放端口

探测了存活ip,那么接下来需要探测开放的端口服务,telnet再合适不过,简单的端口探测shell脚本如下:

#!/bin/bash

function sport ()

{

for ip in $(cat ips.txt) #一行一个ip

do

for port in `cat ports.txt` #一行一个端口

do

t=`echo -e ‘\n’|telnet $ip $port|grep -i “Connected”|awk ‘NR==1{print}’|awk -F ” ” ‘{print $1}’`

if [ “$t”x = “Connected”x ];then

echo $ip $port >>open.txt

fi

done

done

}

sport

exit 0

相对于专业端口扫描器,使用shell脚本去扫描效率会低很多,但是这个行为更容易被安全规则忽略。

而且,不单单是可以通过telnet协议进行扫描端口,ftp、curl、wget甚至ssh都可以用来进行端口扫描探测,能避免绝大部分安全手段的监控,让扫描更加隐蔽!

(1)利用ftp扫描判断依据

ftp探测开放的端口,立刻返回“Connected to”特征

server:~ admin$ ftp 192.168.1.1 80

Connected to 192.168.1.1.

ftp探测未开放的端口,长时间无返回信息

server:~ admin$ ftp 192.168.1.1 81

ftp: Can’t connect to `192.168.1.1′: Operation timed out

ftp: Can’t connect to `192.168.1.1′

(2)利用curl扫描判断依据

curl探测开放的端口,立刻返回”GET”特征

server:~ admin$ curl 192.168.1.1:23

??????!????GET / HTTP/1.1

Host: 192.168.1.1:23

User-Agent: curl/7.49.1

Accept: */*

curl探测未开放的端口,立刻返回”Connection refused”特征

server:~ admin$ curl 192.168.1.1:22

curl: (7) Failed to connect to 192.168.1.1 port 22: Connection refused

(3)利用wget扫描判断依据

wget探测开放的端口,立刻返回”GET”特征

server:~ admin$ wget 192.168.1.1:23

–2016-11-22 15:33:31– http://192.168.1.1:23/

Connecting to 192.168.1.1:23… connected.

HTTP request sent, awaiting response… 200 No headers, assuming HTTP/0.9

Length: unspecified

Saving to: ‘index.html’

wget探测未开放的端口,立刻返回”Connection refused”特征

server:~ admin$ wget 192.168.1.1:22

–2016-11-22 15:33:22– http://192.168.1.1:22/

Connecting to 192.168.1.1:22… failed: Connection refused.

(4)利用ssh扫描判断依据

ssh探测开放的端口,立刻返回”Connection reset by peer”特征

server:~ admin$ ssh 192.168.1.1 -p 80

ssh_exchange_identification: read: Connection reset by peer

ssh探测未开放的端口,立刻返回”Connection refused”特征

server:~ admin$ ssh 192.168.1.1 -p 81

ssh: connect to host 192.168.1.1 port 81: Connection refused

根据这些特征,可以利用telnet扫描脚本修改即可进行端口扫描。

当然linux系统自带很多其它系统工具,都可以尝试,而且基本自带python、perl,除了shell脚本,也可以写python、perl脚本,有时候更高效!

windows下编写vbs、bat也同样可以进行类似扫描!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值