포렌식 데이터 원격 수집 방법 – PSEXEC, FSP와 FRUC

앞서서 공유한 글을 통해 로컬에서 수집하는 방법을 소개하였다.

글 … 참조

이번에는 원격 수집 방법에 대해 알아 보자.

원격지 수집은 네트워크에 분석 머신을 연결한후 해당 분석머신으로 데이터를 전송하는 것 별도의 툴을 사용하거나, 윈도우에서 제공하는 SMB(Server Message Block)를 이용해 전송 혹은 별도의 네트워크 프로토콜을 이용해 분석 머신으로 손쉽게 데이터를 수집할 수 있을 것이다. WMI를 이용해 원격지에서 명령을 내린 후 정보를 수집 할 수 있다.

네트워크를 이용하여 분석을 진행하는 방법은, 로컬 보다 접근이 수월하고, 수집 정보를 원본머신에서 손쉽게 이동이 가능하다는 장점이 있으므로, 실제 많이 사용된다.

그럼 Psexec를 이용한 방법과 FSP(Forensic Server Project)을 이용한 방법에 대해 알아보도록 하자.

원격으로 수집하는 방법은 다량의 머신의 데이터를 수집하거나, 자동화를 통해서 문제 발생시 자동적으로 수집하도록 구성하고자 할 때 유용하게 이용할 수 있다.

먼저 수집해야 하는 데이터에 대해서 앞서 공유하였지만, 중요한 항목이기 때문에 다시 기입하겠다.

 

기준

수집 정보

이용 명령/도구

기본

컴퓨터 이름, 시스템 정보

Hostname, Psinfo

환경 변수 설정 정보

Set

계정 정보

Wmic useraccount

로그온 세션

Psloggedon

예약된 작업

Cchtasks /query, at

공유 리스트

Wmic share list

공유 연결 정보

Net use

네트워크 설정 정보

Ipconfig

네트워크로 연결된 세션

Tcpvcon

DNS 설정

Type c:\windows\system32\drivers\etc\hosts

ARP 정보

Arp

라우트 테이블 정보

Route print

자동실행 리스트

Autorunsc –a

시스템 파일 시그니처 확인

Sigcheck –u –e c:\windows\system32

인터넷 브라우저 주소 입력

Reg query “HKCU\SOFTWARE\MICROSOFT\Internet Explorer\TypedURLs” /s

1단계

레지스트리, 이벤트 로그

Hobocopy C:\WINDOWS\system32\config\*

사용 Dll 리스트

Listdlls

사용 핸들 리스트

Handle –a –u

최근 접근 파일

Afind –d 1 c:

인터넷 브라우저 히스토리

Xcopy “c:\Documents and Settings\%Username%\Local Settings\History\*”

사용한 실행 파일 정보

dir %windir%\prefetch\*.pf /b /s | pf –m

2단계

메모리 덤프

Mdd 

ADS 파일

Streams –s c:\

디스크 덤프

dd 

[내용] 사전에 수집하고자 하는 정보 리스트를 만들어 두는 것이 좋다

 

이제 원격으로 어떻게 수집하는지에 대해 알아보도록 하자.

 

Psexec

Sysinternals에서 개발한 Psexec툴은 원래 목적은 WMI를 이용하여 원격지에 있는 머신을 관리하는 것을 목적으로 개발되었다.

이 툴은 사용이 간편하고, 운영체제가 기본으로 제공하는 기능을 이용하는 만큼, 많은 조작없이 사용할 수 있다.

단지 원격지에서 관리하고자 하는 머신의 %Systemroot%\system32\ 디렉토리에 Psexec를 복사해 주면된다.(물론 WMI를 사용하므로, 1장 관리에서 진행하였던 오류부분에 대해 해결하여야 한다.)

Psexec의 사용방법은 다음과 같다.

 

PsExec \\원격지컴퓨터 -u 원격지컴퓨터의사용자ID -p 사용자ID의암호 명령어

[내용] Psexec를 이용한 명령 사용 방식

 

원격지 컴퓨터의 netstat를 보고싶다면 다음과 같이 입력하면된다.

 

C:\>PsExec.exe \\10.0.2.17 –u test –p 1234 netstat –ano

 

PsExec v1.98 – Execute processes remotely

Copyright (C) 2001-2010 Mark Russinovich

Sysinternals – www.sysinternals.com

 

 

 

Active Connections

 

Proto Local Address Foreign Address State PID

TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1660

TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 820

TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4

TCP 0.0.0.0:1026 0.0.0.0:0 LISTENING 508

TCP 0.0.0.0:3306 0.0.0.0:0 LISTENING 1488

TCP 0.0.0.0:10000 0.0.0.0:0 LISTENING 3208

TCP 10.0.2.17:139 0.0.0.0:0 LISTENING 4

TCP 10.0.2.17:445 10.0.2.16:1072 ESTABLISHED 4

TCP 10.0.2.17:1143 10.0.2.16:8080 ESTABLISHED 996

UDP 0.0.0.0:445 *:* 4

UDP 0.0.0.0:500 *:* 508

UDP 0.0.0.0:4500 *:* 508

UDP 10.0.2.17:123 *:* 904

UDP 10.0.2.17:137 *:* 4

UDP 10.0.2.17:138 *:* 4

UDP 127.0.0.1:123 *:* 904

UDP 127.0.0.1:1025 *:* 904

netstat exited on 10.0.2.17 with error code 0.

[내용] 원격 서버의 네트워크 사용 정보 수집

 

그리고 만약 명령어가 원격지 머신에 없다면 간단히 –c 옵션을 이용하여 복사후 명령을 실행할 수 있다.

 

C:\Forensic>PsExec.exe \\10.0.2.17 -u test -p 1234 -c tcpvcon -can -accepteula

 

PsExec v1.98 – Execute processes remotely

Copyright (C) 2001-2010 Mark Russinovich

Sysinternals – www.sysinternals.com

 

 

 

TCPView v3.01 – TCP/UDP endpoint viewer

Copyright (C) 1998-2010 Mark Russinovich and Bryce Cogswell

Sysinternals – www.sysinternals.com

 

TCP,System,4,ESTABLISHED,10.0.2.17,10.0.2.16

TCP,nc.exe,996,ESTABLISHED,10.0.2.17,10.0.2.16

TCP,lsass.exe,508,LISTENING,0.0.0.0,0.0.0.0

TCP,nc.exe,3208,LISTENING,0.0.0.0,0.0.0.0

TCP,mysqld.exe,1488,LISTENING,0.0.0.0,0.0.0.0

TCP,System,4,LISTENING,0.0.0.0,0.0.0.0

TCP,System,4,LISTENING,10.0.2.17,0.0.0.0

TCP,svchost.exe,820,LISTENING,0.0.0.0,0.0.0.0

TCP,svchost.exe,1660,LISTENING,0.0.0.0,0.0.0.0

UDP,svchost.exe,904,*,127.0.0.1,*

UDP,lsass.exe,508,*,0.0.0.0,*

UDP,System,4,*,0.0.0.0,*

UDP,System,4,*,10.0.2.17,*

UDP,System,4,*,10.0.2.17,*

UDP,lsass.exe,508,*,0.0.0.0,*

UDP,svchost.exe,904,*,127.0.0.1,*

UDP,svchost.exe,904,*,10.0.2.17,*

tcpvcon exited on 10.0.2.17 with error code 0.

[내용] 원격서버에 실행하고자하는 파일을 복사후 수행

 

단 –c 옵션을 사용할 경우 이미 파일이 존제 하는 경우에는 명령이 실패하게 되므로 주의가 필요하다. 그리고 –c 옵션을 사용하여 파일이 복사되는 경로는 원격지 머신의 %Systemroot%\System32에 생성된다.

이를 psexec.bat 라는 배치파일로 아래와 같이 생성할 수 있다.

 

psexec.bat

PsExec.exe \\%1 –u %2 –p %3 –c PsLoggedon –accepteula > %1-%DATA%-PsLoggedon.txt

PsExec.exe \\%1 –u %2 –p %3 –c Logonsessions –p –accepteula > %1-%DATA%-Logonsessions.txt

PsExec.exe \\%1 –u %2 –p %3 Tasklist /v > %1-%DATA%-Tasklist.txt

PsExec.exe \\%1 –u %2 –p %3 –c DI > %1-%DATA%-DI.txt

[내용]psexec.bat의 패치 파일 내용

 

실제 실행시 실행 계정과 패스워드를 입력하고 수집하고자 하는 IP를 입력해 간단히 정보를 수집할 수 있다.

 

psexec.bat 10.0.2.17 test 1234

[내용] 배치 파일을 이용하면 반복적인 작업에 수월하다

 

Psexec는 데이터 수집은 부가적인 기능이며, 본 기능인 원격 관리가 편리한 유틸리티인 만큼 보안에도 각별히 유념해야 한다. 원격지를 통한 관리는 그만큼 네트워크 공격이 발생하면 취약점으로 동작할 수 있기 때문이다. 따라서 관리 계정의 패스워드를 주기적으로 변경하고, 원격 관리로 접근 할 수 있는 머신을 네트워크로 제한하아야 한다.

 

FSP 와 FRUC

FSP는 Forensic Server Project의 약자로써, 침해사고 분석을 위해 제작된 전용 도구인 만큼 그 기능이 다양하다. 무료이지만, 훌륭한 자료 수집 도구라고 할 수 있다.

본 도구는 총 3가지 도구를 제공하는데 각 도구에 대해 알아보자.

FRUC(First Responder Utility)

Harlan Carvey’s가 개발한 툴로써, 자동적으로 로컬의 휘발성 데이터를 수집해 FSP(이후 설명)로 전송해주는 툴이다.

현재는 FRU보다 FRUC라고 불리운다.

이 툴을 통해 아래 2가지 영역의 데이터를 수집할 수 있다.

  1. 명령어 기반 실행 결과 수집
  2. 레지스트리 값/키 수집

이 데이터 수집에 대한 환경 설정을 위해 fruc.ini라는 환경설정 파일을 제공하는데, 해당 내용을 편집하여, 수집 데이터를 추가하거나 제거, 그리고 서버 정보를 수정할 수 있다.

아래 내용은 기본적으로 제공하는 fruc.ini의 환경설정 파일 정보이다.

 

// FSP 서버 연결 정보

[Configuration]

; This section and information is required, but

; can be overridden at the command line

server=192.168.1.75

port=7070

 

// 커맨드 라인을 통한 수집 :: 쌍 따옴표를 통해 실행 결과를 수집할 파일로 구분된다.

[Commands]

; List the command line to be executed, along with the

; filename the data will be stored in (the name will be

; prepended with the system name automatically), separated

; by a double colon (::)

1=psloggedon.exe -accepteula::psloggedon.dat

2=tlist.exe -c::tlist-c.dat

3=tlist.exe -s::tlist-s.dat

7=psloglist -x -s -t -a ; sec -accepteula::eventlog-sec.dat

8=psloglist -x -s -t ; sys -accepteula::eventlog-sys.dat

9=autorunsc -a -c -accepteula::autorunsc.dat

 

// 레지스트리 입력값 수집

[Registry Values]

; Enter the Registry key, and the value you’re interested in

; here, separated by a semi-colon

; A good place to get values is from SilentRunners.org

1=HKCU\Software\Microsoft\Command Processor;AutoRun

2=HKLM\Software\Classes\exefile\shell\open\command;

3=HKCU\Software\Microsoft\Internet Explorer\TypedURLs;url1

 

// 레지스트리 결과값 수집

[Registry Keys]

1=HKCU\Software\Microsoft\Windows\CurrentVersion\Run\

2=HKLM\Software\Microsoft\Windows\CurrentVersion\Run\

[내용] FSP 환경 설정

 

위 환경설정 파일을 본인에게 맞도록 수정하여 사용하면 된다.

수정된 환경설정 파일과 클라이언트에서 FRUC를 실행하여 정보를 서버로 보낼 수 있다.

 

C:\Forensic\Tool\fruc>fruc

You must enter a valid config file to use, dude.

 

FRUC v 1.2 [-s server IP] [-p port] [-f ini file] [-h]

First Responder Utility (CLI) v.1.2, data collection utility

of the Forensics Server Project

 

-s system……IP address of Forensics Server

-p port……..Port to connect to on the Forensics Server

-f file……..Ini file to use (use other options to

override ini file configuration settings)

-v………….Verbose output (more info, good for monitoring

activity)

-h………….Help (print this information)

 

Ex: C:\>fruc –s <IP Address> -p <port> -f <ini file>

 

copyright 2004-2006 H. Carvey

[내용] FRUC 실행 파일 도움말

 

FPS(First Responder Utility)

FPS는 FRUC를 통해 수집한 결과를 수집하는 서버와 같은 기능을 제공한다. 즉 원격지에서 전송하는 데이터를 받아들이는 역할이과 동시에 해당 수집과정을 시간정보와 함께 로그를 남기게 된다.

 

C:\Forensic\Tool\fspc>fspc

FSPC [-d case dir] [-n case name] [-p port] [-i investigator]

[-l logfile] [-c] [-v] [-h]

Forensic Server Project (CLI) v.1.0c, server component of the

Forensics Server Project

 

-d case dir….Case directory (default: cases)

-n case name…Name of the current case

-i invest……Investigator’s name

-p port……..Port to listen on (default: 7070)

-l logfile…..Case logfile (default: case.log)

-v………….Verbose output (more info, good for monitoring

activity)

-c………….Close FSP after CLOSELOG command sent (best used

when collecting data from only one system)

-h………….Help (print this information)

 

Ex: C:\>fspc -d cases -n testcase -i “H. Carvey”

C:\>fspc -n newcase -p 80

 

copyright 2006 H. Carvey

[내용] FSPC 도움말을 통해 서버에서 사용가능한 기능을 확인할 수 있다

 

FSP의 사용은 위 내용과 같이 사용할 수 있다.

 

fspc -d cases -n testcase -i “juhan”

[내용] 서버 모드 실행

 

FCLI(File Copy Client for the FRU/FSP)

이툴은 추가적인 툴로, FSP 서버로 파일을 선택하여 전송할 수 있는 도구이다.

본 툴을 이용해 FSP 서버로 분석에 필요한 파일을 간편히 전송할 수 있다.

 

[내용] 파일 전송 도구 FCLI

 

그럼 실제 FSP툴들을 이용하여 데이터를 수집해 보도록 하자.

먼저 FSP 서버로 사용할 서버에서 아래와 같이 서버모드를 활성화 하자.

 

[그림] 데이터를 수집할 머신에서 FSPC를 실행

 

먼저 FRUC와FCLI 그리고, FRUC에서 실행하는 파일들을 수집할 머신으로 가져다 놓자.

그리고 아래와 같이 명령을 실행하자.

 

[그림] 사고 머신에서 FRUC를 실행

 

그리고 FCLI를 이용하여, 원하는 파일을 선택후 복사하도록 하자.

 

[그림] 파일 전송 전용 도구 FCLI

 

위 명령을 실행하면, 아래와 같이 FSPC 화면에 데이터가 수집되는 것을 확인할 수 있다.

 

↓정상적으로 원격지에서 파일을 받아오고 있다, 이를 로그를 통해서도 확인이 가능하다.

 

[그림] FSP 로그를 통해 파일의 생성 시간을 확인할 수 있다.

 

Facebook Comments

Leave A Reply

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.