红队笔记之痕迹清理技术要点与实战方法总结

技术

痕迹清理技术要点说明

痕迹清理,是清理自己在目标机器上留下的所有操作痕迹。其主要目的是

  • 避免溯源

  • 隐藏攻击方法

  • 为下一步渗透拖延时间

每一项渗透动作都有其目的,我们都需要思考其是否真正的有必要,并不是每一次渗透均需要进行痕迹清理的动作。

痕迹清理的限制

  • 痕迹清理这个动作本身也会产生痕迹,所以不存在完美的痕迹清理

  • 如果目标已经配置,第三方的日志记录平台,本机的痕迹清理作用微乎其微,除非我们可以拿下日记系统的控制权限。

痕迹清理的技术要点

  • 痕迹清理前需要先判断是否有必要清理痕迹。

  • 删除文件尽量使用复写方式,增加还原难度。

  • 如有必要可以伪造部分痕迹,混淆防守队溯源反向。

  • 定向删除优于全部删除,关闭日志等方式,增加被识别难度。

  • 如果痕迹清理的目的是为了下一步操作争取时间,那么我们需要去评估防守队的溯源时间,以安排后面的工作计划,当然极端情况我们可以在防守方休息时间段开展渗透。

痕迹清理的步骤

picture.image

1、清理的必要性主要区间与你的目的。

2、需要清理哪些内容需要根据你的攻击路径来判断,也就是说你整个攻击路径中哪些会留下痕迹,我们需要清楚,我们的清理工作也真实针对这些痕迹进行操作。

3、痕迹清理相对主要简单,在你明确了需要清理哪些痕迹后,只要寻找对应的清理方法即可,下文总结常用的痕迹清理方法。

Windows痕迹清理

Windows日志清理

一. Windows日志相关基础知识

Windows的日志文件分为3类核心日志,分别是系统日志,程序日志,和安全日志

  • 系统日志(SysEvent):记录操作系统产生的事件,如设备驱动无法正常启动或停止,系统进程崩溃等

        
  `# 默认位置:`
  `%SystemRoot%\System32\Winevt\Logs\System.evtx`
 


      
  • 程序日志(AppEvent):包含操作应用程序软件相关的事件。事件包括了错误、警告及任何应用程序需要报告的信息。

        
  `# 默认位置:`
  `%SystemRoot%\System32\Winevt\Logs\Application.evtx`
 


      
  • **安全日志(SecEvent)😗*包含安全性相关的事件。e.g.用户权限变更,登录及注销,文件/文件夹访问等信息。

        
  `# 默认位置:`
  `%SystemRoot%\System32\Winevt\Logs\Security.evtx`
 


      

1、系统内置3个核心日志文件(System、Security、Application);默认大小均20MB,数据超过20MB,默认系统将优先覆盖过期日志记录。应用程序、服务日志默认最大1024KB,超过最大限制也优先覆盖过期的日志记录

2、其他系统服务的日志也都储存在%SystemRoot%\System32\Winevt\Logs\下

操作系统日志记录大致流程

1、svhost启动EventLog开始记录日志

2、EventLog将操作记录先缓存为一段内存内容

3、Wevtutil将内存内容解析为xml并且通过gui界面可视化的展现给用户

其中svhost,EventLog,Wevtutil具体功能说明如下;

svchost

svchost主要是用来实现服务进程数据共享,以此来减少系统资源消耗,很多系统程序和服务使用svchost运行。

windows系统进程分为独立进程和共享进程两种,“svchost.exe”文件存在于“%systemroot%system32”目录下,它属于共享进程。随着windows系统服务不断增多,为了节省系统资源,微软把很多服务做成共享方式,交由svchost.exe进程来启动。但svchost进程只作为服务宿主,并不能实现任何服务功能,即它只能提供条件让其他服务在这里被启动,而它自己却不能给用户提供任何服务。这些系统服务是以动态链接库(dll)形式实现的,它们把可执行程序指向svchost,由svchost调用相应服务的动态链接库来启动服务。

Event Log

Event Log主要是管理windows管理事件和事件日志。它支持日志记录事件、查询事件、订阅事件、归档事件日志以及管理事件元数据。它可以用 XML 和纯文本两种格式显示事件。

picture.image

EventLog的启动需要依赖于svchost,启动示例如下;


        
 `C:\Windows\System32\svchost.exe -k LocalServiceNetworkRestricted -p` 
 


      

wevtutil

检索有关事件日志和发布服务器的信息。此外,还可以使用此命令来安装和卸载事件清单,运行查询,以及导出、存档和清除日志。详细可以参考微软官方介绍。

二. Windows日志清理方法

Windows日志清理主要分为全量清理和定向清理,全量清理其动作较大容易被发现,定向清理相对比较隐蔽

全量删除方法

通过事件查看器删除


        
 `开始→运⾏,输⼊ eventvwr 进⼊事件查看器,右边栏选择清除⽇志` 
 


      

picture.image

这里需要注意日志清理因为本身也是系统事件所以也会被记录,这也就是不存在完美的日志清理

picture.image

通过PowerShell删除


        
  `# 方法一`
  `PowerShell -Command "& {Clear-Eventlog -Log 你要清理的日志(如Security)}"`
  `# 方法二`
  `Get-WinEvent -ListLog 你要清理的日志(如Security) -Force | % {Wevtutil.exe cl $_.Logname}`
 


      

暴力删除日志文件

1、停止Windows Event Log(EventLog) 服务

2、删除对应的文件


        
 `%SystemRoot%\System32\Winevt\Logs\` 
 


      

3、永久停用方法


        
  `# 查询要禁用的注册表`
  `reg query "HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Eventlog\"`
  `# 删除对应的注册表`
  `reg delete "HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Eventlog\System" /f`
  `# 重启Windows Event Log(EventLog) 服务`
 


      

picture.image

使用wevtutil命令行删除


        
  `# 进入cmd`
  `# 查询 wevtutil el所有系统日志(如要删除的日志名字清楚可以忽略此步骤)`
  `# 删除对应日志,以清空系统日志为例`
  `wevtutil cl system`
 


      

msf一键清理

进入meterpreter后直接执行clearev

定向清理方法

删除最近数据


        
 `wevtutil qe 你要清理的日志(如Security) /f:text /rd:true /c:删除行数(如10行)` 
 


      

删除某指定单条记录


        
  `# 1、删除Security下的单条日志(EventRecordID=2222),并保存为tmp1.evtx`
  `wevtutil epl Security tmp1.evtx "/q:*[System [(EventRecordID!=2222)]]"`
  `# 2、结束日志进程(释放日志文件句柄)`
  `# 3、替换原日志文件`
  `# 4、重启日志服务`
 


      

删除某指定多条记录


        
  `# 1、删除Security下的多条日志(EventRecordID为13030、13031和13032),结果保存为tmp2.evtx`
  `wevtutil epl Security tmp2.evtx "/q:*[System [(EventRecordID>13032) or (EventRecordID<13030)]]"`
  `# 2、结束日志进程(释放日志文件句柄)`
  `# 3、替换原日志文件`
  `# 4、重启日志服务`
 


      

按时间段删除


        
  `# 1、删除SystemTime为2021-12-10T03:20:00至2021-12-10T03:21:00之间的日志,结果保存为1.evtx`
  `wevtutil epl Security 1.evtx "/q:*[System [TimeCreated[@SystemTime >'2021-12-10T03:21:00' or @SystemTime <'2021-12-10T03:20:00']]]"`
  `# 2、结束日志进程(释放日志文件句柄)`
  `# 3、替换原日志文件`
  `# 4、重启日志服务`
 


      

更多wevtutil用法可以参考官方文档

三. Windows远程连接日志清理

当我们使用3389端口远程一台机器后会在对应机器上产生对应的记录,其记录只要有两部分组成;

1、Default.rdp文件(系统隐藏文件)

2、注册表记录

所以清理痕迹主要是清理rdp文件以及注册表中记录

1、删除Default.rdp方法


        
  `# 进入Default.rdp所在路径`
  `cd %userprofile%\documents\`
  `# 使用attrib去掉Default.rdp文件的,系统文件属性(S);隐藏文件属性(H)`
  `attrib Default.rdp -s -h`
  `# 删除`
  `del Default.rdp`
 


      

2、注册表清理方法


        
  `# 查询远程连接在注册表中的键值`
  `reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default"`
  `# 删除对应的键值,如删除MRU0 "/v MRU0"`
  `reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /f /v MRU0`
 


      

picture.image

3、如使用当前机器作为跳板的话需要使用同步骤清理Servers下的键值


        
  `# 查询具体要删除的键值文件夹`
  `reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"`
  `# 确定要删除的文件夹进行删除`
  `reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers\192.168.84.128" /f`
 


      

picture.image


        
  `# reg delete 参数说明`
  `reg delete <keyname> [{/v Valuename | /ve | /va}] [/f]`
  `<keyname1>指定要添加的子项或项的完整路径。`
  `/v <Valuename>删除子项下的特定项。如果未指定任何项,则将删除子项下的所有项和子项。`
  `/ve指定仅删除没有值的条目。`
  `/va删除指定子项下的所有条目。不会删除指定子项下的子项。`
  `/f删除现有的注册表子项或条目,而不要求确认。`
  `/?在命令提示符下显示帮助。`
 


      

近期访问记录清理

1、用户最近访问过的文件和网页记录


        
 `C:\Users\Administrator\AppData\Local\Microsoft\Windows\History` 
 


      

picture.image

2、近期访问过的文件


        
 `C:\Users\Administrator\Recent` 
 


      

利用覆写增大溯源难度

cipher /w:X # 其中X指盘符或文件具体位置


        
 `cipher会分三次写入:第一次写入0x00,第二次写入0xff,最后一次写入随机数字` 
 


      

Linux痕迹清理

Linux的痕迹清理技术大致可以分为两类;

1、清理登录记录以及Host记录

2、清理日志文件


        
  `Linux清理登录记录以及Host记录方法`
  `隐藏远程ssh登录记录`
  `# 隐身登录系统,不会被w、who、last等指令检测到`
  `ssh -T user@@host /bin/bash -i`
  `# 不记录ssh公钥在本地.ssh目录中`
  `ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i`
 


      

History清理

History运行原理

picture.image

1、当 Linux 系统启动一个 Shell 时,Shell 会从 .bash_history 文件中,读取历史记录,存储在相应内存的缓冲区中。

2、我们平时所操作的 Linux 命令,都会记录在缓冲区中。如果在shell运⾏过程中kill掉其进程,则缓存命令不会写⼊history。

3、当我们退出 Shell时(如执行exit或Ctrl+D),Shell 进程会把历史记录缓冲区的内容,写回到 .bash_history 文件中去。

全部删除历史记录


        
  `# 清空当前历史记录(只是清空缓存中的历史记录,伪删除)`
  `history -c`
  `# 将当前缓存中的历史记录写入文件(缓存中的记录是空的-用空的数据写入文件,将文件内容删除)`
  `history -w`
 


      

当前shell终止history记录

方法一:


        
  `# 设置当前shell内的命令不再记入日志中,命令会被记录到历史记录中,可以尝试在命令前添加空格让记录不被记录`
  `set +o history`
  `# 如果需要重新记入日志,可以设置-o参数`
  `set -o history`
 


      

picture.image

方法二:


        
  `# 清除当前shell缓存命令记录,当前session之后的命令不会再记录,不会删除history⽂件中的记录。`
  `unset HISTORY HISTFILE HISTSAVE HISTZONE HISTLOG`
 


      

禁用History方法

方法1:

编辑/etc/profile并添加HISTSIZE=0

方法2:

在当前shell中直接输⼊命令HISTSIZE=0 && HISTFILESIZE=0,这样会将缓存的history记录和~/.bash_history中的 记录全部清空;

方法3:

在~/.bashrc初始化⽂件中添加命令:HISTSIZE=0 && HISTFILESIZE=0,这样每次开启shell都不会再记录history命令。


        
  `删除指定命令记录方法`
  `# 筛选要删除的关键字`
  `history | grep "keyword"`
  `# 根据编号进行删除`
  `history -d num`
  `# 或者进行批量删除(只保留15行)`
  `sed -i '15,$d' .bash_history`
 


      

picture.image

Linux日志清理

由于Linux的设计采用万物皆文件的思想,所以Linux系统的日志基本都是以文件的形式体现,所以相对Windows而言,Linux的日志清理和修改相对比较容易(虽然Windows也很简单)

picture.image

全部删除

不留下任何痕迹,但是特征也很明显,容易被察觉,⼀般不推荐使⽤。


        
  `# 将⽇志⽂件全部删除即将空字符写⼊⽇志⽂件,需要root权限,以下命令均可以实现:`
  `cat /dev/null > filename`
  `: > filename`
  `> filename`
  `echo "" > filename`
  `echo > filename`
 


      

针对性修改或删除

针对性修改,动作较小,较难被发现

利用sed完成修改与删除

修改


        
 `sed -i 's/要被取代的字符串/新的字符串/g' 目标文件` 
 


      

删除


        
 `sed -i '/要删除的内容/'d 目标文件` 
 


      

利用grep -v完成删除


        
  `# 1、将目标文件中带有关键字字样的记录删除,并保存为一个文件`
  `cat 目标文件| grep -v 关键字(带有关键字的记录删除) > 篡改后文件`
  `# 2、将伪造文件覆盖到目标文件上`
  `cat 篡改后文件 > 目标文件`
 


      

利用覆写增大溯源难度

在linux中使用share命令来完成文件的覆写,以增大文件的回复难度


        
  `shred -f -u -z -v -n 6 目标文件` 
  `参数说明:`
  `-f, --force 必要时修改权限以使目标可写`
  `-n, --iterations=N 覆盖N 次,而非使用默认的3 次`
  `-u, --remove 覆盖后截断并删除文件`
  `-v, --verbose 显示详细信息`
  `-z, --zero 最后一次使用0 进行覆盖以隐藏覆盖动作`
 


      

        
  `本文只为技术交流。为了您和您家人的幸福,请不要利用文中技术在用户未授权情况下开展渗透测试!!!`
  `《中华人民共和国刑法》`
  `第二百八十五条`
  `违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的,处三年以下有期徒刑或者拘役。`
  `第二百八十六条`
  `违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。`
  `违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。`
  `故意制作、传播计算机病毒等破坏程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚`
 


      

————————————————

作者:方寸明光。

原文链接:https://blog.csdn.net/CoreNote/article/details/122071351

如有侵权,请联系删除

推荐阅读

实战|记一次奇妙的文件上传getshell

「 超详细 | 分享 」手把手教你如何进行内网渗透

神兵利器 | siusiu-渗透工具管理套件

一款功能全面的XSS扫描器

实战 | 一次利用哥斯拉马绕过宝塔waf

BurpCrypto: 万能网站密码爆破测试工具

快速筛选真实IP并整理为C段 -- 棱眼

自动探测端口顺便爆破工具t14m4t

渗透工具|无状态子域名爆破工具(1秒扫160万个子域)

查看更多精彩内容,还请关注 橘猫学安全:

每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“ 再看

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
基于火山引擎 EMR 构建企业级数据湖仓
火山引擎 EMR 是一款云原生开源大数据平台,提供主流的开源大数据引擎,加持了字节跳动内部的优化、海量数据处理的最佳实践。本次演讲将为大家介绍火山引擎 EMR 的架构及核心特性,如何基于开源架构构建企业级数据湖仓,同时向大家介绍火山 EMR 产品的未来规划。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论