ssoL2 TISTORY

[WHOIS] 포렌식 교육 7주차 공부 / volatility 사용법/PID, PPID/md5, NTLM 해시 본문

sec/forensic

[WHOIS] 포렌식 교육 7주차 공부 / volatility 사용법/PID, PPID/md5, NTLM 해시

ssoL2 2021. 2. 14. 19:42

공부

1. volatility 사용법 공부 www.volatilityfoundation.org/
2. PID와 PPID
3. md5, NTLM 해시



1. volatility 사용법 

  • Volatility : 메모리 덤프 파일을 분석하는데 사용되며, 파이썬 기반으로 무료 어플리케이션이다.
  • Readme.txt를 참고해서 기본으로 제공되는 플러그인을 확인할 수 있다.
다운로드 링크 (os 환경에 맞게 설치) -> www.volatilityfoundation.org/26
  • 설치 완료된 모습

 

  • 메모리 덤프 파일[MemoryDump(SuNiNaTaS)]을 분석하기 위해서 해당 파일을 volatility.exe 위치로 옮긴다.

 

  • 윈도우 cmd에서 volatility.exe 주소로 옮긴다.

 

 

이제 volatilty의 플러그인 사용법을 익혀봅시다.

 

[volatility.exe -f MEM.DMP imageinfo] -> 메모리 정보 확인 (운영체제 정보 확인)

  • imageinfo : 메모리 정보를 확인한다. 특히, "Suggested Profile(s)" 정보가 중요하다.(운영체제 정보)

 

[volatility.exe -f MEM.DMP --profile=Suggested Profile(s) netscan] -> 연결된 네트워크나 소켓 확인 (ip 정보 확인)

  • netscan : tcp, udp, raw 소켓 등을 출력한다. 윈도우 7, 윈도우 8 이상부터 사용 가능하다.

 

[volatility.exe -f MEM.DMP --prifile=Suggested Profile(s) pstree] -> 프로세스 확인

  • pstree : 프로세스를 트리 형태로 출력한다. 그러나 은닉되었거나 연결이 끊긴 프로세스는 보여주지 않는다.

 

[volatility.exe -f MEM.DMP --profile=Suggested Profile(s) cmdscan] -> cmd에 입력한 명령어 기록 확인

  • cmdscan : 사용자가 cmd.exe을 통해 입력한 명령어를 출력한다.

 

[volatility.exe -f MEM.DMP --profile=Suggested Profile(s) filescan] -> 파일 스캔

  • filescan : 추출할 수 있는 파일을 찾고 offset필드 값을 사용해서 dumpfiles 플러그인으로 해당 파일을 추출한다.

 

[volatility.exe -f MEM.DMP --profile=Suggested Profile(s) dumpfiles -Q offset -D ./] -> 파일 추출

  • dumpfiles : 메모리에서 추출할 수 있는 파일 추출을 수행한다.
  • [-Q] 옵션으로 해당 파일 offset, [-D] 옵션으로 추출 위치를 나타낸다. [./]은 현재주소이다.

 

[volatility.exe -f MEM.DMP --profile=Suggested Profile(s) procdump  (-p PID) -D ./] -> 실행 프로그램 추출

  • procdump : 프로세스를 파일로 추출한다. 추출한 파일은 모두 PE 헤더를 가지고 있고 실행이 된다.
  • [-D] 옵션으로 추출 위치를 나타낸다. [./]은 현재주소이다.
  • [-p number] 옵션으로 number에 PID를 넣으면 해당 PID의 프로세스만 추출한다.

 

[volatility.exe -f MEM.DMP --profile=Suggested Profile(s) hashdump] -> 정 패스워드 해시값 추출

  • hashdump : 레지스트리 하이브에 있는 해시를 추출하고 역해시를 시도한다.

 


2. PID, PPID

  • PID(Process ID) :  운영체제에서 프로세스를 식별하기 위해 프로세스에 부여하는 번호
  • PPID(Parent Process ID) : 부모 프로세스의 PID
  • -> 부모 프로세스가 자식 프로세스보다 일찍 종료된다면 자식 플레스는 고아 프로세스가 된다.
  • -> PPID로 init process의 PID(1)를 가지게 된다.

 


 

3. md5, NTLM 해시

  • 해시(Hash) : 하나의 문자열을 이를 상징하는 더 짧은 길이의 값이나 키로 변환하는 것
  • 암호화 과정이 아니다 !!!
  • 단지 암호화 기법에서 해시를 같이 사용하면 놀라울만큼 다양한 구현이 가능하다.

 

  • MD5(Message-Digest algorithm 5)는 128 bit 암호화 해시 함수이다.
  • 현재는 심한 결함이 발견되어 MD5 알고리즘을 보안 관련 용도로 사용하는 것을 권장하지 않는다.
  • MD5로 SSL 인증서 변조까지 가능하다.

 

  • MD5 해시 알고리즘으로 32개의 문자(16진수)의 결과값이 나온다.
  • 512 bit 단위의 메시지 블록에 대한 128 bit(16 byte)의 해시 값을 생성한다.
  • 단어 하나만 틀려도 해시 값은 완전히 다르게 된다.

 

 

  • NTML(NT LAN MANAGER) 인증 프로토콜 : 윈도우 인증 프로토콜로 Challenge-Respond (도전-응답) 인증 프로토콜 방식
  • Challenge-Respond 프로토콜의 방식은 아래와 같다.
1. Alice는 Bob의 자원에 접근하기 위해 인증을 요청
2. Bob은 Alice에게 임의의 값인 Challenge(도전)을 전송
3. Alice는 Bob이 보낸 도전에 대해 Alice와 Bob이 사전에 알고 있는 
   키와 알고리즘으로 계산한 Response(응답)을 Bob에게 전송
4. Bob은 전달 받은 응답이 사전에 알고 있는 값으로 계산한 값이 맞는지 확인 후 인증완료

 

  • NTLM 인증 흐름
  • Challenge-Responde 기반으로 인증하기 때문에 큰 틀은 같다.

  1. NEGOTIATE_MESSAGE : 인증 요청(클라이언트 이름, 사용할 NTLM 버전, 해싱 방식 등 정보 전송)
  2. CHALLENGE_MESSAGE : 클라이언트가 요청한 인증요소에 맞춘 임의의 도전 값(64 bit=8 byte 의사난수) 전송
  3. AUTHENTICATE_MESSAGE : 클라이언트는 유저의 암호를 기반으로 생성한 해시 값을 응답으로 전달
  4. Server는 응답이 유효한 값인지 확인 후 인증완료 !

 

  • NTLM은 해싱된 유저 암호를 사용하여 인증 응답 값을 생성한다.
  • 해싱 방식은 LM 해시 NT 해시 두 가지가 존재

 

 

 

 

 

<참고 자료>

wave1994.tistory.com/31

schmidtiana95.tistory.com/entry/Volatility

elfmfl.tistory.com/40

leeyh0216.github.io/2020-01-02/sid_pid_ppid_pgid

elfmfl.tistory.com/40

 

Comments