作者:3gstudent,如若转载,请注明出处:http://www.mottoin.com/tools/110701.html

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,添加代码如下:

#if defined(_MSC_VER) && (_MSC_VER == 1700)
/*Visual Studio 2012*/
# include <stdio.h>
# include <string.h>
# define strcasecmp     _stricmp
# define memcasecmp     _memicmp
# ifndef PRIu64
#  define PRIu64 "llu"
#  define PRId64 "lld"
#  define PRIx64 "llx"
# endif

编译成功,执行masscan.exe,提示Packet.dll: not found

如下图

Packet.dll获取方法:

安装WinPcap后在System32下获得

WinPcap下载地址:

https://www.winpcap.org/install/default.htm

在另一系统安装WinPcap,在System32下找到Packet.dll和Wpcap.dll,复制到测试系统下masscan.exe的同级目录,再次运行

程序正常启动,但是无法扫描,报错如下:

FAIL: Error opening adapter: 系统找不到指定的设备。 (20) adapter[DeviceNPF_{71D19B82-0818-4685-A8E7-A6C7C812F2EA}].init: failed

疑问:测试系统也需要安装WinPcap才能使用?

经实际测试,确实如此

0x03 Windows命令行安装WinPcap

测试32位系统:

使用ProcessMonitor监控WinPcap安装过程(32位系统),获得如下信息:

  • 在system32文件夹下释放packet.dll和wpcap.dll
  • 在system32drivers释放npf.sys
  • 安装服务npf

通过sc命令获得安装服务npf的配置信息:

sc qc npf

获取信息如下:

[SC] QueryServiceConfig 成功SERVICE_NAME: npfTYPE               : 1  KERNEL_DRIVERSTART_TYPE         : 3   DEMAND_STARTERROR_CONTROL      : 1   NORMALBINARY_PATH_NAME   : system32driversnpf.sysLOAD_ORDER_GROUP   :TAG                : 0DISPLAY_NAME       : NetGroup Packet Filter DriverDEPENDENCIES       :SERVICE_START_NAME :

如下图

查看运行状态:

sc query npf

获取信息如下:

SERVICE_NAME: npfTYPE               : 1  KERNEL_DRIVERSTATE              : 4  RUNNING(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)WIN32_EXIT_CODE    : 0  (0x0)SERVICE_EXIT_CODE  : 0  (0x0)CHECKPOINT         : 0x0WAIT_HINT          : 0x0

如下图

对应的注册表会创建键值,表示服务配置信息,位置如下:

  • HKEY_LOCAL_MACHINESYSTEMControlSet001Servicesnpf
  • HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesnpf

如下图

如下图

猜测,只要能够模拟上述安装操作,就能够实现WinPcap在命令行下的安装

模拟安装操作如下:

1、释放文件

copy packet.dll %SystemRoot%system32 copy wpcap.dll %SystemRoot%system32 copy npf.sys %SystemRoot%system32drivers

2、创建服务

sc create npf binPath= system32driversnpf.sys type= kernel start= demand error= normal tag= no DisplayName= "NetGroup Packet Filter Driver"

3、启动服务

sc start npf

测试命令如下:

masscan.exe -p80 192.168.81.143

成功执行masscan.exe,如下图

测试64位系统:

使用ProcessMonitor监控WinPcap安装过程(32位系统),获得如下信息:

  • 在system32文件夹下释放64位packet.dll和wpcap.dll
  • 在system32drivers释放64位npf.sys
  • 在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位系统,只需要向system32drivers文件夹复制不同版本的npf.sys即可

接着创建服务npf并安装,整个流程结束

将以上过程通过批处理自动实现,一键安装脚本代码如下:

@echo off
cd %~dp0
if "%PROCESSOR_ARCHITECTURE%"=="x86" move npf_x86.sys %SystemRoot%system32driversnpf.sys
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" move npf_x64.sys %SystemRoot%system32driversnpf.sys
if exist %SystemRoot%system32driversnpf.sys (echo move success!) else (echo move error!)
sc create npf binPath= system32driversnpf.sys type= kernel start= demand error= normal tag= no DisplayName= "NetGroup Packet Filter Driver"
sc start npf

相关代码和所需dll文件已上传至github,地址如下:

https://github.com/3gstudent/Winpcap_Install

0x04 Masscan使用介绍


扫描指定网段和端口:

masscan.exe -p80 192.168.81.1/24

找到一台开启80端口的服务器,回显如下:

Discovered open port 80/tcp on 192.168.81.143

扫描指定主机所有开放的端口:

masscan.exe -p0-65535 192.168.81.143

如下图

扫描指定主机的特定端口:

masscan.exe -p80,443 192.168.81.143

获取banner:

masscan.exe -p80,443,3306 192.168.81.143 --banners

通过配置文件启动扫描:

将配置信息保存在1.conf:

masscan.exe -p80,443,3306 192.168.81.143 --banners --echo>1.conf

读取配置信息1.conf,启动扫描:

masscan.exe -c 1.conf

修改扫描速度为100,000包/秒(Windos下最大为 300,000包/秒),默认100包/秒:

--rate 100000

输出格式:

-oX <filespec> (XML)
-oB <filespec> (Binary)
-oG <filespec> (Grep)
-oJ <filespec> (Json)
-oL <filespec> (List)
-oU <filespec> (Unicornscan format)

补充,默认情况,masscan开启如下配置:

-sS: this does SYN scan only (currently, will change in the future) -Pn: doesn't ping hosts first, which is fundamental to the async operation -n: no DNS resolution happens --randomize-hosts: scan completely randomized --send-eth: sends using raw 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-prefixes
  • nmap-os-db
  • nmap-payloads
  • nmap-services
  • nmap.exe
  • ssleay32.dll

扫描指定网段和端口:

nmap.exe -p80 192.168.81.1-255

或者

nmap.exe -p80 192.168.81.1/24

扫描IP地址列表:

nmap.exe iL IP.txt

扫描指定主机所有开放的端口:

nmap.exe 192.168.81.143

扫描指定主机的特定端口:

nmap.exe -p80,443 192.168.81.143

操作系统探测(-O):

nmap.exe -O 192.168.81.143

端口上运行的服务版本探测(-sV):

nmap.exe -sV 192.168.81.143

端口扫描如下图

版本检测如下图

通过对比可知版本检测能够识别端口上的服务版本

注:

恢复版本检测(-sV)需要添加以下文件:

  • nse_main.lua
  • nmap-service-probes
  • nselib文件夹及文件夹内的文件
  • scripts文件夹及文件夹内的文件

路由信息探测(–traceroute)

nmap.exe --traceroute 192.168.81.143

综合探测(-A)

包括操作系统、服务版本和路由信息,也就是以上三者的集合

nmap.exe -A 192.168.81.143

扫描方式支持如下参数:

-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans -sU: UDP Scan -sN/sF/sX: TCP Null, FIN, and Xmas scans --scanflags <flags>: Customize TCP scan flags -sI <zombie host[:probeport]>: Idle scan -sY/sZ: SCTP INIT/COOKIE-ECHO scans -sO: IP protocol scan -b <FTP relay host>: FTP bounce scan

常用扫描方式介绍:

TCP SYN Scan(-sS)

  • 半开放扫描(half-open scanning),没有建立三次握手连接,速度很快
  • nmap默认扫描方式

TCP connect scan(-sT)

  • 完成三次握手过程(SYN,SYN/ACK,ACK),当然,速度会降低
  • 容易被检测

Udp scan(-sU)

  • 扫描UDP端口

TCP Null/FIN/Xmas scan(-sN/-sF/-sX)

  • 用来判断端口是否开放
  • 能够绕过一些无状态防火墙

Null scan (-sN)

  • 不设置任何标志位(tcp标志头是0)

FIN scan (-sF)

  • 只设置TCP FIN标志位

Xmas scan (-sX)

  • 设置FIN,PSH,和URG标志位

TCP ACK scan(-sA)

  • 不用于确定端口是否开放
  • 用于发现防火墙规则,确定防火墙规则是有状态的还是无状态的,哪些端口是被过滤的
  • 只设置ACK标志位

Custom TCP scan(–scanflags)

  • 手动指定任意TCP标志位来设计自定义扫描
  • 可用于绕过入侵检测系统
  • 需要对通信协议有深入的理解

Idle scan(-sI)

  • 伪造扫描源地址

注:

该源地址主机必须在线

也可伪造源端口,默认为80端口

伪造源端口格式如下:

<zombie host[:probeport]>

实例:

nmap.exe -sI 192.168.81.1:1234 192.168.81.143

PING Scan(-sP)

  • 使用ping来扫描主机是否在线

No PING Scan(-PN)

  • 不用ping进行扫描

注:

PN两个字母大写

输出格式:

-oN <filespec> (标准)
-oX <filespec> (XML)
-oS <filespec> (ScRipT KIdd|3 oUTpuT)
nmap默认输出均为大写格式,使用-oS会随机改写字母大小写
-oG <filespec> (Grep)
-oA <basename> (输出至所有格式)
设置文件名称,一次性输出标准(.nmap)、XML(.xml)和Grep(.gnmap)三种格式的文件

注:

https://nmap.org/book/可获得更多Nmap使用介绍

0x06 小结

本文介绍了Windows平台下命令行使用Masscan和Nmap的方法,同时站在防御的角度提醒大家,内网安全同样重要,要谨慎对待。

【转】Windows平台运行Masscan和Nmap相关推荐

  1. Windows平台运行Masscan和Nmap

    https://www.4hou.com/penetration/6173.html 0x00 前言 在内网渗透中,信息搜集尤为重要. 面对内网的复杂环境,虽说网络扫描容易暴露自己,但通过扫描可以发现 ...

  2. 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台运行的控制台应用程序类型 | 编译 Windows 平台运行的 Android 逆向程序 )

    文章目录 一.Windows 平台运行的控制台应用程序类型 二.编译 Windows 平台运行的 Android 逆向程序 一.Windows 平台运行的控制台应用程序类型 hacktool 工程的类 ...

  3. 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决

    在中国大陆,Windows默认的编码是gb2312,而Linux是UTF8: 多数情况下,把Linux上的程序转换至Windows上运行需要进行编码转换才能正常显示: 而其实大可以不必的,同样,文件使 ...

  4. python编程( 第一份Windows平台运行的python代码)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在windows上面编程其实不复杂,特别是python这一类的脚本语言.如果代码本身是以sock ...

  5. cygwin是一个在windows平台上运行的unix模拟环境,下载与安装

    2019独角兽企业重金招聘Python工程师标准>>> 下载安装Cygwin 我们可以到Cygwin的官方网站下载Cygwin的安装程序,地址是: http://www.cygwin ...

  6. python编写的程序可以在任何平台中执行-在Windows平台上编写的Python程序无法在Unix平台运行。...

    [单选题]在中华人民共和国境内飞行的民用航空器必须具有: ( ) [单选题]属于发热激活物的是: [单选题]年满( )周岁可以独立实施民事法律行为视为完全民事行为能力人 [单选题]在DIC的原发病中, ...

  7. coTurn 运行在Windows平台的方法

    coTurn是一个开源的STUN和TURN及ICE服务项目,只是不支持Windows. 为了在window平台上使用coTurn源码,需要在windows平台下安装Cygwin环境,并编译coTurn ...

  8. python只能运行在windows平台上吗_在Windows平台上编写的Python程序无法在Unix平台运行。...

    问题:在Windows平台上编写的Python程序无法在Unix平台运行. 更多相关问题 Because plants cannot move or talk, most people believe ...

  9. windows平台的游戏运行库

    每一个都在PC上玩过游戏的人,都知道要安装一些必备的游戏运行库,游戏才能运行,这里指的PC是特指Windows操作系统平台.一般来说最常见的运行库是DirectX.Microsoft Visual C ...

最新文章

  1. 一条数字链路连接的端口无法UP及后续相应故障的排除
  2. android studio资产目录,在Android Studio中设置单元测试的自定义资产目录
  3. Python1:if / while / for...in / break /continue
  4. oracle 之 安装10.2.0.1 且 升级到 10.2.0.4
  5. ACM-ICPC 2019 山东省省赛 A Calandar
  6. python中configparser详解_Python中的ConfigParser模块使用详解
  7. linux 自动运行.out,linux系统定时自动重启springboot项目
  8. flutter ios上踩的一个坑
  9. ffmpeg rtp传输使用
  10. Kotlin入门(11)江湖绝技之特殊函数
  11. exception java doc_在javadoc中,標簽@throws和@exception之間有什么區別?
  12. Android 自动轮播图+滑动效果
  13. $(document).ready(function(){}),$().ready(function(){})和$(function(){})三个有区别么
  14. Printf 输出格式总结
  15. php mysql日程管理_9.3 日程表数据库设计
  16. TeamViewer——一款强大的远程控制工具
  17. 在移动开发快捷推广方式
  18. 仿微信、QQ聊天表情底部弹出
  19. 一个完整项目的流程都涉及哪些内容
  20. 计算机休眠按钮是哪个,电源按钮设置成睡眠好还是休眠好?

热门文章

  1. 字节流 FileInputStream类
  2. PS制作恐怖逼真滴血文字
  3. 《华夏文明史》1 自序(东海陈光剑)
  4. 关闭2345的热点资讯
  5. PAT 1066 图像过滤 python
  6. RealServer快速安装教程
  7. 范冰冰李晨分手让微博一度宕机的原因分析
  8. 【哈佛积极心理学笔记】第6讲 乐观主义
  9. 台式计算机显卡驱动位置,台式机显卡怎么安装 台式机显卡安装步骤
  10. 如何解决winows启动后出现grub?