본문 바로가기
시큐리티 아카데미

악성코드분석

by christmas mushroom 2024. 7. 22.

악성코드의 정의 및 유형

     ■ 악성코드(Malware)란

        ○ 악성 소프트웨어의 줄임말로 악성프로그램이라고 불리기도 한다. (정보통신망법 제48조)

        ○ 악의적인 목적으로 프로그램 및 스크립트 제작 등의 모든 코드를 총칭한다

        ○ 소프트웨어가 실행될 수 있는 모든 기기에서 실행이 가능하다

     ■ 악성코드 개발의 목적

        ○ ex) 국가 안보위협 및 사회혼란 야기, 산업기밀 탈취, 금전적 이득, 자기 과시욕이 강한 해커의 관심유도, ...

     ■ 피혜사례: 관계자 내부 컴퓨터 해킹 후 미국 송유관 해킹, 워너크라이, 대학병원 등

     ■ 악성코드 유형

        ○ 2010년 이전에는 주로 바이러스나 웜으로 통칭했다면 최근에는 발생 행위에 따라서 명칭을 지정한다

분류 유형 악성코드 종류 주요기능
악성코드 행위에 의한 분류 바이러스 네트워크로 공유된 컴퓨터를 포함한 컴퓨터 프로그램이나 실행영역을 변형해서 복제하는 프로그램
스파이웨어 사용자 환경의 브라우저 정보, 시스템 정보, 뱅킹 정보 등을 탈취하는 악성코드
트로이목마 정상프로그램으로 위장하여 악의적인 공격코드의 실행을 유도하는 악성코드
네트워크를 통해서 전파되면서 자가복제를 통해 네트워크 트래픽에 영향을 미치는 악성코드
악성코드 목적에 의한 분류 백도어 하드웨어 및 펌웨어, 소프트웨어 등에 비정상적인 인증과정으로 원격에서 접근 가능한 악성코드로 비인가된 인증과정을 통해 원격으로 명령어 실행 및 보안프로그램 우회등의 재침입 경로로 활용
다운로더 시스템에 접근하여 권한을 획득한 후 추가 악성코드를 다운로드하는 목적으로 사용되는 악성코드
인포스틸러 시스템정보 및 뱅킹, 브라우저 등 감염된 시스템의 정보를 수집하는 악성코드
개인의 경우 정보 탈취 및 금전피해 유발, 국가 및 조직의 경우 민감정보 탈취가 주요 목적
랜섬웨어 파일이나 드라이브를 암호화해 복호화를 빌미로 금전을 요구하는 악성코드
초기에는 암호화 기능망 수행했으나 정보 탈취 및 DDoS등 다중협박 전략으로 피해자를 압학하여 협산금액을 높이는 형태로 발전
루트킷 관리자 권한인 루트 권한을 갖게하는 킷으로 프로세스나 레지스트키를 숨기거나 삭제할 수 없도록 하는 악성코드

 

     ■ 사이버 킬체인이란

        ○ 사이버 공격을 각 단계 별 위협 요소의 파악 및 공격 방법 정의 분석 모델

        ○ 공격 단계를 미리 예측해 공격 효율성을 낮추고 피해 최소화 목적

단계 단계 별 공격 행위
정찰 이메일 크롤링, SNS, 사회공학적 기법
-IP, 포트 스캔(nmap 등)
제작 악성코드 생성, Tojan 결합 등
-다양한 언어로 개발
전달 이메일, 웹, 터미널을 통한 악성코드 전파
-해킹메일(URL, 첨부파일), SSH 터널링(Putty)
취약점 공격 웹, OS, APP 취약점을 확인
-웹 프록시, Exploit Kit 이용
설치 악성 프로그램 설치
명령 & 제어 네트워크 통해 원격제어
행동 시스템 장악 후 목적 달성

 

     ■ 트로이 목마(Trojan)

        ○ 정상 프로그램이나 파일로 위장 후 보안망을 뚫고 사용자 시스템에 침투함

        ○ APT(Advanced Persistent Threat) 공격에 주로 사용함

        ○ ex) 정보 탈취, 시스템 암호화, 봇넷활용 등

 

     ■ 백도어

        ○ 정상적인 인증 우회하여 시스템 내부를 침투함

        ○ 공격자가 언제든지 시스템에 침투할 수 있도록 비밀 통로 개설 역할을 함

        ○ 로그를 남기지 않는 것이 특징

        ○ ex) 원격 접근, 자동 실행. 정보 유출, 백도어 악성코드를 이용한 원격제어

            ● 공격자가 웹사이트, 이메일 등 다양한 경로를 통해 정상 파일 위장 실행을 유도함

             피해자가 위장 파일 실행 시 PC가 악성코드에 감염됨

 

     ■ 에드웨어

        ○ 사용자의 동의없이 화면 내에 광고가 노출되는 행위

        ○ 광고를 게시해 수익을 얻는 것이 목적

        ○ 프로그램 설치과정에서 동의를 구한 후 자동으로 설치함

        ○ 앱 페이지 접속시에 상단 또는 하단에 광고 배너가 표시됨

 

     ■ 스파이웨어

        ○ 사용자의 동의없이 개인정보를 수집, 모니터링하는 행위로 특정대상을 타겟팅 후 은밀한 방식으로 악성코드를 설치

        ○ ex) 키보드 입력, 인터넷 사용기록, 신용카드 정보 등을 이메일, SNS 등의 경로를 통해서 설치유도

 

     ■ 랜섬웨어

        ○ 컴퓨토 파일을 암호화 후 금전적 보상을 요구하는 행위로 기기 취약점을 통해서 침투해 볼륨 쉐도우 카피 정보가 손상됨

        ○ ex) 전자메일, 문자, 웹사이트 등 다양한 수단을 사용함

 

     ■ 피싱

        ○ 사기메시지로 사용자를 속이는 행위로 경계심을 낮춘 후 개인정보 탈취 및 협박을 함

        ○ 전자메일, 문자, 웹사이트 등 다양한 수단을 사용함

 

     ■ 스피어피싱

        ○ 특정 대상을 정해서 사기 메시지로 사용자를 속이는 행위로 마찬가지로 다양한 수단을 사용함

        ○ 피싱과는 달리 특정한 대상을 타겟으로 함

 

     ■ 취약점 공격

        ○ 타겟장비가 가지고 있는 취약점으로 침투하는 행위

        ○  취약점 공격 성공 시 엑세스 확보 및 시스템 제어

        ○ ex) 시스템 제어, 원격 코드 실행, 추가 악성코드 삽입 등

 

 

악성코드 분석 방법론

 

     ■ 정적 분석 정의

        ○ 악성코드를 실행하지 않은 상태에서 분석

        ○ 헤더 정보와 내부 문자열, 실행 압축 여부, 등록 정보 등을 통해 동작 파악

        ○ 디스어셈블러를 이용해서 내부 코드와 구조를 확인 후 연관성을 파악함

 

     ■ 동적 분석 정의

        ○ 악성코드를 직접 실행하여 행위 관찰

        ○ 파일, 레지스터리, 네트워크 등 확인해서 동작 행위를 분석함

        ○ 디버깅을 통해 코드의 흐름과 메모리 상태를 직접 확인함

 

    ◎ 정적 분석

         ■ 컴파일 정보 확인

             ○ 악성코드의 개발언어를 확인함

             ○ 다양한 OS 환경에 맞춤형 실행파일로 익성코드를 제작함

             ○ 모든 파일에는 시그니처(=magic number)가 존재함

         ■ 실행압축(packing) 여부를 확인

             ○ 개발자 코드를 역으로 분석하지 못하게하기 위한 목적

             ○ 악성코드 ㅔ작자가 악성코드 분석을 방해하기휘해 자신만의 알고리즘으로 압축함 ex) UPX, VMProtect, Thimida

             ○ 분석가는 실행압축을 확인하고 오픈소스 등을 활용해 압축해제 후 분석함

         ■ 문자열(String) 확인

             ○ 악성코드 Binary를 ASCII로 변환시에 가독성있는 문자열을 확인

             ○ 어떤 행위를 할것인가에 대한 사전 예측 시 중요 단서가 될 수 있음

             ○ 최근 실행 압출, 프로텍터 등은 문자열 마저 보호되어 분석을 방해함

         ■ 파일 무결성 확인

             ○ 정상 파일로 위장한 악성코드인지 확인이 필요함

             ○ 암호화 알고리즘(MD5, SHA, AES, ...) 통해서 파일 고유 식별 정보를 확인함

             ○ 악성코드 Database 내 공통 식별하기 위해서 사용함

         ■ 지속성 유지 확인

             ○ 악성코드가 일회성인지 지속적으로 동작하는지 확인이 필요

             ○ 일반적으로 지속성 유지를 위한 행위를 내제하고 있음

             ○ Autoruns 통해서 시작프로그램, 작업스케줄러, 서비스 등 지속성 유지 행위를 확인 가능

 

          * PEStudio 활용

              - 윈도우 실행파일 전용 정적 분석 도구

              - 평판 사이트 결과, 문자열, hash 값, PE구조 등 정보 확인 가능

              - 윈도우 OS용 악성코드는 전세계의 약 65% 비중을 차지함

          * Thunderbird 활용

              - 메일 샘플링 후 공격자 정보, 악성코드 유포지, 악성파일 등 확인 가능

              - 전세계의 악성코드 약 80% 이상 전자메일 통해서 유포함

 

 

    ◎ 동적분석

         ■ 프로세스 변화 관찰

             ○ 모든 악성코드 행위에는 프로세스가 동작함

             ○ 시스템 내 발생하는 실시간 프로세스 변화에 대해 분석이 필요함

             ○ 부모와 자식 프로세스 연결고리, 코드 인젝션, 명령어 실행 등

                 * Process Explorer 도구 활용

         ■ 파일 시스템 변화 관찰

             ○ OS 내 현재 동작 중인 파일 상태 실시간으로 확인

             ○ 기존 파일 수정, 삭제 또는 파일 새로 생성 등

             ○ 악성코드 실행 후 파일 시스템 내 변화를 체크하는 것이 중요함

         ■ 레지스트리 변화 관찰

             ○ 시스템 레지스터리 조작해서 원하는 정보를 입력가능

             ○ 중요 레지스터리 삭제 후 보안 설정 우회 등 다양하게 활용이 가능함

             ○ 악성코드 주요 레지스터리 변경 여부 확인이 중요함

         ■ 네트워크의 변화 관찰

             ○ 최근 악성코드는 정보 수집 및 추가 파일 업로드 위해 네트워크를 이용

             ○ 공격자 서버(=C&C서버) 통신 실시간 확인이 필요함

             ○ 피해자 정보 외부 유출, 악성파일 추가 다운로드 등 네트워크 행위를 확인

                 * Process Monitor 도구 활용

         ■ API 실행변화 관찰

             ○ API(Application Programing Interface)는 응용프로그램 제어 가능 인터페이스 집합

             ○ 악성코드 실행될 때 사용되는 API함수가 확인 가능

             ○ 수많은 API 함수가 존재하고 기능 확인이 필요할시 MSDN에서 API함수 이름으로 조회함

 

    ◎ 역공학 분석

         ■ 저급언어(어셈블리어) 영역에서 악성코드를 역으로 분석하는 기법

         ■ 악성코드 기능을 상세히 분석해 확인이 가능

         ■ 역공학 분석 방지를 위해서 프로젝트, 패킹, 로더 등 다양한 분석으로 분석가를 방해함

 

 

 

분석환경 구성 및 도구 실습

     ■ 가상환경(Hyoervisor)의 이해

        ○ 소프트웨어로 실제 컴퓨터 환경처럼 이미지 파일 구성

        ○ 하드웨어 리소스를 적절히 분리해 하나의 OS에서 여러개의 OS 사용이 가능 (멀티부팅과는 다른개념)

        ○ 악성코드를 분석하기 위해 다양한 OS 환경 구축이 중요

     ■ 가상환경 구성

        ○ 호스트 PC내 가상 소프트웨어를 다운로드해 설치하고 OS를 버전별로 다양하게 설치함

        ○ 악성코드 구동이 가능한 취약한 환경을 구성

            ● OS패치 미적용 && 안티바이러스 미설치/윈도우 디펜더 기능을 해제

        ○ 분석가 입맛에 맞게 악성코드 분석도구를 세팅함

        ○ 모든 과정을 마치면 기본 스냅샷을 저장함

             악성코드 분석과정에서 실행전/중/후 모든 과정에서 스냅샷 습관들이기

 

악성코드 전파 과정

     ■ 전자메일을 통한 공격 과정 

        ○ 메일 서비스를 통해 메일 수신자에게 직/간접적인 피해를 유발함

        ○ 최근 사이버 공격 방식 중 가장 높은 비중을 차지

        ○ 사회공학적 기법을 이용한 API 공격임

        ○ 악성파일을 첨부해 악성코드 설치를 유도함 (매크로(워드), OLE기능(HWP), 실행파일(.exe) 등)

     ■ 홈페이지를 통한 공격과정

        ○ 사용자들이 자주 접속하는 웹페이지 내 악성코드를 삽입해 공격

        ○ 공격 대상자들이 자주 접속하는 홈페이지 내 악성코드를 삽입함

        ○ 정상 자바스크립트 라이브러리(iQuery)에 은밀히 C&C 서버 접속 코드를 삽입함

        ○ 피해자의 PC 내 정상 언어 프로그램 설치 후에 맞춤형 스크립트를 실행함

        ○ 최종적으로 키보드 입력, 브라우저 쿠키, PC의 IP정보 등 다양하게 정보 탈취

     ■ 공급망을 통한 공격 과정

        ○ 공급망(=패치 서버 등)에 침투 후 공격 대상자들에게 패치 위장 파일을 유포함 ex) 소프트웨어 개발 과정 오염, 코드 서명 인증서 탈취, ...

 

최근 악성코드 동향

     ■ 드롭퍼(Dropper) 공격방식

        ○ 실행파일 내에 악성코드가 포함되어 있는 공격 방식 (↔ Loader)

        ○ 내부에 악성코드가 압축된 형태로 되어있어 안티 바이러스 탐지가 어려움

        ○ 주로 동적 분석 과정에서 샘플링 후 분석이 가능함

     ■ 파일리스(Fileless) 공격방식

        ○ 안티 바이러스와 같은 보안 장비를 우회하기 위한 공격방식

        ○ 파일이나 흔적이 남아있지 않아서 분석이 어려움

        ○ 악성코드가 주로 메모리에 존재해 휘발성 데이터 수집 후 분석함

        ○ VB 스크립트 및 파워쉘 스크립트를 이용해 주로 공격함

        ○ 시작 프로그램, 작업스케줄러, 서비스 등록 등으로 지속성 유지가능함

     ■ 문서형 APT 공격방식

        ○ 악성코드 실행파일(.exe)가 아닌 문서파일(.hwp, .doc, .xlsx 등)로 유포함

        ○ 문서 내부 동작 매커니즘으로 악성코드가 동작하는 방식

        ○ 주로 악성코드를 불러오는 Loader 역할로 활용함

        ○ 최근 빠른 보안패치로 문서형 악성코드의 비중이 과거 대비 감소함

        ○ OLE 개체를 이용한 APT 공격은 여전히 활발하게 시도됨

 

 대응방안

     - 분석가는 악성코드 분석과정에서 확보한 IoC(Indicator of Compromise) 정보기반 탐지 및 차단 정책을 생성 후 유사 악성코드 추적 관찰함

         *IoC: 침해사고 원인분석 과정에서 확인된 IP, 도메인 및 악성파일에 대한 침해지표

     ■ 탐지패턴 생성

        ○ 분석과정에서 확인된 공격서버, 페이로드 등 행위를 확인함

        ○ 탐지 정책 생성 시 최대한 정밀하게 생성함 (오탐률 최소화)

        ○ Yara/Snort Rule 을 이용해 탐지정책을 생성함

     ■ 유해정보 차단

        ○ 분석과정에서 확인된 공격 서버, Hash정보를 차단함

        ○ 여러번 검증 후에 신중하게 차단정책을 생성함

        ○ 침해지표(IoC) 정보를 데이터베이스화해서 관리함

'시큐리티 아카데미' 카테고리의 다른 글

데이터베이스 이론  (0) 2024.07.25
리눅스 8  (2) 2024.07.22
리눅스 7  (0) 2024.07.19
리눅스 6  (0) 2024.07.19
리눅스 5  (0) 2024.07.18