Maltego使用教程#
软件介绍#
Maltego是一款强大的开源情报(OSINT)和链接分析工具,用于收集、分析和可视化信息之间的关系。它提供了丰富的变换(Transforms)库,可以从各种数据源收集信息,并通过图形化界面展示实体之间的关系。
主要功能#
- 开源情报收集
- 链接分析和可视化
- 丰富的变换库
- 自定义变换开发
- 数据源集成
- 报告生成
- 协作功能
- API接口支持
适用场景#
- 安全研究
- 威胁情报收集
- 社交工程
- 犯罪调查
- 企业情报收集
- 网络分析
入门级使用#
安装Maltego#
下载安装#
# 访问Maltego官网下载
# https://www.maltego.com/downloads
# Linux系统
wget https://downloads.maltego.com/maltego/v4.4.0/Maltego.v4.4.0.linux.gtk.x86_64.sh
chmod +x Maltego.v4.4.0.linux.gtk.x86_64.sh
sudo ./Maltego.v4.4.0.linux.gtk.x86_64.sh
# Windows系统
# 下载并运行安装程序
# macOS系统
# 下载DMG文件并安装注册账号#
# 访问Maltego官网注册
# https://www.maltego.com/register
# 免费版:Maltego CE(社区版)
# 付费版:Maltego Classic / XL
# 注册后登录
maltego基本界面#
主界面介绍#
Maltego主界面包含以下部分:
1. 菜单栏:文件、编辑、视图、工具等
2. 工具栏:常用操作快捷按钮
3. 实体面板:可用的实体类型
4. 变换面板:可用的变换操作
5. 图形视图:显示实体和关系
6. 属性面板:显示选中实体的属性
7. 布局面板:图形布局选项创建新图#
1. 点击"File" -> "New Graph"
2. 选择图形模板(空白图或预设模板)
3. 命名图形
4. 开始添加实体基本操作#
添加实体#
1. 从实体面板拖拽实体到图形视图
2. 或右键点击图形视图 -> "Add Entity"
3. 选择实体类型
4. 设置实体属性运行变换#
1. 选中一个或多个实体
2. 右键点击实体
3. 选择"Run Transform"
4. 选择要运行的变换
5. 查看结果连接实体#
1. 选中两个实体
2. 右键点击 -> "Link Entities"
3. 选择链接类型
4. 或使用快捷键 Ctrl+L初级使用#
常用实体类型#
人员相关实体#
- Person:人员
- Email Address:电子邮件地址
- Phone Number:电话号码
- Alias:别名
- Location:位置网络相关实体#
- Domain:域名
- DNS Name:DNS名称
- IP Address:IP地址
- URL:网址
- Website:网站组织相关实体#
- Company:公司
- Organization:组织
- Affiliation:隶属关系社交媒体实体#
- Facebook Profile:Facebook个人资料
- Twitter Profile:Twitter个人资料
- LinkedIn Profile:LinkedIn个人资料
- Instagram Profile:Instagram个人资料常用变换#
域名变换#
1. Domain -> DNS Records
功能:查询域名的DNS记录
输入:域名
输出:A、MX、NS、TXT等记录
2. Domain -> Whois Information
功能:查询域名的Whois信息
输入:域名
输出:注册人、注册商、到期时间等
3. Domain -> Subdomains
功能:发现子域名
输入:域名
输出:子域名列表IP地址变换#
1. IP Address -> Geo Location
功能:查询IP地址的地理位置
输入:IP地址
输出:国家、城市、经纬度等
2. IP Address -> Whois Information
功能:查询IP地址的Whois信息
输入:IP地址
输出:ASN、组织、网络范围等
3. IP Address -> Reverse DNS
功能:反向DNS查询
输入:IP地址
输出:主机名电子邮件变换#
1. Email Address -> Social Networks
功能:在社交网络中搜索电子邮件
输入:电子邮件地址
输出:社交媒体账户
2. Email Address -> Domain
功能:提取电子邮件的域名
输入:电子邮件地址
输出:域名
3. Email Address -> Breach Data
功能:查询数据泄露信息
输入:电子邮件地址
输出:泄露的数据中级使用#
图形布局#
布局类型#
1. Organic Layout:有机布局
- 适合展示自然关系
- 自动调整节点位置
2. Hierarchical Layout:层次布局
- 适合展示层级关系
- 清晰的层次结构
3. Circular Layout:圆形布局
- 适合展示循环关系
- 节点围绕中心排列
4. Force Directed Layout:力导向布局
- 适合展示复杂网络
- 基于物理模拟
5. Block Layout:块布局
- 适合分组展示
- 按类型分组布局调整#
1. 手动调整节点位置
- 拖拽节点到新位置
2. 自动布局
- 右键点击图形 -> "Layout" -> 选择布局类型
3. 调整布局参数
- 工具栏 -> 布局设置
- 调整间距、方向等参数实体管理#
实体属性#
1. 查看实体属性
- 选中实体
- 属性面板显示所有属性
2. 编辑实体属性
- 双击实体
- 或右键 -> "Edit Properties"
3. 添加自定义属性
- 编辑属性对话框
- 点击"Add Property"
- 设置属性名称和值实体分组#
1. 创建分组
- 选中多个实体
- 右键 -> "Group Entities"
2. 取消分组
- 右键分组 -> "Ungroup"
3. 命名分组
- 双击分组名称
- 输入新名称变换管理#
变换库#
1. 查看可用变换
- 变换面板显示所有变换
- 按类别分组
2. 搜索变换
- 搜索框输入关键词
- 过滤变换列表
3. 添加变换到收藏
- 右键变换 -> "Add to Favorites"自定义变换#
1. 创建自定义变换
- 工具 -> Transform Manager
- 点击"New Transform"
- 设置变换属性
2. 编辑变换代码
- 支持Python、Java等语言
- 实现变换逻辑
3. 测试变换
- Transform Manager -> 测试变换
- 验证输出结果中上级使用#
数据源集成#
添加数据源#
1. 打开设置
- 工具 -> Options -> Data Sources
2. 添加API密钥
- 选择数据源
- 输入API密钥或凭证
3. 测试连接
- 点击"Test Connection"
- 验证连接状态常用数据源#
1. Shodan
- 功能:网络设备搜索
- 需要API密钥
2. VirusTotal
- 功能:恶意软件分析
- 免费版有限制
3. Have I Been Pwned
- 功能:数据泄露查询
- 需要API密钥
4. Twitter API
- 功能:社交媒体搜索
- 需要开发者账号
5. Google Search
- 功能:网络搜索
- 使用自定义搜索引擎报告生成#
导出图形#
1. 导出为图片
- File -> Export Graph
- 选择图片格式(PNG、JPG、SVG)
2. 导出为PDF
- File -> Export Graph
- 选择PDF格式
3. 导出为数据
- File -> Export Data
- 选择数据格式(CSV、JSON、XML)生成报告#
1. 创建报告模板
- 工具 -> Report Templates
- 设计报告布局
2. 填充报告
- 选择图形
- 应用报告模板
3. 导出报告
- File -> Export Report
- 选择报告格式批量操作#
批量变换#
1. 选中多个实体
- Ctrl+点击选择多个实体
- 或拖拽选择区域
2. 运行批量变换
- 右键 -> "Run Transform"
- 选择变换
3. 查看聚合结果
- 结果自动聚合到图形批量导入#
1. 导入CSV文件
- File -> Import
- 选择CSV文件
- 映射列到实体属性
2. 导入JSON文件
- File -> Import
- 选择JSON文件
- 自动解析实体
3. 导入其他格式
- 支持多种格式
- 根据格式选择导入选项高级使用#
自动化脚本#
Python脚本#
#!/usr/bin/env python3
from maltego import MaltegoTransform
class DomainToSubdomains(MaltegoTransform):
"""域名到子域名变换"""
@classmethod
def create_entities(cls, request, response):
domain = request.Value
# 这里实现子域名发现逻辑
# 示例:使用第三方API
subdomains = get_subdomains(domain)
for subdomain in subdomains:
# 创建DNS名称实体
entity = response.addEntity("maltego.DNSName", subdomain)
entity.addAdditionalFields("domain", "Domain", domain, True)
return response
def get_subdomains(domain):
"""获取子域名(示例)"""
# 实现实际的子域名发现逻辑
# 可以使用VirusTotal、SecurityTrails等API
return [f"www.{domain}", f"mail.{domain}"]Java脚本#
import com.maltego.transform.AbstractMaltegoTransform;
public class DomainToSubdomains extends AbstractMaltegoTransform {
@Override
public void createEntities(MaltegoTransformContext context) {
String domain = context.getValue();
// 这里实现子域名发现逻辑
List<String> subdomains = getSubdomains(domain);
for (String subdomain : subdomains) {
// 创建DNS名称实体
MaltegoEntity entity = context.addEntity("maltego.DNSName", subdomain);
entity.addAdditionalField("domain", "Domain", domain, true);
}
}
private List<String> getSubdomains(String domain) {
// 实现实际的子域名发现逻辑
return Arrays.asList("www." + domain, "mail." + domain);
}
}高级分析#
社交网络分析#
1. 构建社交网络图
- 添加人员实体
- 添加关系链接
2. 分析网络结构
- 识别关键节点
- 发现社群结构
- 分析影响力传播
3. 可视化分析结果
- 使用不同颜色标记社群
- 调整节点大小表示影响力
- 添加注释说明时间序列分析#
1. 添加时间信息
- 实体属性中包含时间戳
- 或使用时间实体
2. 按时间排序
- 视图 -> 排序选项
- 选择时间属性
3. 时间线可视化
- 使用时间线布局
- 标记重要事件API集成#
REST API#
#!/usr/bin/env python3
import requests
def run_maltego_transform(entity_type, entity_value):
"""运行Maltego变换"""
url = "http://localhost:8080/transform"
payload = {
"type": entity_type,
"value": entity_value
}
response = requests.post(url, json=payload)
return response.json()
# 使用示例
result = run_maltego_transform("maltego.Domain", "example.com")
print(result)本地API#
#!/usr/bin/env python3
from maltego import MaltegoMsg
def process_message(message):
"""处理Maltego消息"""
# 解析消息
entity_type = message.getEntityType()
entity_value = message.getValue()
# 处理变换
results = perform_transform(entity_type, entity_value)
# 返回结果
response = MaltegoMsg()
for result in results:
response.addEntity(result["type"], result["value"])
return response大师级使用#
企业级部署#
服务器部署#
1. 安装Maltego Server
- 下载服务器版本
- 安装到服务器
2. 配置服务器
- 设置数据库连接
- 配置用户权限
3. 部署变换
- 上传自定义变换
- 配置变换库协作功能#
1. 创建项目
- File -> New Project
- 设置项目权限
2. 邀请协作者
- Project -> Share
- 添加用户
3. 协作编辑
- 实时同步
- 版本控制高级可视化#
自定义样式#
1. 设置实体样式
- 右键实体 -> "Style"
- 选择颜色、形状、图标
2. 设置链接样式
- 右键链接 -> "Style"
- 选择颜色、粗细、样式
3. 应用样式模板
- 视图 -> 样式模板
- 保存和加载样式交互式可视化#
1. 添加交互元素
- 右键实体 -> "Add Note"
- 添加注释和标签
2. 创建过滤视图
- 视图 -> 过滤器
- 设置过滤条件
3. 动画效果
- 视图 -> 动画
- 选择动画类型实战案例#
案例1: 域名情报收集#
场景描述#
对目标域名进行全面的情报收集,包括子域名、DNS记录、Whois信息等。
实施步骤#
1. 添加域名实体
- 拖拽"Domain"实体到图形
- 设置值为"example.com"
2. 查询DNS记录
- 选中域名实体
- 运行"Domain -> DNS Records"变换
- 查看A、MX、NS、TXT等记录
3. 发现子域名
- 运行"Domain -> Subdomains"变换
- 查看发现的子域名
4. 查询Whois信息
- 运行"Domain -> Whois Information"变换
- 查看注册人、注册商等信息
5. 分析IP地址
- 选中A记录中的IP地址
- 运行"IP Address -> Geo Location"变换
- 查看地理位置信息
6. 查询SSL证书
- 运行"Domain -> SSL Certificate"变换
- 查看证书信息
7. 搜索社交媒体
- 运行"Domain -> Social Networks"变换
- 查看相关的社交媒体账户
8. 生成报告
- File -> Export Graph
- 选择报告格式
- 保存报告案例2: 人员情报收集#
场景描述#
对目标人员进行全面的情报收集,包括社交媒体、联系方式、职业信息等。
实施步骤#
1. 添加人员实体
- 拖拽"Person"实体到图形
- 设置姓名
2. 搜索电子邮件
- 运行"Person -> Email Addresses"变换
- 查看发现的电子邮件地址
3. 搜索社交媒体
- 运行"Person -> Social Networks"变换
- 查看Facebook、Twitter、LinkedIn等账户
4. 分析社交媒体账户
- 选中社交媒体实体
- 运行"Facebook Profile -> Friends"变换
- 运行"Twitter Profile -> Followers"变换
- 查看社交关系
5. 查询电话号码
- 运行"Person -> Phone Numbers"变换
- 查看发现的电话号码
6. 查询职业信息
- 运行"Person -> LinkedIn Profile"变换
- 查看职业经历、教育背景
7. 分析关系网络
- 使用层次布局展示关系
- 识别关键联系人
- 发现潜在关联
8. 生成报告
- File -> Export Report
- 选择报告模板
- 保存报告案例3: 威胁情报分析#
场景描述#
分析恶意软件或攻击活动,识别相关实体和关系。
实施步骤#
1. 添加初始实体
- 添加域名、IP地址、URL等实体
- 设置已知的恶意指标
2. 查询威胁情报
- 运行"Domain -> VirusTotal"变换
- 运行"IP Address -> AbuseIPDB"变换
- 查看威胁情报报告
3. 发现相关实体
- 运行"Domain -> Subdomains"变换
- 运行"IP Address -> Whois"变换
- 发现相关的域名和IP
4. 分析时间线
- 添加时间实体
- 按时间排序
- 识别攻击时间模式
5. 构建攻击图
- 连接相关实体
- 标记攻击阶段
- 可视化攻击路径
6. 识别攻击者
- 分析Whois信息
- 查询社交媒体
- 识别潜在攻击者
7. 生成威胁报告
- File -> Export Report
- 选择威胁情报模板
- 保存报告总结#
Maltego是一款功能强大的开源情报和链接分析工具,为安全研究和威胁情报收集提供了全面的支持。
核心优势#
- 可视化: 直观的图形化界面
- 丰富变换: 大量内置变换和数据源
- 可扩展: 支持自定义变换开发
- 协作: 支持团队协作
- 报告: 生成专业报告
应用场景#
- 开源情报收集
- 威胁情报分析
- 社交工程
- 犯罪调查
- 企业情报收集
最佳实践#
- 逐步扩展: 从简单查询开始,逐步扩展
- 验证结果: 对收集的信息进行验证
- 保存图形: 定期保存图形和结果
- 使用注释: 添加注释说明分析过程
- 遵守法律: 确保合法使用
注意事项#
- 遵守相关法律法规
- 尊重隐私权
- 验证信息准确性
- 注意API使用限制
- 保护敏感信息