How To : 从Netkeeper 4.X客户端获取真实账号

只做点醒作用,不会告诉你实际该怎么做,也不要想从这里找源代码。没有意义。

这文章对于真的有这份心自己弄的,肯定有所帮助,对于伸手党和心怀不轨的嘛,呵呵。

哦,伸手党还是滚回去吧,这里没你能看的东西。

0x00 回顾

我们先来想想Netkeeper的拨号流程:

  1. 你在客户端输入账号密码点登陆
  2. Netkeeper调用RasDialW函数拨号,其中参数RASDIALPARAMSW包含了拨号的账号和密码
  3. 系统开始向BAS发包,认证,建立连接。

所以我们动手的地方可以在:

1.客户端本身

2.系统层面

3.中间人

 

0x01 客户端本身

客户端本身拨号的时候会有一系列函数调用,所以通过Inline hook可以起到一定作用,hook RasDialW函数并获取其参数即可知道用户名和密码。

然而呢。4.7 + 的Netkeeper / WeNet有了自保护机制,某人说的是呢信利调用了CreateFileW 并指定参数来另行加载了一份 RasApi32.dll,也就是说在这种情况下就算你hooke了RasDialW由于他调用的不是你Hook的那份DLL,所以没啥用。

所以说下来的话你可以通过在程序启动的时候注入你的DLL,把某些API给HOOK了,然后涉及到关键DLL的直接给返回你HOOK好了的,指定的句柄,这样应该是OK的。

总的来说inline hook不能通过常规手段达到,所以单纯写钩子没啥意义,不用点手段你根本就勾不到。(当然有没有什么漏掉的API可以试试的也不是不可能。)

当然还有一个办法就是读他的内存,类似于Cheat Engine. 至于读什么内容嘛,你想想他什么拨号的时候有些东西,哪些是固定的,然后再去考虑特征,很快就出来了。

啥?你说你是做外挂的啊,内存挂你不可能不会撒,这个就不需要我来教了吧。

0x02 系统层面

RasDialW调用的时候会向系统日志写入拨号的信息,包括使用的真实用户名,你可以通过事件查看器搜索RasClient的事件看到。

当然啦,托江西地区同学的福,你们的作死让手动版泛滥,现在4.8以上的客户端直接清空事件日志了。所以一般手段是看不到的 —— 但是不代表没有办法。你依然可以使用系统事件订阅API来完成这个操作,甚至是事件日志重定向,而且这个点还是比较有效的。

EvtSubscribe,就提示这么多了,这也是最简单的办法。对应C#的API的则是 EventLogWatcher

至于怎么用,好好理解事件模型吧。

这个方法很看脸,因为呢,往往有些时候事件放在缓冲区还没来得及被读取,你的日志就被客户端清除了。之前Simple Netkeeper用的这套方法很不稳定就是因为这个原因,我也不想说太多。拿来玩玩还是可以的。

当然我没试过RasDial的事件HOOK是否有用。你们可以试试?

0x03 中间人

PPPoE协议本身是二层协议。拨号的时候系统会发包到远端的BAS,所以你可以用中间人的手段来做,抓取PAP或者CHAP的验证包就能知道账号和密码。

至于怎么玩中间人嘛,虚拟机装个PPPoE Server就好了嘛,剩下的就看你自己怎么玩咯。玩这个不会抓包,会抓包玩python或者写代码玩不来,就真的滑天下之大稽了啊。

哦,别跟我说易语言,那东西自娱自乐就够了。

0x04 关于心跳

老规矩,443端口,QUIC的UDP,或者非HTTPS流量TCP,心跳服务器嘛。。。自己抓包看看吧:)

至于原文是什么加密是什么,人家信利某客户端VMP混淆算法了偏偏不混淆心跳,这是破罐子破摔呢还是新版要上了所以干脆不管了呢。

14 thoughts on “How To : 从Netkeeper 4.X客户端获取真实账号

  1. 陈哥,快来救救我们吧,我们学校把netkeeper变成无线的了,我的想法是用路由器中继wifi,然后在手机端连路由器wifi用netkeeper安卓版拨号,之前都能行的,前几天突然软件升级后就不能用了,一点连接就出现 错误号:209 不允许在NAT环境中使用nat not allowed ,我想着反编译后修改一下它的源码来着,无奈我对代码确实一窍不通,你的软件多次救我们于水火之中,所以特地来请你帮忙,若你百忙之中看到这条消息,请为我指点一二 , QQ 1584128750

  2. 老陈 你新版的nk我用了,按着你给的文档来的,最后点 设置路由 没有反应,该怎么办呐??

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注