小技巧
0x01 查找文件¶
1. Everything¶
Windows 部分机制可以用来快速查找文件,比较常用的工具就是 everything
https://www.voidtools.com/zh-cn/
便携版直接打开就可以,需要管理员权限
1) 查找特定类型的文件¶
视图 -> 筛选器
这里可以寻找我们想要类型的文件,当然,大家也可以通过通配符+文件后缀的方式进行筛选
2) 根据正则表达式查找文件¶
以匹配一个 Python 安装包为例
搜索 -> 使用正则表达式
3) 根据文件内容查找文件¶
搜索 -> 高级搜索
高级搜索中包含很多选项,我们可以按照实际情况进行勾选,这里在 文件内容中包含的单词或短语(I)
处填入要检索的文件中包含的内容
请注意,这种搜索时间可能比较长,需要等待
4) 根据时间筛选文件¶
默认并没有这个搜索和筛选选项,不过可以通过添加栏目的方式“曲线救国”
这里以创建时间为例
可以选择要查找的文件类型后再通过排序的方式查找符合创建时间的文件
当然,也可以通过 everything 语法来实现或者直接采用后文的 Powershell
实现
5) 根据语法搜索¶
帮助 -> 搜索语法
语法列表详见 知识点附录 -> 0x15 Everything 语法
Everything 版本为 V1.4.1.1024 (x64)
下面列几个可能用得上的:
查找 web 路径中存在的 exe 程序
查找 web 路径中内容包含 eval
的文件
查找在两个时间点内创建的文件
更多语法大家可以根据知识点附录 -> 0x15 Everything 语法进行了解
2. dir¶
dir
可以用来查看目录中的文件,以下是两个使用场景
1) 查找某个目录及其子目录下名为 evil.exe
的程序
正常逻辑看似乎是在查找某个固定路径下的 evil.exe
,但实际上是查找这个目录及子目录,文件名称可以使用通配符,不然就写完整的文件名
在整个操作系统中查找 evil.exe
,包含所有盘符中所有的目录
文件名称同样可以使用通配符
3. forfiles¶
查找某个目录及其子目录下的 evil.exe
(一定要注意目录不能以 \ 结尾 )
在整个操作系统中查找 evil.exe
,包含所有盘符中所有的目录
for %d in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do @forfiles /p %d:\ /s /m "evil.exe" /c "cmd /c if @isdir==FALSE echo @path" 2>nul
更多使用方法详见官方文档
https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/forfiles
4. Powershell¶
查找某个目录及其子目录下的 evil.exe
也是可以使用通配符的
在所有盘符中的所有目录中查找文件
$drives = Get-PSDrive -PSProvider FileSystem
foreach ($drive in $drives) {
$driveLetter = $drive.Name
$rootPath = $drive.Root
$searchPath = Join-Path -Path $rootPath -ChildPath "*"
Write-Output "Searching in drive $driveLetter..."
Get-ChildItem -Path $searchPath -Recurse -File -Filter "evil.exe" -ErrorAction SilentlyContinue | ForEach-Object {
Write-Output "Found file: $($_.FullName)"
}
}
根据时间筛选文件
以查找某个时间点,在这个时间点前 5 分钟创建的所有文件
$intervalMinutes = 5 # 前分钟数
$targetDateTimeStr = "2024-03-05 17:02" # 时间点
$targetDateTime = [DateTime]::ParseExact($targetDateTimeStr, "yyyy-MM-dd HH:mm", $null)
$startTime = $targetDateTime.AddMinutes(-$intervalMinutes)
Get-PSDrive -PSProvider FileSystem | ForEach-Object {
$drive = $_.Root
Write-Host "Searching in drive $drive..."
Get-ChildItem -Path $drive -Recurse -File -ErrorAction SilentlyContinue | Where-Object {
$_.CreationTime -ge $startTime -and $_.CreationTime -lt $targetDateTime
} | Select-Object -ExpandProperty FullName
Write-Host ""
}
查询两个时间点之间新建的文件
$startTimeStr = "2024-03-05 17:00"
$endTimeStr = "2024-03-05 17:10"
$startTime = [DateTime]::MinValue
$endTime = [DateTime]::MinValue
if ([DateTime]::TryParseExact($startTimeStr, "yyyy-MM-dd HH:mm", [System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::None, [ref]$startTime) -and [DateTime]::TryParseExact($endTimeStr, "yyyy-MM-dd HH:mm", [System.Globalization.CultureInfo]::InvariantCulture, [System.Globalization.DateTimeStyles]::None, [ref]$endTime)) {
Get-PSDrive -PSProvider FileSystem | ForEach-Object {
$drive = $_.Root
Write-Host "Searching in drive $drive..."
Get-ChildItem -Path $drive -Recurse -File -ErrorAction SilentlyContinue | Where-Object {
$_.CreationTime -ge $startTime -and $_.CreationTime -lt $endTime
} | Select-Object -ExpandProperty FullName
Write-Host ""
}
} else {
Write-Host "Invalid time format. Please make sure the start time and end time are in the format 'yyyy-MM-dd HH:mm'."
}
0x02 确定系统相关信息¶
0x03 内存中搜索字符串¶
https://edr.sangfor.com.cn/#/introduction/all_tools
深信服-僵尸网络查杀工具是一款集本地查杀与云查杀功能于一体的恶意软件查杀工具。工具在云端上具备强大的病毒库,可以识别现有网络上大多数活跃的病毒威胁;在本地中又拥有强大的扫描引擎,通过对程序的静态分析以及动态虚拟执行的方式,让Windows上的恶意软件无处遁形。
使用之前可以先更新病毒库
扫描查杀功能就不多介绍了,主要介绍一下威胁检索功能
使用 xmrig
模拟挖矿病毒
可以看到该程序默认会连接挖矿程序作者的捐赠地址 donate.v2.xmrig.com:3333
,就以此为例,使用僵尸网络查杀工具进行搜索
成功发现恶意程序
0x04 查找文件占用小工具¶
1. IObit Unlocker¶
https://www.iobit.com/en/iobit-unlocker.php
使用 ping
来模拟文件占用
此时直接删除会报错误,使用 IObit Unlocker 进行删除
成功结束占用该文件的进程,并且并没有直接删除该文件,此时就可以正常删除之前被占用的文件了
0x05 内网传输文件¶
在很多场景,是不允许或者无法通过 U 盘传输文件的,如果开一个 SMB 共享又有点不合规或者冒险,所以今天推荐使用内网传输工具,以 Localsend
为例
https://localsend.org/zh-CN/download
建议下载便携版,这样就不需要额外的安装步骤,也就省去了最后的卸载步骤
Windows 平台可能需要额外安装 vc_redist.exe
,这个搞运维的师傅肯定很熟悉了,去微软官方下载对应平台的就好
https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#visual-studio-2015-2017-2019-and-2022
服务器安装后就可以正常打开 Localsend
了
同时使用 Kali 模拟内网中我们的机器
此时我们希望将Windows 服务器上的文件传输到 Kali 上,我们就在 Windows 上点击 Send,之后选择文件并选择传输到哪台主机上
点击要传输的目标后,我们的 Kali 这边就会收到请求
可以通过 options 设置文件保存位置等,之后选择 Accept 接收文件
这样文件就传输过来了,如果我们希望传输给 Windows 服务器也是一样的流程,非常简单