请教:如何获得当前系统中正在访问网络的程序列表及远程端口,或如何拦截TCPSYN报头。

解决方案 »

  1.   

    首先,一个保护层需要放在客户端和WEB服务器之间,来拦截所有的从客户端发来的TCPSYN报文。在接到TCPSYN报文后,这个保护层要发一个TCPSYNACK回去,TCP的序列好是计算好的TCPSYNCOOKIE,根据这个COOKIE,一个完整的TCP状态可以恢复出来。注意这时这个保护层并不保存任何TCP的状态,它在等着客户端是否能送一个TCPACK回来。如果回来,就证明远程客户是一个有效的客户,因为远程客户也和WEB服务器一样,在保存这个TCP的状态。而且通过对HTTP的分析,张大民在此基础上又加了一道防御。保护层会送回一个HTTP重定向的TCP报文。根据HTTP的RFC的规定,当一个HTTP收到HTTP重定向报文后,它应该中断HTTP和TCP的链接。根据HTTP重定向报文中的内容重新建立新的TCP链接。这样,保护层也验证了HTTP是否是一个有效的HTTP,如果是,就应该遵守HTTP的规定,中断TCP链接,并重新向WEB服务器发布新的TCPSYN链接。  当一台肉鸡向WEB服务器发布TCPSYN洪水工具时,它是不会送任何TCPACK回来的。如果保护层没有收到这个TCPACK,就发现了这个源地址来的报文不是正常的报文,以后也不会让这个源地址来的报文通过了。从而达到了过滤DDOS网络流量的目的。  尝到了胜利的喜悦后,张大民也顾不上睡觉,又好好分析了TCP的状态装换图。这次,他主要是找有什么报文能使客户端自动终止一个TCP链接,然后在自动重试的。他发现,大部分应用层的协议,当一个TCP链接出现异常后,通常情况下都要进行重试,在建立新的TCP链接,直到三到四次。这样,当服务生敲门送上早饭的时候,黑客张大民又有了另一个TCP客户有效性验证方案。图4
      这次,当保护层拦截到客户端发布来的TCPSYN报文后,保护层送一个TCPACK,而不是TCPSYNACK回去。根据TCP的状态转换图,当客户端接收到这个TCPACK报文时,客户端认为TCP的链接出了问题,会向服务器端发一个TCPRST的报文来中断目前的TCP链接。而使用TCP的应用层协议,如HTTP通常情况下会重试。如果是一个有效的HTTP客户,而不是一个发送DDOS网络流量的肉鸡,这个客户会重试。保护层会让这个重试的报文通过,而到达正常的WEB服务器。  张大民已经有点崇拜自己了。这个想法就更天才了,这个办法只是拦截TCPSYN,然后送一个TCPACK回去,如果收不到客户端发回来的TCPRST,那么客户端就肯定是发送DDOS网络流量的肉鸡。如果不是,客户端自己会重新建立另一个TCP链接。而保护层在收到这个客户发来的TCPRST后,会让这个客户的新的TCP链接通过。保持肉鸡的网络流量被掐断,也保证了有效的客户可以正常访问网站。
      

  2.   

    常用的SNIFF 
    很少有原因会让你自己亲自动手来做一个自己的SNIFF,除非你是想了解他的原理,或者是 
    其他一些特别的原因,比如你要在某个特殊的环境拦截一些特殊的数据包。下面我们就来看 
    看一些在网络上经常使用的SNIFF。 全文请看http://bbs.net130.com/showthread.php?s=&threadid=64588
      

  3.   

    非常完整的连接察看程序,可以察看有哪些程序打开了哪些端口,数据收发流量等等信息:
    http://www.applevb.com/sourcecode/XP%20connector.zip
      

  4.   

    非常感谢 TechnoFantasy(冰儿马甲www.applevb.com)的帮助