gonzalezbravoenrique/file-type-identification

GitHub: gonzalezbravoenrique/file-type-identification

一份教授如何在 Kali Linux 中使用 file 命令通过文件内部签名识别真实文件类型的教学实践仓库。

Stars: 0 | Forks: 0

# 在 Kali Linux 中使用 `file` 识别文件类型 Linux 中的 `file` 命令可以通过分析文件的内部内容来识别其实际类型,而不仅仅是依靠其扩展名。 这在以下场景中特别有用: - 取证分析 - 网络安全 - 恶意软件分析 - 逆向工程 - 无扩展名的文件 - 为了隐藏内容而重命名的文件 # 基本语法 ``` (kali㉿kali)-[~] $ file nombre_archivo ``` # 实践示例 我们在 `unknown` 文件夹中有几个文件: ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ ls ``` 结果: ``` Backdoor.Win32.Netbus.Keyhook muestra1unknown muestra2unknown muestra3unknown muestra4unknown muestra5unknown script1.js wb64.64 wb64.exe ``` # 文件识别 ## 1. PowerPoint 文件 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ file muestra1unknown ``` 结果: ``` muestra1unknown: Microsoft PowerPoint 2007+ ``` ### 解析 该文件是一个现代的 Microsoft PowerPoint 演示文稿(`.pptx`)。 即使没有扩展名,`file` 也会检测其内部签名。 ## 2. 文本文件 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ file muestra2unknown ``` 结果: ``` muestra2unknown: ISO-8859 text, with CRLF line terminators ``` ### 解析 该文件是一个纯文本文档: - 编码:ISO-8859 - 换行符:CRLF (Windows) ## 3. Windows PE32 可执行文件 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ file muestra3unknown ``` 结果: ``` muestra3unknown: PE32 executable for MS Windows 4.00 (GUI), Intel i386, 4 sections ``` ### 解析 这是一个 Windows 可执行文件: - 格式:PE32 - 架构:Intel x86 - 图形界面应用程序 (GUI) 可能是一个 `.exe`。 ## 4. Word 文档 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ file muestra4unknown ``` 结果: ``` muestra4unknown: Microsoft Word 2007+ ``` ### 解析 现代的 Microsoft Word 文档(`.docx`)。 ## 5. PDF 文档 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ file muestra5unknown ``` 结果: ``` muestra5unknown: PDF document, version 1.5, 4 page(s) ``` ### 解析 PDF 文件: - 版本 1.5 - 4 页 ## 6. PE32 恶意软件 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ file Backdoor.Win32.Netbus.Keyhook ``` 结果: ``` Backdoor.Win32.Netbus.Keyhook: PE32 executable for MS Windows 4.00 (DLL), Intel i386, 7 sections ``` ### 解析 该文件似乎是针对 Windows 的 Backdoor 类型恶意软件。 检测到的特征: - PE32 可执行文件 - Windows DLL - Intel x86 架构 - 7 个内部节区 # 为什么 `file` 很重要? 许多恶意文件会: - 隐藏其扩展名 - 更改名称 - 伪装成文档 - 试图逃避基础分析 示例: ``` factura.pdf.exe ``` 甚至: ``` factura ``` 使用 `file` 我们可以识别其真实内容。 # 实用选项 ## 显示 MIME 类型 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ file --mime-type muestra5unknown ``` 结果: ``` muestra5unknown: application/pdf ``` ## 分析文件夹中的所有文件 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ file * ``` ## 递归分析 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ find . -type f -exec file {} \; ``` # 与取证分析和 SOC 的关系 `file` 命令广泛应用于: - SOC - DFIR - 恶意软件分析 - 威胁狩猎 - 逆向工程 因为它能够: - 检测可疑文件 - 验证虚假扩展名 - 快速分类样本 - 自动化初步分类处理 # 互补命令 ## 查看内部字符串 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ strings archivo ``` ## 查看 SHA256 哈希值 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ sha256sum archivo ``` ## 查看十六进制头部 ``` (kali㉿kali)-[~/Downloads/archivos/unknown] $ xxd archivo | head ``` # 结论 `file` 命令是 Linux 和 Kali Linux 中用于识别任何文件实际内容的基础工具。 它不依赖于扩展名,而是依赖于内部签名和文件的二进制结构,这使其成为取证分析和网络安全中必不可少的工具。
标签:DAST, DNS 反向解析, Linux命令行, 应用安全, 恶意软件分析, 搜索语句(dork), 教程文档, 数字取证, 文件分析, 自动化脚本