跳转至

小技巧

0x01 查找文件

1. Everything

Windows 部分机制可以用来快速查找文件,比较常用的工具就是 everything

https://www.voidtools.com/zh-cn/

便携版直接打开就可以,需要管理员权限

image-20231231232202306

1) 查找特定类型的文件

视图 -> 筛选器

image-20240305154205407

image-20240305154316199

image-20240305154816277

这里可以寻找我们想要类型的文件,当然,大家也可以通过通配符+文件后缀的方式进行筛选

image-20240305154844568

2) 根据正则表达式查找文件

以匹配一个 Python 安装包为例

python-\d+\.\d+\.\d+-amd64\.exe

image-20240305162952066

搜索 -> 使用正则表达式

image-20240305162855925

image-20240305162934866

3) 根据文件内容查找文件

搜索 -> 高级搜索

image-20240305163552717

image-20240305163710569

高级搜索中包含很多选项,我们可以按照实际情况进行勾选,这里在 文件内容中包含的单词或短语(I)处填入要检索的文件中包含的内容

image-20240305163904264

请注意,这种搜索时间可能比较长,需要等待

4) 根据时间筛选文件

默认并没有这个搜索和筛选选项,不过可以通过添加栏目的方式“曲线救国”

image-20240305164724091

这里以创建时间为例

image-20240305165001923

可以选择要查找的文件类型后再通过排序的方式查找符合创建时间的文件

当然,也可以通过 everything 语法来实现或者直接采用后文的 Powershell 实现

5) 根据语法搜索

帮助 -> 搜索语法

image-20240305172723928

image-20240305172856020

语法列表详见 知识点附录 -> 0x15 Everything 语法

Everything 版本为 V1.4.1.1024 (x64)

下面列几个可能用得上的:

查找 web 路径中存在的 exe 程序

C:\inetpub\wwwroot\ exe:

image-20240305173932630

查找 web 路径中内容包含 eval 的文件

C:\inetpub\wwwroot\ content:"eval"

image-20240305174359936

查找在两个时间点内创建的文件

dc:>2024-03-05T17:00  dc:<2024-03-05T17:10

image-20240305175208996

更多语法大家可以根据知识点附录 -> 0x15 Everything 语法进行了解

2. dir

dir 可以用来查看目录中的文件,以下是两个使用场景

1) 查找某个目录及其子目录下名为 evil.exe 的程序

dir /s /b "C:\目录路径\evil.exe"

正常逻辑看似乎是在查找某个固定路径下的 evil.exe ,但实际上是查找这个目录及子目录,文件名称可以使用通配符,不然就写完整的文件名

image-20240305115518991

在整个操作系统中查找 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 @dir /s /b %d:\evil.exe 2>nul

文件名称同样可以使用通配符

image-20240305115916725

3. forfiles

查找某个目录及其子目录下的 evil.exe (一定要注意目录不能以 \ 结尾 )

forfiles /p "目录路径" /s /m "evil.exe" /C "cmd /c echo @PATH"

image-20240305121950450

在整个操作系统中查找 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

image-20240305122331316

更多使用方法详见官方文档

https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/forfiles

4. Powershell

查找某个目录及其子目录下的 evil.exe

Get-ChildItem -Path "目录路径" -Filter "文件名模式" -Recurse

image-20240305165643971

也是可以使用通配符的

在所有盘符中的所有目录中查找文件

$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)"
    }
}

image-20240305170121489

根据时间筛选文件

以查找某个时间点,在这个时间点前 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 ""
}

image-20240305171714640

查询两个时间点之间新建的文件

$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'."
}

image-20240305172029428

0x02 确定系统相关信息

systeminfo

image-20231231232323915

0x03 内存中搜索字符串

https://edr.sangfor.com.cn/#/introduction/all_tools

深信服-僵尸网络查杀工具是一款集本地查杀与云查杀功能于一体的恶意软件查杀工具。工具在云端上具备强大的病毒库,可以识别现有网络上大多数活跃的病毒威胁;在本地中又拥有强大的扫描引擎,通过对程序的静态分析以及动态虚拟执行的方式,让Windows上的恶意软件无处遁形。

image-20240306164018905

使用之前可以先更新病毒库

image-20240306164122109

扫描查杀功能就不多介绍了,主要介绍一下威胁检索功能

使用 xmrig 模拟挖矿病毒

image-20240306165635352

可以看到该程序默认会连接挖矿程序作者的捐赠地址 donate.v2.xmrig.com:3333 ,就以此为例,使用僵尸网络查杀工具进行搜索

image-20240306165856571

image-20240306165934460

成功发现恶意程序

0x04 查找文件占用小工具

1. IObit Unlocker

https://www.iobit.com/en/iobit-unlocker.php

使用 ping 来模拟文件占用

image-20240706172128675

此时直接删除会报错误,使用 IObit Unlocker 进行删除

image-20240706172641269

image-20240706172736979

image-20240706172838312

成功结束占用该文件的进程,并且并没有直接删除该文件,此时就可以正常删除之前被占用的文件了

image-20240706172954789

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

image-20240708132936053

同时使用 Kali 模拟内网中我们的机器

image-20240708133042572

此时我们希望将Windows 服务器上的文件传输到 Kali 上,我们就在 Windows 上点击 Send,之后选择文件并选择传输到哪台主机上

image-20240708133211017

image-20240708133255151

点击要传输的目标后,我们的 Kali 这边就会收到请求

image-20240708133315508

可以通过 options 设置文件保存位置等,之后选择 Accept 接收文件

image-20240708133402897

image-20240708133435577

这样文件就传输过来了,如果我们希望传输给 Windows 服务器也是一样的流程,非常简单