%개인적으로 생각하고 느낀것을 적었습니다. 다른 견해가 있을 수 있습니다.%

- 경기대학교&성신여자대학교 융합보안학과 융합보안세미나 에서 제가 발표한 내용입니다. -




1. Forensic? Digital Forensic?


최근 포렌식이라는 말들이 사회에서 많이 사용되고, 포렌식과 관련된 직업들도 많이 생겨나고 있습니다.

그래서 포렌식이라는 말이 새롭게 생겨났다고 생각할 수 도 있습니다..


결론부터 말해서 포렌식이라는 단어는 최근에 새롭게 생겨난 단어가 아닙니다. 


포렌식의 사전적인 의미를 살펴보면 아래와 같은 의미를 가지고 있다는 것을 알 수 있습니다

Oxford Advanced Learner's English-Korean Dictionary

Forensic (포렌식)

- 법의학적인, 범죄 과학 수사의


이중에서 법의학 이라는 말을 좀 더 살펴보면 다음과 같습니다. 네이버국어사전

법의학

- 의학을 기초로 하여 법률적으로 중요한 사실 관계를 연구하고 해석하며 감정하는 학문

- 재판상의 사실 인정을 위한 증거를 의학적 견지에서 채집


이렇게 Forensic(포렌식) 이라는 단어는 새롭게 생겨난 단어가 아닌, 

기존에 의학적인 분야에서 증거와 관련해 밀접하게 사용되었던 단어였습니다.



위와 같이 기존에는 범죄에 대한 상황과 증거를 나타내는 것들이 주로 물리적 형태를 나타냈지만

현재에는 물리적 형태의 것들에서 디지털적(전자적)으로 확장됨에 따라

Forensic 이라는 단어에 Digital 을 붙여 Digital Forensic 이라는 단어를 사용하게 되었습니다.


따라서 Digital Forensic이라는 것은 다음과 같다고 할 수 있습니다.


Digital Forensic (디지털 포렌식)

- 디지털 환경과 장비로 부터 증거 자료를 수집, 분석 하는 기술

- 디지털 데이터로 이루어진 증거가 법적 효력을 갖도록 하는 절차를 연구하는 학문




2. 디지털 포렌식의 분야


전산 분야가 워낙 많고 넓어서 저렇다하게 잘 나눌수는 없다고 생각하지만, 현재 필드에서는


- 디스크 포렌식

- 메모리 포렌식

- 네트워크 포렌식

- DB 포렌식

- 모바일 포렌식


으로 나누어 볼 수 있다고 합니다.


또한 안티포렌식 이라는 것이 있습니다. 참고로 알아두면 좋을것 같습니다.

Anti-Forensic (안티 포렌식)

- 포렌식을 수행하는데 있어 분석을 방해하기 위해 사용자가 의도적으로 하는 행위

- 삭제, 은닉, 변조 등을 통해 분석을 하는데 있어 시간을 오래 걸리게 하거나 분석을 어럽게 하는 것




3. 디지털 포렌식 과정


간단하게 대응 메뉴얼 대로 적어보면 다음과 같습니다.



> 사전 준비

 - 포렌식 도구 준비 / 도구 검증


> 증거 수집

 - 수집 대상 파악

 - 증거 목록 작성


> 포장 / 이송

 - 전자파 및 충격 방지 포장

 - 증거물 운반


> 분석 / 검토

 - 전자파 및 충격 방지 포장

 - 증거물 운반


> 보고서 작성 (법정에 제출할 보고서 및 일반적인 보고서)

 - 용어 설명 (재판관 및 일반인이 알 수 있도록 전문적 용어에 대한 설명)

 - 객관적 설명

 - 결과 정리




4. 우리나라의 디지털 포렌식?


네이버 데이터 랩을 통해 살펴보면

우리나라의 디지털 포렌식은 2016년 12월과 2017년 1월에 사람들의 많은 관심을 받게 되었다는 것을 알 수 있습니다.


이 시기에는 최순실 태블릿 PC가 발견되었던 시기였습니다. 

태블릿 PC에 있는 내용들이 디지털 포렌식을 통해 법정에서 증거로 사용된다는 이야기들이 나왔을 때입니다. 



5. 대한민국 법정에서 디지털 포렌식을 통한 증거는 증거로써 인정되지 않았다?


여기서 한번 짚고 넘어가야 할 부분이 2016년 12월 최순실 태블릿 PC가 발견되었을 때에는 

우리나라 법정에서 디지털 포렌식을 통한 증거가 법정에서 증거로 인정 받던 시기였습니다.


따라서 디지털 포렌식에 대한 대중들의 관심과 궁금증이 높아져 많이 알려지게 되었고,

이전까지만 해도 디지털 포렌식을 통한 증거는 법정에서 증거로써 인정되지 않았습니다.


이와 관련된 내용은 차후에 포스팅 하겠습니다.



'Forensic > STUDY' 카테고리의 다른 글

윈도우 아티팩트  (0) 2017.08.12
메모리 분석  (0) 2017.07.20
실시간 대응(Live Response)  (0) 2017.07.20
포렌식의 기본 소양  (0) 2017.07.08
[디지털 포렌식] 3. 전자적 증거의 특성과 규제법률  (0) 2017.07.03

우리나라에 1703 업데이트 이후 원격데스크톱 해결방법을 아무도 알려준 사람이 없던데 많은사람들이 보고 해결했으면 좋겠다.
[RDP Wrapper] github에서의 해결 방법 입니다. 정식 릴리즈로 인정된것은 아니니 임시방편으로 사용하시기 바랍니다.






<제 태블릿 노트북은 Windows 10 Home 버전입니다.>



< Listener state :  Not Listening  >


기존에는 RDP Wrapper를 통해 Home버전에서도 원격데스크톱을 사용할 수 있었는데....



[Windows 10] 1703 업데이트를 이후로 RDP Wrapper를 통해 원격데스크톱을 사용하던걸 하지 못하게 되었습니다.

따라서 RDP Wrapper github에서 여러 이슈글들을 검색하고 보는 도중 해결 방법이 있었습니다.



0. RDP Wrapper 설치 및 실행 방법은 이전 포스팅을 참고해주세요 (http://hpitos.tistory.com/72)


1. 우선  Listener state : Not Listening  이라는 것을 알고있을테니 RDP Wrapper을 삭제해 줍니다.


<삭제는: 설치 폴더에서 uninstall.bat 을 관리자 권한으로 실행시켜 주면된다.>


2. 그리고 RDP Wrapper github에 나와있는 것처럼 rfxvmt.zip 파일을 받습니다.

64-bit Windows 10 : https://github.com/stascorp/rdpwrap/files/1236856/rfxvmt.zip

32-bit Windows 10 : https://github.com/stascorp/rdpwrap/files/1238499/rfxvmt.zip


<RDP Wrapper github 에는 Windows 10 업데이트를 통해 원격데스크톱 사용이 불가능하다는 사람들이 많았다.>



3. 다운받은 rfxvmt.zip 파일을 압축해제 하여 rfxvmt.dll 파일을 옮겨 주어야 합니다..


 >> 64-bit 운영체제는 : 윈도우가 깔려있는 디스크 Windows 폴더 안에 있는 SysWow64 폴더 안에... 

(대부분 이곳일 것이다. C:\Windows\SysWow64 )

>> 32-bit 운영체제는 : 윈도우가 깔려있는 디스크 Windows 폴더 안에 있는 System32 폴더 안에... 

(대부분 이곳일 것이다. C:\Windows\System32 ) 


64-bit 32-bit 모두 Winodws 폴더 System32폴더로 옮겨주시면 됩니다.


<예를 들어 32-bit의 경우 이렇게 넣어주면 된다.>



4. 이렇게 다 끝나면 다시 RDP Wrapper을 설치하고 확인해 보면 됩니다.!!!!! (관리자모드로 설치요망)


< install.bat을 관리자 모드로 설치 -> update.bat 관리자 모드로 설치 -> RDPConf.exe 실행>


<이렇게 모두 녹색불이 들어와 있는 것을 확인할 수 있다!!!!!!!!!!!!!!!!!!!!>




+추가 

한 노트북에서 윈도우 업데이트 이후 원격설정이 풀려버린 현상이 발생했습니다. 처음부터 설정을 잘못한 것 일 수 도 있지만... 

윈도우 Home버전에서 위와같이 설정하여 원격을 사용하다가 윈도우 업데이트를 진행하게 되면 포트가 열렸던게 다시 닫히는 현상이 발견된것 같습니다.

또한 시스템 파일에 넣어줬던 dll파일도 삭제되었습니다. 


혹시 설정후 윈도우 업데이트를 진행하게 된다면 꼭 RDPConf.exe를 한번 실행시켜서 모두 녹색불이 들어와있는것을 확인하시기 바랍니다.


녹색불이 안들어와있다면 

 > Wrapper state가 Installed이고 Listener state만 not Listening 이면 위 내용같이 다시 작업해주시고

 > Wrapper state도 아예 설치가 되어있지 않은 것으로 되시면 삭제후 설치 필요없이 그냥 설치부분부터 작업해주시면 됩니다.


필요한 상황에서 원격이 안되는 불상사가 일어나지 않길 바랍니다




+추가 

2018.05.24) 최근 윈도우 1803 기능 업데이트가 실행되면서 기존에 설정해 두었던 dll파일이 초기화되었을 겁니다. RDP Wrapper로 업데이트 이후 원격가능한지 다시한번 확인해주시고 해당 본문 과정을 다시 한번 수행해주시면 됩니다. 


'START > TIP' 카테고리의 다른 글

[RDPWrapper] 윈도우 원격 데스크톱 사용하기  (434) 2017.09.12

윈도우 원격 데스크톱 기능을 사용 하기 위해 들어오셨으니 설명 없이 바로 세팅하는 방법 포스팅 하겠습니다.




1. 우선 본인의 윈도우가 10일 경우 Home 버전인지 Pro버전인지 확인합니다. (제어판 -> 시스템)

   그리고 왼쪽의 고급시스템 설정을 들어가서 아래와 같이 원격 데스크톱을 허용해줍니다.

   (Windows 10 Home 버전에서는 원격데스크톱 부분이 없으니 그냥 진행합니다.)



<제 컴퓨터는 윈도우 10 Pro 버전을 사용중이네요>


<Pro 버전이 아닌 Home버전은 원격데스크톱 목록이 없습니다. (Home버전은 그냥 진행합니다.)>



2. Home 버전의 경우 아래 순서와 같이 진행후 제대로 되지 않으면 다음 포스팅을 참고바랍니다. 

   (http://hpitos.tistory.com/73)

   (Windows의 업데이트를 통해 기존 RDPWrapper를 통한 원격데스크톱 사용이 막혀버렸습니다.)

   Pro 버전의 경우 ↓3번으로 그대로 진행하면 됩니다.



3. RDP Wrapper 다운로드 (https://github.com/stascorp/rdpwrap/releases)

   위 주소를 들어가 Downloads 에서 RDPWrap-(버전).zip파일을 다운받고 압축을 해제해줍니다.

   (17년 10월 기준 1.6.1 버전이 최신 버전입니다.)



4. 압축해제하고 설치하기

   압축해제하면 다음과 같이 압축이 풀릴텐데 

   설치할때는 관리자모드로 진행하는 것을 추천합니다.


     


   4.1) install.bat 파일을 오른쪽 클릭을 통해 관리자 권한으로 실행해 설치합니다.

   4.2) 설치가 완료되면 update.bat 파일을 관리자 권한으로 실행 시켜 줍니다.

   4.3) 업데이트 파일 실행까지 완료했으면, RDPConf.exe를 실행시켜 봅니다.

   4.4) 아래와 같이 모든 상태가 초록색으로 표시 되어 있으면 성공!!!!

   


   4.5) RDPCheck.exe 를 실행하여 원격데스크톱이 잘 실행되는지도 확인해 봅니다.


5. 이렇게 설정을 끝내면 원격 데스크톱을 사용할 수 있습니다.








Gregory, still unsure of Betty's true identity, meets with a group identifying themselves as Betty's Associates. They gave him a list of demands including numbers to bank accounts, and additional secret documents. Betty's Associates told Gregory he will be provided with information regarding the delivery of the goods.


4. What is the password provided to Gregory?


4번 문제는 그레고리에게 주어진 패스워드를 찾는 것이다. 

패킷을 분석해보자.


패킷을 분석해보면 xml파일 형식을 가진 메세지를 추가해 이야기를 나눈것을 확인해 볼 수 있다.



이 메시지 안에 들어있는 코드는 KML이라는 코드라는 것을 검색과 힌트를 통해 알 수 있었다.

문제를 풀기위해 열심히 KML가이드도 읽고 예제도 따라해 보고 해보니...


메시지 안에 있는 코드 내용이 경로를 나타내는 것과 비슷한 구조로 되어있어 경로를 나타내는 것을 통해 FLAG를 찾을 수 있겠구나 라는 생각을 했다.





하지만 주어진 코드 그대로 실행해 보게 되면 아래와 같은 오류가 발생하게 되는데 그 이유는 메시지 속의 코드에 \가 중간중간 들어가 있는데 이것들을 다 지워주고 넣어주어야 한다. 





따라서 이 코드들을 넣어주게 되면 아래와 같이 경로를 통한 메시지를 확인 할 수 있다. 



FLAG : BRUTUS 


'Forensic > Write-up' 카테고리의 다른 글

DEFCON 2013 Network Forensic write up  (0) 2017.08.27

Having accepted the Jensen case, Jack and his team install network taps and wireless capture devices in Mr. Jensen's business and home. During monitoring, Jack and his team discover an interesting suspect, Betty. This could be the woman Mrs. Jensen fears her husband is having an affair with. Jack assigns you the forensic analyst to look further into the information capture. You learn that a meeting has been setup.


1. What day of the week is the meeting scheduled for?


1번문제는 미팅 날짜가 잡혔다고 미팅 날짜가 언제인지 찾는 문제이다.

패킷의 내용이 아래와 같이 메세지를 주고 받은 내역이 나오게 되고, What day do you want to meet up? 다음 메시지부터 인코딩이 되어 나오게 된다.



x48, x6F등으로 구성되어 있는 것을 통해 헥사값이라는 것을 유추 할 수 있다. 헥사값을 통해 아스키 코드표와 대조를 시켜 비교해보면 내용이 출력된다.




따라서 전체 내용을 해독해보면 


FLAG : Wednesday 2pm





Betty attempts to keep her tracks covered as she establishes a meeting location with Gregory.


2. What city are they meeting?


2번 문제는 만남의 장소가 어딘지 찾는 문제이다.

패킷을 분석해보면 



메세지를 주고 받은 것을 확인할 수 있고 메세지 내용을 보면 패스워드를 주고 장소에서 기다리고 있겠다고 한다.

그리고 답장으로 패스워드를 받았고 그곳에서 기다린다는 이야기도 하게 된다. 



3번째 메시지를 확인해보면 DCC Send라는 패킷이 나오게 되는데 이걸 구글에 검색해 찾아보니 위키에 아래와 같은 내용을 찾을 수 있었다.

따라서 패킷의 내용이 파일이름 ip 포트 파일사이즈 를 뜻한다는 것을 알 수 있었다. 



따라서 카빙을 하기위해 와이어 샤크를 통해 확인을 해 1024 포트를 찾았더니 하나의 패킷만 찾을 수 있었다. 따라서 그 패킷을 카빙을 한다.



카빙을 해도 아무 것을 알 수가 없는데 그것은 TrueCrypt라는 것으로 감춰져 있기 때문이다. (힌트를 통해서 알았다.)

그러므로 TrueCrypt를 실행해 주어진 패스워드를 치고 마운트를 하면 감춰진 파일들을 찾을 수 있다.



사진 파일과 텍스트 파일은 아래와 같다.




FLAG :  LAS VEGAS





Gregory is hesitant to meet with the mysterious Betty. While working late in the office, Gregory hears his phone ring. He checks his phone and knows he has no choice but to attend the meeting with Betty.


3. What will Gregory die form, if he fails to meet with Betty?


3번 문제는 그레고리가 베티를 만나지 못하면 어떻게 죽게 되는지를 찾는 문제이다.

문제를 보면 그레고리의 전화가 울렸다고 한다. 그리고 전화를 확인하고 그는 베티를 만나야한다고 알았다고 한다. 

그렇다면 핸드폰으로 문자메시지나 무언가를 봤을 것이다. 패킷을 분석해보면 mms가 나오는 것을 확인 할 수 있다.



따라서 와이어 샤크를 통해 패킷을 확인해보면 mp4형식의 파일이 오고갔나 의심해 볼 수 있다. 

그렇다는 것은 mp4형식의 시그니처를 확인해서 관련 정보가 있나 확인해 볼 필요가 있다. 



mp4의 시그니처는 00 00 00 18 66 74 79 70 으로 시작하게 되는데 위의 패킷 내용에 시그니처가 포함되어 있는 것을 확인 할 수 있다. 

따라서 카빙을 완성시키고 나면 무엇 때문에 죽는지 알 수 있는 동영상을 시청할 수 있다.



FLAG : DYSENTTERY





Gregory, still unsure of Betty's true identity, meets with a group identifying themselves as Betty's Associates. They gave him a list of demands including numbers to bank accounts, and additional secret documents. Betty's Associates told Gregory he will be provided with information regarding the delivery of the goods.


4. What is the password provided to Gregory?


4번 문제는 그레고리에게 주어진 패스워드를 찾는 것이다. 

패킷을 분석해보자.


패킷을 분석해보면 xml파일 형식을 가진 메세지를 추가해 이야기를 나눈것을 확인해 볼 수 있다.



이 메시지 안에 들어있는 코드는 KML이라는 코드라는 것을 검색과 힌트를 통해 알 수 있었다.

문제를 풀기위해 열심히 KML가이드도 읽고 예제도 따라해 보고 해보니...


메시지 안에 있는 코드 내용이 경로를 나타내는 것과 비슷한 구조로 되어있어 경로를 나타내는 것을 통해 FLAG를 찾을 수 있겠구나 라는 생각을 했다.




하지만 주어진 코드 그대로 실행해 보게 되면 아래와 같은 오류가 발생하게 되는데 그 이유는 메시지 속의 코드에 \가 중간중간 들어가 있는데 이것들을 다 지워주고 넣어주어야 한다. 



따라서 이 코드들을 넣어주게 되면 아래와 같이 경로를 통한 메시지를 확인 할 수 있다. 



FLAG : BRUTUS 





Gregory is missing! He was supposed to meet up with Betty and deliver the goods. After that, the trail quickly goes cold. A strange shipment has arrived to the offices of Rock Solid Investigations. Jack Stone opens the package and discovers a note and a cell phone. Jack immediately sends the cell phone to you, the forensic investigator.


5. What happened to Gregory?


5번 문제는 zip파일을 하나 주는데 그속에서 그레고리가 어떻게 됐는지(왜 배달을 안했는지) 찾는 것이 였다.

주어진 것의 압축을 풀어 보니 핸드폰 폴더 트리가 나오고 패킷들도 몇개 있고 한데...

패킷들의 내용들은 다 별거 없는 것 같고 유저데이터 부분에 들어가니 사진이 한장 있었는데 그 사진은 아래와 같다. 

피흘리는건 없어서 죽었는지 기절했는지 자는건지는 확실하지 않다. 



FLAG : DIE or  SLEEP





Mrs. Jensen decides to look further into this strange email. She decides to check her account balances to ensure she still has access to her accounts.


6. How many bytes of data is the malicious payload?


6번 문제는 메일을 유심히 살펴보고 계좌의 잔액을 확인해 봤다는 이야기로 악성코드의 바이트수를 찾으라는 문제이다.

(문제를 통해서 메일로 온 것을 확인했고, 메일을 읽고 계좌확인 사이트로 이동을 해서 확인을 했을 가능성이 높다.)


패킷을 분석 해보자

패킷 파일을 분석해보니 바로 알약에서 트로이목마가 있다는 것을 알려준다.

페이로드는 헤더 부분 같은 것을 다 제외하고 데이터 부분만을 뜻하는데 분석 파일을 보면 Size가 3113Bytes라고 나와있다. 

하지만 정확히 이것이 맞는지 확인하기가 어려워 편집기와 와이어샤크를 통해서 다시 한번 확인을 해보았다.



HTTP를 통해 이루어졌으므로 와이어샤크에서 HTTP를 추출해 검색해 본다.

아래와 같이 바로 전송받았던 악성코드를 확인 할 수 있었고, Size는 분석했던 것과 동일 했다.



Atom 편집기로도 3113의 characters를 가졌다는 것을 확인할 수 있었다.



FLAG : 3113





 Mrs. Jensen decides to look further into this strange email. She decides to check her account balances to ensure she still has access to her accounts.


7. What is the URL of the false(Malicious) web page Victoria is directed to?


7번 문제는 6번 문제와 내용이 똑같다. 6번은 악성코드의 페이로드를 찾으라고 했고 7번은 그걸 유포한 URL이 뭔지 찾으라고 한다.

문제를 통해서 메일로 온 것을 확인했고, 메일을 읽고 계좌확인 사이트로 이동을 해서 확인을 했을 가능성이 높다.

따라서 패킷을 분석해보면


아래와 같이 sofa.bankofamerica.com 을 전후로 비슷한 URL인데 이상하게 tt가 껴있는 URL을 확인해 볼 수 있다. 

이것이 수상하다. (힌트에서 .net이라고 한것과도 맞물린다.)





앞서 찾은 패킷의 내용을 보면 스크립트가 짜져있는 것을 확인해 볼 수도 있다.




FLAG : bankofamerica.tt.omtrdc.net


'Forensic > Write-up' 카테고리의 다른 글

4번 문제  (0) 2017.08.27

Artifact

사전적 - 인공물, 유물

포렌식 - 생성되는 흔적(생성증거 or 보관증거)


생성증거 

- 프로세스, 시스템에서 자동으로 생성한 데이터

보관 증거

- 사람이 기록하기 위해 작성한 데이터, 사상이나 감정등을 기록하기도 함





윈도우 아티팩트


윈도우가 가지고 있는 특유의 기능들과 그 기능을 구현하는데 필요한 요소들 (주로 파일이나 레지스트리)로 부터 찾을 수 있는 여러가지 정보를 말한다.


> 시간과 날짜
 - 메인보드의 시간측정 하드웨어 RTC(real-time clock) 예전에는 별도의 장치로 분리되어 있었지만 최근에는 사우스 브리지(south bridge)칩에 내장됨

 - 주파수를 통해 정기적으로(일정한 간격으로) 받는 전기적 신호를 계산해서 날짜와 시간을 계산한다. (크리스탈 오실레이터, quartz시계에 사용되는 것)

 - 컴퓨터가 꺼진 이후에도 메인보드의 리튬 베터리나 슈퍼캐패시터(?) 를 통해 계속 전원을 공급받아 외부 전원의 도움이 없어도 시간을 기록할 수 있다.


> 시스템 시간

 - RTC에 의존하는 방식이 아닌 소프트웨어 적인 방법으로 시스템 시간을 유지하는 것


> 표준 시간대 

 - UTC(Coordinated Universal Time)





> 윈도우 아티팩트

 - 파일 시스템 아티팩트

 - 웹 아티팩트

 - 이벤트 로그

 - 프리패치 / 슈퍼패치

 - 바로가기 숏컷

 - (점프리스트)

 - 시스템 복원지점

 - 휴지통 

 - 시스템 로그

 - 시스템 임시파일

 - 미리보기 썸네일

 - 윈도우 검색 데이터베이스

 - 기타 아티팩트 (스티커메모, 프린터 스풀링 파일)


※ 파일 시스템 아티팩트 ※

 - NTFS의 경우 시스템 메타 데이터를 또 다른 파일 형태로 관리, 아티팩트 분석시 같이 추출하여 분석하기에 용이

 - 시간 흐름에 따른 파일의 상태 등과 같은 정보를 제공하여 시스템 분석에 도움을 준다.

 - 분석 대상 시스템이 NTFS 일 경우, 관련 아티팩트를 수집하고 분석하자.


※ 웹 아티팩트 ※

 - 웹 히스토리, 웹 캐시, 웹 쿠키, 다운로드 파일 등을 통한 웹 사용 내역 조사.

 - 5대 브라우저(익스플로러, 크롬, 사파리, 파이어폭스,오페라) 중 익스플로러를 제외한 브라우저는 모바일에서도 비슷한 흔적을 남기는것을 참고


※ 이벤트 로그 ※

 - 윈도우의 특정 동작에 관한 내용을 기록하는 바이너리 로그 어플리케이션

 - 사용자의 행위보다는 시스템의 운용상태를 알 수 있는 정보를 포함한다. (침해사고 대응에 더 유용하다)

 - 운영체제 설정에 따라 사용자의 기본적인 시스템 운용까지도 파악할 수 있는 로그를 기록한다.


※ 프리패치 / 슈퍼패치 ※ (windows\prefatch )

 - 보조장치와 주기억장치의 I/O 속도 차이에 따른 시스템 부하를 최대한 극복하고자 자주 사용되는 응용프로그램을 미리 메모리에 로드하기 위해 사용된 윈도우 시스템의 요소

 - 프리패치 본연의 역할을 수행하기 위해 실행파일에 대한 다양한 정보를 내부에 기록해 두고 있다.

 - 실행파일의 사용 흔적을 조사할 때 프리패치에 기록된 내용은 반드시 살펴볼 필요가 있다. (참고: http://kali-km.tistory.com/entry/Prefetch-Format  )


※ 바로가기 숏컷 ※

 - 사용자 편의를 위해 사용하기도 하지만, 운영체제가 자동 실행이나 최근 접근한 데이터에 관한 정보를 관리할 때에 사용하기도 한다.

 - 바로가기 파일에는 링크 대상 파일에 관한 생성, 접근, 수정시간 정보 및 원본 위치 등에 관한 기록을 포함하고 있으므로, 정보 유출에 관한 조사나 시스템 사용에 관한 시간 관계를 정리할 때 유용하게 사용된다. 


※ 점프리스트 ※ ( %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent )

 - win7 부터 추가된 기능, 전용포멧 CustomDestinations파일과 컴파운드 파일 포멧 automaticDestination-ms파일이 각각 존재.

 - 전용 도구와 컴파운드 뷰어를 활용하여 분석가능하다.


※ 시스템 복원 지점 ※

 - 특정 시점으로 시스템의 상태를 돌리기 위해 사용

 - 각 시스템의 상태를 기록, 각종 아티팩트나 주요 파일을 같이 저장해 두고 있어, 과거 시점의 시스템설정 상태 등을 조사할 때 매우 유용하다.

 - 크기가 크고 조사 대상의 내용이 비 효율적으로 많아 최후까지 분석이 미뤄지는 경우가 많다.  but 시스템 복원지점에 있는 데이터에 의한 해결도 가능!!


※ 휴지통 ※

 - 사용자 삭제 파일이나 은닉을 목적으로 이동된 데이터가 존재한다. 

 - 휴지통 폴더 내부에 간단한 형태로 삭제된 파일에 관한 정보를 기록.

 - 삭제된 파일의 삭제 시점과 같은 중요 정보를 파악 가능, 정보 파일에 기록되지 않은 파일은 의도적인 은닉파일 이라고 간주 할 수도 있다.


※ 시스템 로그 ※

 - 윈도우 시스템에서 간단한 로그는 txt형태로 기록하는데 시스템 로그의 경우 시스템 설치 시점부터 지속적으로 발생하는 여러 동작들을 기록하므로 다른 아티팩트와 교차 분석하여 결과의 신뢰도를 높일 수 있는 도움을 줄 수 있다.

 - 시스템 로그에서 기록하는 정보를 미리 파악해 두어 분석에 도움을 받을 수 있다.


※ 시스템 임시파일 ※

 - 임시파일의 흔적을 통해 사용한 어플리케이션의 사용 기록을 입증할 수 있는 단서가 될 수 있다.

 - 임시 폴더가 직접 접근 되지 않는 폴더라는 속성을 악용해, 데이터를 은닉하기 위한 목적으로도 사용된다. (임시폴더 간단확인 필요!!)


※ 미리보기 썸네일 ※ (%UserProfile%\AppDate\Local\Microsoft\Windows\Explore)

 - 썸네일은 윈도우 미디어 파일에 대한 미리보기 데이터베이스 파일을 의미한다. 

 - 원본 파일이 삭제되더라도 썸네일 데이터베이스 내부의 미리보기 파일은 삭제되지 않고 존재할 가능성이 크다.

 - 원본 파일의 존재 가능성을 입증해 줄 수 있다.


※ 윈도우 검색 데이터베이스 ※

 - 윈도우 검색에 사용하기 위한 색인 정보를 저장, 빠른 검색을 위해 색인한 결과를 저장

 - 사용자의 기본 폴더나 이메일, 인터넷 히스토리 정보등이 기록되는 경우가 있다.


※ 기타 아티팩트 ※

 - 스티커 메모, 프린트 스풀링 파일....등

 - 분석에 도움을 주는 모든 정보에 관련된 데이터는 시스템 아티팩트로 취급될 필요가 있다.




 - 물리 메모리, 가상 메모리

 - 파일 시스템과 폴더 구조

 - 레지스트리

 - 프리/슈퍼패치

 - 캐시(썸네일,아이콘)

 - 이벤트 로그

 - 웹 브라우저 사용 흔적 ( +Edge브라우저) 

 - 휴지통

 - 링크 파일

 - 볼륨 섀도 복사본

 + 알림(Notification)

 + 윈도우 스토어 (앱스토어)

 


2. 메모리 포렌식

 

□ 메모리 포렌식의 필요성

 ① 메모리에 직접 올라가는 악성 프로그램 등을 분석 가능

     인 메모리 라이브 인젝션

 ②프라이버시를 위하여 보호된 사용자 데이터들이 메모리에 올라갔을때는 암호화 해제

 

 

□ 활성데이터 수집(Live Data)과 메모리 포렌식의 차이점

활성데이터 수집(Live Data) 

메모리 포렌식 

 운영체제 API의 영향을 받음

메모리 자체를 가져오기 때문에 영향X 

 시행 시 마다 다른 결과가 나올 수 있음

분석 시 마다 동일한 결과 

 

전체 메모리 덤프를 통해 분석하지 않은 부분에 대하여 추가적인 분석이 가능

 

 

□ 메모리 덤프

- 하드웨어 방식 / 소프트웨어 방식

 

[하드웨어 방식] http://www.grandideastudio.com/tribble/

tribble : RAM 슬롯에 장착하여 메모리 덤프 수행

- 사전에 설치되어 있어야 함

- 설치가 되어있을경우 다른 영향 없이 덤프 추출 가능

 

IEEE1394(Firewire) : DMA가 가능 (Direct Memory Access)

                   USB는 운영체제를 통해서만 메모리 접근 가능

 

=> 이러한 이유로 소프트웨어 방식의 메모리 덤프 사용

     - 윈도우 API의 영향을 받을 수 있음

     - 덤프를 만드는 과정에서 시스템에 영향을 줌

 

 

□ 메모리 덤프 추출 도구

 

 ▷ 사용자가 임의로 추출한 덤프

- dumpit (http://www.downloadcrew.com/article/23854-dumpit)

  : cmd창 -> y -> 메모리 덤프

 

- memoryze (Mandiant사에서 만든 도구)

  : C:\Program Files (x86)\MANDIANT\Memoryze\memoryDD 관리자 권한으로 실행

 

- DD

 : 예전에는 사용가능했으나 현재 윈도우에서는 불가

 

- FTK Imager Lite (무료도구)

: 메모리모양 클릭 ->경로 설정 -> capture memory -> 끝

 

 

 ▷ 자동저장 덤프 (일반적으로 메모리 포렌식에서 사용하지 않음)

- 크래시 덤프 : 장애 발생 시 자동 저장

경로)사용자설정-고급설정-시작및복구-시스템오류-디버깅정보쓰기-커널/작은/전체 메모리 텀프

 커널 메모리 덤프

   크래시에 대한 최소 정보

 작은 메모리 덤프

   커널 메모리 부분만 저장

 전체 메모리 덤프

   물리 메모리 전체

 

- 절전모드 덤프 : 최대 절전모드에서 사용하는 덤프 c:\hiberfil.sys

  //끄기 powercfg -h off

 

- VMware 등 가상컴퓨터 시스템 - .vmem 파일

 


EPROCESS 구조체

 - 프로세스가 메모리에 존재할 때의 구조체

 - 환형 이중 링크드 리스트 형태

 

프로세스 스캔 방식

 - 리스트 워킹(List Walking)     : 링크를 따라 프로세스 검색

 - 패턴 매칭 (Pattern Matching): 실제 메모리 데이터 상 EPROCESS형태를 가진 프로세스 검색


 

□ 메모리 덤프 분석 도구

[volatility] (http://www.volatilityfoundation.org/25)

 

- volatility.exe -h : 사용법 조회 (플러그인 목록)

 

1) imageinfo :  vola.exe -f [메모리덤프파일이름] imageinfo

   메모리 덤프가 추출 된 시스템의 정보 확인  

   Suggested Profile에서 운영체제 종류 확인

   Service Pack이 여러개 검색 될 경우 아래부분의 Service Pack 항목 확인

   Win7SP1x64

2) pslist : vola.exe -f [덤프파일] --prorile=Win7SP1x64 pslist

   리스트워킹 방식으로 프로세스 검색

 

3) psscan : vola.exe -f [덤프파일] --prorile=Win7SP1x64 psscan

   패턴 매칭 방식으로 프로세스 검색

 

4) pstree : 프로세스 트리

 

5) psxview : 다양한 프로세스 검색 방식으로 비교

 

6) dlllist :

- 메모리 상에 존재하는 프로세스와 관련된 DLL리스트를 출력
--pid : 특정 PID와 관련된 DLL리스트를 출력
--offset [물리메모리주소] : psscan으로 검색된 프로세스의 DLL리스트 확인

 

7) dlldump : dlldump --dump-dir [덤프 대상 디렉토리] --pid [특정PID]

- DLL을 추출

추출 된 DLL은 virustotal

 

8) handle

- 프로세스가 접근중인 자원의 목록 확인(핸들)

 

9) getsids

- 보안식별자 확인

- 프로세스가 사용한 보안식별자 목록 환인

- 권한상승 등의 공격 확인 용도

 

10) mod시리즈

- modules, modscan, moddump

- 로드된 드라이버(*.sys)

- modules는 리스트 형태로 검색, modscna은 패턴매칭으로 검색

- moddump를 사용하여 덤프

 

11) thrdscan

- 스레드 정보 검색

 

12) 네트워크 관련 플러그인

- XP이전  : connections, conscan, sockets, sockscan

connections    연결정보를 리스트로 검색

conscan         연결정보를 스캔으로 검색

socket           열려있는 포트정보를 리스트로 검색

sockscan        열려있는 포트정보를 스캔으로 검색

- Vista 이후 : netscan

 

13) svcscan

- 서비스 관련

 

14) cmdscan

- cmd에서 입력했던 명령어

 

15) consoles

- 마지막 cmd창의 화면 상태 표시

 

16) procdump

- 특정 프로세스 덤프

--dump-dir [경로] --pid [PID]

 

 

□ 레지스트리 관련

17) hivescan : 메모리에서 레지스트리 목록 확인
18) hivelist : 레지스트리 주소와 파일 관계 매칭
19) printkey : 레지스트리에서 특정 값 출력
20) hivedump : 레지스트리 하이브 파일로 덤프
21) hashdump : 윈도우 SAM에 들어있는 계정 해쉬 추출

22) clipboard : 메모리 덤프시 클립보드 내용 출력
23) screenshot : 메모리 덤프시 대략적인 윈도우 배치
24) windows : 덤프시 열려있던 윈도우 창 정보


1. 휘발성 데이터 수집 (Live Data 수집)

 1) 수집대상

 2) 명령어

 3) 스크립트

 

2. 메모리 포렌식(메모리 덤프/분석)

 1) 메모리 덤프

 2) 분석(volatility)

 


 

1. 휘발성 데이터 수집

 


 

▷ Live Data 수집 시 참고자료

 

- RFC3227 , NIST SP800-86 : 포렌식 절차 / 대상 등을 정의

https://www.ietf.org/rfc/rfc3227.txt

http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-86.pdf

 

- NIST CFFT(Computer Forensic Tool Testing) : 포렌식 도구 검증

http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-86.pdf


 

 

□ 휘발성 데이터 수집대상

 

 시간정보(대한민국 UTC+9)

 네트워크 관련 정보

 프로세스 관련 정보

 사용자 관련 정보

 DLL 목록 사용여부 //(Dynamic Link Library)

 핸들 목록

 명령 히스토리 (제한있음,전부 다 볼 순X)

 서비스 목록

 예약 작업

 클립도드 내용

 네트워크 드라이브 정보 / 공유폴더

 netbios 정보

 프로세스. 메모리 덤프
 

=> 주로 사용 할 도구 

- Sysinternals Suite(https://technet.microsoft.com/en-us/sysinternals/bb842062.aspx)

- 기본 윈도우 내장 명령어(cmd.exe, c:\window\system32)

 

 

 

□ 휘발성 데이터 명령어

 

▷ 시간정보

date : 날짜

time : 정보

옵션 /t : 정보 수정없이 현재 정보만 표시

> date /t & time /t



▷ 기본적인 시스템 정보수집 

[wmic](Windows Managemant Instrumentation Console)

: (wmic 실행 시 프롬프트 변경)

 

os : 대략적인 시스템 정보 전체 조회

os get [특정항복1], [특정항목2].. : 특정 항목만 조회

  installdate         : 설치날짜

  serialnumber       : 시리얼정보

  currenttimezone  : 현재 시간대 정보

  localdatetime     : 시간정보

  useraccount      : 사용자 계정 정보

 

[SysinternalsSuite] (폴더로 경로이동)

Sysinternal 도구 실행 시 뒤에 ' /accepteula '옵션 추가      //(end user license agree?)

  - 라이센스 동이 GUI 창 미표시

  - 자동 라이센스 동의(스크립트)

 

ㄴ시스템 정보 확인(sysinternals)

PsInfo : 기본 시스템 정보 수집

-d : 디스크 정보

-s : 설치 된 프로그램 정보 (안나오는것도 있음)

-h : 핫픽스 정보

 

ㄴ로그인 된 사용자 정보 (Sysinternals도구)

: 원격 데스크톱 연결 등을 통해 접속한 사용자 목록 확인

ntsuers : sysintemtool 사이트에서 다운로드

http://www.systemtools.com/cgi-bin/download.pl?NetUsers (현재X)

 

ㄴ세션 정보 확인(sysinternals)

logonsessions

=> 사용자 로그인 세션 외의 기타 서비스 관련 세션 등의 정보 확인 가능

-p : 각 세션이 실행하는 프로세스 목록 확인

 

[열려있는 파일 목록 조회]

 net file

 openfiles

 psfile 

 

[cmd에서 실행헀던 명령어 조회](해당 cmd창에서만 유효)

 doskey /history

 

[프로세스 목록 조회]

 tasklist : 내장 명령어

       /v : 상세 정보 표시

    /svc : 프로세스가 관련된 서비스 정보 조회

 pslist(sysinternals)

-t : 프로세스 트리표시

-x : 스레드 등 상세 정보 표시


[DLL확인]

 listdll.exe (sysinternals)

 

[핸들 확인]

 handle.exe (sysinternals)

 

[서비스 목록 조회]

 psservice.exe (sysinternals)

 

 ▷ 네트워크 관련 정보

[네트워크 정보 수집]

 netstat: 네트워크에서 열려있는 포트 정보 등 조회

-a : 전체 네트워크 정보 (TCP이외의 연결)

-n : 이름 서비스 조회 중지

-o : 관련 프로세스 정보

-b : 프로세스 이름 정보 표시

 

 fport : 포트 정보 확인 (xp까지는 됐으나 현재 X)

 

 tcpvcon(sysinternals) : 네트워크 포트 정보 확인

-a : 전체 포트 정보

-n : 이름 표시 X

-c : csv형태로 표시 (분석 용이)

 


[네트워크 인터페이스 정보]

 ipconfig /all : NIC 상세 정보 출력

 getmac       : MAC Address 표시

 

[라우팅 테이블]

 netstat -r , route print : 실행 결과 동일

 

[arp 캐시 확인]

 arp -a : 현재 시스템의 arp 캐시 확인

 

[dns캐시]

 ipconfig /dispalydns : 현재 시스템 DNS 캐시확인

 

[네트워크 드라이브 확인]

 net use  : 네트워크 드라이브 연결 / 목록 확인

 

[Netbios 이름확인]

nbtstat -c : netbios 이름 / 캐시 출력

 

 

▷예약작업

 at           : 일회용 예약 작업 목록    ex)at 13:00 cmd.exe

 schtasks   : 작업스케줄러에 등록된 예약 작업 목록

  

 

□ 스크립트(배치파일 batch)

- .bat

test.bat

reuslt.txt

 

휘발성 데이터 수집 스크립트 작성 시 유의사항

① 스크립트 실행결과는 파일로 저장

② 스크립트 실행 시 중단되지 않도록 비 대화형 명령 수행

③ 스크립트 실행에 사용되는 파일은 전부 별도로 준비

   (윈도우 내장명령어, 기타 sysinternals 도구 등)

④ cmd.exe도 별도로 준비

 


 

 http://ss-spring.tistory.com/17


수사의 초기 단계부터 법적인 문제를 고려하여 계획이 수립되고 법정에서의 증거 능력을 최대한 살리는 방향으로 증거들을 수집, 분석한다.


<인터넷 침해 사고 조사>

해커 또는 악성 프로그램이 어떻게 내부로 침입했고, 침입 후에는 어떤 활동을 했는가를 주요 조사 대상으로 한다. 

메모리 덤프나, 프로세스 덤프, 네트워크 연결 정보, 열려있는 포트 정보 같은 휘발성 정보와 각종 보안 로그들이 사고 조사에서 가장 큰 역할

'라이브 리스폰스(Live Response)', 임의적인 수정안됨 해시 값을 만들어 복사복과 보관하고 로그 파일의 메타데이터도 별도로 기록하는 것이 중요


<사용자의 부정이나 범죄 행위에 대해 조사할 때>

네트워크 트래픽이나 프로세스, 포트 정보처럼 휘발성이고 동적인 정보보다는

파일 시스템이나 애플리케이션 아트팩트처럼 비 휘발성이고, 정적인 정보들이 주요 분석 대상이 되며,

데이터 복구와 파일 카빙, 시그니처 분석 암호 해독 같은 기술이 주로 사용된다. 


<사용자의 활동 기록을 분석할 때>

외부기기의 연결 유무, 접근한 파일 목록, 파일 복사/이동, 사용한 애플리케이션 목록, 그리고 타임라인이 주요 분석 대상이다. 

디스크 와이핑을 통한 안티포렌식이 조사하는데 있어 가장 큰 골칫거리가 된다.


<컴퓨터가 범죄의 도구로 사용 되었을 때>

이메일 포렌식, 웹사이트 접속 기록, 컴퓨터 부팅 시간, 사용자가 사용한 애플리케이션, 사용자 ID, 삭제한 파일, 

시그니처 분석과 타임라인 분석.


<데이터 복구와 카빙>

물이 들어갔다던가, 로직 보드가 망가졌다거나, 기계적인 결함이 발생할 경우(물리적 복구, 노하우와 기술 필요)

파일시스템의 구조나 서로 다른 파일들이 가지고 있는 독특한 내부 구조를 바탕으로 삭제되었거나 일반적인 소프트웨어 인터페이스로 읽을 수 없는 데이터를 복구하는 것(소프트웨어적 복구, 사용하는 도구의 능력에 크게 의존)

*카빙이란: 파일 시스템의 메타데이터를 기반으로 복구하는 것이 아닌 파일 시스템의 도움 없이 파일들이 가지고 있는 고유한 정보(시그니처 정보, 파일의 논리적 구조, 저장되는 데이터의 형식)에 의존하여 삭제된 파일의 전부 혹은 그 일부를 복구하는 것을 의미한다. 


포렌식 전문가가 갖추어야 하는 기본적인 소양

> 디지털 증거 분석을 위한 전문 지식과 기술

> 증거 획득과 보존, 그리고 제출에 관한 법률적인 지식

> 보고서 작성 능력


OS와 파일 시스템에 대한 이해, 해킹 기법과 그에 대한 대응 기법의 이해, 암호에 대한 일반적인 지식, 네트워크 프로토콜에 대한 이해, 보안 로그를 분석할 수 있는 능력, 애플리케이션 아티팩트와 파일 구조에 대한 이해, 실행 파일 분석, 리버스 엔지니어링

Java 클래스 객체 사용 연습하기


[조건]

> 클래스 내부에 생존 여부를 가지는 속성 포함

> 이름과 나이를 포함하는 속성 포함

> 이름 정보를 변경하는 기능 포함

> 이름 정보를 반환하는 기능 포함

> 생존여부를 반환하는 기능 포함


> Animal 클래스를 이용하는 테스트 클래스 작성

> Animal 클래스를 이용하여 나이가 3살, 이름이 "큰뿔소"이며 살아있는 객체를 생성

> 생성한 객체의 이름과 생존 여부 출력

> "큰뿔소" 객체의 이름을 "펭귄"으로 변경한 후 이름과 생존 여부 출력


Animal 클래스


{필드}

> live : boolean 타입

> age : int 타입

> name : String 타입

{메소드}

> setName(), getname(), getLive()


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class Animal {
    boolean live;
    int age;
    String name;
 
    void Animal(String name) { // 객체로 이름을 받아서 사용
        this.name = name;
        this.age = 22;
        this.live = true;
 
        System.out.println(name);
        System.out.println(age);
        getLive();
        System.out.println();
    }
 
    void setName(String name) {
        this.name = name;
    } // 이름 정보 변경
 
    String getName() {
        return name;
    } // 이름 정보 반환
 
    void getLive() {
        if (live == true) {
            System.out.println("살았다");
        } else
            System.out.println("죽었다");
    } // 생존 여부 반환
}
 
public class AnimalTest {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
        Animal animal = new Animal();
        animal.Animal("큰뿔소");
        animal.Animal("펭귄");
    }
}


[결과]


'2017 > JAVA' 카테고리의 다른 글

주사위 놀이(java.util.Random)  (0) 2017.07.04
기말대비정리  (0) 2017.06.01
INTRO  (0) 2017.03.04

+ Recent posts