Windows下完整NMAP源码编译指南

admin 2025年5月9日16:20:12评论8 views字数 2821阅读9分24秒阅读模式

Windows下完整NMAP源码编译指南

△△△点击上方“蓝字”关注我们了解更多精彩
0x00 前言
免责声明:继续阅读文章视为您已同意[NOVASEC免责声明].

尽管在许多场景下Nmap仍然是必需的,但需要注意的是,当前大多数入侵检测系统(IDS)已经能够识别其特征码。

因此,在使用Nmap进行网络扫描前,可能需要对其进行适当的修改以避免被检测系统识别。
这种优化不仅有助于提高扫描的成功率,还能减少被目标网络的安全措施发现的风险。
实现源码到可执行文件的编译,就是修改的第一步。
linux下编译Nmap是相对比较常见的,本文仅记录windows下编译Nmap.exe的过程。
1
0x01 环境依赖
Visual Studio 2019:
https://docs.microsoft.com/zh-cn/visualstudio/releases/2019/release-notes

Visualsvn:

下载地址 https://www.visualsvn.com/downloads/

直接下载 https://www.visualsvn.com/files/Apache-Subversion-1.14.5-2.zip

Windows下完整NMAP源码编译指南
1
0x02 获取源代码
创建目录
mkdir mynmapcd Mynmap
获取依赖文件

Nmap在Windows上有一些依赖不方便构建。因此,Nmap官方把部分依赖项的预编译二进制文件存储在Subversion中/nmap-mswin32-aux目录。

svn checkout https://svn.nmap.org/nmap-mswin32-aux
获取NMAP源码

最新的Nmap源代码可以通过SVN或者github获得。

svn co https://svn.nmap.org/nmapgit clone https://github.com/nmap/nmap.git --depth 1

注意事项

nmap目录和nmap-mswin32-aux必须处于同一级别目录。

mynmap|      | nmap-mswin32-aux      | nmap
1
0x02 编译Nmap

经过不断尝试踩坑,已总结出最简单的编译方案:

cd nmapmswin32Build.bat build Release
成功编译后会在nmapmswin32Release 生成Nmap.exe.
当然,还是要依赖VS2019的,不然会缺少编译环境.
Windows下完整NMAP源码编译指南
提示:官方的编译方法是通过VS2019打开nmapmswin32nmap.sln,但是会存在缺少lib的问题,所以最好还是通过命令行进行一次性编译。
1
0x03 无法执行
虽然主程序已经编译成功,但是由于编译命令不完整,会导致缺少dll和其他依赖。
Windows下完整NMAP源码编译指南
Windows下完整NMAP源码编译指南
解决方案1:将已编译的nmap.exe文件替换到已安装的nmap中。
解决方案2:执行bat自动化进行依赖文件的复制。
新建 nmapmswin32CopyFile.Bat
rmdir Releasenmap.tlog /s /qdel Release*.obj /sdel Release*.log /sdel Release*.iobj /sdel Release*.pdb /sdel Release*.recipe /sdel Releasenmap.vcxproj.FileListAbsolute.txt /sxcopy ..nse_main.lua Release  /q  /yxcopy ..nselib Releasenselib /e /i /h /r /y /qxcopy ..scripts Releasescripts /e /i /h /r /y /qxcopy ..libssh2win32Release_dlllibssh2.dll  Release  /q /yfor /r "..libzcontribvstudio" %%f in (zlibwapi.dll) do xcopy "%%f" "Release" /q /yxcopy ..ncatReleaseca-bundle.crt Release  /q  /yxcopy ..ncatReleasencat.exe Release  /q  /yxcopy ..npingReleasenping.exe Release  /q  /y
1
0x04 通过VS2022编译
分析nmap源码中的Build.bat,发现脚本中已经硬编码使用 Visual Studio 16 2019 进行程序编译。
如果需要使用VS2022版本进行编译需要修改Build.bat文件。
@echo offset TARGET=%1set VCCONFIG=%2:: 查找 VS2022 安装路径并设置编译环境for /f "usebackq delims=#" %%a in (`"%ProgramFiles(x86)%Microsoft Visual StudioInstallervswhere" -version 17 -property installationPath`) do call "%%aVCAuxiliaryBuildvcvarsall.bat" x86 && goto :next:next@echo onif "%TARGET%" == "Vars" ( goto :vars ):: 构建 PCRE2(使用 VS2022 的生成器)mkdir build-pcre2cd build-pcre2cmake.exe -A Win32 -G "Visual Studio 17 2022" ....libpcre || goto :QUITcd ..:: 使用 MSBuild 构建 Nmap 解决方案msbuild -nologo nmap.sln -m -t:%TARGET% -p:Configuration="%VCCONFIG%" -p:Platform="Win32" -flgoto :QUIT:varscl.exe /nologo /EP make-vars.h > make-vars.make:QUITexit /b %errorlevel%
0X09 总结

目前没有深入研究nmap特征值修改,需要参考资料可以查看以下链接:

al0ne/Nmap_Bypass_IDS: Nmap&Zmap特征识别,绕过IDS探测

https://github.com/al0ne/Nmap_Bypass_IDS

重新编译,bypass emergingthreats 的公开ids规则-先知社区

https://xz.aliyun.com/news/5615

新特征搜索结果

https://community.emergingthreats.net/search?q=nmap

Windows下完整NMAP源码编译指南

END

如您有任何投稿、问题、需求、建议

NOVASEC公众号后台留言

Windows下完整NMAP源码编译指南

或添加 NOVASEC 联系人

Windows下完整NMAP源码编译指南

感谢您对我们的支持、点赞和关注

加入我们与萌新一起成长吧!

本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!

原文始发于微信公众号(NOVASEC):Windows下完整NMAP源码编译指南

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月9日16:20:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Windows下完整NMAP源码编译指南https://cn-sec.com/archives/4046422.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息