
모든 암호 구현을 위한 취약점 평가 및 감사 프레임워크
#LAMMA (베타)
###모든 암호 구현을 위한 취약점 평가 프레임워크.
(SECURITY MONX의 오픈 소스 이니셔티브)
Lamma 프레임워크 문서 (베타)
파일 이름 : README
저자 : @ajithatti
조직 : Security Monx
버전 : 0.0.1
목적 : Lamma 프레임워크(베타) 소개
목차 :
A. 라이선스 정보
B. Lamma 프레임워크(베타) 소개
C. 의존성
D. LAMMA 사용
E. 기능
F. 참고
G. 기여자
A. 라이선스 정보
LAMMA 프레임워크(베타)와 그 문서는 라이선스가 없습니다.
원하는 대로 자유롭게 사용할 수 있습니다. 어떠한 조건도 없습니다.
프로젝트에 대한 자세한 내용은 웹사이트를 방문하세요.
"http://www.securitymonx.com/Project-LAMMA"
B. LAMMA 프레임워크(베타) 소개
LAMMA 프레임워크(베타)는 암호, PKI 및 관련 구현을 감사하기 위한 포괄적인 제품군을 목표로 합니다.
LAMMA(베타)는 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 모듈 테스트를 위한 모듈러스 추출
여러 인스턴스 추적
b) 인증서
신뢰 저장소 및 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의 사용자 정의 셸을 실행합니다.
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 래퍼를 사용하지만,
이를 엔지니어링하는 데 사용된 기술(예: Java, NSS, GnuTLS, SChannel)과 관계없이
암호, PKI 및 관련 구현을 테스트하는 데 사용할 수 있습니다.
4. 자동화 : "암호 구현의 대규모 평가를 쉽게" 하는 것이
이 프레임워크 설계의 주요 초점입니다.
F. 참고 :
a. LAMMA(베타)는 진행 중인 프로젝트입니다.
b. 현재 Linux 플랫폼용으로 제작되었습니다.
c. 코드는 모든 권리와 버그와 함께 저자로부터 어떠한 보증이나 책임 없이 제공됩니다.
d. 버그, 의견, 비판, 기여 또는 LAMMA(베타) 사용 경험에 대한 간단한 메모를 환영합니다. 다음 주소로 연락해 주세요:
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 <트위터 핸들>
'remote' 모듈 사용 예시: 'null.co.in'을 gen 플러그인으로 스캔하고 결과는 final.html 파일에 저장됩니다.
LAMMA : remote -h null.co.in -p 443 -s gen -o final.html
[*] Lamma 스캔 서비스 [시작] ...
[+] 이 스캔에 대한 매개변수 설정 :
Tests to Run => gen Target Host => null.co.in
Target port => 443
Reports will be stored in file => final.html
[+] 스캔 시작
Kick gen
[+] 시작 중... /home/evader/Desktop/RELEASE/LAMMA/modules/remote-module/gen
Now Executing: server_config.py -h null.co.in -p 443 -o final.html
Now Executing: 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
주체 대체 이름:
jobs.null.co.in
null.co.in
www.null.co.in
[INFO] 인증서 검증 유형 : DV
공개 키 크기 [2048]
--- SSL 스캔 종료 ---