폴리모르픽(Polymorphic)
악성코드가 단계별로 실행되면서 코드를 생성하는 기법! 이 주제는 INCA에서 공개된
웜(Worm) 악성코드 Allaple 상세분석
보고서를 보면서 처음으로 접하게 되어 정리하였다.
폴리모르픽(Polymorphic)이란 영어 뜻을 보면 다양한 형[성질, 양식]을 갖는, 다형의
라는 뜻을 갖는 형용사이다. 이러한 용어는 주로 악성코드가 AV(Anti Virus)로 부터 탐지를 우회하기 위한 기술인 암호화(Encryption)과 다형성(Polymorphism)을 접할 수 있다. 다형성을 좀 더 간단 하게 정리하면 아래와 같이 정리할 수 있다.
Input: A -> F(x) = B
Input: A -> F(x) = C
Input: A -> F(x) = D
이해가 될진 모르지만, 요약하면 악성코드가 실행되고 각각 다른 출력코드(output code)를 생성하게 되는 것이다. 그럼 탐지하는 AV 입장에선 Signatue-based detection에서 탐지가 매우 어려워 진다.
이러한 폴리모르픽 기술을 사용하는 악성코드는 GetTickCount와 GetLocalTime 함수를 이용하는 경우가 주로 많으며, 이는 실행시마다 랜덤한 값을 생성하기 위해 사용된다.
GetTickCount: OS부팅할 때 부터 지나간 시간을 msec단위로 반환하는 함수
GetLocalTime: Systemtime형 포인터를 매개변수로 받으며, 전달받은 매개변수의 현재 시간을 반환해주는 함수다.
폴리모르픽 기법은 원본 바이너리 파일이 복원되어야 한다는 단점을 가지고 있다. 하지만 메타모르픽(Metamorphic) 기법은 악성코드의 바이너리 파일이 매번 다른 형태를 가지지만 똑같은 기능을 수행하는 바이너리 파일을 생성하는 방법을 사용하여 고유의 바이너리 패턴을 제거하는 기법
으로, 폴리모르픽 기법의 단점을 보안한 탐지 우회 기법이다.
이러한 Metamorphic 기법은 아래와 같은 기법이 존재한다.
- Register Swap: 사용되는 레지스터를 다른 레지스터로 변경
- Junk Instruction Insert: 프로그램의 기능에 영향이 없는 명령어 삽입
- Instruction Replace: 같은 기능을 하는 명령어들 간의 변환
- Instruction Re-order: 순서에 상관없는 명령어들의 순서를 변경
기타 정보
정보 획득 출처
- http://erteam.nprotect.com/896
악성코드의 종료와 간단한 설명
- 바이러스: 스스로 복제하여 컴퓨터를 감염시키는 악성코드로 다른 실행 프로그램에 기생하여 실행된다.
- 웜: 스스로 복제하여 네트워크를 사용해 자신의 복사본을 전송하며, 다른 실행 프로그램이 필요 없이 독자적으로 실행된다.
- 트로이 목마: 악성 루틴이 숨어있어 겉보기에는 정상이지만 실행하면 악성코드를 실행한다. 백도어를 열어 다른 곳에서 컴퓨터를 원격으로 조정할 수 있는 악성코드를 의미한다.
- 루트 킷: 루트 권한을 획득한 공격자가 심어놓은 프로그램을 숨기기위해 사용되는 악성코드로 백도어 프로세스나 파일 등의 흔적을 관리자가 볼 수 없도록 한다.
- 백도어: 암호화된 인증을 통과하게 하여 원격 접속을 보장하고 공격자가 원하는 평문에 접근을 들키지 않고 행하는 악성코드이다.
- 스파이웨어: 사용자 동의 없이 설치되는 악성코드로 컴퓨터의 정보를 수집하고 전송한다.
- 애드웨어: 특정 소프트웨어를 실행할 때 또는 설치 후 자동적으로 광고가 표시된다.
- 하이재커: 의도치 않은 사이트로 이동을 시키고 팝업창을 띄우는 악성코드다.
- 랜섬웨어: 시스템에 저장된 파일들을 암호화한 후 복호화 비용을 요구하는 악성코드이다.
댓글 없음:
댓글 쓰기