tmxklab

악성코드 기능 본문

Security/07 Malware Technique

악성코드 기능

tmxk4221 2021. 4. 18. 01:01

0. 목차


1. 다운로더

2. 드로퍼

3. 키로거

4. 이동식 미디어를 통한 악성코드 복제

5. 악성코드 명령 및 제어

6. 파워쉘 기반 실행

 

1. 다운로더(Downloader)


  • 인터넷에서 다른 악성코드 컴포넌트를 다운로드하고 시스템에서 실행하는 프로그램
  • 다운로드를 위해 UrlDownloadToFile() API 호출
  • 다운로드 완료 후 ShellExecute(), WinExec(), 또는 CreateProcess() API 호출하여 다운로드한 컴포넌트 실행

 

2. 드로퍼(Dropper)


  • 추가 악성코드 컴포넌트를 내부에 포함하고 있는 프로그램
  • 실행되면 드로퍼는 악성코드 컴포넌트를 추출해 디스크에 저장
  • 일반적으로 리소스 섹션에 추가 바이너리를 포함한다.
  • 내장한 실행 파일을 추출하고자 FileResource(), LoadResource(), LockResource(), SizeOfResource() API 호출

 

3. 키로거(Keylogger)


  • 키 입력을 가로채서 기록하는 프로그램
  • 공격자는 다양한 기술을 이용해 가로챌 수 있는데 키 입력을 로깅하는 가장 흔한 방법은 다음과 같다.

       ① 키 상태를 확인(GetAsyncKeyState())

       ② 훅 설치(SetWindowHookEx())

 

 

① GetAsyncKeyState()를 이용한 키로거

  • 현재 키의 상태를 알아오는 함수
  • 키보드의 개별 키 상태를 질의하여 키가 눌러졌는지 아닌지를 확인한다.
 

GetAsyncKeyState 함수

이 내용은 MSDN을 바탕으로 작성되었습니다. Microsoft Visual C++ 2008 기준으로 작성되었습니다. ...

blog.naver.com

 

 

② SetWindowHookEx()를 이용한 키로거

  • 훅 프로시저(hook procedure)라고 불리는 함수를 설치해 키보드 이벤트를 모니터링
  • 악성 프로그램은 키보드 이벤트가 트리거될 때 알려주는 함수(hook procedure)를 등록하고 키 입력을 파일에 기록하거나 네트워크를 통해 전달
  • 악성 코드는 SetWindowsHookEx() API를 사용해 어떤 이벤트 유형(ex. 키보드, 마우스 등)을 모니터링할지와 특정 이벤트 유형이 발생했을 때 알림해야 하는 훅 프로시저를 지정
 

- SetWindowsHookEx() API를 이용한 메시지 후킹

# 바로 앞에 포스팅한 Windows 메시지 후킹 실습으로, SetWindowsHookEx() API를 이용하여 메시지 후킹 실습을 해보겠습니다. 본 내용은 리버싱 핵심원리에 나와 있는 내용을 참고하여 했습니다. # SetWindow

yokang90.tistory.com

 

4. 이동식 미디어를 통한 악성코드 복제


  • Autorun 기능을 활용해 감염된 미디어가 꽂혔을 때 자동적으로 다른 시스템 감염
    • autorun.inf : 미디어가 삽입되었을 때 자동으로 프로그램 실행할 수 있도록 도와줌
  • 일반적으로 파일을 복사하거나 이동식 미디어에 저장된 기존 파일을 수정

 

5. 악성코드 명령 및 제어(C&C, C2)


  • 악성코드 명령 및 제어(C&C 또는 C2)는 공격자가 감염된 시스템과 통신하고 제어
  • 시스템을 감염시키면 대부분의 악성코드는 공격자가 제어하는 서버(C2 서버)와 통신해 명령을 받거나 추가 컴포넌트를 다운로드하거나 또는 정보를 유출
  • C2 채널로 사용하는 가장 일반적인 프로토콜은 HTTP/HTTPS, 경우에 따라 P2P와 같은 프로토콜을 사용하거나 DNS 터널링을 사용한다.
 

Use of DNS Tunneling for C&C Communications

Often, virus writers don't even bother to run encryption or mask their communications. However, you do get the occasional off-the-wall approaches that don't fall into either of the categories. Take, for instance, the case of a Trojan that Kaspersky Lab res

securelist.com

 

① HTTP 명령 및 제어

  • InternetOpen(), InternetOpenUrl(), InternetReadFile() 함수를 사용해 공격자가 통제하는 C2 서버에서 웹 페이지를 가져온다.
  • 웬 페이지에 특별한 html태그가 포함되어 있으며 태그 내의 데이터를 복호화하고 명령으로 해석

② 유저 정의 명령 및 제어

  • 유저 정의 프로토콜을 사용하거나 비표준 포트를 통해 통신하여 명령 및 제어 트래픽을 숨길 수 있다.

 

6. 파워쉘 기반 실행


  • 탐지를 우회하고자 시스템에 존재하는 파워쉘 같은 도구를 활용해 악의적인 행위를 숨김
  • 파워쉘은 .NET 프레임워크에 기반한 관리 엔진이며 이 엔진은 cmdlets라 불리는 일련의 명령어를 제공한다.
  • 파워쉘은 일반적으로 시스템 관리자가 정상적인 목적을 위해 사용하지만 공격자가 악성코드를 실행하고자 파워쉘을 사용한다.
  • 공격자가 파워쉘을 사용하는 주요 이유는 주요 운영 시스템의 함수에 대해 접근을 제공하고 매우 적은 흔적을 남겨 탐지를 좀 더 어렵게 하기 때문이다.

+) 파워쉘 프롬프트에서 스크립트를 실행하면 모든 명령이 한 번에 실행된다. 실행되는 동안 제어하고자 한다면 PowerShell ISE를 이용해 파워쉘을 디버깅할 수 있다.

 

Windows PowerShell ISE에서 스크립트를 디버깅하는 방법 - PowerShell

이 문서에서는 Windows PowerShell ISE 시각적 디버깅 기능을 사용하여 로컬 컴퓨터에서 스크립트를 디버그하는 방법을 설명합니다.

docs.microsoft.com

 

 

powershell - ISE에 대해 알아보자!

powershell ISE (통합 스크립팅 환경) 은 Windows 7 에서 Powershell 이 설치 될 때 같이 포함되어 있...

blog.naver.com

 

+) 파워쉘 옵션

 

파워셸(PowerShell)과 악성코드

목차 0. 개요 1. 기본 .... 1.1 기본 .... 1.2 Cmdlet .... 1.3 Script .... 1.4 환경변수 2. 파라미터 3. 기본 방식 .... 3.1 다운로드 .... 3.2 파워셸 상에서 바이너리 실행 .... 3.3 cmd 상에서 바이너리 실..

sanseolab.tistory.com

 

+) 참고자료

 

파일리스(Fileless)기법 설명

0. 목차 Contents 0. 목차 1. 소개 1.1 배경 1.2 파일리스(Fileless)기법 1) AVT(Advanced Volatile Threat) 2) 사용 이유 3) 문제점 2. 파일리스(Fileless) 공격 2.1 공격 절차 2.2 Powershell 예제 및 옵션 1) P..

rninche01.tistory.com

 

'Security > 07 Malware Technique' 카테고리의 다른 글

SetWindowsHookEx DLL Injection  (0) 2021.04.20
APC Injection  (4) 2021.04.19
악성코드 지속메커니즘  (0) 2021.04.18
파일리스(Fileless)기법 설명  (0) 2021.01.16
UAC bypass(레지스트리 어뷰징) 분석  (0) 2021.01.09
Comments