본문 바로가기

4-1. 2024-2 심화 스터디/악성코드분석 1팀

[2주차] 240921 악성코드분석 1팀

각자 선정한 악성코드 샘플을 분석하기 전 정적분석 방법에 대한 개념 정리를 진행하였다. 

 

사용하기로 한 악성코드

1. Mekotio

https://malpedia.caad.fkie.fraunhofer.de/details/win.mekotio

최근 Malwarebazaar 사이트에서 가장 많이 조회된 악성코드를 샘플로 선정

 

정적 분석

- 코드를 실행하지 않고 정적으로 프로그램의 문제를 찾는 과정. 

- 동적 분석과 가장 큰 차이는 분석 시점으로 동적분석은 런타임 환경에서 코드의 문제를 발견하고 정적 분석은 비 런타임 환경에서 수행됨

- 정적 분석을 사용하면 코드에서 코드 스멜 문제점과 보안 취약점 등의 문제 발견 가능

 

정적 분석 주요 기법

- 비공식 검토: 문서에서 오류를 찾기 위해 프로세스를 따르지 않는 검토 방법

- 기술적 검토: 소프트웨어 제품의 기술 사양을 검토하고 프로젝트에 적합한지 확인하는 방법

- Walkthrough: 작업 산출물 작성자와 참가자가 질의응답을 하며 검토하는 방법

- Inspection: 공식적인 일정에 맞추어 보고서를 작성하고 평가하며, 시작과 종료 기준(Entry & exit criteria)을 가진 규칙과 체크리스트에 기반한 형식적인 프로세스

 

정적 분석 소프트웨어

1. CheckStyle

- 프로그래머가 코딩 표준 컨벤션을 지킬 수 있도록 도와주는 도구

 

2. CPD

- Copy/Paste Detector

- 복사/붙여넣기로 짜여진 코드를 감지하는 도구

 

3. SpotBugs

- 코드 내에서 발생될 수 있는 버그 취약 코드를 찾아내어 개발자에게 알려줌

 

4. PMD

- Programming Mistake Detector

- 높은 복잡도, 중복 코드와 같은 소스코드의 결함 탐지 가능

 

5. IntelliJ Inspection

- 프로젝트에서 비정상적인 코드를 컴파일하기 전에 이를 감지하고 수정하는 코드 검사 세트 존재

 

6. ESLint

- 자바스크립트 문법에서 에러를 표시해주는 도구

 

7. Klockwork 

- 정적 애플리케이션 보안 테스트 표준 준수를 위한 도구