3주차 활동 시간에는 각자 리버싱에 대해 공부하고 팀원들에게 각자 발표하는 시간을 가져보았습니다.
1. 리버싱(역공학)의 개념 및 필요성
- 개념: 완성된 프로그램(실행 파일/바이너리)의 내부 구조와 로직을 역으로 추적하여 작동 원리를 분석하는 기술.
- 개발과의 방향 차이:
- 순방향 개발: 소스코드 작성 -> 어셈블리 -> 컴파일 ->실행 파일 (Binary File) 생성.
- 역공학(리버싱): 소스코드 없이 실행 파일(Binary File) -> 어셈블리 언어 분석 -> 소스코드 로직 추적.
- 주요 활용 분야: 악성코드 분석(동작 파악 및 대응), 보안 취약점 분석, 게임 보안(핵 차단/치트 방지), 소스코드가 없는 프로그램의 기능 분석 및 패치/크랙 연구.
2. 리버싱 분석 방법
- 정적 분석 (Static Analysis):
- 프로그램을 실행하지 않고 파일 구조, 헤더 정보, 문자열, API, 코드 형태 등을 관찰 및 분석.
- 악성코드 실행 위험을 방지할 수 있으나, 암호화/패킹된 영역은 분석이 어려움.
- 주요 도구: IDA Pro/Free, Ghidra (디스어셈블러).
- 동적 분석 (Dynamic Analysis):
- 프로그램을 실 직접/가상 환경에서 실행하면서 메모리, 레지스터, CPU 사용량, 스택 값 및 실행 흐름을 분석.
- 코드가 복잡하거나 암호화된 경우 유용하나, 악성코드 감염 위험이 있어 격리 환경이 필요함.
- 주요 도구: x64dbg, OllyDbg, GDB (디버거).
3. 리버싱의 과정 및 어셈블리 기초
- 일반적인 단계: 바이너리 분석 -> 문자열 및 Import API 분석 -> 파일/네트워크 동작 분석 -> 디스어셈블 및 디버깅.
- 어셈블리 명령어 및 C코드 대응 관계:
- mov (데이터 이동), add/sub (연산), cmp (비교), je/jne (조건 분기), call/ret (함수 호출/복귀).
- 조건문(if), 반복문(for), 배열 접근(arr[i]) 등 고수준 C 코드가 저수준 어셈블리로 대응되는 구조 학습.
4. 실제 적용 사례
- WannaCry 랜섬웨어 (2017): 리버싱을 통해 악성코드 내부의 통신 로직을 분석하고 '킬 스위치'를 찾아내어 추가 피해 확산을 방지함.
- Mirai 웜 사건 (2016): IoT 대규모 DDoS 공격 분석 시 리버싱으로 감염 수법 및 C2 통신 규칙을 파악하여 대응책 마련.
5. 안티 리버싱 및 법적/기술적 주의점
- 안티 리버싱 (Anti-Reversing): 분석을 방해하기 위한 기술 (패킹, 난독화, 안티 디버깅 등).
- 주의점: 악성코드 분석 시 시스템 파괴/감염 위험이 있으며, 상용 프로그램 무단 디컴파일 및 DRM 해제 등은 저작권법 및 정보통신망법 위반 위험이 있으므로 허가된 대상에 한해서만 진행해야 함.
[발표 자료]
박서현
홍유나
박시연
김유원
'2. Reversing (리버싱)' 카테고리의 다른 글
| [2024.11.16]리버씽씽이_6주차 활동 (0) | 2024.11.22 |
|---|---|
| [2024.11.09]리버씽씽이_5주차 활동 (3) | 2024.11.15 |
| [2024.11.02]리버씽씽이_4주차 활동 (4) | 2024.11.08 |
| [2024.10.26]리버씽씽이_3주차 활동 (0) | 2024.11.01 |
| [2024.09.28] 리버씽씽이_2주차 활동 (3) | 2024.10.03 |