악성코드 분석 목표
악성코드 분석의 목표는 보통 네트워크 침입 대응에 필요한 정보를 알아내기 위함이다.
목표는 전형적으로 무슨 일이 정확히 바생했는지, 감염된 시스템과 파일이 무엇인지 확실히 인지하는 데 있다.
의심스러운 코드를 분석할 때 일반적인 분석 목적은 의심스러운 특정 바이너리가 하는 행위와 네트워크에서 탐지하는 방법, 그리고 피해 범위를 측정하는 것이다.
악성코드 분석 기법
- 기초 정적 분석: 실제 명령어를 보지 않고 실행 파일을 조사한다. 파일의 악성 여부를 확인하고, 기능 정보와 그 정보를 이용해 간단한 네트워크 시그니처를 생성할 수 있다. 직괒적이며 신속히 수행할 수 있지만, 정교한 악성코드 분석에 비효율적이고 중요한 행위를 놓칠 수 있다.
- 기초 동적 분석: 악성코드를 실행한 후 감염 흔적을 제거하거나, 유효한 시그니처를 만들거나, 두 가지 모두를 위해 시스템의 행위를 관찰한다. 기초 정적,동적 분석은 깊은 프로그래밍 지식이 없는 사람도 사용할 수 있지만, 모든 악성코드 분석에 효과적이라고 할 수 없고, 중요 기능을 놓칠 수 있다.
- 고급 정적 분석: 프로그램의 명령어가 하는 작업이 무엇인지 파악할 목적으로 실행 파일을 디스어셈블러로 로드해 악성어코드의 내부를 역공학하는 과정으로 구성되어있다. 가초 정적 분석보다 어렵고 특화된 지식, 코드 구성과 윈도우 OS 개념을 요구한다.
- 고급 동적 분석: 디버거를 이용해 동작하는 악성 실행 파일의 내부 상태를 점검한다. 실행 파일에서 세부 정보를 추출하는 다른 방식을 제공한다.
악성코드 유형
- 백도어: 공격자의 접근을 허용할 목적으로 컴퓨터에 자기 자신을 설치하는 악성코드, 공격자가 부분 인증이나 무인증으로 컴퓨터에 접속해 로컬 시스템에서 명령어를 실행할 수 있게 한다.
- 봇넷: 공격자가 시스템에 접속할 수 있다는 점에서 백도어와 유사하지만 동일한 봇넷에 감염된 모든 컴퓨터가 하나의 명령 제어 서버로부터 동일한 명령어를 수신
- 다운로더: 다른 악성 코드를 다운로드할 목적만으로 존재하는 악성 코드로, 흔히 시스템에 처음으로 접근 권한을 얻으면 공격자는 다운로더를 설치한다. 다운로더 프로그램은 추가 악성코드를 다운로드하고 설치한다.
- 정보 유출 악성코드: 피해자의 컴퓨터에서 정보를 수집해서 공격자에게 전송하는 악성코드다. 예시로는 스티퍼, 패스워드 해시 수집기, 키로거가 있다. 이메일이나 온라인 뱅킹 같은 온라인 거래에 접근 권한을 얻고자할 떄 사용한다
- 실행기: 다른 악성 프로그램을 실행할 떄 사용하는악성 프로그램이다. 보통 실행기는 시스템의 상위 권한이나 은폐를 위해 다른 악성 프로그램을 실행할 때 이전 기법과 다른 기법을 사용한다.
- 루트킷: 다른 코드 내에서 자신의 존재를 숨기도록 설계한 악성코드다. 공격자의 원격 접속 허용고 ㅏ피해자의 코드 탐지를 어렵게 만들기 위해 백도어 같은 다른 악성코드를 함께 사용한다.
- 스케어웨어: 감욤된 사용자가 뭔가를 구매하게 겁을 주는 악성코드다. 안티바이러스나 다른 보안 프로그램으로 가장한 사용자 UI를 가진다. 시스템이 악성코드에 감염되었거나 그들의 SW를 사야만 제거할 수 있다고 사용자를 속이지만, 실제 구입하면 SW는 스케어웨어를 살제할 뿐 아무런 작업도 하지 않는다.
- 스팸 전송 악성코드: 사용자의 장비를 감염시켜 스팸을 전송하는데 이용하는 악성코드다. 공격자는 스팸 전송 서비스를 판매해 이 악성코드로 수익을 얻는다.
- 웜/바이러스: 자기 자신을 복제해 추가로 컴퓨터를 감염시키는 악성코드다.
악성코드 분석의 일반 규칙
분석을 수행할 떄 염두에 둬야할 몇 가지 규칙
- 세부 사항에 너무 집착X, 주요 특징에 초점O
- 여러가지 도구와 접근 방식이 있음을 기억
- 다른 각도에서 악성코드를 분석하거나 다른 접근 방식을 시도
패킹과 난독화된 악성코드
악성코드 제작자는 파일의 탐지와분석을 더 어렵게 할 목적으로 종종 패킹과 난독화 기법을 사용한다. 난독화된 프로그램은 악성코드 제작자가 은폐를 시도한 실행 코드다. 패킹된 프로그램은 악성코드 프로그램이 압축돼 분석할 수 없게 난독화된 프로그램의 일부다. 이 기법 모두 악성코드를 정적으로 분석하려는 시도를 상당히 어렵게 만든다.
Strings로 검색했을 때 소수의 문자열만 보인다면 난독화됐거나 패킹돼 악성코드일 가능성이 있음을 암시합니다.
※참고 ㅣ 패킹되고 난독화된 코드는 적어도 LoadLibrary와 GetProcAddress함수를 포함하는데
추가 함수를 로딩해 접근하는데 사용한다
패커 & 패킹 & 언패킹
패커
PE 파일을 실행 가능한 형태로 파일을 압축하여 단순히 사이즈만 줄여주는 것
패킹
- 패킹은 소프트웨어나 파일의 크기를 줄이기 위해 사용되는 기술로, 주로 실행 파일의 크기를 줄이고 다운로드 시간을 단축하기 위해 사용
- 패킹은 실행 파일의 일부 또는 전체를 압축하고, 실행 시에 압축을 해제하여 원래의 형태로 복원하는 과정을 포함
언패킹
- 패킹된 실행 파일을 언패킹하는 과정은 마치 패킹된 상자를 열어서 그 안의 내용물을 꺼내는 것과 유사함.
- 언패킹은 패킹된 실행 파일을 열어서 그 안에 숨겨진 원본 프로그램을 찾아내고, 그것을 다시 사용 가능한 형태로 복원하는 작업
'해킹&보안 > 악성코드 및 치트' 카테고리의 다른 글
cheat engine (0) | 2024.08.25 |
---|---|
Reverse Engineering 7 (0) | 2024.05.17 |
리버스 엔지니어링 (1) | 2024.05.14 |
악성코드 분석 1 (2) | 2024.05.12 |
Reverse Engineering 7 (0) | 2024.05.11 |