目录

0x01 前言

参考链接

0x02 环境

0x03 nmap探测的常用几种方式

-sS (SYN扫描)

-sT (TCP扫描)

-sU(UDP扫描)

-sN;-sF;-sX (TCP Null,FIN,and Xmas扫描)

-sA(ACK 扫描)

-scanflags (自定义扫描)

-sI(Idlescan)

-sV (版本检测)-O (系统检测)

0x04 nmap的流量特征修改

Win值修改

关键词修改

UDP探测时填充值修改

0x05 nmap编译安装

0x06 总结

可修改文件及修改处

6.1、修改namp默认win窗口值。

6.2、修改nmap-service-probes文件中关键词

6.3、修改脚本中的值

6.4、修改使用-O参数发包填充内容


0x01 前言

nmap是渗透中尝尝用到的工具之一,在信息收集阶段经常用到,现在主流的流量分析设备也将其流量加入了特征库,

为了防止在探测阶段IP就被封掉,对其的流量特征做一些简单的修改有点用的。

由于没有厂商设备检测,故以下只是学习记录一下思路。具体效果还待验证。

参考链接

如何修改nmap, 重新编译,bypass emergingthreats 的公开ids规则:

https://xz.aliyun.com/t/6002

nmap端口扫描技术:

https://nmap.org/man/zh/man-port-scanning-techniques.html

NmapbypassIDS:

https://github.com/al0ne/Nmap_Bypass_IDS

0x02 环境

VM虚拟机:

192.168.1.113 开放135,3389 防火墙禁止445入站

ubuntu:

编译安装nmap用,kali下编译安装存在点问题,坑太多了,以后有时间再去踩。

0x03 nmap探测的常用几种方式

-sS (SYN扫描)

nmap默认端口扫描方式,执行半开扫描,不完成TCP握手流程。只向目标端口发送一个SYN报文,然后等待响应。

SYN/ACK表示端口在监听 (开放),而 RST (复位)表示没有监听者。

如果多次重发后仍没响应, 该端口就被标记为被过滤。

使用抓包工具可以完整的看到探测过程。

-sT (TCP扫描)

一般不推荐使用,因为会留下连接日志。

另外在调用一些高级扫描时(如HTTP),会调用这种连接方式。

使用抓包工具看其探测过程

-sU(UDP扫描)

DNS,SNMP,和DHCP是常常开放UDP的几个服务,有些情况下会使用到。

由于UDP是无连接的,所以会面临响应探测问题,探测时的端口是否开放还是被过滤的判断,会让Nmap超时然后再探测,以防探测帧或者响应丢失,导致探测时间增长。

关闭的端口常常是更大的问题。它们一般发回一个ICMP端口无法到达错误。

但是不像TCP发送的RST报文,许多主机在默认情况下限制ICMP端口不可到达消息。

如:Linux 2.4.20内核限制一秒钟只发送一条目标不可到达消息。

抓包看一下,当只看到两个UDP无内容包时,懵了一下。

查了一下发现除了某些特定端口会有响应返回,如137 用的NBNS,其他的全部都是没有返回,原因是因为这台机器禁PING了,就是ICMP的返回包过不来。

所以没法判断端口是否关闭。

修改防火墙设置。

允许文件和打印机共享后确实可以ping主机了,但是ICMP回包还是有问题。

后来索性把防火墙关掉。

就可以明显看到其是通过返回包来进行判断的。

-sN;-sF;-sX (TCP Null,FIN,and Xmas扫描)

这个还是挺有意思的,首先这个不适用扫描windows、Cisco、bsdi、IBM的一些服务器,因为并不是完全遵守RFC 793这个协议。

这个协议会存在这种情况,当端口关闭时,任何不包含SYN,RST,或者ACK位的报文会导致 一个RST返回,而当端口开放时,应该没有任何响应。

所以只要不包含SYN,RST,或者ACK, 任何其它三种(FIN,PSH,and URG)的组合都行。

而刚刚上面说的那些他们并不遵守这个,他们不管端口开放或关闭,都返回一个RST,导致Nmap判断错误。

-sN 不设置任何标志位

-sF 只设置FIN标志位

-sX 设置FIN,PSH,和URG标志位

看一下探测过程,如果没加参数,默认会先发送ICMP请求。

-sA(ACK 扫描)

用于探测防火墙状态。ACK扫描探测报文只设置ACK标志位。

当扫描未被过滤的系统时, open(开放的)和 closed(关闭的) 端口 都会返回RST报文。

Nmap把它们标记为 unfiltered(未被过滤的),无返回或者返回ICMP错误响应时标记为filtered。

防火墙关闭状态下。返回unfiltered

防火墙开启状态下。返回filtered

-scanflags (自定义扫描)

可以使用 URG, ACK, PSH, RST, SYN,and FIN的任何组合,进行发包。详细可以自己组合定制

-sI(Idlescan)

高级隐藏扫描。利用僵尸网络执行扫描。详细可看文章

(文章链接:https://nmap.org/book/idlescan.html)

-sV (版本检测)-O (系统检测)

可以看到在探测的时候会有标志和固定长度字符串问题。

IDS识别nmap扫描一般都是根据UDP data区域填充的'C'字符串,ICMP填充的是0(正常windows下是a-z,Linux下是0-9。

莫慌,接下就学习一下怎么去改这些个文件。

0x04 nmap的流量特征修改

Win值修改

通过观察可以发现nmap在使用SYN扫描时Windows的窗口值值固定是1024。

(PS :window 关键字用于检查特定的TCP窗口大小)

下面是正常连接3389时,发送的数据包。可以看到win值明显不一样。

修改tcpip.cc文件中tcp->th_win的值,查询TCP中win这个值的信息发现,

默认最大为65535。

所以应该在此范围内都可以。

但是要考虑已公开的规则,如之前大佬写的bypass emergingthreats这篇,这个就过滤了2048 1024 3072 4096。

后来因某些原因,把nmap编译到了云服务器上,抓包的话就需要tcpdump了。

tcpdump -i eth0 -t -s 0 -c 100 host IP

关键词修改

根据规则,一个一个去修改文件即可。nmap,nm,nm@p,OR sqlspider等等,

主要的就是SIP文件和一些常用的脚本文件。

这些个就是从emergingthreats的规则中提取的。

UDP探测时填充值修改

osscan2.cc

static u8 patternbyte = 0x43; /* character 'C' /

替换为 static u8 patternbyte = 0x46; / character 'F' */

重新编译后再去扫描,内容已经换了,长度应该也是可以调整。

u8 packet[328]; /* 20 IP hdr + 8 UDP hdr + 300 data */

这里还没测试,感兴趣可以自己去定义,看会不会有什么问题。

0x05 nmap编译安装

nmap编译时可能会遇到如下错误,几乎都是缺少特定的库导致的,

所以编译安装时需要安装以下库。

编译环境是基于Ubuntu的,其他环境库的名字可能不同,遇到编译报错可百度找对应解决方法即可。

apt install flex bison libssl-dev
./configure --without-zenmap
make && make install

0x06 总结

可修改文件及修改处

6.1、修改namp默认win窗口值。

tcpip.cc

tcp->th_win = hosts(1-65535)

6.2、修改nmap-service-probes文件中关键词

nmap,nm@nm,nm2@nm2,nm@p,nm,0PT10NS sip

这些值酌情替换。

6.3、修改脚本中的值

  • nselib/http.lua

USERAGENT = stdnse.getscript_args('http.useragent')

  • nselib/mssql.lua

搜索Nmap NSE然后替换

  • nselib/sip.lua

搜索Nmap NSE然后替换

  • scripts/http-sql-injection.nse

搜索sqlspider然后替换

  • scripts/ssl-heartbleed.nse

搜索Nmap ssl-heartbleed替换

  • nselib/rdp.lua

local cookie = "mstshash=nmap"

6.4、修改使用-O参数发包填充内容

osscan2.cc

static u8 patternbyte = 0x43; /* character 'C' /

替换为 static u8 patternbyte = 0x46; / character 'F' */

Nmap流量特征修改(NTA、IDS、IPS、流量审计)相关推荐

  1. 常见WebShell客户端的流量特征及检测思路

    常见WebShell客户端的流量特征及检测思路 01概述 开始之前先明确什么是webshell客户端?先问个问题,什么是客户端,什么是服务端? 很简单,提供服务的就是服务端,要求被服务的就是客户端.那 ...

  2. webshell客户端流量特征

    webshell客户端流量特征 目录 1. 冰蝎 2. 中国菜刀 3. Cknife 4. 蚁剑 5. 哥斯拉 webshell客户端 用于webshell后门和攻击者之间的通信程序,我们可以通过we ...

  3. 网络安全进阶篇之流量加密(十三章-3)CS生成ssl证书修改c2 profile 加密流量逃逸检测

    文章目录 零.为什么要对CS进行流量加密 一. 生成免费的 ssl 证书 二. 创建并修改 C2-profile 文件 三. 检测 C2 profile 文件是否可用 四. 配置 teamserver ...

  4. 菜刀、冰蝎、蚁剑、哥斯拉的流量特征

    干货|菜刀.冰蝎.蚁剑.哥斯拉的流量特征 文章目录 干货|菜刀.冰蝎.蚁剑.哥斯拉的流量特征 菜刀流量特征 蚁剑(PHP用base64加密): 冰蝎(AES对称加密): 哥斯拉(base64加密): ...

  5. FRP编译并去除流量特征

    FRP编译并安装 环境准备 配置Go编译环境 编译FRP 环境准备 配置Go编译环境 1.下载go依赖包 $ wget https://go.dev/dl/go1.19.5.linux-amd64.t ...

  6. win11下载配置CIC Flowmeter环境并提取流量特征

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.下载CIC Flowmeter 二.安装java.maven.gradle和IDEA 1.java 1.8 2.m ...

  7. flowcontainer: 基于python3的pcap网络流量特征信息提取库

    库介绍 flowcontainer是由信息工程研究所智能信息对抗组开源的基于python3的网络流量基本信息提取库,以方便完成网络流量的分析任务.给定pcap文件,该库会提取pcap所有的流的相关信息 ...

  8. ***检测与防护(IDS/IPS)

    ***检测与防护(IDS/IPS) nIDS/IPS概述 在现有网络中部署的***系统有两类,分别为***检测系统(Intrusion Detection System,IDS)和***防护系统(In ...

  9. 什么是IDS/IPS?

    目录   摘要 0x00 基于网络的IDS和IPS 0x01 设计考虑因素 0X02 IDS/IPS 总结           摘要 摘要 这篇文章主要介绍的是入侵检测系统(IDS)和入侵防御系统(I ...

最新文章

  1. 十问教主楼天城:身似小马心向远,恨未智行更早时
  2. pythonqueue函数_如何将函数和参数放入python队列?
  3. SCSI 总线和协议
  4. C语言实现上三角蛇形矩阵不用数组,C/C++编程笔记:C++ 嵌套循环,含循环打印及蛇形矩阵实例...
  5. redis储存List类型数据
  6. 14英寸电脑长宽多少_连接4K显示器流行,带雷电3雷电4接口的笔记本要多少钱?...
  7. DotNet程序员是不是最不幸福?
  8. go结构体初始化_golang中结构体的初始化方法(new方法)
  9. 网卡故障会出现的错误代码_变频器出现这种故障很多老电工都会误判!
  10. 微软下周将发布重磅安全公告 修复40个漏洞
  11. C++string类常用函数 c++中的string常用函数用法总结
  12. 数据库系统概念读书笔记-SQL标准简介
  13. 关于csdn 博客图片无法加载的问题!
  14. 伊利洛伊大学厄巴纳-香槟分校计算机专业,伊利诺伊大学厄巴纳香槟分校哪些专业比较好?...
  15. n 以内与 n 互素的元素集合必然形成一个循环群
  16. 2021-07-27_TPM描述
  17. python函数增强代码可读性_如何提高代码的可读性 学习笔记
  18. Requests+Xpath 爬取豆瓣读书TOP并生成txt,csv,json,excel文件
  19. Assigned 函数
  20. 全国计算机一级上表格怎么做,全国计算机一级考试word表格制作(2003版)

热门文章

  1. vscode 新版eslint自动修复_VSCODE 配置eslint规则和自动修复
  2. 嵌入式开发板01---点亮LED
  3. 多序列比对软件Jalview的安装及使用体验
  4. 机器学习算法-随机森林之决策树R 代码从头暴力实现(2)
  5. flash倒计时_11款免费又好用的PPT倒计时神器
  6. c++ 结构体遍历_PBRT-E4.3-层次包围体(BVH)(一)
  7. 1.5 编程基础之循环控制 09 奇数求和
  8. python抓取页面数据实例
  9. python画正方形的代码_python绘制正方形螺旋线的代码分享
  10. C语言 | 内存对齐02 - 为什么会有内存对齐?它解决了什么问题