Nmap流量特征修改(NTA、IDS、IPS、流量审计)
目录
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、流量审计)相关推荐
- 常见WebShell客户端的流量特征及检测思路
常见WebShell客户端的流量特征及检测思路 01概述 开始之前先明确什么是webshell客户端?先问个问题,什么是客户端,什么是服务端? 很简单,提供服务的就是服务端,要求被服务的就是客户端.那 ...
- webshell客户端流量特征
webshell客户端流量特征 目录 1. 冰蝎 2. 中国菜刀 3. Cknife 4. 蚁剑 5. 哥斯拉 webshell客户端 用于webshell后门和攻击者之间的通信程序,我们可以通过we ...
- 网络安全进阶篇之流量加密(十三章-3)CS生成ssl证书修改c2 profile 加密流量逃逸检测
文章目录 零.为什么要对CS进行流量加密 一. 生成免费的 ssl 证书 二. 创建并修改 C2-profile 文件 三. 检测 C2 profile 文件是否可用 四. 配置 teamserver ...
- 菜刀、冰蝎、蚁剑、哥斯拉的流量特征
干货|菜刀.冰蝎.蚁剑.哥斯拉的流量特征 文章目录 干货|菜刀.冰蝎.蚁剑.哥斯拉的流量特征 菜刀流量特征 蚁剑(PHP用base64加密): 冰蝎(AES对称加密): 哥斯拉(base64加密): ...
- FRP编译并去除流量特征
FRP编译并安装 环境准备 配置Go编译环境 编译FRP 环境准备 配置Go编译环境 1.下载go依赖包 $ wget https://go.dev/dl/go1.19.5.linux-amd64.t ...
- win11下载配置CIC Flowmeter环境并提取流量特征
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.下载CIC Flowmeter 二.安装java.maven.gradle和IDEA 1.java 1.8 2.m ...
- flowcontainer: 基于python3的pcap网络流量特征信息提取库
库介绍 flowcontainer是由信息工程研究所智能信息对抗组开源的基于python3的网络流量基本信息提取库,以方便完成网络流量的分析任务.给定pcap文件,该库会提取pcap所有的流的相关信息 ...
- ***检测与防护(IDS/IPS)
***检测与防护(IDS/IPS) nIDS/IPS概述 在现有网络中部署的***系统有两类,分别为***检测系统(Intrusion Detection System,IDS)和***防护系统(In ...
- 什么是IDS/IPS?
目录 摘要 0x00 基于网络的IDS和IPS 0x01 设计考虑因素 0X02 IDS/IPS 总结 摘要 摘要 这篇文章主要介绍的是入侵检测系统(IDS)和入侵防御系统(I ...
最新文章
- 十问教主楼天城:身似小马心向远,恨未智行更早时
- pythonqueue函数_如何将函数和参数放入python队列?
- SCSI 总线和协议
- C语言实现上三角蛇形矩阵不用数组,C/C++编程笔记:C++ 嵌套循环,含循环打印及蛇形矩阵实例...
- redis储存List类型数据
- 14英寸电脑长宽多少_连接4K显示器流行,带雷电3雷电4接口的笔记本要多少钱?...
- DotNet程序员是不是最不幸福?
- go结构体初始化_golang中结构体的初始化方法(new方法)
- 网卡故障会出现的错误代码_变频器出现这种故障很多老电工都会误判!
- 微软下周将发布重磅安全公告 修复40个漏洞
- C++string类常用函数 c++中的string常用函数用法总结
- 数据库系统概念读书笔记-SQL标准简介
- 关于csdn 博客图片无法加载的问题!
- 伊利洛伊大学厄巴纳-香槟分校计算机专业,伊利诺伊大学厄巴纳香槟分校哪些专业比较好?...
- n 以内与 n 互素的元素集合必然形成一个循环群
- 2021-07-27_TPM描述
- python函数增强代码可读性_如何提高代码的可读性 学习笔记
- Requests+Xpath 爬取豆瓣读书TOP并生成txt,csv,json,excel文件
- Assigned 函数
- 全国计算机一级上表格怎么做,全国计算机一级考试word表格制作(2003版)
热门文章
- vscode 新版eslint自动修复_VSCODE 配置eslint规则和自动修复
- 嵌入式开发板01---点亮LED
- 多序列比对软件Jalview的安装及使用体验
- 机器学习算法-随机森林之决策树R 代码从头暴力实现(2)
- flash倒计时_11款免费又好用的PPT倒计时神器
- c++ 结构体遍历_PBRT-E4.3-层次包围体(BVH)(一)
- 1.5 编程基础之循环控制 09 奇数求和
- python抓取页面数据实例
- python画正方形的代码_python绘制正方形螺旋线的代码分享
- C语言 | 内存对齐02 - 为什么会有内存对齐?它解决了什么问题