标题:NetXray使用说明之(1)1.1.1.1----2.2.2.2----3.3.3.3----4.4.4.4 这是一个ShareHub连接下的局域网 || 5.5.5.5 这是一个8080端口上的http/ftp proxy|| Internet启动Capture,进入Capture Setting,选择Profiles-->New,以Default为模板,起名叫proxy,选择ok-->Done,设置过滤所有目标IP是5.5.5.5的报文,即Any---->5.5.5.5开始抓包,同时从本机使用http proxy,然后就可以停止抓包。选中一个目标IP是5.5.5.5的报文,按鼠标右键,选择"编辑显示过滤",选择"数据模式",选择Add Pattern,到TCP层选中8080目标端口,用鼠标选择"设置数据",起名"目标端口8080"。回去选择"应用显示过滤"。以后用proxy规则过滤将只过滤目标IP是5.5.5.5、目标端口是8080的报文。要是对协议分析熟悉,根本不用写这么多,以后要问NetXray的使用说明,请直奔主题,否则回答起来实在罗嗦。关键是有些人太懒惰,不乐意自己实践。标题:NetXray使用说明之(2)如何指定源端口、目标端口?1. 注意Data Pattern和Address是逻辑与的关系2. 进入Data Pattern设置页比如你想设置这样一个过滤规则,源端口是2323或者目标端口是2323的IP包,先选中第一行,用Toggle AND/OR调整成OR,因为你的逻辑表达式的最外层是 OR3. 选择Add Pattern,在弹出的对话框里设置Packet 34 2 Hex从顶头开始填写 09 13,因为十进制的2323对应十六进制的0x0913,而IP包使用网络字节顺序,高字节在低地址。起名任意,比如源端口2323,确定再次选择Add PatternPacket 36 2 Hex 从顶头开始填写 09 13起名任意,比如目标端口2323,确定于是最外层的OR下有两个叶子,分别对应两个Pattern。4. 还有很多变化,但都和这个基本例子差不多,你的过滤规则可以非常复杂。最外层的OR表示它下面的所有叶子之间都是OR的关系,所以我建议当你企图建立一个非常复杂的规则的时候先写出逻辑表达式再来操作,以免不必要的重复劳动。标题:NetXray使用说明之(3)如何抓ftp/pop3口令明文?NetXray所谓的高级协议过滤事实上就是端口过滤,用(2)中介绍的方法指定源端口目标端口均过滤0x00 0x17,就可以达到和指定telnet过滤一样的效果。NetXray认为telnet就是23端口,所以如果想捕捉一个非标准telnetd的通信,必须自己指定端口过滤。此外Pwin98下services文件的修改不影响NetXray认为telnet就是端口23。每次指定捕捉telnet协议,但显示的时候可能会发现有些包没有标记成telnet,而是tcp,为什么?因为这些标记成tcp的包没有telnet数据区,虽然在完整的物理帧中有数据,但根据IP报头中的 ntohs( ip->tot_len ) ,对于IP报文来说没有telnet数据区。物理帧中为什么有?可能是考虑"填充",我不知道是数据链路层从内核返回的时候带上来的"填充",还是对端发送的时候就已经"填充",在linux下用sock_packet抓包也存在同样的问题,一般情况下recvfrom返回的字节数减去各个报头长度得到数据区长度,但出现"填充"时就不是这样了,所以处理IP协议族时,一定要用 ntohs( ip->tot_len ) ,我写linuxkiller时才认真注意到这个问题。那么用NetXray时,不要看第三栏,那里是完整的物理帧,有很多干扰信息,应该看第二栏的数据区。如果是分析telnet协议并还原屏幕显示,只需要抓从server到client的回显数据即可,因为口令不回显,这种过滤规则下抓不到口令明文。在linux下编程实现时需要考虑95个可打印字符、汉字以及32个控制字符的显示过滤问题。如果想抓telnet的口令明文,需要抓client到server的数据。Pred写的Sniff监听别人的BBS登录就象看动画,但看不到口令,应该是只抓从server到client的回显数据。nethackii可以抓pop3/ftp/telnet的口令,对于前两者很容易实现,因为有PASS关键字可以鉴别,后者稍微麻烦些,需要重组。值得一提的是foxmail的邮件监视器,简直就是定时发送口令明文,用NetXray抓从client到server包,指定过滤PASS关键字,非常清楚。下面简单说一下这个设置:先指定IP过滤规则,应该只指定 any <--> any,或者干脆不指定IP地址,以最大可能地捕捉口令。然后增加一个过滤模式,Packet 54 4 Hex 0x50 41 53 53再增加一个过滤模式,Packet 54 4 Hex 0x70 61 73 73两者是or模式,后者是因为这种关键字在网络传输中大小写不敏感,比如cuteftp发送的是pass。剩下的就是等口令来了。注意,不必指定过滤特定高级协议,直接指定过滤IP协议族就可以了,用这种办法ftp/pop3口令是很容易看清楚的。因为许多ftp/pop3的口令可以telnet 23,所以......标题:NetXray使用说明之(4)unix/linux下执行clear命令究竟发送了什么字符串到终端才导致清屏效果出现,用NetXray捕捉server到client的回显数据,发现如下字符串:1B 5B 48 1B 5B 4A 可以用fprintf输出这些字符到屏幕上,结果就是导致清屏效果。对于UDP报文的源端口/目标端口过滤基本上和TCP报文的设置一样,不过这次换种方式指定:Protocol 20 2 Hex 源端口Protocol 22 2 Hex 目标端口这些都是在没有使用IP选项的情况下指定,如果使用了IP选项就需要做相应改变。标题:NetXray使用说明之(5)这里的使用说明可以用于sniffer pro 2.6,因为这两个东西实际是一个公司的。虽然很多人告诉我sniffer pro比netxray强大,但是我个人觉得在协议分析方面netxray比sniffer pro要方便,虽然支持的协议少了点,但是在设置过滤规则和应用过滤规则等小操作上,显然sniffer pro没有吸取netxray的精华,这些小操作平时很难遇到,但真正做协议分析指定一些复杂的过滤规则的时候就会碰上。今天我们介绍的是如何抓取RPC报文,下面给出的办法仅仅是种尝试而已。因为RPC Server使用动态端口,所以你无法进行常规的端口过滤设置,如果一定要设置可能需要尝试,具体例子请参看<< RPC/XDR/NFS系列之----NFS/Mount协议 >>这里给一种不是很科学的办法:1. 指定进行IP过滤,设置Any <--> RPC Server IP2. 指定对TCP以及UDP协议进行过滤,因为RPC Server可能的底层支持协议包括二者。3. 进入Data Pattern设置页,用Toggle AND/OR调整成OR,因为你的逻辑表达式的最外层是 OR4. 选择Add Pattern,在弹出的对话框里设置Protocol 60 8 Hex 00 00 00 00 00 00 00 02起名TCP RPC CALL5. 同4的步骤,依次选择Add Pattern,在弹出的对话框里设置Protocol 60 4 Hex 00 00 00 01起名TCP RPC REPLYProtocol 32 8 Hex 00 00 00 00 00 00 00 02起名UDP RPC CALLProtocol 32 4 Hex 00 00 00 01起名UDP RPC REPLY这里给的办法仅仅代表一种思路,如果你发现并没有抓住某个特定RPC SERVER的报文,可以自行调整过滤规则。要理解这个过滤规则,需要RPC本身的知识,可以参看<< RPC/XDR/NFS系列 >>。我曾经想设置远程程序号的过滤规则,但发现RPC REPLY报文中没有固定字段对应远程程序号,只好放弃。如果你只想抓RPC CALL报文,可以考虑这个思路。标题:NetXray使用说明之(6)----捕捉oicq message报文NetXray发包前可以在decode状态下编辑,sniffer pro 2.6却不象NetXray那样善解人意,只能进行二进制编辑。sniffer pro的Add Pattern里的TAB键极其混帐,并且这里也不提供decode支持。始终不能理解这些地方。不过破解版的NetXray在decode时有些地方对不准,菜单window也不时失灵。暂略(回头补吧,没时间了)今天讲讲oicq message报文的捕捉。1. 首先设置进行IP/UDP报文过滤,IP/TCP暂时就不必了,因为oicq message报文多是IP/UDP报文,我还没有看到过IP/TCP,应该是没有的。2. 根据需要在Address/IP Include里设置通信双方的IP,假设我们需要捕获所有与本机oicq.exe通信的oicq message报文,设置成 myIp <----> Any3. 进入Data Pattern设置页,用<< NetXray使用说明之(2) >>里的办法指定( ( srcPort == 4000 ) && ( dstPort != 8000 ) )||( ( srcPort != 8000 ) && ( dstPort == 4000 ) )第一条的意思是本机向别人发消息,第二条是别人向本机发消息,之所以排除掉8000,你可以进入oicq chat room看看此时涉及的端口。那么为什么不指定两头都是4000呢,因为如果过了透明网关之类的,UDP RELAY的时候会改变源端口,一般都不会是4000了。反过来,如果你发现一个入包的源端口不是4000,他/她应该在类似sygate的代理后面。不过此时UDP DATA PIPE已经建立,即使他/她在sygate后面,还是可以利用刚才抓到的IP/PORT和他/她通信,意味着很多事情都可能发生。这里假设都通过oicq.exe通信,如果用自己写的程序与oicq.exe通信,源端口不必非是4000,可以任意指定。4. 算了,还是详细说说条目3中高级过滤规则的指定a. 用Toggle AND/OR把最上层调成ORb. 选中OR,然后Add AND/OR增加两个上去,分别用Toggle AND/OR调成ANDc. 选中第一个AND,然后Add Pattern,选中增加的Pattern,选择Packet 34 2 Hex,从1开始输入 0F A0,就是0x0fa0的意思,srcPort == 4000d. 选中第一个AND,然后Add NOT,选中增加的NOT,用Toggle NOT确认已经调成NOT,选中NOT,然后Add Pattern,选中增加的Pattern,选择Packet 36 2 Hex,从1开始输入 1F 40,就是0x1f40的意思,dstPort != 8000e. 选中第二个AND,重复"类似"c、d的步骤,分别指定srcPort != 8000以及dstPort == 4000f. 选中最上层的OR,看看summary,是否符合你预想的逻辑表达式,如果不符合,继续调整,直至正确。虽然这里是针对oicq.exe设置高级过滤规则,但这是一个很完整而又略显复杂的设置说明,对<< NetXray使用说明之(2) >>是个很好的补充。标题:NetXray使用说明之(小插曲)----分析netants的1975问题设置过滤规则为:myIp --> any:1975设置捕获IP/TCP协议,注意不要指定捕获HTTP协议,NetXray是根据端口区分协议的,你指定HTTP协议,就只捕获80端口的报文了。过一段时间1975上的连接自动切断。在本机用netstat -a 或者 netstat -na 看到如下信息:TCP scz:1475 ad2-1.aureate.com:1975 ESTABLISHEDTCP 192.168.8.90:1475 216.37.13.140:1975 ESTABLISHED标题:NetXray使用说明之(7)----LanExplorer 3.5下的过滤规则设置作者:小四 < mailto: scz@nsfocus.com >主页:http://www.nsfocus.com日期:2000-08-28 20:21--------------------------------------------------------------------------下面是咱们<ipxodi@nsfocus.com>的大放厥词:LanExplorer 3.5,9x/NT/2K下的协议分析软件,7MB,http://www.intellimax.com破解如下:安装完成后,用HEXEDIT打开probe.exeCTRL G 跳到0x4eac7,把75改成eb,保存。以后运行提示注册,点击Cancel进入即可。--------------------------------------------------------------------------实际上LanExplorer和NetXray不是一个厂家的产品,从使用上也很多不同,但是从协议分析角度来看,没有区别,姑且放到一起介绍。这个系列完全是为初学者写的,前阵有人问起续篇,将就着再写写,实在是没意思的东西。1.从菜单上选择Capture-->Filter,选择左上角的[ New Profile ]按钮,输入你觉得切合要求的名字,比如TCP-SMB。这里有个小窍门,如果你已经有一个合理可用的IP规则,就先选中IP规则,然后点击左上角的[ New Profile ]按钮,那么新规则以IP规则为模板生成。2.选中TCP/UDP Port页,点击最顶行最右边的[ TCP/UDP Ports... ]按钮,选择New,输入端口号445,描述任意,比如TCP-SMB,Ok。Filter Mode选择Inclusive,选中下面的[ Exclude Non-TCP/UDP Packets ]复选框在[ Port 1 ]里选择刚刚新创建的TCP-SMB,选择-->,在[ Port 2 ]里选择All,选中右边的TCP复选框,UDP复选框不要选中。3.选中Address页,Address Mode选择IP,选中下面的[ Exclude Non-IP Packets ]复选框,Filter Mode选择Inclusive,在[ Address 1 ]里选择[ Any Address ],选择-->,在[ Address 2 ]里输入192.168.8.90(我自己的内部IP)4.选中Layer 3 页,假设所有的复选框都清空了,从右边开始,在TCP/UDP栏里只选择Others,而IP/ARP栏里的TCP和UDP不用选中,提交本条过滤规则的时候LanExplorer会自动判别并替你选中IP/ARP栏里的TCP和UDP复选框,如果你此时自己选中也无妨。5.选中Layer 2/3页,假设所有的复选框都清空了,从左边开始,在Ethernet II栏里只选择IP/ARP复选框,注意和Layer 3 页之间的关系,提交本条过滤规则的时候LanExplorer会自动判别并替你选中LLC栏里的IP复选框以及SNAP栏里的IP/ARP复选框,如果你此时自己选中也无妨。6.选中Layer 2页,假设所有的复选框都清空了,在VLAN栏里选中Others复选框,MAC栏不用理会。点击中文的[ 确定 ]按钮(太奇怪了,LanExplorer为什么这里出现了中文按钮,而其他地方没有)7.从菜单上选择Capture-->Filter,选中你要使用的过滤过则,如果刚刚创建过新规则,默认的当前过滤规则就是新规则。从菜单上选择Capture-->Start。这个规则设置过程很简单,显然LanExplorer的设置不如Sniffer Pro友好,至于它的发送更是不尽人意,这些不多说了,用过的朋友自己对照。执行net use \\192.168.8.48\ipc$或者newletmein \\192.168.8.48 -all -d之类的命令,可以验证上述过滤规则是否有效。很多朋友在高级过滤规则的设置上失败,其原因很多,抛开对协议本身不了解的原因,LanExplorer设置复杂是重要原因。有一点特别注意,宁可多选几个复选框,不要对自己不了解复选框清空,你能解释第6条中为什么选择VLAN栏里的Others复选框吗?我不能,可你的确必须如此选择。更多的东西需要自己摸索。我不喜欢这个东西,可我现在2K下,没有别的可用。--------------------------------------------------------------------------下面是NetGuy的破解1. Probe.exe: 1,114,112 b字节2. crack_probe.exe: 1,114,112 b字节4E924:7C904E925:18904E93C:7EEB4EA62:6AEB4EA63:00154EABC:50EB4EABD:E812--------------------------------------------------------------------------<待续>标题:NetXray使用说明之(7.5)----LanExplorer 3.6下的过滤规则设置举例(续)3.6据说比3.5加强了一些,包括退出后僵尸进程的问题,启动中乱报错问题,现在似乎支持拨号适配器上的抓包了(以前如何我还真没测试过),但在过滤规则上毫无改观。以前过滤规则全部在升级过程中丢掉了,只好重新设置。下面是IP过滤规则的设置:1.从菜单上选择Capture-->Filter,选择左上角的[ New Profile ]按钮,输入你觉得切合要求的名字,比如IP。这里有个小窍门,如果你已经有一个合理可用的Default规则,就先选中Default规则,然后点击左上角的[ New Profile ]按钮,那么新规则以Default规则为模板生成。2.不要动TCP/UDP Port页、Address页3.选中Layer 3 页,假设所有的复选框都选中了,因为我们设置的是IP过滤规则,要求抓取所有IP报文。注意LanExplorer把ARP归入Layer 3 页,如果你的确只想抓IP报文,清除该页第一个ARP复选框。反之,如果你只想抓ARP报文,应该清空Layer 3 页后只选择该页第一个ARP复选框。4.选中Layer 2/3页,假设所有的复选框都清空了,从左边开始,在Ethernet II栏里只选择IP/ARP复选框,注意和Layer 3 页之间的关系。3.5版这里会自动替你选中LLC栏里的IP复选框以及SNAP栏里的IP/ARP复选框,3.6版没有这个毛病了。5.选中Layer 2页,假设所有的复选框都清空了,在VLAN栏里选中Others复选框,MAC栏根据需要指定,比如只想抓取单播IP报文,就只选中Unicast复选框。VLAN栏里Others复选框必须选中,至于为什么,不清楚。回头看第三条,如果想抓ARP报文,因为Arp Request是广播报文,为了同时抓取请求和响应报文,必须在MAC栏里选中Broadcast复选框。当然,只选中Unicast复选框,将抓取所有Arp Reply报文。点击中文的[ 确定 ]按钮(太奇怪了,LanExplorer为什么这里出现了中文按钮,而其他地方没有)6.从菜单上选择Capture-->Filter,选中你要使用的过滤过则,如果刚刚创建过新规则,默认的当前过滤规则就是新规则。从菜单上选择Capture-->Start。标题:NetXray使用说明之(8)----捕捉来自特定源IP的ARP报文今天调试一个程序的时候,利用SIGALRM进行ARP欺骗,需要抓几个ARP响应报文确认定时机制起作用了,但又不想都抓,ARP报文太多了。1. 以default为模板复制一条规则arp2. 在"高级过滤"里选中ARP协议3. 在"数据模板"里选择"增加模板",此时默认是AND规则4. 依次输入或选择Packet 28 4 Hex5. 从顶头开始输入C0 A8 0A 19就是说源IP为192.168.10.25描述性文字任意,比如srcIp == 192.168.10.256. 一路确定下去即可事实上平时设置过滤规则不需要这样麻烦,可以先用母体规则(比如default)抓取一些报文,然后用鼠标选中你需要的报文,保持不动的情况下进入过滤规则设置界面,新建一个过滤规则arp,此时"数据模板"里的"设置数据"按钮可用,在左面选择你感兴趣的数据域,点击"设置数据",会自动替你生成一个"数据模板",然后根据需要稍微修改一下即可。即使你对TCP/IP协议非常熟悉,也没有必要自己计算偏移量。<<NetXray使用说明之(2)>>里的"数据模板"一样