当前位置: 首页 > article >正文

ngrep :网络嗅探的利器

在网络安全、渗透测试和系统调试领域,捕获和分析网络流量是不可或缺的技能。虽然像 tcpdumpWireshark 这样的工具广为人知,但有一个轻量级且功能强大的工具却常常被忽视——ngrep。本文将详细介绍 ngrep 的功能、使用方法及其在实际场景中的应用,同时对比类似工具(如 tcpdumpWiresharkdsniff),帮助读者理解它们的特点和适用场景。


一、什么是 ngrep?

ngrep(Network Grep)是一个基于文本的网络数据包捕获和过滤工具,名字来源于其与 grep 的相似性。它结合了数据包嗅探和正则表达式匹配的能力,允许用户实时捕获网络流量并筛选出符合特定模式的内容。ngrep 由 Jordan Ritter 在 2000 年代初开发,虽然不如 Wireshark 那样广为人知,但在某些场景下却异常高效。

核心特点
  • 轻量级:无需图形界面,适合命令行环境。
  • 正则表达式支持:可以匹配数据包 payload 中的文本内容。
  • 协议支持:支持 TCP、UDP、ICMP 等协议。
  • 实时性:捕获并显示匹配的数据包,适合快速调试。
安装方法

在大多数 Linux 发行版中,可以通过包管理器安装:

sudo apt install ngrep  # Debian/Ubuntu
sudo yum install ngrep  # CentOS/RHEL

或从源代码编译:

git clone https://github.com/jpr5/ngrep.git
cd ngrep
./configure && make && sudo make install

二、ngrep 的基本使用

ngrep 的基本语法如下:

ngrep [选项] '匹配模式' [过滤器]
  • 匹配模式:正则表达式,用于筛选数据包 payload。
  • 过滤器:类似于 tcpdump 的 BPF(Berkeley Packet Filter)语法,用于限定协议、端口或主机。
示例 1:捕获 HTTP 请求

监听接口 eth0 上包含 GET 的 HTTP 流量:

sudo ngrep -d eth0 'GET' port 80

输出:

interface: eth0 (192.168.111.0/255.255.255.0)
filter: ( port 80 ) and ((ip || ip6) || (vlan && (ip || ip6)))
match (JIT): GET
####
T 192.168.111.1:56503 -> 192.168.111.100:80 [AP] #4
  GET / HTTP/1.1..User-Agent: Mozilla/5.0 (Windows NT; Windows NT 10.0; zh-CN) WindowsPowerShell/5.1.22621.4391..Host: 192.168.111.100..Connect
  ion: Keep-Alive....                                                                                                                          
######
  • T:TCP 数据包。
  • [AP]:标志(ACK 和 PSH)。
  • GET /index.html:匹配的 payload。
示例 2:捕获 ICMP Ping 数据

捕获包含 abcd(Windows Ping 默认 payload)的 ICMP 流量:

sudo ngrep -d any 'abcd' icmp

输出:

interface: any
filter: ( icmp ) and (ip || ip6)
match (JIT): abcd
#
I 192.168.111.1 -> 192.168.111.100 8:0 #1
  ....abcdefghijklmnopqrstuvwabcdefghi                                                                                                         
#
I 192.168.111.100 -> 192.168.111.1 0:0 #2
  ....abcdefghijklmnopqrstuvwabcdefghi                                                                                                         
#
I 192.168.111.1 -> 192.168.111.100 8:0 #3
  ....abcdefghijklmnopqrstuvwabcdefghi                                                                                                         
#
I 192.168.111.100 -> 192.168.111.1 0:0 #4
  ....abcdefghijklmnopqrstuvwabcdefghi 
常用选项
  • -d <接口>:指定监听接口(如 eth0tun0)。
  • -i:忽略大小写。
  • -x:以十六进制和 ASCII 显示 payload。
  • -t:显示时间戳。
  • -q:静默模式,只显示匹配结果。

三、ngrep 的高级应用
1. 嗅探明文凭据

在渗透测试中,ngrep 可以捕获未加密的协议流量(如旧版 SMB 或 FTP):

sudo ngrep -d tun0 'user|pass' port 21

匹配 FTP 的用户名或密码:

T 10.10.10.100:12345 -> 10.10.10.200:21 [AP]
  USER admin
T 10.10.10.100:12345 -> 10.10.10.200:21 [AP]
  PASS secret123
2. 调试网络应用

检查特定 API 请求:

sudo ngrep -d any 'api_key' port 443

捕获 HTTPS 的明文流量(需配合 SSL 解密工具)。

3. 捕获自定义协议

匹配自定义 ICMP payload:

sudo ngrep -d any 'SECRET' icmp

适用于 CTF 或调试场景。


四、类似工具对比

虽然 ngrep 功能强大,但它并非万能。以下是与类似工具的对比:

1. tcpdump
  • 特点
    • 经典的命令行抓包工具,支持 BPF 过滤。
    • 不直接支持正则表达式,但可结合 grep 使用。
  • 优点:轻量,支持所有协议,广泛预装。
  • 缺点:输出复杂,难以直接匹配 payload。
  • 示例
    sudo tcpdump -i eth0 icmp | grep "abcd"
    
  • 与 ngrep 的区别tcpdump 更适合捕获原始数据包,ngrep 更擅长文本过滤。
2. Wireshark
  • 特点
    • 图形化界面,支持深度数据包分析。
    • 可通过显示过滤器(如 http.request)筛选流量。
  • 优点:可视化强,协议解析全面。
  • 缺点:资源占用高,不适合轻量环境。
  • 与 ngrep 的区别Wireshark 适合离线分析,ngrep 更适合实时捕获。
3. dsniff
  • 特点
    • 专注于嗅探明文凭据(如 FTP、SMTP)。
    • 包含多个工具(如 dsniffarpspoof)。
  • 优点:针对性强,适合密码捕获。
  • 缺点:功能单一,维护较少。
  • 示例
    sudo dsniff -i eth0
    
  • 与 ngrep 的区别dsniff 是被动嗅探工具,ngrep 更灵活。
4. tshark
  • 特点
    • Wireshark 的命令行版本,支持复杂过滤。
  • 优点:功能强大,协议支持广。
  • 缺点:语法复杂,学习曲线陡。
  • 示例
    sudo tshark -i eth0 -Y "icmp"
    
  • 与 ngrep 的区别tshark 更全面,ngrep 更简单。

五、ngrep 的优势与局限
优势
  1. 简单高效:结合了抓包和文本匹配,命令简洁。
  2. 实时性:适合快速调试或渗透测试。
  3. 轻量级:在资源受限环境(如 OSCP 的 Kali VM)表现良好。
局限
  1. 协议支持有限:无法解析复杂协议的头部(如 HTTP/2)。
  2. 加密流量:无法直接处理 HTTPS 等加密数据。
  3. 输出格式:不如 Wireshark 直观。

六、实用建议
  1. 学习场景
    • 在 CTF 或 OSCP 中,用 ngrep 捕获明文流量(如 SMB、FTP)。
    • 示例:
      sudo ngrep -d tun0 'samba|user|pass' port 445
      
  2. 与其他工具结合
    • tcpdump 捕获完整流量,再用 ngrep 过滤:
      sudo tcpdump -i eth0 -w dump.pcap
      ngrep -I dump.pcap 'GET'
      
  3. 替代选择
    • 如果需要图形化分析,转用 Wireshark
    • 如果需要批量处理,试试 tshark

七、结语

ngrep 虽然不如 tcpdumpWireshark 出名,但其独特的正则表达式匹配能力和轻量级设计使其在特定场景下(如实时嗅探、渗透测试)极具价值。相比之下,tcpdump 更通用,Wireshark 更强大,dsniff 更专注,而 ngrep 则在简洁性和灵活性间找到了平衡。

对于网络安全爱好者或从业者来说,掌握 ngrep 不仅能提升效率,还能在资源受限的环境中发挥奇效。如果你还未尝试,不妨在下次调试或测试中用它捕获流量,体验它的魅力吧!


http://www.kler.cn/a/599372.html

相关文章:

  • 使用Python开发自动驾驶技术:车道线检测模型
  • 热门面试题第13天|Leetcode 110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和 222.完全二叉树的节点个数
  • 《深度剖析:BERT与GPT——自然语言处理架构的璀璨双星》
  • 气象可视化卫星云图的方式:方法与架构详解
  • [动态规划 滑动窗口]
  • 基于linuxC结合epoll + TCP 服务器客户端 + 数据库实现一个注册登录功能
  • 穿越之程序员周树人的狂人日记Part5__硅基驯化录
  • 跨数据库定时数据推送实战
  • 我的世界1.20.1forge模组进阶开发教程——Alex‘s mob的深入研究
  • 蓝桥杯 - 简单 - 布局切换
  • 【时时三省】(C语言基础)选择结构和条件判断
  • 用免费的github的key调用gpt实现一个简单的rag自动打分评测系统,不用任何框架
  • Docker 数据卷管理
  • 模型搭建与复现
  • 同旺科技USB to SPI 适配器 ---- 指令循环发送功能
  • 从指令集鸿沟到硬件抽象:AI 如何重塑手机与电脑编程语言差异——PanLang 原型全栈设计方案与实验性探索1
  • 基于SpringBoot的“社区居民诊疗健康管理系统”的设计与实现(源码+数据库+文档+PPT)
  • tcl语法中的命令
  • word中指定页面开始添加页码
  • 深度拆解:AI Agent发展演练·数字挑战