악성코드(Malware)
- OS 속에서 악의적인 행위를 하는 프로그램 전체를 일컫는 말
악성코드 종류
행위에 의한 분류
- 바이러스 : 네트워크로 공유된 컴퓨터 프로그램이나 실행영역을 변형해 복제하는 프로그램
- 스파이웨어 : 사용자환경의 브라우저 정보, 시스템정보, 뱅킹정보 등을 탈취하는 악성코드
- 트로이목마 : 정상 프로그램으로 위장, 악의적인 공격코드의 실행을 유도하는 악성코드
- 웜 : 네트워크를 통해 전파되면서 자가복제를 통해 네트워크 트래픽에 영향을 미치는 악성코드
목적에 의한 분류
- 백도어
- 하드웨어 및 펌웨어, 소프트웨어 등에 비정상적인 인증과정으로 원격에서 접근 가능한 악성코드
- 비인가된 인증과정을 통해 원격으로 명령어 실행 및 보안 프로그램 우회 등 재침입의 경로로 활용
- 다운로더
- 시스템에 접근하여 권한을 획득 한 후 추가 악성코드를 다운로드하는 목적으로 사용되는 악성코드
- 시스템 접근과정에서 백신의 탐지 가능성을 낮추고 악성코드 설치율을 높이기 위한 방법으로 사용
- 인포스틸러
- 시스템 정보 및 뱅킹, 브라우저 등 감염된 시스템의 정보를 수집하는 악성코드
- 개인의 경우 정보탈취 및 금전피해 유발, 국가 및 조직의 경우 민간정보 탈취가 주요 목적
- 키로거
- 사용자가 입력한 키 값을 가로채서 행위의 기록을 탈취하는 악성코드
- 사용자가 직접 입력한 기록을 가져가기 떄문에 뱅킹정보와 같은 정보를 주로 목적으로 함
- 랜섬웨어
- 파일이나 드라이브를 암호화하여 복호화를 빌미로 금전을 요구하는 악성코드
- 초기에는 암호화 기능만 수행하였으나, 정보탈취 DDoS등 다중협박 전략으로 피해자를 압박해 협상금액을 높이는 형태로 발전
- 루트킷
- 관리자 권한인 루트 권한을 갖게하는 킷으로 프로세스나 레지스트리를 숨기거나 삭제할 수 없도록 하는 악성코드
사이버 킬체인(Cyber Kill Chain)
- 사이버 공격을 각 단계 별 위협 요소 파악 및 공격 방법 정의분석모델
- 공격 단계를 미리 예측하여 공격 효율성 낮추고 피해 최소화 목적
- 정찰
- 제작 (악성코드분석)
- 전달
- 취약점 공격
- 설치
- 명령&제어
- 행동
트로이목마
RAT (원격 접근 트로이목마) 악성코드
- 해커가 감염된 시스템에 원격으로 접근할 수 있게 해주는 악성코드입니다.
백도어(BackDoor)
- 백도어 악성코드를 이용한 원격 제어
- 공격자가 웹사이트, 이메일 등 다양한 경로를 통해 정상 파일 위장 실행 유도
- 피해자(Victim) 위장 파일 실행 시 PC 악성코드 감염
애드웨어(Advertisement + Software)
- 사용자 동의없이 화면 내 광고가 노출되는 행위
- 광고 게시하여 수익을 얻는 것이 목적
- 프로그램 설치 과정에서 동의를 구한 후 자동 설치
- 웹 페이지 접속 시 상단 또는 하단에 광고 배너가 표시
스파이웨어 (Spy +software)
- 사용자 동의없이 개인정보 수집 및 모니터링하는 행위
- 링크파일 악성코드 (바로가기 파일) 언제 어디서나 해당파일을 링크걸어서 다른경로에 있는 파일을 동작시키게 하는 것 - 링크파일 안에 악성코드를 삽입을 시킨다. 근데 악성코드만 삽입하는게 아니라 정상문서까지 같이 삽입을 시킨다.
스피어피싱
- 특정대상을 정하여 사기 메시지로 사용자를 속이는 행위
취약점 공격(Exploit)
- 타겟 장비가 가지고 있는 취약점으로 침투하는 행위
- 취약점 공격 성공 시 액세스 확보 및 시스템 제어
- 시스템 제어, 원격 코드 실행, 추가 악성코드 삽입 등
악성코드 분석 방법론
평판조회 사이트
- 전세계 백신 업체 엔진을 한 곳에 모아 확인 가능
- 악성코드 및 악성URL 업로드 시 스캔 엔진으로 결과 도출
악성코드 자동 분석 사이트 활용
- 샌드박스 플렛폼 (내가 분석하고자 하는 것에 대한 환경설정, 분석 기간에 대한 시간정보, 어떤 브라우저 및 응용프로그램을 사용할지 분석하는 설정 가능) 하는 것을 솔루션으로 제공하고있음
- 악성코드 및 악성URL 을 온라인환경에서 안전하게 실행
- 영역별로 상세한 스냅샷으로 구간별 악성코드 행위 확인 가능
- AnyRun
악의적인 프로그램 분석하는 방법
- 정적분석 : 악성코드로 의심되는 파일을 가상환경에서 실행하지 않고 분석하는법 ( 파일의속성정보, 컴파일정보, 문자열 정보)를 파악하는 초기 단계
- 동적분석 : 파악한 속성정보를 베이스로 동적으로 실행 → 분석
- 분석한 자료로 코드레벨(code reverse engineering) -코드 역공학 분석 -? 대화형 동적분석
- 파일분석 : 파일형태분석, API분석, String분석
- 증상분석 : 파일시스템분석, 프로세스↔쓰레드 (프로세스 관계), 레지스트리(윈도우의 DB) - 어떤식으로 벨류값을 쓰는지), 네트워크분석
- 정보분석
- 코드분석
- 패턴제작 : 예방대응책으로 스누투룰, 야라룰로 패턴을 제작 → 방화벽에서 차단, IPT 보안장비에 정보를 등록해서 예방
정적분석정의
- 악성코드를 실행하지 않은 상태에서 분석
- 헤더 정보와 내부 문자열, 실행 압축 여부, 등록 정보 등을 통하여 동작을 파악
- 디스어셈블러를 이용하여 내부 코드와 구조를 확인 후 연관성 파악
동적분석정의
- 악성코드를 직접 실행하여 행위 관찰
- 파일, 레지스트리, 네트워크 등을 확인하며 동작 행위 분석
- 디버깅을 통해 코드 흐름과 메모리 상태를 직접 확인
정적분석
- 컴파일 정보 확인 (어떤 언어로 컴파일이 되었는지 파악)
- 실행압축 여부 확인
- 문자열확인
- 파일 무결성 확인
- 지속성 유지 확인 Autoruns(악성코드 분석 또는 침해사고 분석에서 사용된다) → (Logon, services, scheduled tasks 확인)
- Thunderbird 활용
PEStudio 활용
- 윈도우 OS용 악성코드는 전세계 약 65% 비중 차지
Process Explorer 도구 인터페이스
CPU 사용률
PID (process ID) 해당 프로세스가 생성된 시점에서 부여받은 프로세스 고유 식별번호
Description
동적 분석
- 파일 시스템 변화 관찰(파일모니터를 통해서 관찰)
- 레지스트리 변화 관찰
- 네트워크 변화 관찰
process monitor 도구
홈페이지 통한 공격 과정
- 공공기관 정부처
# 서론
관제 2년 + 악성코드 분석
하나의 침해사고로 3개월 이상 악성코드 분석중
# 1. 정의 및 유형
## 1.1 악성코드란 무엇인가
- Malicious Software
- 악성 행위를 하는 SW
## 1.2 악성코드의 목적
- 최근들어 국가 안보 위협 악성코드 증가(80% 이상)
- 전세계 80% 이상 공격에서 이메일이 사용됩니다
## 1.3 피해 사례
- 다크사이드(러시아 해킹 그룹)의 송유관 해킹
## 1.4 악성코드 유형
- 행위에 의한 분류
- 바이러스
- 네트워크로 공유된 컴퓨터를 포함한 컴퓨터 프로그램이나 실행영역을 변형해 복제하는 프로그램
- 스파이웨어
- 사용자환경의 브라우저 정보, 시스템정보, 뱅킹정보 등을 탈취하는 악성코드
- 트로이목마
- 정상 프로그램으로 위장하여 악의적인 공격코드의 실행을 유도하는 악성코드
- 웜
- 네트워크를 통해 전파되면서 자가복제를 통해 네트워크 트래픽에 영향을 미치는 악성코드
- 목적에 의한 분류
- 백도어
- 하드웨어 및 펌웨어, 소프트웨어 등에 비정상적인 인증과정으로 원격에서 접근 가능한 악성코드(딥 문을 뚫어놓는다)
- 비인가된 인증과정을 통해 원격으로 명령어 실행 및 보안 프로그램 우회 등 재 침입의 경로로 활용
- 다운로더
- (네트워크를 통해 공격대상에 접근하여 다음 stage로 넘어가기 위해 추가적인 파일을 받는 행위를 총칭)
- 시스템에 접근하여 권한을 획득한 후 추가 악성코드를 다운로드하는 목적으로 사용되는 악성코드
- 시스템 접근과정에서 백신의 탐지 가능성을 낮추고 악성코드 설치율을 높이기 위한 방법을 사용
- 인포스틸러
- (최근 보안업체 분석보고서를 보면 대부분이 인포스틸러)
- (크롬, 브라우저의 인증정보 수집)
- 시스템 정보 및 뱅킹, 브라우저 등 감염된 시스템의 정보를 수집하는 악성코드
- 개인의 경우 정보 탈취및 금전피해 유발, 국가 및 조직의 경우 민간정보 탈취가 주요 목적
- 키로거
- (윈도우 API 함수를 탈취해서 입력값 탈취)
- 사용자가 입력한 키(key)값을 가로채서 행위의 기록(Log)를 탈취하는 악성코드
- 사용자가 직접 입력한 기록을 가져가기 때문에 뱅킹정보와 같은 정보를 주로 목적으로 함
- 랜섬웨어
- ( 최근에는 PC는 정상적으로 작동되게끔 중요파일만 암호화 )
- 파일이나 드라이브를 암호화하여 복호화를 빌미로 금전을 요구하는 악성코드
- 초기에는 암호화 기능만 수행하였으나, 정보탈취 및 DDos등 다중협박 전략으로 피해자를 압박해 협상금액을 높이는 형태로 발전
- 루트킷
- 관리자 권한인 루트(Root)권한을 갖게하는 킷(Kit)으로 프로세스나 레지스트키를 숨기거나 삭제할 수 없도록 하는 악성코드
### 사이버 킬체인(p9)
- Cyber Kill Chain
- 사이버 공격을 각 단계 별 위협 요소 파악 및 공격 방법 정의 분석 모델
- 공격 단계를 미리 예측하여 공격 효율성을 낮추고 피해 최소화 목적
#### 단계
- 정찰
- 제작
- 전달
- 취약점 공격
- 설치
- 명령&제어
- 행동
### 1.4 악성코드 유형
#### 트로이 목마(Trojan)
- 정상 프로그램이나 파일로 위장한 후, 보안망을 뚫고 사용자 시스템에 침투
- APT(Advanced Persistent threat) 공격에 주로 사용
#### 백도어(BackDoor)
- 정상적인 인증을 우회하여 시스템 내부에 침투
- 공격자가 언제든지 시스템에 침투할 수 있도록 비밀 통로 개설
- 로그를 남기지 않는 것이 특징
- 다양한 악의적 목적으로 사용
- Remote Access Tool(RAT)가 아직까지도 성행
- 굉장히 체계화되어 컴퓨터를 잘 모르는 일반인도 사용 가능
#### 애드웨어(Advertisement + software)
- 사용자 동의없이 화면 내 광고가 노출되는 행위
- 광고를 게시하여 수익을 얻는 것이 목적
- 프로그램 설치 과정에서 동의를 구한 후 자동 설치
#### 스파이웨어(Spy + Software)
- 사용자 동의없이 개인정보 수집 및 모니터링하는 행위
- 키보드 입력, 인터넷 사용기록, 신용카드 정보 등 다양하게 정보 수집
- 주로 특정 대상을 타게팅 후 은밀한 방식으로 악성코드 설치
- 이메일, 메신저, SNS 등 다양한 경로를 통해 설치 유도
![alt text](image.png)
- 링크파일(디코이 파일)
- 다른 경로에 있는 파일을 동작시키기 위한 파일
- 악성코드와 정상문서를 함께 삽입
- bin
- 디스크에 남아있어 탐지하기 쉬움
- 이를 최근에는 우회하고자 bin파일이 아닌 메모리에 바로 악성코드 적재하는 경향
#### 랜섬웨어(Ransom + Software)
- 컴퓨터 파일 암호화 후 금전적 보상 요구
- 기기 취약점을 통해 침투하여 볼륨 쉐도우 카피 정보 손상
- 볼륨 쉐도우 : 디지털 파일이나 데이터의 스냅샷
- for 복구, 복원
#### 피싱(Phishing)
- 사기 메시지로 사용자를 속이는 행위
- 전자 메일, 문자, SNS, 웹사이트 등 다양한 수단 사용
- (피싱 서버에 침투하여 피해 범위, 규모 확인 후 전파)
#### 스피어피싱(SpearPhishing)
- 특정 대상을 정하여 사기 메시지로 사용자를 속이는 행위
- 전자 메일, 문자, SNS, 웹사이트 등 다양한 수단 사용
- 지인 사칭, 답변 시 2차 메일로 첨부파일 위장 링크 삽입
#### 취약점 공격(Exploit)
- 타겟 장비가 가지고 있는 취약점으로 침투하는 행위
- 취약점 공격 성공 시 액세스 확보 및 시스템 제어
- 시스템 제어, 원격코드 실행, 추가 악성코드 삽입
- 모의해킹 공부는 CVE 취약점 분석 추천
![alt text](image-1.png)
# 2. 악성코드 분석 방법론
## 서론
### 평판 조회 사이트 활용
- Virustotal.com
- 로그남음, 유료회원에게 공유됨
- Hybrid-Analysis.com
- 100%는 아님, 해석 필요
### 악성코드 자동 분석 사이트 활용
- JoeSandbox, Any.Run
- 악성코드 및 악성URL을 온라인환경에서 안전하게 실행
- 영역별로 상세한 스냅샷으로 구간별 악성코드 행위 확인 가능
#### 프로세스
![alt text](image-2.png)
- 정적분석을 통해 개략적인 정보 파악 후 동적분석(간단분석)
- 이후 리버싱, 대화형 동적 분석을 통한 상세분석
## 2.1 정적 분석
### 2.1.1 컴파일 정보 확인
- Detect it Easy : 현업에서도 주로 사용되는 도구
![alt text](image-3.png)
- 모든 파일에는 시그니처(Magic Number)가 존재합니다
- 윈도우에서 실행가능한 파일은 4d 5a
- doc,xlxs,ppt 등 ms word형 파일은 pk(심볼)
- 압축 포맷은 지배 확장자를 따릅니다
- 매직넘버를 기반으로 파일 유형을 파악하고 다음단계를 진행합니다
### 2.1.2 실행압축(Packing) 여부 확인
- Packing : 개발자가 코드를 역으로 분석하지 못하게 하기 위한 목적
- 압축 알고리즘 : UPX, VMProtect, Thimida
- 악성코드에도 Packing을 적용하는 경우가 많습니다
- Detect It Easy 등 정적분석 도구를 사용해서 패킹 여부/ 패킹 알고리즘을 확인할 수 있습니다.
![alt text](image-4.png)
### 2.1.3 문자열(String)확인
![alt text](image-5.png)
- Compile된 파일 안에 hardcoding된 문자열들이 보이는 경우도 있습니다.(과거)
- 윈도우 API 함수도 보일 수 있습니다
### 2.1.4 파일 무결성 확인
- 암호화 알고리즘(MD5, SHA, AES 등) 통해 파일 고유 식별 정보 확인
- 윈도우 디렉터리에 존재해야 할 파일이 이상한 위치에 숨김파일로 존재할 경우 무결성 확인
#### 2.1.5 지속성 유지 확인
- 악성코드가 일회성인지, 지속적으로 동작하는지 확인 필요
- Autoruns : 프로그램
- syseternals : 분석도구를 개발했던 단체, 지금은 MS로 흡수되어 해당 프로그램 개발
- 악성코드의 경로를 확인할 수 있어 CERT에서 주로 사용합니다
-
#### 2.1.6 정적 분석 도구
- PEStudio(윈도우용)
- 악성코드의 65% 이상은 윈도우 악성코드
- 따라서 윈도우 악성코드 분석 도구도 많습니다
- PE 구조, 문자열, Hash 값 등 다양한 정보 확인 가능
![alt text](image-6.png)
- Thunderbird(모질라) 활용(또는 outlook my ms)
- .eml
- 메일을 pc에 저장하면 확장자가 eml
- eml 파일을 thunderbird로 동작시키면
- 공격자 정보, 유포지, 악성 파일 등 다양한 정보 확인 가능
- 전세계 악성코드 80% 이상 정자메일을 통해 유포
- 주소를 교묘하게 위장하는 방법도 많이 쓰임
- (0, O) / (rn, m)
## 2.2 동적 분석
### 2.2.1 프로세스 변화 관찰
- 모든 악성코드 행위에는 프로세스가 존재합니다
- 시스템 내 발생하는 실시간 프로세스 변화에 대한 분석이 필요합니다
- 부모, 자식 프로세스 연결 고리, 코드 인젝션, 명령어 실행 등
- Process Explorer : MS 제공 도구
- 작업관리자의 확장판
- 종료된 프로세스의 악성코드를 보려면
- Log 확인
- 실시간 관찰 용도이기에 Process Explorer은 로그 관찰 불가
- Process monitor
- 종료된 프로세스도 관찰 가능(흐릿하게 표시)
- Process Hacker
#### Process Explorer 도구 인터페이스
![alt text](image-7.png)
- dll 경로가 숨김/임시일 경우 악성코드 의심
![alt text](image-8.png)
- thread, TCP/IP, String 탭 주로 사용
#### Process monitor
- Process explorer을 실행하지 않고도 Process monitor로 대부분의 요소 관찰 가능
- 캐쉬의 리소스를 엄청나게 잡아먹는 단점이 있습니다.
- 때문에 악성 프로세스만 필터링을 통해 특정하여 관찰하는 경우가 많습니다
### 2.2.2 파일시스템 변화 관찰
- OS 내 현재 동작 중인 파일 상태 실시간 확인
- 악성코드 실행 후 파일시스템 내 변화를 체크하는 과정이 매우 중요
### 2.2.3 레지스트리 변화 관찰
- 지속성을 유지하기 위해 레지스트리를 변경하는 경우가 많습니다.
- 시스템 레지스트리 조작하여 원하는 정보 입력 가능
- 중요 레지스트리 삭제 후 보안 설정 우회 등 다양하게 활용
- 악성코드 주요 레지스트리 변경 확인 여부 중요
### 2.2.4 네트워크 변화 관찰
- 와이어샤크 : 분석 툴
- 패킷을 전부 stream으로 볼 수도 있고 inbound 패킷의 데이터 영역만 추출할 수도 있다는 장점이 있습니다.
- 최근 악성코드는 정보 수집 및 추가 파일 업로드를 위해 네트워크 이용
- 공격자 서버(C&C서버) 통신 실시간 확인 필요
#### Process Monitor 도구
- 프로세스의 레지스트리, 파일, 프로세스/쓰레드, 네트워크 동작 등을 실시간으로 캡처하는 프로그램
- 레지스트링 활동, 파일 시스템 활동, 네트워크 활동, 프로세스와 스레드 활동, 이벤트 프로파일링 등 모니터링 기능 지원
- 리소스를 굉장히 많이 사용하기에, 처음부터 사용하는 경우는 거의 없고 돋보기 아이콘을 통해 특정 프로세스 등으로 범위를 좁힌 후 사용합니다.
<hr>
![alt text](image-9.png)
- capture : 현재 상태 캡쳐
- autoscroll : 최근 활용한 프로세스 목록 이동
- clear : 프로세스 출력 내용 삭제
- Filter : 필터링
- Highlight : 강조할 프로세스 표시
- Include Process From Window : 모니터링할 프로그램 선택
- Find : 텍스트 검색
- Jump to Object : 레지스트리 이동
- 마지막 옵션정보 5개를 가장 많이 이용
- 기본적으로 모두 활성화되어있고 다시 클릭하면 비활성화
<hr>
- Tools > Process Tree
- 종료되거나 은닉된 프로세스 정보까지 확인 가능
- Options > Enable Boot Logging
- 윈도우 부팅 로그 작성
- 시스템 재부팅 -> Process Moniter 실행 전까지 로그를 생성하여 분석 가능
### 2.2.5 API 실행 변화 관찰
- 관제에서는 다루지 않지만 분석가가 수행
- 악성코드가 실행될 때 사용되는 API 함수 확인 가능
- MSDN에서 API 함수 조회 가능
## 역공학 분석, Reverse Engineering
- (보안관제 분야는 아닙니다)
- 악성코드 분석, CERT 영역
- 정적분석과 동적분석으로도 명확한 행위를 특정하기 어려울 때 수행
- 악성코드 기능을 상세하게 분석하여 확인 가능
- 리버싱 방지를 위해 프로텍트, 패킹, 로더 등 다양한 방법으로 분석가 방해
- 저급(어셈블리) 언어 영역에서 악성코드를 역으로 분석하는 기법
## 2.3 고급 동적 분석
## 2.4 고급 정적 분석
<hr>
# 3. 분석 환경 구성 및 도구 실습
- 가상머신과 host간의 공유폴더 절대 금지
- 측면 공격을 통해 침투 가능
- 악성코드 중 실행환경을 식별(가상환경)하는 (vmware process) 경우가 많습니다.
- 이를 우회하기 위한 여러 방법 중 하나로
- code reversing에서 분기문을 조작하여 우회
- 또는 processs명 변경(vmware process)
- registry를 통한 식별도 가능
-
## 3.1 가상환경(Hypervisor) 이해
## 3.2 가상환경 구성
- 요약 : 스냅샷 습관화
- 여건이 된다면 최대한 다양한 환경 구축 권장
- 고객이 요구하는 파일을 분석할 수 있는 환경
- 악성코드 구동이 가능한(취약한) 환경 구성
- 스냅샷을 통해 취약한 버전 사용
- OS 패치 미적용
- 안티바이러스 미설치, 윈도우 디팬더 기능 해제
- 모든 과정을 마치면 기본 스냅샷 저장 필수
- 악성코드 분석 과정에서 실행전, 실행중, 실행후 모든 과정에서 스냅샷 필수
- 최대한 시간을 절약하기 위한 방법
- 필드에 가면 시간이 여유롭지 않음
## 3.3 분석 도구 실습
<hr>
## 4 악성코드 전파 과정
### 4.1 전자메일 통한 공격 과정
- 악성파일 첨부 : 매크로(워드), OLE 기능(HWP), 실행파일 등을 첨부하여 악성코드 설치 유도
- 압출파일도 암호만 없다면 sandbox에서 분석 가능
- 악성파일의 암호
- 보안 솔루션 우회
- 사용자의 경계심을 낮추기 위해
### 4.2 홈페이지 통한 공격 과정
- 워터링홀 공격, p58
- 홈페이지가 물웅덩이가 되어 찾아오는 모든 사람을 감염
- 사용자들이 자주 접속하는 웹페이지 내 악성코드를 삽입하여 공격
-
### 4.3 공급망 통한 공격 과정
# 사담
- 보안관제 직원이 차단 ip주소를 실수로 0.0.0.0으로 설정하여 PM, 사수 중징계, 해당 직원 경징계
- 1인관제는 없다시피 하고, 보통 사수 부사수 2인 1조
- 호흡이 중요함
- 최근은 자동화된 보안관제 시스템이 도입을 시작하는 단계
- 쏘아
- playbook
- scanning성 공격(sql 인젝션) 인지해서 방화벽까지 자동 차단하는 솔루션
## 분석 순서
- 분석 환경, 인프라는 팀, 프로젝트마다 제각각
- 반드시 정적분석 - 동적분석 순서를 지키지 않는 경우도 많습니다.
- 융통성 있게 분석
## 관제
- 관제를 하지 네트워크 트래픽 안에 유입된 악성코드를 분석까지 하는 사람은 거의 없음
- 각 사이트마다 특징이 있기에 트래픽, apt, 어떤 파일이 유입되었는지 등 솔루션이 다양합니다
- 악성코드 분석은 apt장비와 관련이 깊습니다
- apt 장비에서 alert 발생하면
- 가상환경에서 정적, 동적분석
- apt 장비에서도 어느정도의 분석이 수행