需要“窃听”服务器程序的数据,并伪装成客户端与其交互

11 views
Skip to first unread message

ben

unread,
Oct 23, 2009, 8:54:16 AM10/23/09
to 高性能服务器研发与运营邮件列表
首先声明是为了工作,不是搞破坏,服务器的协议知道,需要获取服务程序的发出的信息,并且伪装成客户端与其交互(不是真正的建立连接,而是依附到已经存
在的连接上),请问有什么想法没有?
目前我们的想法是买一个一个路由器,让服务程序和外界交互的信息都要经过路由器,然后在路由器上做一些工作,问题是需要做些什么?这方面没有经验,还请
达人给与帮助,哪怕说一下可能的技术亦可,感激不尽!

sunway

unread,
Oct 23, 2009, 10:05:04 AM10/23/09
to 高性能服务器研发与运营邮件列表
可以修改客户端连接的IP,利用HOOK让他连本地的172.0.0.1,
你在本地开个端口,让他连接上,他的数据都发给你的本地server.
然后你本地server再发到远程服务器上。

在你的本地server上可以做任意的改动。

benegg

unread,
Oct 24, 2009, 12:38:25 AM10/24/09
to 高性能服务器研发与运营邮件列表

这种要求只有很少的情况能实现. 如果程序基于TCP, 那么你伪装TCP连接发送了的数据, 服务器端该TCP连接会话的接收序号已经改变, 如果有
交互, 发送序号也会改变, 等真正的客户端再发数据时, 服务器端就会因为序号错误而拒绝, 客户端如果收到数据也是一样. 如果是UDP, 还是有
一些可能的, 这取决于应用程序协议是否是一种可幂的协议, 可幂指的是一个操作可以重复处理, 而不导致状态的改变. 如果应用层实现了一种序号机
制, 或者操作会改变致命数据, 结果和TCP是一样不能实现的.

-------------------------------------
招聘求职信息: http://www.tcpwork.com

周龙亭

unread,
Oct 24, 2009, 2:23:37 AM10/24/09
to dev4s...@googlegroups.com
可不可以写个filter driver?

SevenCat

unread,
Oct 24, 2009, 8:19:25 AM10/24/09
to 高性能服务器研发与运营邮件列表
感觉你这个只是想监听到所有的服务器与客户端之间的通信,而不会做修改,是不是可以用libpcap在win上的winpcap抓到所有的包再来自己分
析。

Keyou Liu

unread,
Oct 24, 2009, 8:29:15 AM10/24/09
to dev4s...@googlegroups.com

TCP/IP劫持

2009/10/24 SevenCat <baste...@gmail.com>

ka-bar

unread,
Oct 25, 2009, 9:09:12 AM10/25/09
to dev4s...@googlegroups.com
不知道你是不是在Linux上实现,如果是在linux上,可以通过netfilter模块实现,并且这个截获程序可以在本机,也可以在路由器上(linux内核)。

ka-bar

--------------------------------------------------
From: "ben" <lizp...@gmail.com>
Sent: Friday, October 23, 2009 8:54 PM
To: "高性能服务器研发与运营邮件列表" <dev4s...@googlegroups.com>
Subject: 需要“窃听”服务器程序的数据,并伪装成客户端与其交互

ben

unread,
Oct 25, 2009, 11:11:50 PM10/25/09
to 高性能服务器研发与运营邮件列表
非常感谢,我们就是打算在linux下实现,非常感谢,谢谢大家给俺开拓了思路!

On 10月25日, 下午9时09分, "ka-bar" <ka-bar_stri...@hotmail.com> wrote:
> 不知道你是不是在Linux上实现,如果是在linux上,可以通过netfilter模块实现,并且这个截获程序可以在本机,也可以在路由器上(linux内-核)。
>
> ka-bar
>
> --------------------------------------------------
> From: "ben" <lizp....@gmail.com>


> Sent: Friday, October 23, 2009 8:54 PM
> To: "高性能服务器研发与运营邮件列表" <dev4s...@googlegroups.com>
> Subject: 需要"窃听"服务器程序的数据,并伪装成客户端与其交互
>
>
>
> > 首先声明是为了工作,不是搞破坏,服务器的协议知道,需要获取服务程序的发出的信息,并且伪装成客户端与其交互(不是真正的建立连接,而是依附到已经存
> > 在的连接上),请问有什么想法没有?
> > 目前我们的想法是买一个一个路由器,让服务程序和外界交互的信息都要经过路由器,然后在路由器上做一些工作,问题是需要做些什么?这方面没有经验,还请

> > 达人给与帮助,哪怕说一下可能的技术亦可,感激不尽!- 隐藏被引用文字 -
>
> - 显示引用的文字 -

woooody wang

unread,
Oct 25, 2009, 11:33:45 PM10/25/09
to dev4s...@googlegroups.com
1. 如果只是想嗅探数据,可以用ARP欺骗,man in  middle。server client 想嗅探哪个都可以。这样你也不需再要买一个路由器。
2. 如果想修改嗅到的数据,没有别的好办法。既然你知道了协议,就可以根据协议写自己的客端,想怎样改就怎么改。

benegg

unread,
Oct 26, 2009, 12:31:24 AM10/26/09
to 高性能服务器研发与运营邮件列表
楼主, 我理解你的需求是2个:

1. 窃听网络数据.
2. 模拟交互的一方, 进行发送数据.

On Oct 26, 11:33 am, woooody wang <woooody.w...@gmail.com> wrote:
> *1.* 如果只是想嗅探数据,可以用ARP欺骗,man in middle。server client
> 想嗅探哪个都可以。这样你也不需再要买一个路由器。
> *2.* 如果想修改嗅到的数据,没有别的好办法。既然你知道了协议,就可以根据协议写自己的客端,想怎样改就怎么改。
>
> 2009/10/26 ben <lizp....@gmail.com>

ben

unread,
Oct 26, 2009, 1:10:58 AM10/26/09
to 高性能服务器研发与运营邮件列表
benegg 分析的没错,不好意思,一开始没写清楚,现在窃听数据可以用netfilter,但怎么模拟客户端呢?不增加连接的情况下。

On 10月26日, 下午12时31分, benegg <ide...@163.com> wrote:
> 楼主, 我理解你的需求是2个:
>
> 1. 窃听网络数据.
> 2. 模拟交互的一方, 进行发送数据.
>
> On Oct 26, 11:33 am, woooody wang <woooody.w...@gmail.com> wrote:
>
>
>
> > *1.* 如果只是想嗅探数据,可以用ARP欺骗,man in middle。server client
> > 想嗅探哪个都可以。这样你也不需再要买一个路由器。
> > *2.* 如果想修改嗅到的数据,没有别的好办法。既然你知道了协议,就可以根据协议写自己的客端,想怎样改就怎么改。
>
> > 2009/10/26 ben <lizp....@gmail.com>
>
> > > 非常感谢,我们就是打算在linux下实现,非常感谢,谢谢大家给俺开拓了思路!
>
> > > On 10月25日, 下午9时09分, "ka-bar" <ka-bar_stri...@hotmail.com> wrote:
>
> > > 不知道你是不是在Linux上实现,如果是在linux上,可以通过netfilter模块实现,并且这个截获程序可以在本机,也可以在路由器上(linux内--核)。

>
> > > > ka-bar
>
> > > > --------------------------------------------------
> > > > From: "ben" <lizp....@gmail.com>
> > > > Sent: Friday, October 23, 2009 8:54 PM
> > > > To: "高性能服务器研发与运营邮件列表" <dev4s...@googlegroups.com>
> > > > Subject: 需要"窃听"服务器程序的数据,并伪装成客户端与其交互
>
> > > > > 首先声明是为了工作,不是搞破坏,服务器的协议知道,需要获取服务程序的发出的信息,并且伪装成客户端与其交互(不是真正的建立连接,而是依附到已经存
> > > > > 在的连接上),请问有什么想法没有?
> > > > > 目前我们的想法是买一个一个路由器,让服务程序和外界交互的信息都要经过路由器,然后在路由器上做一些工作,问题是需要做些什么?这方面没有经验,还请
> > > > > 达人给与帮助,哪怕说一下可能的技术亦可,感激不尽!- 隐藏被引用文字 -
>
> > > > - 显示引用的文字 -- 隐藏被引用文字 -
>
> - 显示引用的文字 -

ka-bar

unread,
Oct 26, 2009, 1:59:09 AM10/26/09
to dev4s...@googlegroups.com

netfilter不是单纯的窃听数据,可对数据进行篡改。如果是单纯的窃听数据,就推荐你用pcap了。
使用netfilter时,不需要考虑客户端的工作模式,只要对其使用的TCP层之上的通信协议比较了解就行。修改数据之后,重新计算IP头和TCP头的校验和,如果TCP层上的通信协议也有类似的校验,同样要重新计算。

ka-bar

--------------------------------------------------
From: "ben" <lizp...@gmail.com>
Sent: Monday, October 26, 2009 1:10 PM
To: "高性能服务器研发与运营邮件列表" <dev4s...@googlegroups.com>
Subject: Re: 需要“窃听”服务器程序的数据,并伪装成客户端与其交互

benegg

unread,
Oct 26, 2009, 2:11:21 AM10/26/09
to 高性能服务器研发与运营邮件列表
显然, 楼主的需求不是修改数据, 而是要自己*创造*并发送数据. 前面我的邮件已经说明了, 只有很少的情况能实现.

On Oct 26, 1:59 pm, "ka-bar" <ka-bar_stri...@hotmail.com> wrote:
> netfilter不是单纯的窃听数据,可对数据进行篡改。如果是单纯的窃听数据,就推荐你用pcap了。
> 使用netfilter时,不需要考虑客户端的工作模式,只要对其使用的TCP层之上的通信协议比较了解就行。修改数据之后,重新计算IP头和TCP头的校验和,如果TCP层上的通信协议也有类似的校验,同样要重新计算。
>
> ka-bar
>
> --------------------------------------------------

> From: "ben" <lizp....@gmail.com>

十七

unread,
Oct 26, 2009, 9:19:24 PM10/26/09
to dev4s...@googlegroups.com
窃听可以使用libpcap,至于发送数据,可以借助第三方公司的硬件。

2009/10/26 benegg <ide...@163.com>

benegg

unread,
Oct 26, 2009, 11:33:47 PM10/26/09
to 高性能服务器研发与运营邮件列表
其实大家也说了不少手段, 但我觉得主要的问题是大家没有对手段的应用场景和限制进行说明. 任何技术和方法不是全能的, 都有它的适用范围.

我觉得楼主应该描述下自己使用的协议的一些细节, 比如基于TCP还是UDP? 是像FTP那样的长连接, 还是HTTP1.0那样的短连接? 协议做
的是什么事, 是否每一个报文都修改了致命数据?

修改致命数据: 例如, 某个指令从数据库表中读取id=1的数据, 对其进行运算并将结果返回, 然后删除该数据. 如果你伪装了这个指令, 那么真
正的客户端进行这个指令时, 就会出错.

> --
> 曾梦想仗剑走天涯,看一看世界的繁华.

Hailong Shu

unread,
Oct 27, 2009, 3:37:27 AM10/27/09
to dev4s...@googlegroups.com
楼主没有说明这个程序的应用环境。
总的来说我觉得这个应用是很可疑的,设想一下这个技术用在网银上就知道后果有多可怕了。
一般来说搞程序外挂什么,都没有要求依附在已有连接上这个需求,或者直接改对方的TCP/IP包的内容。
2009/10/27 benegg <ide...@163.com>

十七

unread,
Oct 27, 2009, 4:46:48 AM10/27/09
to dev4s...@googlegroups.com
我觉得倘若真想用在网银上,那么改包的内容反而不是难点,难点是在协议的分析和解密上。
 
楼主所说的这种应用,其实在企业中也会有需求,只不过企业大多是分析出了协议,然后选择性的扔掉一些包就行了,没必要伪造。当然感觉功夫网可能会对这种应用更感兴趣一点……

2009/10/27 Hailong Shu <shuha...@gmail.com>

Hailong Shu

unread,
Oct 27, 2009, 4:52:56 AM10/27/09
to dev4s...@googlegroups.com
分析协议很简单的,libpacp什么包都能抓。
分析完了协议做外挂的是很多的,但他需求中的伪装客户端不是一般的伪装,是要“不是真正的建立连接,而是依附到已经存在的连接上)”,这个需求太特别了。
把后门做到路由器上去,然后再由这个路由器做特定的应用,但这个应用我觉得不大对头。

 
2009/10/27 十七 <onlyy...@gmail.com>

十七

unread,
Oct 27, 2009, 5:05:33 AM10/27/09
to dev4s...@googlegroups.com
我的意思是说用在网银之类上面,有点画蛇添足,对于网银,只要分析出协议,搞到密码,一切都好说了,没必要再依附原有连接做一些事情。
不过这个应用确实奇怪了点……功夫网一般做的事情也只是屏蔽数据包之类的,难道最近添新功能,要把骂party的话自动改为赞美之词?

2009/10/27 Hailong Shu <shuha...@gmail.com>

Kouga

unread,
Oct 28, 2009, 5:33:00 AM10/28/09
to dev4s...@googlegroups.com
嗯嗯~使用途径非常可疑~

其实你架设一个Proxy就能完美实现你需要的功能,将该Proxy霸占服务器监听端口,并将服务器修改到另外一个本地端口监听,接下来用户连接的时候只需要将数据转发给服务器,至于中间你想要插入多少数据都是你的自由了。如此。

2009/10/27 十七 <onlyy...@gmail.com>



--
签名是什么东西??

ben

unread,
Oct 30, 2009, 10:05:28 PM10/30/09
to 高性能服务器研发与运营邮件列表
呵呵,这两天出差没时间看帖子,非常感谢大家的帮助,在这里需要说一下产生这个应用的原因,否则就被大家pz了,我们在做对一设备终端的协议分析服务,
现在客户已经运行了以前的服务程序,他们不想在我们的程序没有试运行前切换,同时设备也必须连接到一切的服务程序,所以我们的设想是从以前的服务程序监
听端口“窃取”他们交互数据,来测试我们的程序,设备终端向服务程序连接有udp和tcp两种协议,我研究了一下libpcap,只能抓包啊,不能发送
数据。所以现在的还有的办法就是朋友们提供的netfilter和proxy方法,netfilter我也看了一下,感觉好难,提供proxy想法的朋
友,能不能详细说一下?

刘国标

unread,
Oct 30, 2009, 10:57:19 PM10/30/09
to dev4s...@googlegroups.com
什么设备?能使用私有协议?

Kouga

unread,
Oct 31, 2009, 9:57:36 PM10/31/09
to dev4s...@googlegroups.com
proxy其实不如说是本地NAT,实现方式前面说了~可能带上这个更明白:

设备终端 ---(服务端口)---> 服务端

设备终端 ---(服务端口)---> 数据代理程序 ---(服务实际端口)---> 服务端
                                         ^--- 在此插入你们想要监听或者添加的数据逻辑
--
签名是什么东西??

Chaolin Zhang

unread,
Nov 1, 2009, 11:39:57 AM11/1/09
to dev4s...@googlegroups.com
netfiler怎么会难呢,写个hook罢了,偶们的一个服务器把所有用户的报文都hook——然后根据规则转发,这个最适合你的要求。

ben

unread,
Nov 2, 2009, 9:51:16 PM11/2/09
to 高性能服务器研发与运营邮件列表
感谢楼上两位好汉!感谢所有的朋友,感觉proxy和netfilter方法都不错,有时间都尝试一下。

On 10月23日, 下午8时54分, ben <lizp....@gmail.com> wrote:

Reply all
Reply to author
Forward
0 new messages