본문 바로가기

Kitri_NCS3기 보안과정/디지털포렌식

170619 배치파일로 데이터 수집하기



[윈도우 배치 파일 작성 기초]

 

** 배치 파일 작성 시 명령어에 대한 사용법이 궁금할 경우 도움말 활용

 - [명령어] /? 또는 help + [명령어]

  예)  mkdir /? or help mkdir

c:\>mkdir /?

c:\>help mkdir


 

[CD]


디렉토리 변경

c:\>cd helloworld

c:\helloworld>

 

 

[ECHO]

 

 ECHO :  화면에 작성한 메세지를 그대로 출력

 - 화면에 내용을 보여주고자 할때 사용

c:\>echo hello

hello


 - 배치파일 첫 줄에는 @echo off를 많이 사용

 - @는 echo 기능을 off 한다는 뜻

 - @echo off 미사용시 배치파일에 사용된 명령어들의 화면에 그대로 출력


[주석]  : rem, ::

 

rem : remarks 의 약자로 주석처리 할때 사용

:: 을 두개 연속으로 사용해 주석처리


[리다이렉션]  : > ,  >>

 

> : 명령의 결과를 파일로 저장, 파일의 내용이 있다면 덮어씀

>> : 명령의 결과를 파일에 추가, 파일의 이전 정보 삭제 없이 추가해서 저장

c:\>echo hello > test.txt

c:\>echo hello1 >> test.txt

 


 

[ESCAPE 문자]  : ^

 

 특수 문자를 포함시키고 싶을때 사용

c:\>echo hello >> test.txt

- 위의 경우 hello라는 문자열이 test.txt 파일에 포함되어 생성됨 

c:\>echo hello ^>^> test.txt

- "^" 문자를 리다이렉션 ">" 표시앞에 추가하면 ">"를 일반 문자열로 인식


 

[경로 문제]  : CALL

 

외부 프로그램을 호출할 경우 사용

윈도우 7에서는 UAC 기능이 켜져 있으면, 배차파일을 관리자 권한으로 실행하는 경우 명령 프롬프트 위치가 다음과 같음

c:\Windows\System32

배치파일 작성시 매번 첨부파일의 절대경로를 쓰는 일은 상당히 복잡하고, 실행위치가 달라질 수 있기 때문에 명령어가 실행되는 위치 기준으로 작성 필요

라이브포렌식의 경우 배치파일이 USB를 통해 사용되는 경우가 많아, USB가 인식되는 위치를 인식하게 할 필요가 있음

 

CALL

명령어는 다른 프로그램을 호출할 수 있는 명령어로 다음과 같은 구문을 사용가능하다.

C:\>CALL  "%~dp0\test.bat"

여거서 "~dp0"는 반환되는 위치값을 결정하는 역할을 한다.

"%~d0" : 해당 드라이브값 반환, 예) C:

"%~p0" :  해당 배치파일이 실행되는 폴더값 반환, 예) \Windows\System32\

"%~0" :  해당 배치파일 전체 경로 및 파일/확장자 값 반환, 예) C:\Windows\System32\test.bat


 

[환경변수]  : COMPUTERNAME, DATE,....

 

운영체제에 의해 정해진 변수들

 

%CD% : 현재 실행되고 있는 디렉토리

%COMPUTERNAME% : 호스트 컴퓨터 이름

%DATE% : 현재 날짜

%TIME% : 현재 시간

%HOMEDRIVE% : 루트 드라이브

%SYSTEMDRIVE% : C:\WINDOWS\SYSTEM32로 이동

%USERNAME% : 현재 유저이름 

 


 

 

[타이틀]  : TITLE

 

배치파일 실행시 콘솔에 표시되는 배치파일 제목 지정

TITLE 제목 입력

TITLE HELLO, THIS IS A BATCHFILE!

 


 

[콘솔 크기]  : MODE

 

배치파일 실행 시 콘솔창 크기를 지정하는 용도로 사용 가능

MODE CON COLS=20 LINES=20


 

[콘솔 화면 색]  : COLOR

 

배치파일 실행 시 콘솔 화면의 색을 지정 가능

 

COLOR  배경색+문자

COLOR F0 : 흰색 배경에 검정색 글씨

0 = 검정, 1 = 파랑, 2 = 초록, 3 = 옥색, 4 = 빨강, 5 = 자주,  6 = 노랑, 7 = 흰색, 8 = 회색,  9 = 연한 파랑, A = 연한 초록, B = 연한 옥색, C = 연한 빨강

D = 연한 자주, E = 연한 노랑, F = 밝은 흰색


 

[화면 지우기]  : CLS

 

배치파일 실행 시 화면을 정리하고자 할때 사용 CLEAR SCREEN의 약자

 

CLS


 

[화면 일시 정지]  : PAUSE

 

콘솔 화면을 일시 정지하고자 할때 사용하며, 배치파일 실행중 경고 또는 안내사항이 있을 경우 사용

 

PAUSE


[변수 지정]  : SET

 

배차파일에서 변수를 지정하고자 할때 사용, 반복되어 나오는 프로그램 실행 경로등을 지정할 때 사용

변수는 대소문자를 구분

 

SET 변수 =  문자열

SET _PATH = %~DP0% : 현재 실행 폴더 경로를 PATH 경로로 저장

배치파일에서 변수를 호출할 경우 양쪽에 %를 붙여줌

ECHO %_PATH%

 

변수에 계산 결과를 할당하고자 할때는 /A 옵션을 주어야 함

SET /a Result =  3+5

 

변수에 사용자의 입력값을 저장하고자 할때는 /p옵션을 사용, C언어의 scanf 함수와 비슷한 기능

SET /p 변수명 = 보여주고자 할 문자열

SET /p name = 조사PC 사용자의 이름을 입력하세요 : 


 

 

[반복문]  : FOR

 

배치파일에서 반복해서 명령어를 실행하고자 할때 사용

 

<옵션 SYNTAX>

%~dI : 드라이브 문자 반환

%~pI : 경로만 반환

%~nI : 파일 이름만 반환

%~xI : 파일 확장자만 반환

%~sI : 숏파일이름을 포함한 경로 반환

%~aI : 파일의 속성 반환

%~tI : 파일의 날짜/시간 반환

%~zI : 파일의 사이즈 반환

 

[조건문]  : IF

 

배치파일에서 조건문을 실행하고자 할때 사용


IF 문자열 1 == 문자열2  명령어

 

set name=examiner

if name==examiner echo correct!!

echo incorrect!!

 

 

[레이블 이동]  : goto

 

배치파일에서 해당 레이블로 이동하고자 할때 사용


goto hello

 

:hello

echo hello

 

:hi

echo hi

 


 

 

 [라이브 포렌식 배치파일 작성 실습] 

 1. 라이브 포렌식을 수행할 배치파일을 작성하시요.

  - 휘발성/비휘발성 데이터를 수집할 수 있도록 작성

 2. 수행 내역은 모두 로그로 저장하시요.

 3. 조사 시작 시간과 끝 시간을 기록하시요.(각 조사대상별 시간 포함)

 4. 조사대상별로 결과값이 저장될 수 있도록 폴더를 만들어 로그를 저장하시요.

 5. USB에서 실행될 수 있도록 배치파일을 작성하시요.