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), 教程文档, 数字取证, 文件分析, 自动化脚本