#LAMMA (BETA)
###针对所有密码实现的安全评估框架
(一项由 SECURITY MONX 发起的开源项目)
Lamma 框架文档(beta)
文件名 : README
作者 : @ajithatti
组织 : Security Monx
版本 : 0.0.1
目的 : 介绍 Lamma 框架(beta)
目录 :
A. 许可证信息
B. Lamma 框架(beta)简介
C. 依赖项
D. 使用 LAMMA
E. 特性
F. 说明
G. 贡献者
A. 许可证信息
LAMMA 框架(beta)及其文档不附带任何许可证。
您可以以任何方式自由使用,无任何条件。
关于项目的详细信息,请访问我们的网站
"http://www.securitymonx.com/Project-LAMMA"
B. LAMMA 框架(beta)简介
LAMMA 框架(beta)旨在成为用于审计密码学、PKI 及相关实现的综合套件。
LAMMA(beta)支持 4 个主要模块
REMOTE
CRYPTO
TRUST
SOURCE
REMOTE - 模块扫描远程主机的 SSL/TLS 配置,并报告发现的任何差距和漏洞。
主要检查项:
a) SSL/TLS 版本、会话管理和服务器可配置参数
c) 检查是否使用了易受攻击/已弃用的密码套件
b) 服务器证书测试
验证类型(EV/OV/DV)
适用 SSL/TLS 漏洞的时间线分析
验证和确认
信息泄露
公共模数
签名算法强度
备用名称
CRYPTO - 此模块检查任何底层框架生成的多种密码原语的质量、后门和健全性。
主要检查项:
随机数生成的质量测试
多个 RSA 密钥中共享素数的健全性检查
安全强素数测试
共享模数测试
MalSha、畸形摘要测试
TRUST - 模块检查各种信任库和密钥库,查找不安全的私钥和不可信的证书。
主要检查项:
a) 私钥
是否加密存储
访问权限
跟踪多个实例
提取素数用于 CRYPTO 模块测试
b) 公钥
提取模数用于 CRYPTO 模块测试
跟踪多个实例
c) 证书
检查信任存储和 CRL
列出固定和不可信证书
跟踪多个实例
验证、时间线分析(与 REMOTE 模块共用)
SOURCE - 模块主要用于强制执行组织的“密码学审查委员会”建议。此模块扫描源代码中是否存在不安全且已弃用的密码方案。
a) 已弃用方案
MD 系列哈希方案
SHA/SHA1 哈希
ECB/CBC 分组密码模式
rand() 或 /dev/rand 函数
<更多已弃用/不安全方案>
b) 弱方案(后门方案)
Dual_EC_DRBG
prime2566v1
p224r1
secp384r1
<更多更弱/后门方案>
C. 依赖项 : LAMMA 的运行需要少量 Python 包。所需包列表如下:
1. cmd2 - 运行 Lamma 的自定义 shell
pip install cmd2
2. subprocess - 调用 Openssl 或其他脚本
pip install subprocess
3. pyOpenSSL - OpenSSL 的包装器
pip install openssl
D. 使用 LAMMA :
LAMMA.py 启动框架,显示欢迎屏幕并进入 LAMMA 提示符
$> python LAMMA.py
__ _____ _____ _____ _____
| | | _ | | | _ |
| |__| | | | | | | | |
|_____|__|__|_|_|_|_|_|_|__|__|
(BETA)
Vulnerability Assessment and Auditing Framework
for all the Crypto Implementations.
(An Open Source Project)
by
SECURITY MONX
LAMMA :
您可以使用 "help module" 命令查看每个模块的微帮助
LAMMA : help trust
扫描给定的信任/密钥存储,查找不可信证书、不安全的私钥等。
LAMMA : help source
扫描源代码中已知的弱或后门函数
LAMMA : help crypto
生成各种方案下的密钥、哈希、随机数,指定数量
LAMMA : help remote
扫描远程主机并报告 SSL/TLS 配置概况和适用的漏洞
LAMMA :
要了解如何使用每个模块,只需输入模块名称,您将获得详细的使用帮助。
LAMMA : remote
remote [-H] [-s] [-l] [-o] [-i] [-p] [-h]
目的 : 通过 SSL/TLS 连接使用给定插件扫描远程主机
-H [--help] : 打印此使用帮助
-s [--script] : 使用给定的脚本 ID 扫描目标,可选 'all','gen', 或 'reg'
-l [--list] : 列出所有插件和插件 ID
-o [--out] : 报告存储到该文件,否则使用默认文件
-i [--in] : 输入文件名,每行指定多个 IP:Port
-p [--port] : 建立 SSL 或 TLS 连接的端口
-h [--host] : 远程主机的 IP 或域名
LAMMA :
E. 特性 :
LAMMA 项目是持续进行中的工作。除了许多功能特性外,我们努力遵循这些基本原则:
1. 简单 : 用户无需深入了解密码学即可使用此框架。它应直观易用,学习成本最低。
2. 可扩展 : 框架应可扩展。用户社区应能通过添加自定义插件轻松扩展功能。
3. 独立 : 框架本身使用 OpenSSL 及其 Python 包装器,但可用于测试密码学、PKI 及相关实现,不受所使用的技术(如 Java、NSS、GnuTLS、SChannel)的影响。
4. 自动化 : “轻松实现大规模密码实现评估”是框架设计的核心关注点
F. 说明 :
a. LAMMA(beta)是活跃开发中的项目。
b. 目前为 Linux 平台构建
c. 代码附带所有权利和缺陷提供给您,作者不承担任何保证或责任
d. 我们欢迎错误报告、评论、批评、贡献,甚至关于您使用 LAMMA(beta)经验的简单说明。请写信至:
a j i t [ a t ] s e c u r i t y m o n x [ d o t ] c o m
G. 贡献者
1. Ajit Hatti - @ajithatti <twitter 账号>
"remote" 模块的示例用法:我们扫描 "null.co.in" 的 gen 插件,结果存储在 final.html 文件中。
LAMMA : remote -h null.co.in -p 443 -s gen -o final.html
[*] Lamma 扫描服务 [已启动] ...
[+] 本次扫描的参数设置:
要运行的测试 => gen 目标主机 => null.co.in
目标端口 => 443
报告将存储在文件 => final.html
[+] 开始扫描
启动 gen
[+] 启动... /home/evader/Desktop/RELEASE/LAMMA/modules/remote-module/gen
正在执行: server_config.py -h null.co.in -p 443 -o final.html
正在执行: scan_ssl.py -h null.co.in -p 443 -o final.html
[+] 扫描完成...
LAMMA :
对 "null.co.in" 执行 "remote" 扫描模块的输出
--- 开始对主机 null.co.in 进行服务器配置检查 ---
服务器响应:
HTTP/1.1 500 Internal Server Error
Server: nginx
Date: Fri, 03 Jun 2016 18:05:58 GMT
Content-Type: text/html
Connection: close
X-Powered-By: PHP/5.5.9-1ubuntu4.16
证书链验证:
Digital Signature Trust Co. 的证书 : 有效
Let's Encrypt 的证书 : 有效
null.co.in 的证书 : 有效
证书链已验证且可信
--- 服务器配置检查完成...
--- 开始扫描主机 ---
远程主机名 :null.co.in
远程主机 IPv4 :104.237.152.34
远程主机端口 :443
使用的密码套件 : ECDHE-RSA-AES128-GCM-SHA256
主题名称 = null.co.in
颁发者名称 = Let's Encrypt Authority X1
开始日期 : 20160313112800Z
结束日期 : 20160611112800Z
签名算法 : sha256WithRSAEncryption
subjectAltName:
jobs.null.co.in
null.co.in
www.null.co.in
[信息] 证书验证类型 : DV
公钥大小 [2048]
--- SSL 扫描结束 ---