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

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 不仅能提升效率,还能在资源受限的环境中发挥奇效。如果你还未尝试,不妨在下次调试或测试中用它捕获流量,体验它的魅力吧!

相关文章:

  • 【RAG综述系列】之 RAG 相关背景和基本原理
  • 乐道突围特斯拉
  • 六十天前端强化训练之第三十天之深入解析Vue3电商项目:TechStore全栈实践(文结尾附有源代码)
  • VRRP协议介绍及一些常见问题
  • C语言实现的冰墩墩
  • 搭建简易的rtsp服务器
  • Android Studio编译问题
  • HO与OH差异之Navigation
  • GitHub供应链攻击事件:Coinbase遭袭,218个仓库暴露,CI/CD密钥泄露
  • jangow靶机攻略
  • Vue.js 过滤器(Filters):简化文本格式化的利器
  • 第十四届蓝桥杯省赛电子类单片机学习记录(客观题)
  • 2025 JMeter平替的五款工具
  • 中间件框架漏洞攻略
  • 室分覆盖(室内分布系统)详解
  • 二叉搜索树的最近公共祖先 删除二叉搜索树中的节点 修剪二叉搜索树(Java)
  • ClickHouse怎么学习
  • 数据库—sql语法基础
  • 健身房管理系统(源码+数据库)
  • 《HarmonyOS Next自定义TabBar页签凸起和凹陷案例与代码》
  • 农行一季度净利润719亿元增2.2%,不良率微降至1.28%
  • 船只深夜撞上海上风机后沉没1死1失踪,调查报告公布
  • “杭州六小龙”的招聘迷局
  • “天链”继续上新!长三乙火箭成功发射天链二号05星
  • 当隐身13年的北小京决定公开身份 ,专业戏剧评论依然稀缺
  • 特朗普说克里米亚将留在俄罗斯,泽连斯基:绝不承认