
IDA Lumina 기능을 위한 로컬 서버
IDA Lumina 기능을 위한 오프라인 서버의 POC입니다.
자세한 내용은 https://www.synacktiv.com/publications/investigating-ida-lumina-feature.html
프로젝트를 다운로드하고 python lumina/setup.py(또는 pip install .)를 실행하세요.
서버는 독립 실행형 스크립트로도 사용할 수 있습니다. 다만 lumina_server 명령은 PATH에 등록되지 않습니다. python3 lumina/lumina_server.py를 사용하여 수동으로 실행해야 합니다.
TLS를 사용할 필요가 없다면 이 단계는 선택 사항입니다. 그런 경우 ida.cfg에서 LUMINA_TLS = NO를 수정해야 합니다.
다음 줄 중 하나를 사용하여 새로운 ROOT CA 인증서와 키를 생성하세요.
(-nodes 옵션을 제거하여 암호문구(passphrase)를 설정할 수 있지만, 서버 스크립트에 암호문구 인수를 전달해야 한다는 점을 기억하세요):
# sha256WithRSAEncryption
openssl req -nodes -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -sha256 -keyout luminaRootCAKey.pem -out luminaRootCAK.pem -days 365 -subj '/CN=www.fakerays.com/O=Fake Hexrays/C=XX'
# ecdsa-with-SHA256 (prime256v1)
openssl req -nodes -x509 -newkey rsa:4096 -sha512 -keyout luminaRootCAKey.pem -out luminaRootCA.pem -days 365 -subj '/CN=www.fakerays.com/O=Fake Hexrays/C=XX'
CA 인증서(luminaRootCA.pem)를 IDA 구성 디렉터리에 hexrays.crt로 복사하세요:
%APPDATA%\Hex-Rays\IDA Pro\hexrays.crt$HOME/.idapro/hexrays.crt예(리눅스): cp luminaRootCA.pem $HOME/.idapro/hexrays.crt
IDA 구성 파일(cfg/ida.cfg)을 설치 디렉터리 또는 (권장) 사용자 디렉터리에서 수정하세요:
%APPDATA%\Hex-Rays\IDA Pro\cfg\ida.cfg$HOME/.idapro/hexrays.crt// Lumina related parameters
LUMINA_HOST = "localhost"; // Lumina server url (default : "lumina.hex-rays.com")
// warning: keep the the semicolon
LUMINA_MIN_FUNC_SIZE = 32 // default function size : 32
LUMINA_PORT = 4443 // default port : 443
LUMINA_TLS = YES // enable TLS (default : YES)
사용법:
usage: lumina_server [-h] [-i IP] [-p PORT] [-c CERT] [-k CERT_KEY]
[-l {NOTSET,DEBUG,INFO,WARNING}]
db
positional arguments:
db database file
optional arguments:
-h, --help show this help message and exit
-i IP, --ip IP listening ip address (default: 127.0.0.1
-p PORT, --port PORT listening port (default: 4443
-c CERT, --cert CERT proxy certfile (no cert means TLS OFF).
-k CERT_KEY, --key CERT_KEY
certificate private key
-l {NOTSET,DEBUG,INFO,WARNING}, --log {NOTSET,DEBUG,INFO,WARNING}
log level bases on python logging value (default:info)
예:
lumina_server db.json --cert luminaRootCA.pem --key luminaRootCAKey.pem --ip 127.0.0.1 --port 4443 --log DEBUG
서버를 시작하고, idb 데이터베이스와 함께 IDA를 (재)시작한 다음 Lumina를 사용하여 첫 번째 함수를 푸시하세요. ctrl-c를 눌러 서버를 종료하고 데이터베이스를 저장하세요.
중요: 데이터베이스는 서버가 종료될 때(ctrl-c)에만 저장되거나 업데이트된다는 점을 기억하세요.