개념 사전 · 개념
악성코드 분석
Malware analysis · 악성 코드 분석
은 파일 구조·코드·실행 행위를 조사하여 무엇을 하고 어떤 조건에서 영향을 주는지 설명하는 작업이다. 의심 표식과 관찰한 행위, 최종 악성 판단의 확신도를 분리한다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- 해시·형식·서명·문자열로 사본과 초기 분석 범위를 정한다.
- 정적 코드와 격리 실행 관찰을 교차 대조한다.
- 파일··네트워크 증거를 사건 대응에 전달한다.
02어떤 순서로 동작하나
- 사본 식별
획득 출처·시각·해시를 기록하고 분석할 사본과 원본을 구분한다.
- 초기 분류
파일 형식·크기·섹션·import·문자열·엔트로피 등을 읽어 분석 우선순위를 정한다.
- 코드 구조 추적
호출 규약·자료 흐름·분기를 실제 명령어와 대조한다. 디컴파일된 의사코드를 원본 소스로 간주하지 않는다.
- 조건부 실행 관찰
격리된 분석 환경에서 입력·실행 조건을 명시하고 ·파일·연결 등 행위를 수집한다.
- 증거 교차검증
정적 기능과 동적 행위, 와 사건 자료를 비교하여 확인된 사실·가설·미관찰 조건을 나눈다.
03먼저 알아둘 용어와 구성요소
- 프로그램을 실행하지 않고 파일과 코드 구조를 조사하는 방식.
- 격리한 조건에서 실행하며 실제 행위와 상태 변화를 관찰하는 방식.
- 파일 해시·도메인·경로처럼 관련 흔적을 찾는 식별 단서.
- 실행 파일의 코드를 변환·압축해 실행 중 복원하는 기술로 악성 여부와 동의어는 아니다.
- Portable Executable; 실행 파일의 대표적 형식.
- 이미지 기준 주소로부터의 상대 가상 주소.
- 실제 로드 기준 주소에 를 더해 얻는 가상 주소.
LEARN THROUGH PRACTICE
EICAR 메일 자료에서 전달·탐지·실행을 구분하기
안전한 테스트 파일의 전달 경로와 보안 검사 결과를 분리해 기록한다.
실습 구성과 전제
- 실제 악성코드 대신 공식 EICAR 테스트 자료 또는 무해한 파일만 자기 격리 메일 환경에서 사용한다.
- 파일 이름·메일 수신만으로 탐지 성공 또는 우회를 단정하지 않는다.
수신 화면이 증명하는 사실부터 적는다
- 받은 편지함의 첨부 존재는 메일 전달과 MIME 처리의 증거다. 첨부 이름이 EICAR 형태여도 실제 바이트가 표준 테스트 문자열인지 해시·내용으로 별도 확인해야 한다.
- 첨부를 실행하지 않고 원본과 작업 사본을 분리한다. 메일 본문·첨부·헤더는 서로 다른 분석 대상이다.
원본 크기로 보기 ↗- 받은 편지함에 eicar.com.txt라는 이름과 71 B 크기의 첨부가 보인다.
- 화면에는 탐지 엔진 이름·판정·격리 로그가 없다. 수신 화면만으로 악성코드 검사 결과를 확정할 수 없다.
확인 기준파일명·크기·해시·검사 로그를 각각 기록한다.
헤더로 메일의 전달 구조를 확인한다
- MIME Content-Type과 boundary는 첨부를 담는 구조를 설명한다. Received·Delivered-To는 전달 경로를 좁히는 자료이지만 신뢰할 수 있는 서버가 추가한 구간을 구분해야 한다.
- 메일 도착 시각을 검사 서비스의 처리 시각과 맞추고 허용·차단·격리 이유를 찾는다.
원본 크기로 보기 ↗- Content-Type이 multipart/mixed로 표시되어 본문과 첨부를 여러 부분으로 담는 구조를 보여 준다.
- Delivered-To·Received·Message-Id가 있어 전송 기록을 대응시킬 수 있다. 주소 값 자체는 보고서에 재전재하지 않는다.
확인 기준같은 Message-ID·큐 ID·첨부 해시를 이용해 검사 결과를 연결한다.
분석 환경의 격리 범위를 점검한다
- 테스트 파일에 대한 탐지는 실제 악성 파일의 모든 행위를 탐지한다는 보증이 아니다. 파일 검사·메일 경로·정책 적용의 일부를 확인하는 시험이다.
- 별도의 샌드박스 자료를 읽을 때는 메모리 분리와 격리를 구분한다. 파일을 실행하는 은 네트워크·스냅샷·복구 조건을 추가로 요구한다.
확인 기준전달 성공·엔진 탐지·정책 차단을 세 개의 결과로 남긴다.
실습에서 확인한 동작 원리
- 파일 이름보다 실제 바이트와 검사 로그가 중요하다.
- EICAR는 안전한 검사 시험 자료이며 악성 행위 분석 전체를 대신하지 않는다.
04예제로 따라가기
- 주어진 값: 실제 모듈 기준 주소=0x140000000, 조사 =0x140002120이라고 가정한다. 두 값은 교육용 가상 수치다.
- 계산: 0x140002120−0x140000000=0x2120이다. 먼저 이 를 포함하는 섹션을 찾는다.
- 섹션 대응: 그 섹션의 VirtualAddress=0x2000, PointerToRawData=0x600이면 섹션 내부 차이는 0x120이다.
- 파일 오프셋: SizeOfRawData가 이 범위를 포함한다는 조건에서 파일 위치는 0x600+0x120=0x720이다.
- 범위 밖 사례: 섹션 내부 차이가 파일의 원시 데이터 길이보다 크면 같은 공식을 무조건 적용하지 않는다. 가상 꼬리 영역인지 잘못된 헤더인지 따로 판단한다.
05혼동하기 쉬운 점과 확인 기준
- 로드 기준: 디버거가 표시한 실제 모듈 주소와 분석 도구의 ImageBase를 비교한다. ASLR 차이를 함수 변경으로 오해하지 않는다.
- 메모리 변화: 패킹 해제·자기 수정·런타임 생성 코드 때문에 메모리와 디스크의 바이트가 다를 수 있다. 획득 위치와 시점을 함께 기록한다.
- 포맷 신뢰: 손상·비정상 에서는 섹션 범위가 겹치거나 파일 끝을 넘을 수 있다. 파서의 경고와 실제 길이를 확인한다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.