[实践OK]使用工具ngrep抓取http请求包(因为我们需要探知的是php://input,所以我们这里只抓取http Request数据包)。
背景:深入剖析PHP输入流 php://input ,文章Url:http://www.nowamagic.net/academy/detail/12220520 ,提到ngrep抓包,以前都是tcpdump,这个小工具有点意思,于是查了下,试着安装下Ngrep试一试。
一、使用说明:
如果要分析网络数据包,我们有Wireshark,它有着上千种设定、过滤器以及配置选项。它还有一个命令行版本Tshark。如果只是针对简单的任务,我觉得Wireshark就太重量级了,所以除非我需要更强大的功能,一般情况下就用ngrep来处理了。Ngrep可以让你像类似grep处理文件的方式来处理网络封包。
针对Web流量,你几乎总是想要加上-W byline选项,这会保留换行符,而-q选项可以抑制某些非匹配数据包而产生的输出。下面是一个抓取所有包含有GET或POST请求数据包的例子:
ngrep –q –W byline “^(GET|POST) .*”
你也可以传入附加的报文过滤选项,比如限制匹配的报文只针对某个特定的主机,IP或端口。这里我们把所有流经Google的流量做一个过滤,只针对80端口且报文中包含“search”。
ngrep –q –W byline “search” host www.google.com and port 80
摘处:
http://www.csdn.net/article/2012-11-15/2811906-practical-command-line-tools
二、Solaris安装ngrep:
使用ngrep监控网络接口
ngrep 是grep(在文本中搜索字符串的工具)的网络版,他力求更多的grep特征,用于搜寻指定的数据包。正由于安装ngrep需用到libpcap库, 所以支持大量的操作系统和网络协议。它当前认可 IPv4/6, TCP, UDP, ICMPv4/6, IGMP和原始交叉以太网, PPP, SLIP, FDDI, 令牌网和空端口,并以与更为普遍的分组过滤工具相同的方式了解BPF过滤逻辑,例如tcpdump和snoop。
FreeBSD下载和安装:
#wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/ngrep-1.45-sol10-x86-local.gz
#gunzip ngrep-1.45-sol10-x86-local.gz
#pkgadd ngrep-1.45-sol10-x86-local
ngrep的安装就是configure/make/make install 三部曲。
configure时是遇到please wipe out all unused pcap installations
./configure --with-pcap-includes=/usr/local/include/pcap
在安装后输入ngrep来验证下安装是否成功。
首先看看ngrep的参数,这里只介绍主要选项。
-q 静默模式,如果没有此开关,未匹配的数据包都以“#”显示
-e 显示空数据包
-i 忽略大小写
-v 反转匹配
-x 以16进制格式显示
-X 以16进制格式匹配
-w 整字匹配
-p 不使用混杂模式
-t 在每个匹配的包之前显示时间戳
-T 显示上一个匹配的数据包之间的时间间隔
-M 仅进行单行匹配
-I 从文件中读取数据进行匹配
-O 将匹配的数据保存到文件
-n 仅捕获指定数目的数据包进行查看
-A 匹配到数据包后Dump随后的指定数目的数据包
-W 设置显示格式byline将解析包中的换行符
-c 强制显示列的宽度
-F 使用文件中定义的bpf(Berkeley Packet Filter)
-N 显示由IANA定义的子协议号
-d 使用哪个网卡,可以用-L选项查询
-L 查询网卡接口
图 6 是没有参数的ngerp的输出界面。
ngrep命令输出
图6 ngrep命令输出
下面我们看两个复杂一些的例子,使用命令:
ngrep -qd pcn0 ‘IT专家网’ tcp port 80
这个命令让ngrep 为TCP报文监控pcn0的80接口,并且只包括“IT专家网”字符串。 这样就可以获得所有该子网中使用访问IT专家网的相关信息。
另外一个命令:
ngrep -qd pcn0 ‘USER|PASS’ tcp port 21
这个命令让ngrep 为TCP报文监控pcn0的21接口,并且只包括“user和pass”字符串。我们知道21端口是用来进行FTP连接的端口。 这样就可以获得用于FTP连接的用户名称和密码。
来自:http://security.ctocio.com.cn/tips/30/8196030_4.shtml
三、linux下的ngrep 安装使用:
1 安装libpcap
下载地址 http://www.tcpdump.org/#latest-release
解压
tar -zxvf libpcap-1.4.0.tar.gz
进入目录
cd libpcap-1.4.0
./configure
make
make install
yum install libpcap-devel.x86_64
2 安装ngrep
下载地址
git clone git://git.code.sf.net/p/ngrep/code ngrep-code
Http的:
http://pkgs.fedoraproject.org/repo/pkgs/ngrep/ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42.zip/a58321bda277a741dc94020a4484bcb6/
进入目录
cd ngrep-code
./configure --with-pcap-includes=/usr/local/include/pcap
make
make install
摘自:http://blog.csdn.net/zljjava/article/details/38046595
四、rpm安装:
CentOS:
先用yum install libpcap完全安装libpcap,注意有时候用libpcap安装包安装的不完整会影响ngrep的使用。
如果yum无法安装就用以下步骤安装libpcap
wget http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz
tar -zxf libpcap-1.3.0.tar.gz
cd libpcap-1.3.0
./configure
make && make install
ngrep的安装就是configure/make/make install 三部曲。
configure时是遇到please wipe out all unused pcap installations
./configure --with-pcap-includes=/usr/local/include/pcap
在安装后输入ngrep来验证下安装是否成功。
我也遇到了:
Configuring Network Grep (ngrep) ...
checking for a complete set of pcap headers...
more than one set found in:
/usr/local/include
/usr/local/include/pcap
please wipe out all unused pcap installations
[root@test ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42]# make
配置时加上路径参数:
./configure --with-pcap-includes=/usr/local/include/pcap
编译:
[root@test ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42]# make
make -C regex-0.12 regex.o
make[1]: Entering directory `/home/xiangdong/software/ngrep/ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42/regex-0.12'
gcc -g -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -I. -I. -c regex.c
make[1]: Leaving directory `/home/xiangdong/software/ngrep/ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42/regex-0.12'
gcc -DHAVE_CONFIG_H -DLINUX -D_BSD_SOURCE=1 -D__FAVOR_BSD=1 -Iregex-0.12 -I/usr/local/include/pcap -I. -g -c ngrep.c
gcc -s -o ngrep ngrep.o regex-0.12/regex.o -L/usr/local/include/lib -lpcap
安装:
[root@test ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42]# make install
./install-sh -c -m 0755 ngrep //usr/local/bin/ngrep
./install-sh -c -m 0644 ngrep.8 //usr/local/share/man/man8/ngrep.8
安装参考:http://blog.sina.com.cn/s/blog_4d14fb2b01012tqo.html
五、使用方法:
我经常使用的:
ngrep -W byline -d eth0 port 80
捕捉cloudian:18080端口的request和response。-W byline用来解析包中的换行符,否则包里的所有数据都是连续的,可读性差。-d lo是监听本地网卡
ngrep -W byline -d eth0 port 80
捕捉amazon:80端口的request和response。-d eth0 是用来监听对外的网卡
可以用-d any来捕捉所有的包,这个很管用。
ngrep '[a-zA-Z]' -t -W byline -d any tcp port 80
实践如下:
一、使用说明:
如果要分析网络数据包,我们有Wireshark,它有着上千种设定、过滤器以及配置选项。它还有一个命令行版本Tshark。如果只是针对简单的任务,我觉得Wireshark就太重量级了,所以除非我需要更强大的功能,一般情况下就用ngrep来处理了。Ngrep可以让你像类似grep处理文件的方式来处理网络封包。
针对Web流量,你几乎总是想要加上-W byline选项,这会保留换行符,而-q选项可以抑制某些非匹配数据包而产生的输出。下面是一个抓取所有包含有GET或POST请求数据包的例子:
ngrep –q –W byline “^(GET|POST) .*”
你也可以传入附加的报文过滤选项,比如限制匹配的报文只针对某个特定的主机,IP或端口。这里我们把所有流经Google的流量做一个过滤,只针对80端口且报文中包含“search”。
ngrep –q –W byline “search” host www.google.com and port 80
摘处:
http://www.csdn.net/article/2012-11-15/2811906-practical-command-line-tools
二、Solaris安装ngrep:
使用ngrep监控网络接口
ngrep 是grep(在文本中搜索字符串的工具)的网络版,他力求更多的grep特征,用于搜寻指定的数据包。正由于安装ngrep需用到libpcap库, 所以支持大量的操作系统和网络协议。它当前认可 IPv4/6, TCP, UDP, ICMPv4/6, IGMP和原始交叉以太网, PPP, SLIP, FDDI, 令牌网和空端口,并以与更为普遍的分组过滤工具相同的方式了解BPF过滤逻辑,例如tcpdump和snoop。
FreeBSD下载和安装:
#wget ftp://ftp.sunfreeware.com/pub/freeware/intel/10/ngrep-1.45-sol10-x86-local.gz
#gunzip ngrep-1.45-sol10-x86-local.gz
#pkgadd ngrep-1.45-sol10-x86-local
ngrep的安装就是configure/make/make install 三部曲。
configure时是遇到please wipe out all unused pcap installations
./configure --with-pcap-includes=/usr/local/include/pcap
在安装后输入ngrep来验证下安装是否成功。
首先看看ngrep的参数,这里只介绍主要选项。
-q 静默模式,如果没有此开关,未匹配的数据包都以“#”显示
-e 显示空数据包
-i 忽略大小写
-v 反转匹配
-x 以16进制格式显示
-X 以16进制格式匹配
-w 整字匹配
-p 不使用混杂模式
-t 在每个匹配的包之前显示时间戳
-T 显示上一个匹配的数据包之间的时间间隔
-M 仅进行单行匹配
-I 从文件中读取数据进行匹配
-O 将匹配的数据保存到文件
-n 仅捕获指定数目的数据包进行查看
-A 匹配到数据包后Dump随后的指定数目的数据包
-W 设置显示格式byline将解析包中的换行符
-c 强制显示列的宽度
-F 使用文件中定义的bpf(Berkeley Packet Filter)
-N 显示由IANA定义的子协议号
-d 使用哪个网卡,可以用-L选项查询
-L 查询网卡接口
图 6 是没有参数的ngerp的输出界面。
ngrep命令输出
图6 ngrep命令输出
下面我们看两个复杂一些的例子,使用命令:
ngrep -qd pcn0 ‘IT专家网’ tcp port 80
这个命令让ngrep 为TCP报文监控pcn0的80接口,并且只包括“IT专家网”字符串。 这样就可以获得所有该子网中使用访问IT专家网的相关信息。
另外一个命令:
ngrep -qd pcn0 ‘USER|PASS’ tcp port 21
这个命令让ngrep 为TCP报文监控pcn0的21接口,并且只包括“user和pass”字符串。我们知道21端口是用来进行FTP连接的端口。 这样就可以获得用于FTP连接的用户名称和密码。
来自:http://security.ctocio.com.cn/tips/30/8196030_4.shtml
三、linux下的ngrep 安装使用:
1 安装libpcap
下载地址 http://www.tcpdump.org/#latest-release
解压
tar -zxvf libpcap-1.4.0.tar.gz
进入目录
cd libpcap-1.4.0
./configure
make
make install
yum install libpcap-devel.x86_64
2 安装ngrep
下载地址
git clone git://git.code.sf.net/p/ngrep/code ngrep-code
Http的:
http://pkgs.fedoraproject.org/repo/pkgs/ngrep/ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42.zip/a58321bda277a741dc94020a4484bcb6/
进入目录
cd ngrep-code
./configure --with-pcap-includes=/usr/local/include/pcap
make
make install
摘自:http://blog.csdn.net/zljjava/article/details/38046595
四、rpm安装:
CentOS:
先用yum install libpcap完全安装libpcap,注意有时候用libpcap安装包安装的不完整会影响ngrep的使用。
如果yum无法安装就用以下步骤安装libpcap
wget http://www.tcpdump.org/release/libpcap-1.3.0.tar.gz
tar -zxf libpcap-1.3.0.tar.gz
cd libpcap-1.3.0
./configure
make && make install
ngrep的安装就是configure/make/make install 三部曲。
configure时是遇到please wipe out all unused pcap installations
./configure --with-pcap-includes=/usr/local/include/pcap
在安装后输入ngrep来验证下安装是否成功。
我也遇到了:
Configuring Network Grep (ngrep) ...
checking for a complete set of pcap headers...
more than one set found in:
/usr/local/include
/usr/local/include/pcap
please wipe out all unused pcap installations
[root@test ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42]# make
配置时加上路径参数:
./configure --with-pcap-includes=/usr/local/include/pcap
编译:
[root@test ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42]# make
make -C regex-0.12 regex.o
make[1]: Entering directory `/home/xiangdong/software/ngrep/ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42/regex-0.12'
gcc -g -DSTDC_HEADERS=1 -DHAVE_STRING_H=1 -DHAVE_ALLOCA_H=1 -DHAVE_ALLOCA=1 -I. -I. -c regex.c
make[1]: Leaving directory `/home/xiangdong/software/ngrep/ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42/regex-0.12'
gcc -DHAVE_CONFIG_H -DLINUX -D_BSD_SOURCE=1 -D__FAVOR_BSD=1 -Iregex-0.12 -I/usr/local/include/pcap -I. -g -c ngrep.c
gcc -s -o ngrep ngrep.o regex-0.12/regex.o -L/usr/local/include/lib -lpcap
安装:
[root@test ngrep-code-16ba99a863a89dab25cbf8e9ca410b19a7494c42]# make install
./install-sh -c -m 0755 ngrep //usr/local/bin/ngrep
./install-sh -c -m 0644 ngrep.8 //usr/local/share/man/man8/ngrep.8
安装参考:http://blog.sina.com.cn/s/blog_4d14fb2b01012tqo.html
五、使用方法:
我经常使用的:
ngrep -W byline -d eth0 port 80
捕捉cloudian:18080端口的request和response。-W byline用来解析包中的换行符,否则包里的所有数据都是连续的,可读性差。-d lo是监听本地网卡
ngrep -W byline -d eth0 port 80
捕捉amazon:80端口的request和response。-d eth0 是用来监听对外的网卡
可以用-d any来捕捉所有的包,这个很管用。
ngrep '[a-zA-Z]' -t -W byline -d any tcp port 80
实践如下:
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/7739/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2015-1-19 17:06
评论列表