본문 바로가기
(실기) 정보보안기사&산업기사

침해사고 유형별 시나리오 6~10

by 뭔가해보겠습니다 2024. 4. 10.

공격 시나리오
가) 공격자는 경유지와 중계지로 사용할 웹서버를 확보하기 위해서 웹서버 취약점 스캔을 통해 취약한 웹서버(ex 파일 업로드 취약점)를 찾아, 서버 해킹 및 악성 스크립트 삽입(웹쉘, 악성 자바스크립트 삽입)
- 웹쉘은 웹서버 내 임의의 시스템 명령을 실행할 수 있는 서버 스크립트 파일
나) 공격자는 웹쉘을 통해 웹서버 기본페이지와 중계지 웹서버의 기본페이지를 변조해 악성 스크립트 삽입 구문을 추가
(디페이스Deface 공격 : 웹 사이트 화면을 해커가 원하는 화면으로 바꾸고 해킹 성공을 알리는 공격)
다) 공격자는 웹서버에 운영체제 명령 실행 취약점이 있음을 알고, 자신의 접근 흔적을 지우기 위해 웹서버의 액세스 로그 삭제 시도
ex 127.0.0.1.0 ; rm -rf /var/log/httpd/access_log
(복습
복수명령어 실행가능한 기호들 ; && || | )
라) 공격자는 유포지에 접속한 사용자의 브라우저 취약점을 이용해 익스플로잇을 수행, 리버스 쉘을 획득한다
마) 공격자는 웹서버에 삽입한 악성스크립트 파일을 통해 사용자 쿠키 정보를 탈취에 공격자 웹서버에 저장

(이러한 공격 흔적들은 IECacheView(브라우저 캐시 기록=템퍼러리 인터넷 기록), Burp 등으로 동적 분석 가능)

window 기준으로 netstat에서 pid 표기는 -o 옵션이다. (리눅스는 -p임)

 

 

침해사고 6 end --

 

 

분석 시나리오
가) 보안담당자는 kisa로부터 웹서버가 악성코드 경유지/중계지로 사용되고 있다는 연락을 받고 웹서버를 점검하여 액세스 로그를 통해 다음과 같은 사실을 확인
- 게시판을 통해 파일 업로드 발생 확인, post 방식이므로 액세스 로그를 통해서는 확인 불가
- referer 항목을 통해 특정 페이지가 호출되었음을 알 수 있고, 응답상태코드를 통해 정상처리 200 ok 확인
- 첨부파일로 허용되지 않는 웹쉘로 의심되는 php 파일이 호출되고 정상처리 200 확인
- 보안 담당자는 웹쉘의심 php 파일을 직접 호출한 결과 웹쉘 파일로 확인
- 게시판 업로드 취약점이 존재한다는 사실 확인 후 게시판 임시 폐쇄 후 즉시 보안조치 하도록 가이드
(가이드1 : 업로드 파일명 확장자에 대한 적절한 필터링을 통해 악성 스크립트 파일 업로드 차단
가이드2 : 업로드 파일 저장 전용 디렉터리를 별도 생성한 후, 웹서버 설정을 통해 실행 설정을 제거하고, 악성 스크립트 파일이 실행되지 않도록 함)
- 파일 업로드 이후 평소 보이지 않던 자바스크립트 파일이 호출되었고 정상응답 200 확인
- 웹쉘 및 악성 스크립트 파일 업로드를 수행한 것으로 의심되는 ip를 통해 ping 테스트 페이지 파라미터를 통해 ; rm -rf /var/log/httpd/access_log 명령어가 전달된 것 확인 (액세스 로그 삭제를 시도한 것으로 판단됨, 명령어 자체는 권한 문제로 실행되지 못함) 하고 보안조치 가이드함
- 가이드 1 : 사용자 입력값에 운영체제 명령어를 실행할 수 있는 문자를 필터링하여 차단
- 가이드 2 : 운영체제 명령어를 사용해야 한다면, 허용 가능한 명령어 리스트를 선정하여 해당 명령어만 실행하도록 설정

(짤막 복습 : httpd.conf의 User와 Group은 root로 두면 위험하므로 다른 서버 관리자로 변경해주어야 한다. root와 서버관리자를 별도로 분리하여 침해사고의 피해를 줄이기 위함
서버관리자계정은 로그인이 불가능하도록 /etc/passwd 로그인쉘을 /sbin/nologin 또는 /bin/false 로 변경)


나) 보안 담당자는 악성 스크립트로 의심되는 신규 자바스크립트 파일을 분석한 결과 다른 사이트로 몰래 이동하기 위핸 iframe 태그가 포함되어 있는 것을 확인
- 난독화된 코드는 unesacpe()로 디코딩됨

다) 보안 담당자는 악성 스크립트로 의심되는 신규 자바스크립트 파일을 분석한 결과 사용자 쿠키 정보를 탈취해 공격자 웹서버로 전달하는 코드가 포함된 것을 확인
- 공격자는 Image 객체를 생성할 때 이미지 소스 주소를 공격자 웹서버 주소로 설정하고 document.cookie 전달
(encodeURI() : 특수목적 예약문자는 제외하고 인코딩, encodeURIComponent() : 특수목적 예약문자도 포함해서 인코딩)

라) 보안 담당자는 악성 자바스크립트 파일을 사용하고 있는 페이지를 조사한 결과 기본 페이지가 변조되어 스크립트 삽입된것을 확인
- stat index.php 명령어 사용, Modify time으로 수정된 것 확인

마) 보안 담당자는 웹서버가 DBD(Drive by Download) 공격을 위한 경유지/중계지로 사용된 것으로 최종판단. 분석을 위해 가상의 이용자 환경을 구축한 후 동적 분석을 수행하여 다음과 같은 사실 확인
- 최초 접속지(경유지), 중계지, 유포지 주소 (referer 헤더 필드를 사용해 접근 경로 확인)
- IECacheView 툴을 이용해 브라우저 캐시 (임시 인터넷 파일) 정보 확인
- 임시 파일의 유형 (인터넷 접근 흔적)
1) 임시 인터넷 객체 (Downloaded Program Files)
2) 임시 인터넷 파일(캐시) (Temporay Internet Files)
3) 열어본 페이지(히스토리)
4) 임시 쿠키 파일

- IE9 까지는 캐시를 각각의 Index.dat에 저장하였으나, IE10 부터는 웹 캐시 파일인 WebCacheV##.dat 파일에 저장됨

 

침해사고 7 END --

 

 

악성코드 행위 분석 시나리오
개요
1) 희생자가 유포지에 접근
2) 익스플로잇 수행, 악성코드 설치
3) 파일 생성 (Drop. dropper 유형. 압축, 암호화된 상태. 동작하면 악성파일(코드)을 생성해냄)
4) 공격자 서버와 리버스 쉘이 연결됨
5) 프로세스 은닉 및 지속적 실행을 위한 작업 수행

(dropper 유형 : 동작할 때 악성파일을 생성해냄 (인젝터 : 파일이 아니라, 메모리상에 직접 악성 코드 생성)
downloader 유형 : 외부에 접속해서 악성코드를 다운로드 받음)

 

(공격자의 목적
악성코드의 지속성 유지 (자동 실행 등록, 스케줄러 등)
방화벽 우회 및 은닉 (방화벽 기능 비활성화, 숨김파일 등)
파밍용 호스트 파일 변조(hosts 및 hosts.ics 파일 변조))

 

 

관련지식 악성코드 이해하기
개요
악성코드란 악성행위를 위해 개발된, 컴퓨터에서 동작하는 모든 소프트웨어
- 복합적인 형태로 진화

기능과 목적에 따른 악성코드 분류
1) 다운로더Downloader : 악성코드에서 지정한 외부 주소에 접속해 추가 악성코드를 다운로드하여 실행시키는 악성코드
2) 드롭퍼Dropper : 자신 내부에 포함되어 있는 데이터를 이용해 악성코드를 생성해낸다
인젝터Injecter : 드롭퍼의 특수형태로, 바로 새로운 프로세스를 생성해 메모리에 상주시키는 형태의 악성코드
3) 키로거Keylogger : 컴퓨터가 입력하는 정보를 기록. 키보드 메시지를 가로채서 기록
4) 백도어 : 특정 포트를 열어두어 정상적인 인증없이 원격접속을 통해 직접 조작하는 형태
5) 트로이목마 : 정상적인 소프트웨어의 형태를 띠지만 악의적 행위를 포함하고 있는 악성코드
6) 랜섬웨어Ransomware : 사용자 파일을 암호화시켜 일정시간 안에 일정금액을 지불하면 암호를 풀어주는 방식. 금전적요구.
7) 에드웨어Adware : 상업용 광고 목적으로 만들어진 악성코드
8) 스파이웨어Spyware : 사전동의 없이 설치되어 정보를 수집하는 악성코드
9) 바이러스Virus : 정상적인 파일이나 시스템 영역에 침입해 그곳에 자신의 코드를 삽입하거나 설치하는 프로그램.

10) 웜Worm : 자기 자신을 레지스트리에 등록하거나 복사본을 생성해 전파하는 등 독자적으로 실행되는 악성코드
11) 루트킷 : 악의적인 행동을 하는 프로그램을 숨기기 위한 목적으로 시작된 악성코드. 악성 프로세스나 파일 등의 흔적을 사용자가 볼 수 없도록 은닉시키는 프로그램.
12) 부트킷 : 부팅영역인 MBR을 조작하는 프로그램을 칭하는 이름. 파괴형 부트킷, 은신형 부트킷으로 나뉨.

 

 

악성코드 분석을 위한 언패킹Unpacking
패킹은 실행파일의 크기를 줄이고 내부 코드와 리소스를 감추기 위해 암축 또는 암호화하는 기법
- 언패킹은 패킹된 실행파일을 푸는 것
- 배포를 쉽게 하고 암호화를 통해 소스코드가 분석되는 것을 방지하기 위함. 리버스 엔지니어링을 방지.

 

 

악성코드 분석 방법
1) 정적분석Static
- 디버거와 디스어셈블러를 이용해 실제 악성코드를 직접 실행하지 않고 디버깅 및 코드를 분석하는 방법
- ex 아이다, 올리디버거 등의 도구
- 컨트롤플로우(제어흐름)와 데이터플로우(데이터흐름)을 통해 악성행위 분석

2) 동적분석Dynamic
- 악성코드를 제한된 실행 환경(샌드박스)내에서 직접 실행해봄으로써 동작 과정 및 시스템 내에서의 행위를 모니터링하여 분석하는 방법

 

 

관련지식 윈도우 PE파일 이해하기

개요
- 실행파일Executable File이란 명령에 따라 지시된 작업을 수행하도록 하는 파일
PE(Portable Executable)파일은 윈도우 운영체제에서 사용하고 있는 실행파일 포맷. 파일의 첫 부분에 여러 구조체로 구성되어 있다
(리눅스의 실행파일 포맷은 ELF)
- PE 파일은 유닉스에서 사용되는 COFF를 기반으로 마이크로 소프트에서 만든 파일 구조. 윈도우 운영체제가 돌아가는 환경이면 어디서든 실행 가능
- PE 파일 유형 : 실행파일(EXE, SCR), 라이브러리(DLL, OCX), 드라이버(SYS), 오브젝트파일(OBJ)

 

PE 파일 구조
- PE 헤더, 섹션 헤더, 섹션

PE 파일 섹션 구조
- 섹션 헤더는 각 섹션 데이터를 메모리에 로딩하고 속성을 설정하는 필요한 정보를 담는다
- 섹션은 PE파일이 가상 주소 공간에 로드된 이후 프로그램 실행 코드, 데이터, 리소스 등 프로그램 실행에 필요한 정보를 배치한 영역
섹션별 유형

코드 .text 프로그램 실행 코드를 담은 섹션
데이터 .data 읽고 쓰기가 가능한 데이터 섹션, 전역변수, 정적변수
.rdata 읽기 전용 데이터 섹션, 상수형 변수, 문자열 상수
.bss 초기화 되지 않은 전역변수
import API .idata import할 DLL과 그 API/함수들에 대한 정보를 담은 섹션. 대표적으로 IAT
.didat 지연로딩 import 데이터
eport API .edata 익스포트할 DLL과 API/함수에 대한 정보를 담고 있는 섹션
리소스 .rsrc 다이얼로그, 아이콘, 커서 등 윈도우 어플리케이션 리소스 관련 데이터
재배치 정보 .reloc 실행파일에 대한 기본 재배치 정보를 담고 있는 섹션

 

 

 

침해사고 8 END --

 

 

관련지식 윈도우 레지스트리Registry 이해하기
개요
윈도우 레지스트리는 윈도우 시스템이 운영되는데 필요한 정보를 담고 있다. 시스템의 거의 모든 정보를 담고 있어 사고분석에 있어 공격자의 중요한 흔적을 찾을 수 있다
레지스트리는 키와 값으로 구성되어 있다. 최상위루트키RootKey와 하위 서브키로 구성. 값은 이름, 데이터 유형, 데이터로 구성됨.
하이브Hive 파일은 레지스트리 정보를 저장하고 있는 물리적인 파일. 오프라인 상태에서 비활성 시스템(포렌식 복제 드라이브 등)에서 레지스트리를 분석할 때 활용

(\SYSTEMROOT\system32\config\SAM, ~config\SECURITY, ~config\SOFTWARE 등...)
- 레지스트리는 부팅시 하이브 파일에서 값을 읽어들여 구성된다. 하이브 파일에서 직접 읽어들여 구성되는 키를 Master Key라고 하고 MasterKey로부터 구성된 키를 Derived Key 라고함

  - Master Key (HKEY_LOCAL_MACHINE, ...)
  - Derived Key (HKEY_CURRENT_USER, ...)
- 온라인 상태 시스템에서 레지스트리 정보를 조회하려면 regedit 명령을 이용해 메모리상에 있는 레지스트리 자료구조 정보를 보여주고 관리할 수 있다

(개별사용자 프로파일을 담은 하이브파일 : NTUSER.dat)

 

최상위 루트키 종류

1) HKCR (HKEY_CLASS_ROOT)
파일 확장자와 확장자에 대한 연결 프로그램 정보

2) HKCU (HKEY_CURRENT_USER)
현재 로그인중인 사용자의 환경설정/프로파일정보

3) HKLM (HKEY_LOCAL_MACHINE)
시스템 전체에 적용되는 하드웨어와 응용프로그램 설정 데이터

4) HKU (HKEY_USERS)
- 각 사용자별로 키 항목 생성하여 프로파일 정보 저장, ntuser.dat 파일을 로드하여 생성됨

5) HKCC (HKEY_CURRENT_CONFIG)
사용중인 윈도우의 하드웨어 프로필 정보

 

 

 

시작 프로그램에 악성코드 등록 (Window XP)
1) 윈도우 시작 시 동작하는 시작 프로그램에 악성코드 등록

예시
KEY   : HKEY_LOCAL_MACHINE\SOFTWARE\Micresoft\Windows\CurrentVersion\Run
Value : "AgentUpdate"="c:\\windows\\system32\\exp1orer.exe"

=> explorer로 보이게 하려고 비슷한 이름을 사용

 

2) 현재 사용자 로그인시 동작하는 시작 프로그램에 악성코드 등록

예시
KEY   : HKEY_CURRENT_USERS\SOFTWARE\Micresoft\Windows\CurrentVersion\Run
Value : "AgentUpdate"= "c:\\windows\\system32\\exp1orer.exe"

 

3) 모든사용자 윈도우 로그인시 동작하는 시작 프로그램에 악성코드 등록

예시
KEY   : HKEY_LOCAL_MACHINE\SOFTWARE\Micresoft\Windows NT\CurrentVersion\Winlogon
Value : "Userinit"="C:\Windows\system32\userinit.exe,c:\\windows\\system32\\exp1orer.exe"

 

 

 

 

서비스 자동 실행에 악성코드 등록

 

cmd

sc create "Agent" binpath="c:\windows\system32\exp1orer.exe" ... start=auto obj=NT ... 하략
sc.exe는 서비스 컨트롤러로 윈도우에 내장된 명령어

 

KEY : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Agent

Value : ... "Start"=dword:00000002 ...

 

=> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services는 제어판 서비스를 의미한다

start auto는 2과 동일한 값

위 서비스는 제어판 서비스에 자동 실행으로 악성코드를 등록한 것을 의미한다

 

 

 

윈도우 탐색기 디렉터리 Context Menu (마우스 우클릭 메뉴)에 악성코드 등록
KEY : HKEY_CLASSES_ROOT\Directory\shell\CommandPrompt\command
Value : @="c:\\windows\\system32\\exp1orer.exe"

- 값 이름이 비어있는 경우 @로 표기한다

(교재는 CommandPrompt인데 regedit으로 열어본 윈도우에선 cmd 폴더이긴 했다)

 

 

특정 확장자 실행시 악성코드 자동실행
KEY : HKEY_LOCAL_MACHINE\SOFTWARE\Classes\batifile\shell\open\command

KEY : HKEY_LOCAL_MACHINE\SOFTWARE\Classes\comifile\shell\open\command

KEY : HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\shell\open\command
Value : @="c:\\windows\\system32\\exp1orer.exe \"%1\" %*"

batfile, comfile, exefile 파일 실행시 악성코드 자동 실행

 

 

 

윈도우 방화벽 우회설정
1) 윈도우 방화벽 기능 비활성화

KEY: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
Value: "EnableFirewall"=dword:00000000

0은 비활성화, 1은 활성화를 의미

 

 

2) 윈도우 방화벽에 악성코드 예외 허용
KEY: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplication\List
Value: "c:\\windows\\system32\\exp1orer.exe"="c:\\windows\\system32\\exp1orer.exe:*:Enabled:악성코드Agent"

Disabled 설정은 비허용

 

 

3) 윈도우 방화벽에 악성코드가 사용하는 특정 포트 오픈 예외 허용
KEY: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List
Value: "4322:TCP"="4322:TCP:*:Enabled:악성코드Agent"

Disabled 설정은 비허용

 

 

폴더 옵션 > 숨김 파일 및 폴더 표시
KEY :  HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
Value : "Hidden"=dword:00000002 또는 00000000
=> Hidden값을 0 또는 2로 설정시 표시안함

 

모든 사용자의 폴더 옵션을 숨김 파일 및 폴더 옵션을 표시(1)로 변경할 수 없도록 설정
KEY :  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL
Value : "CheckedValue"=dword:00000000
=> CheckedValue 값을 0으로 설정하면 다른 사용자들이 폴더옵션 숨기기 체크 설정을 해제할 수 없다

폴더 옵션 > 보호된 운영체제 파일 숨기기
KEY :  HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
Value : "ShowSuperHidden"=dword:00000000
=> ShowSuperHidden 값을 0으로 설정하면 숨긴다는 의미

 

모든 사용자의 폴더 옵션을 보호된 운영체제 파일 숨기기 옵션을 표시(1)로 변경할 수 없도록 설정
KEY :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden
Value : "UnCheckedValue"=dword:00000000
=> UnCheckedValue 값을 0으로 설정하면 다른 사용자들이 보호된 운영체제 파일 숨기기 옵션 설정을 해제할 수 없다

 

 

 

숨김파일폴더표시
: HKEY_CURRENT_USER, Explored\AdvancedHidden(0, 2)
모든사용자
: HKEY_LOCAL_MACHINE, Hidden\SHOWALLCheckedValue

 


보호된운영체제파일
: HKEY_CURRENT_USER, Explored\AdvancedShowSuperHidden(0)
모든사용자
: HKEY_LOCAL_MACHINE, SuperHiddenUncheckedValue(0)

 

 

침해사고 9 end --

 

 

분석 시나리오
가) 보안 담당자는 특정사이트 접속시 파밍 사이트로 접속된다는 신고를 접수함

나) 특성사이트 접속 전후의 시스템 변경내역을 추적하기 위해 가상의 이용자 환경을 구축해 분석툴을 이용해 동적분석 수행
- 사용툴 예시 : Winalyais(스냅샷, 레지스트리/스케줄러 비교 등), TCPView, Autoruns(레지스트리, 스케줄러, 서비스 등 확인), Process Explorer(계층구조)
- 파일 시스템 변경 내역
ex) dropper.exe(악성코드 생성), hosts.ics(정보 파밍형 악성코드), attack.job(윈도우 스케줄러 설정)
- 레지스트리 변경 내역

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
-> 윈도우 시작 프로그램에 악성코드 등록
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
-> 현재 사용자 로그인시 시작프로그램에 악성코드 등록
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Winlogon
-> 모든 사용자가 로그인시 시작 프로그램에 악성코드 등록
HKEY_LOCAL_MACHINESYSTEM\CurrentControlSet\Services\Agent / Value : Start:2
-> 제어판 서비스 자동 실행에 악성코드 등록
HKEY_CLASSES_ROOT\Directory\shell\CommandPrompt\command
-> 마우스 우클릭 메뉴에 CommandPrompt 메뉴 추가하고 악성코드 등록
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\batfile\shell\open\command
-> 배치파일 실행시 악성코드 실행 등록
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
-> 방화벽 비활성화
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplication\List
-> 방화벽 예외 허용 프로그램으로 등록
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List
-> 방화벽 특정 포트 예외로 허용
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
-> 현재사용자에 대해 폴더옵션 - 숨김파일 보이지 않기
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL
-> 모든 사용자가 숨김파일 보이게 변경할 수 없음
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
-> 현재사용자에 대해 보호된 운영체제 파일 숨기기 설정
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden
-> 모든 사용자가 보호된 운영체제 파일을 보이게 변경할 수 없음


- 작업 스케줄러 변경내역
로그파일 : C:\Windows\SchedLgU.Txt
윈도우 내장 명령인 schtasks 를 이용해 스케줄러를 관리함 (TR이 파일경로)

-네트워크 연결 상태 변경 내역
(윈도우 기준) netstat -ano -p tcp 명령어로 악성사이트와 연결된 PID 번호 확인
tasklist /FI "pid eq 1234" 명령어로 해당 pid로 필터하여 프로세스 확인

 

 

침해사고 10 end --