发布于2022年11月8日3年前 0x00 前言 在内部网的渗透中,信息收集尤为重要。 面对内网的复杂环境,虽然网络扫描很容易暴露自己,但是我们可以找到幸存主机、开放端口、运行服务、操作系统等信息,为进一步渗透打下基础。 扫描工具的选择不仅要考虑功能,还要考虑工具的适用性。 现实中的跳板通常不是Linux服务器,也没有合适的环境安装Nmap、Zmap和Masscan。 换句话说,Windows下有哪些可以直接使用的命令行扫描工具? 知名的开源扫描工具Nmap,Zmap,Masscan,在功能上各有特色。 适用性方面,Zmap需要在Windows下安装Cygwin,所以不考虑。 Masscan支持Windows平台的编译,Nmap提供命令行版本。看起来Masscan和Nmap符合要求。 但是Masscan和Nmap的使用需要WinPcap的支持,也就是说需要安装WinPcap才能使用。 那么,可以通过命令行安装WinPcap吗? 0x01 简介 本文正是要解决上述问题,介绍内容如下: Windows平台编译Masscan Windows命令行安装WinPcap Masscan用法介绍 Nmap配置和使用简介 0x02 Windows平台编译Masscan Masscan下载地址: https://github.com/robertdavidgraham/masscan/ 编译工具:vs2012 编译选项中没有添加vs2012的编译配置,所以直接编译会出错。 解决方法: 在string_s.h中添加vs2012配置信息 位于misc-string _ s.h。添加以下代码: #如果已定义(_MSC_VER) (_MSC_VER==1700) /*Visual Studio 2012*/ #包括 #包括 #定义strcasecmp _stricmp #定义memcasecmp _memicmp # ifndef PRIu64 #定义PRIu64 'llu ' #定义优先级64 'lld ' #定义PRIx64 'llx ' # endif 编译成功,执行masscan.exe,提示Packet.dll:未找到。 如下图 Packet.dll获取方法: 安装WinPcap后在System32下获取。 WinPcap下载地址: https://www.winpcap.org/install/default.htm 在另一个系统上安装WinPcap,在System32下找到Packet.dll和Wpcap.dll,复制到测试系统下masscan.exe的同级目录下,再次运行。 程序正常启动,但无法扫描。错误如下: 失败:打开适配器时出错:系统找不到指定的设备。(20) 适配器[\设备\ NPF _ { 71 d19 b 82-0818-4685-a8e 7-a6 C7 c 812 F2 ea }]。初始化:失败 疑问:测试系统也需要安装WinPcap才能使用? 经过实际检验,确实如此。 0x03 Windows命令行安装WinPcap 测试32位系统: 使用ProcessMonitor监视WinPcap (32位系统)的安装过程,并获取以下信息: 在\system32\文件夹下释放packet.dll和wpcap.dll 在\system32\drivers\ 安装服务npf 通过sc命令获取安装服务npf的配置信息: sc qc npf 获取以下信息: QueryServiceConfig成功。 服务名称:npf 类型:1内核驱动程序 开始_类型:3需求_开始 错误控制:1正常 二进制路径名:system32\drivers\npf.sys 装货订单组: 标签:0 DISPLAY_NAME:网络组数据包筛选器驱动程序 依赖关系: 服务启动名称: 如下图 检查运行状态: sc查询npf 获取以下信息: 服务名称:npf 类型:1内核驱动程序 状态:4正在运行 (可停止,不可暂停,忽略关闭) WIN32_EXIT_CODE : 0 (0x0) 服务退出代码:0 (0x0) 检查点:0x0 WAIT_HINT :0x0 如下图 相应的注册表将在以下位置创建键值来表示服务配置信息: HKEY _ LOCAL _ MACHINE \ SYSTEM \ control set 001 \ Services \ NPF HKEY _ LOCAL _ MACHINE \ SYSTEM \ current control set \ Services \ NPF 如下图 如下图 猜测,只要能模拟以上安装操作,就可以在命令行下安装WinPcap。 模拟安装操作如下: 1、释放文件 ` 复制packet.dll % SystemRoot % \ system32 复制wpcap.dll % SystemRoot % \ system32 \ 复制NPF . sys % SystemRoot % \ system32 \ drivers `文件 2、创建服务 ` sc create NPF binPath=system32 \ drivers \ NPF . sys type=kernel start=demand error=normal tag=no display name=" net group数据包筛选器驱动程序" ` n 3、启动服务 sc启动npf 测试命令如下: masscan.exe-p80 成功执行masscan.exe,如下图所示 测试64位系统: 使用ProcessMonitor监视WinPcap (32位系统)的安装过程,并获取以下信息: 在\system32\文件夹下发布64位packet.dll和wpcap.dll。 在\system32\drivers\ 在\syswow64\文件夹下释放32位packet.dll、wpcap.dll和pthreadVC.dll。 安装服务npf 经过实际测试和优化,在64位环境下实现了32位masscan.exe,不需要64位packet.dll和wpcap.dll,也不需要32位pthreadVC.dll。只需要64位驱动程序npf.sys。 而且,无论是32位系统还是64位系统,packet.dll和wpcap.dll在masscan.exe都可以放在同一个目录下(当然,既然是在vs2012编译,就需要msvcr110d.dll)。 也就是说,对于32位和64位系统,只需要将不同版本的npf.sys复制到\system32\drivers\文件夹中。 接下来,创建并安装服务npf,整个过程结束。 以上过程通过批处理自动实现,一键安装脚本代码如下: @关闭回声 cd %~dp0 如果' % PROCESSOR _ ARCHITECTURE % '==' x86 '移动NPF _ x86 . sys % SystemRoot % \ system32 \ drivers \ NPF . sys 如果' % PROCESSOR _ ARCHITECTURE % '==' AMD64 '移动NPF _ x64 . sys % SystemRoot % \ system32 \ drivers \ NPF . sys 如果存在% SystemRoot % \ system32 \ drivers \ NPF . sys(回显移动成功!)else(回声移动错误!) sc create NPF binPath=system32 \ drivers \ NPF . sys type=kernel start=demand error=normal tag=no display name=' net group数据包筛选器驱动程序' sc启动npf 相关代码和所需的dll文件已上传到github,地址如下: https://github.com/3gstudent/Winpcap_Install 0x04 Masscan使用介绍 指定要扫描的网段和端口: masscan.exe-p80 找一个端口80开着的服务器,回显如下: 在192.168.81.143上发现开放端口80/tcp 扫描指定主机的所有开放端口: masscan.exe-P0-65535 192 . 168 . 81 . 143 如下图 要指定主机的特定端口: masscan.exe 获取横幅: masscan.exe-横幅 开始扫描配置文件: 将配置信息保存在1.conf中: masscan.exe-p80,443,3306 192.168.81.143 -横幅- echo1.conf 阅读配置信息1.conf并开始扫描: masscan.exe-C1 . conf 扫描速度为每秒100,000个数据包(在Windos下最高为每秒300,000个数据包),默认为每秒100个数据包: -费率100000 输出格式: -oX (XML) -oB(二进制) -oG (Grep) -oJ (Json) -oL(列表) -oU(独角兽扫描格式) 补充,默认情况下,masscan配置如下: ` -sS:它仅执行SYN扫描(目前如此,将来会改变) -Pn:不首先ping主机,这是异步操作的基础 -n:不进行DNS解析 随机化-主机:完全随机扫描 send-eth:使用原始libpcap发送 0x05 Nmap配置和使用介绍 NmapZip版下载地址: https://nmap.org/dist/nmap-7.50-win32.zip 使用Nmap时,应该预先在命令行安装WinPcap。 添加vs2013的dll:msvcp120.dll和msvcr120.dll(Nmap.exe由vs2013编译)。 去掉不相关的文件,精简nmap。所需支持文件的最终列表如下: libeay32.dll msvcp120.dll msvcr120.dll nmap-MAC-前缀 nmap-os-db nmap-有效载荷 nmap-服务 nmap.exe ssleay32.dll 指定要扫描的网段和端口: nmap.exe-p80 或者 nmap.exe-p80 扫描IP地址列表: nmap.exe iL IP . txt 扫描指定主机的所有开放端口: nmap.exe 要指定主机的特定端口: nmap.exe 操作系统探测器(-O): nmap.exe-O 192 . 168 . 81 . 143 在端口上运行的服务版本探测(-sV): nmap.exe-瑞士法郎 端口扫描如下 版本检测如下 相比之下,版本检测可以识别端口上的服务版本。 注: 需要添加以下文件进行版本检测(-sV): nse_main.lua nmap-服务-探测 Nselib文件夹和文件夹中的文件 脚本文件夹和文件夹中的文件 路由检测(-traceroute) nmap.exe-追踪路由192.168.81.143 全面检测(-A) 包括操作系统、服务版本和路由信息,是以上三者的集合。 nmap.exe A 192 . 168 . 81 . 143 扫描模式支持以下参数: ` -sS/sT/sA/sW/sM:TCP SYN/Connect()/ACK/Window/Maimon扫描 -sU: UDP扫描 -sN/sF/sX: TCP Null、FIN和Xmas扫描 scan flags:自定义TCP扫描标志 -sI:空闲扫描 -sY/sZ: SCTP初始化/COOKIE-ECHO扫描 -所以:IP协议扫描 -b : FTP退回扫描 ` 常用扫描方式介绍: TCP同步扫描(-sS) 半开扫描(Half-open scanning),不建立三方握手连接,速度很快。 Nmap默认扫描模式 TCP连接扫描(-sT) 完成三次握手过程(SYN,SYN/ACK,ACK),当然速度会降低。 容易察觉 Udp扫描(-sU) 扫描UDP端口 TCP Null/FIN/Xmas扫描(-sN/-sF/-sX) 用于确定端口是否打开。 可以绕过一些无状态的防火墙。 空扫描(-sN) 未设置标志位(tcp报头为0) 手指扫描 仅设置了TCP FIN标志位。 圣诞节扫描(-sX) 设置芬兰、PSH和德国国旗。 TCP确认扫描(-sA) 用于确定端口是否打开。 用于发现防火墙规则并确定防火墙规则是有状态还是无状态,以及过滤哪些端口。 只有ACK标志位被置位 自定义TCP扫描(scan flags) 手动指定任何TCP标志位来设计自定义扫描。 可以用来绕过入侵检测系统。 需要对通信协议有深刻的理解。 空闲扫描(-sI) 扫描伪造的源地址 注: 源地址主机必须在线。 也可以伪造源端口,默认为端口80。 伪造的源端口格式如下: ` ` 示例: nmap.exe-sI 192 . 168 . 81 . 1 PING扫描(-sP) 使用ping扫描主机是否在线。 无PING扫描(-PN) 扫描但不ping。 注: PN大写。 输出格式: -开(标准) -oX (XML) -oS(脚本KIdd|3输出) nmap的默认输出是大写格式,使用-oS会随机重写字母的大小写。 -oG (Grep) -oA(输出到所有格式) 设置文件名,并以标准格式输出文件(。nmap)、XML(。xml)和Grep(。gnmap)格式。 注: https://nmap.org/book/可以获得更多关于Nmap使用的介绍。 0x06 小结 介绍了Windows平台下命令行使用Masscan和Nmap的方法,从防御的角度提醒大家,内网安全同样重要,要谨慎对待。 留下回复
创建帐户或登录后发表意见