손전등을 알아보다가 C TYPE 충전에 차량 도어 유리 타격 시 유리가 깨지는 제품을  찾다 보니 나이트코어 MH10 V2 LED 손전등을 구매하게 되었습니다.

 

중국에서 배송이 오다보니 박스가 많이 찌그러졌네요. 솔직히 내용 포장을 보니 누가 반품한 걸 배송한 듯싶었는데 어쩔 수없죠.

 

 

 

박스를 열어보면 투명 케이스 안에 옹기종기 모여있습니다.

 

 

 

구성품은 보증서, 설명서, 고무링, NTH10 택티컬 홀스터, 분리형 클립, C TYPE 충전케이블, 손전등, 배터리 케이스, 고리입니다.

 

 

 

기본적으로 니트로코어 NL2140 4000mAh 21700 대용량 배터리가 들어있으며, CR123 두개를 사용하거나 배터리 케이스에 18650을 넣어서 사용이 가능합니다.

 

 

사진으로 표현이 어렵긴 한데 밝기는 4단계입니다.

high/mid/low/ultralow

4가지 밝기 모드 말고도 3가지의 특수 모드가 있습니다.
strobe/beacon/sos

 

0123

 

C TYPE 충전 단자이고, 고무 커버는 기본적인 물과 먼지를 차단해줍니다.

 

01

 

1개의 LED인데 1200루멘으로 엄청 밝습니다.

전체 길이 147mm
지름 25.4-27.2mm
무게 77.5g

 

01

 

기본적인 목적은 운전 중 긴급상황 발생 시 차량 도어 유리를 타격하여 차량 탈출이 1순위였고, 간혹 길이 너무 어두운 곳에서 후진 시 사용하려는 게 2순위가 되겠습니다.

그래서 손전등은 차량 멀티박스에 고이 모셔놨습니다.ㅎ

MySQL 설치 후 외부에서 접속하기 위해 접근 허용 IP를 등록하는 방법입니다.

◎ MySQL Database 설정
 > 권한확인
  - 처음 설치 후 로컬에서 접속하여 권한을 확인해보면 localhost 또는 127.0.0.1만 등록되어 있습니다.

 mysql> use mysql;
 mysql> select host, user from user;
 |    host    | user |
 | localhost | root |
 mysql> show grants for current_user;
 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost'


 > 권한설정
  - 아래는 모든 db에 all privileges(모든 권한)을 부여하는 쿼리입니다.
  - 특정 IP 접근 허용

 mysql> grant all privileges on *.* to ‘root’@‘192.168.1.2’ identified by ‘패스워드’;

  - 특정 IP 대역 접근 허용

 mysql> grant all privileges on *.* to ‘root’@‘192.168.1.%’ identified by ‘패스워드’;

  - 모든 IP 접근 허용

 mysql> grant all privileges on *.* to ‘root’@‘%’ identified by ‘패스워드’;


 > 권한변경
  - 권한을 부여한 IP 정보를 수정합니다.

 mysql> update user set host = '192.168.1.2' where user ='root' and host='192.168.1.%';
 mysql> flush privileges;


 > 설정확인
  - 접속을 허용하려는 IP에 대한 권한을 확인합니다.

 mysql> select host, user from user;
 |      host      | user |
 | 192.168.1.% | root |
 |   localhost   | root |
 mysql> show grants for current_user;
 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%''


 > 설정적용

  - 접속을 허용하려는 IP에 대한 권한 설정을 적용합니다.

 mysql> flush privileges;


 > 권한 제거
  - 특정 IP 접근 허용 제거

 mysql> delete from mysql.user where host=’192.168.1.2′ AND User=’root’;

  - 특정 IP 대역 접근 허용 제거

mysql> delete from mysql.user where host=’192.168.1.%′ AND User=’root’;

  - 모든 IP 접근 허용 제거

mysql> delete from mysql.user where host=’%’ AND User=’root’;


 > 설정 적용
  - 접속을 허용하려는 IP에 대한 권한을 확인 후 설정을 적용합니다.

 mysql> select host, user from user;
 mysql> flush privileges;


 > MySQL 접속

# mysql -u root -p


◎ MySQL IPTABLES 설정
 > mysql 서버  iptables 설정
  - mysql 서버에  iptables에서 mysql포트가 차단되어 있는지 확인합니다.
  - my.cnf 파일에 아래와 같은 설정이 있을 시 주석처리 또는 삭제합니다.

 $ sudo vi /etc/my.cnf
 # bind-address = 127.0.0.1 // 주석처리 또는 삭제


 > mysql 재시작

# /etc/init.d/mysqld restart


 > MySQL 접속

 # mysql -u root -p

 

 

오래전부터 사용하던 M로제트 마시마로 MV-1000 핸디형 청소기 배터리가 충전을 해도 얼마 못쓰고 방전이 되다 보니
배터리를 교체하게 되었습니다.

기존 배터리 사양은 Ni-cd, 8 cell, 1500mAh, 9.6v이고,
모터 사양은 RS-540SM 6035, 4.5~15v, 6.2A입니다.


처음 하는 작업이다 보니 새로운 배터리의 볼트가 높아 강압기를 연결해야 하나 고민하였으나, 모터의 볼트 범위를 확인한 후 강압기는 연결하지 않았습니다. 그리고 3s연결을 위해 20A bms 회로도 주문하였습니다.


신규 배터리 사양은 Li-Po, 1003450, 2000mAh, 3.7v입니다. 3S2P로 연결하기 때문에 용량은 4000mAh가 됩니다.


개별 보호회로를 제거하고 먼저 병렬로 연결하기 위해 2개씩 미니 스폿용접기로 작업을 했습니다. 가운데 배터리는 원래 간격이 달라서 기울어졌습니다. ㅎ


그리고 니켈 플레이트를 스폿 용접하여 직렬로 연결해 주었습니다.


전원 케이블은 기존 배터리에서 사용하던 18 awg를 재사용하였고, 16 awg와 22 awg를 추가로 사용하여 bms와 휴대용 미니 인두기로 납 작업을 진행했습니다. 마무리는 캡톤 테이프로 열심히 감아주었습니다. ㅎ 그리고 배터리와 미니 무선청소기 연결 커넥터는 기존 커넥터를 그냥 사용해도 되는데 그냥 XT60 방식으로 변경해주었습니다.


니켈이나 납이 중금속을 분류되다 보니 흡입하지 않도록 주의해야 되는데 쉽지 않지만...작업은 재미있네요. ㅎ

 

아래는 M로제트 마시마로 MV-1000 핸디형 청소기 정보를 찾기 어렵다보니 추가했습니다.

인비오 PD-1850 휴대용 DVD 플레이어를 물려 받았는데 리튬폴리머 배터리가 배불러있더군요.

 

 

배터리 사양은 리튬폴리머 5534120 2000mAh 3.7v이며 2S로 연결되어 있었습니다.

동일한 배터리를 찾아봤으나 검색이 안되다보니 비슷한 크기로 만들 수 있는 배터리를 구매하였습니다.

새로 구매한 배터리사양은 리튬폴리머 1003450 2000mAh 3.7v입니다.

(제품에는 103450이라고 인쇄되어 있으나 실제 두께는 1cm였습니다.)

 

 

기존 배터리에서 bms를 재사용하기 위해 전열 테이프를 제거하고 확인해봤습니다.

보통은 스폿 작업으로 연결할 텐데 납으로 작업을 했더군요.

 

 

아무튼 사용하던 bms의 납을 휴대용 미니 인두기로 깨끗하게 제거하고 싶었으나 괜히 기판 태울까 봐 그냥 새로운 배터리에서도 보호회로를 제거한 후 미니 스폿용접기로 작업을 통해 연결해주었습니다. 그리고 기존 충전케이블은 길이가 짧아서 새로운 케이블로 교체했습니다.

 

 

마감은 200도 이상을 견딜 수 있는 내열, 절연 테이프인 캡톤 테이프로 마감해줍니다.

 

 

이제 DVD 플레이어 배터리를 삽입합니다.

 

 

DVD 재생이 잘되는지 확인하고, 아답타가 없다 보니 정품 아답타를 별도로 구매했네요.

◎ Miscellaneous : 기타 등등
 > strings : <decimal_offset>:<string> line 형식으로 된 주어진 Image와 File에서 해당 문자열을 찾을 수 있는 Process와 Virtual Address를 출력해 주는 명령어입니다.
  - 해당 명령의 입력은 Sysinternals의 Strings Utility 또는 유사한 Tool 들의 출력(offset:string)이며, 입력 Offset 은 File/Image의 시작 지점의 물리 Offset입니다.
  - Sysinternals 의 Strings는 Linux/MAC 에서 Wine을 이용하여 사용 가능하며, 이에 대한 출력은 File 형식으로 Volatility에게 Redirect 되어야 합니다. 
  - GNU 의 Strings 명령어를 사용한다면 -td Option을 통해 Offset을 10 진수로 출력 가능합니다.(GNU strings는 십육진 오프셋 미지원) 
  - File/Image 를 Sysinternals의 Strings Utility를 수행하면 많은 시간이 걸리며, -q와 -o는 Header 출력의 생략(-q)과 각 줄의 Offset(-o)을 구하기 위해 필수적인 Option입니다

 # wine strings.exe -q -o -accepteula image.vmem > image.vmem.txt
 # python vol.py -f image.vmem --profile=Win7SP1x64 strings -s export.txt

  - Default 로 PsActiveProcessHead를 이용해 Double-linked 형태로 Process 들을 출력하며, -S Option을 통해 Hidden Process 들도 출력 가능합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 strings -s export.txt --output-file=export_strings.txt -S

  - EPROCESS Offset 도 지원해 줍니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 strings -s export.txt --output-file=export_strings.txt -o 0x00000000

 

 > volshell : 메모리 덤프 파일 분석 시에 Windbg와 유사한 명령 형식으로 분석 할 수 있습니다.
 ※ 제공 기능
  - 프로세스들의 목록화(List processes)
  - 프로세스들의 문맥 교환(witch into a process's context)
  - 구조체와 객체들의 형식 출력(Display types of structures/objects)
  - 주어진 주소에 타입 덮어씌우기(Overlay a type over a given address)
  - 링크드 리스트 순회(Walk linked lists)
  - 주어진 주소의 코드 디스어셈(Disassemble code at a given address)
  - db, dd, dt, dis 명령어는 특정 주소 공간을 인자로 전달 가능하며, 사용하는 주소 공간에 따라 다른 결과를 출력하는 것을 확인 가능합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 volshell

 

 > bioskbd : Memory 의 BIOS 영역에서 Key 입력을 읽을 때 사용하는 명령어입니다.
  - Lenovo 의 BIOS와 SafeBoot, TrueCrypt, BitLocker에 입력한 비밀 번호를 확인 가능합니다.
  - 메모리 덤프 툴에 따라서 필요한 BIOS 영역을 포함할 수도 있고 아닐 수도 있습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 bioskbd

 

 > patcher : Patches memory based on page scans
  - patcher 플러그인을 실행할때, 명령줄에 쓰기 옵션(-w) 지정하지 않으면 수정이 안됩니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 patcher

 

 > pagecheck : pagecheck 플러그인은 커널 DTB (System/Idle 프로세스로부터)을 사용하고 페이지들(pages)이 위치하고 있는 메모리(AddressSpage.get_avaliable_pages 메서드를 사용) 정보를 출력하는 명령어입니다.
  - 각 페이지별로 그 페이지 데이터에 접근하는 것을 시도하고 자세하게 결과를 출력합니다. 만약 그 시도한 것이 실패되면 PDE, PTE 주소 정보들도 나타냅니다.
  - 이 플러그인은 기본적으로 지원되지 않고, contrib 디렉터리 안에 위치하고 있으며 non-PAE x86 주소 공간들에서 작동이 됩니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 --plugins=contrib/plugins/ -f pat-2009-11-16.mddramimage pagecheck

 

 > mftparser : 파일이 디스크에 있는지 확인하는 명령어입니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 mftparser

  - 내용이 상당히 길기 때문에 --output-file 옵션을 사용하여 파일에 저장하는 것이 좋습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 mftparser --output=body -D folder_name/ --output-file=mft.body
 # cat mft.body

 

Volatility 볼라틸리티 2.1 Plugins - 윈도우#01

◎ Image Identification : 이미지 식별

Volatility 볼라틸리티 2.1 Plugins - 윈도우#02

◎ Processes and DLLs : 프로세스와 DLLs 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#03

◎ Process Memory : 프로세스 메모리 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#04

◎ Kernel Memory and Objects : 커널 메모리와 오브젝트 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#05

◎ Networking : 네트워크 정보
Volatility 볼라틸리티 2.1 Plugins - 윈도우#06

◎ Registry : 단지 Registry data를 추출하는데 도움을 줍니다.
Volatility 볼라틸리티 2.1 Plugins - 윈도우#07

◎ Crash Dumps, Hibernation and Conversion : 크래쉬 덤프, 하이버네이션 정보확인 및 파일변환
Volatility 볼라틸리티 2.1 Plugins - 윈도우#08

◎ Malware and Rootkits : 맬웨어와 루트킷 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#09

◎ Miscellaneous : 기타 등등

 

◎ Malware and Rootkits : 맬웨어와 루트킷 분석
 > malfind : 사용자 모드 형태로 은폐되어 있거나 인젝션 된 코드 또는 DLL 정보를 분석하는 명령어입니다.
  - VAD 태그와 페이지 권한들 같은 문자들을 기반으로 사용자 모드 메모리에 숨겨져 있거나 삽입되어 있는 코드가 DLLs를 찾아냅니다.
  - CreateRemoteThread -> LoadLibrary로 사용되는 프로세스에 삽입되는 DLLs은 탐지하지 않습니다. 이 기술로 삽입된 DLLs는 숨겨지지  않으며 dlllist에서 이것들을 확인할 수 있습니다. 
  - malfind의 목적은 기본적인 메서드/도구들이 보지 못하는 것을 DLLs의 위치를 찾아내는 것입니다. malfind에 의해 인식되는 메모리 세그먼트의 압축된 복사 파일을 저장하고 싶다면 -D 옵션과 결과가 저장될 dir를 지정해주면 됩니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 malfind -p pid
 # python vol.py -f image.vmem --profile=Win7SP1x64 malfind -p pid -D folder_name/

 

 > yarascan : YARA를 이용하여, 사용자 및 커널 모드 메모리 영역에 포함된 바이트(Byte) 순서, ANSI 및 유니코드 (Unicode) 문자열 검색하는 명령어입니다.
  - 의심스러운 드라이버(xxx.sys)에 대한 메모리 스캔

 # python vol.py -f image.vmem --profile=Win7SP1x64 yarascan -Y "xxx.sys" --wide

  - YARA 패턴(Rules)을 만들 수 있고, --yara-file=RULESFILE 옵션을 이용하여 명시할 수 있습니다.
  - 프로세스에서 rules.yara 파일 내에 정의되어 있는 문자들을 검색하기 위해서 아래와 같은 명령어를 입력하고, 간단하게 결과를 확인할 수 있습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 yarascan --yara-file=/path/rules.yara

  - 프로세스에서 간단한 문자를 검색하고, 매칭 되는 문자가 포함되는 메모리 세그먼트들을 덤프 하기 위해서는 아래 명령어를 입력하면 됩니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 yarascan -D dump_files --yara-rules="stringtext"

  - 커널 메모리에서 바이트 패턴을 검색하기 위해서, 아래 명령어를 사용합니다.(kernel driver들에 의해 Load되어 있는 Memory만 탐색)

 # python vol.py -f image.vmem --profile=Win7SP1x64 yarascan --yara-rules="{8B 00 81 38 54 44 4C 33 75 5A}" -K

  - 각 프로세스 안에 있는 byte패턴을 얻기 위한 검색은 아래 예제와 같습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 yarascan --yara-rules="{eb 90 ff e4 88 32 0d}" --pid=624

  - 각 프로세스 안에 있는 정규 표현식에 대한 검색은 아래 예제와 같습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 yarascan --yara-rules="/my(regular|expression{0,2})" --pid=624

 

 > svcscan : Memory Image에 등록된 service 목록을 확인할 수 있는 명령어입니다.
  - Process ID, Service name, Service display name, Service type, Current status, Binary path을 확인할 수 있습니다.
  - Binary path의 경우 User-mode service 뿐만 아니라, Kernel-mode에서 사용된 service의 Driver 이름까지도 출력합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 svcscan

 

 > ldrmodules : 특정 프로세스나 DLL에 의해 은폐된 DLL 정보 분석하는 명령어입니다.
  - PEB 안의 linked list에서 Unlinking을 통해 DLL을 숨기는 기법의 경우 VAD(Virtual address Descriptor)에 정보(Base address, Full path)가 남아 있기 때문에 탐지가 가능합니다.
  - Unlinked 된 명령어를 출력해 주며, Memory mapping 된 PE File 이 PEB List에 존재하면 1, 하지 않으면 0을 출력해 줍니다.
  - 경로를 덮어쓰기 함으로써 악성코드가 DLL을 숨길 수 있으며, 이는 모든 Entry의 Full path를 보는 -v 또는 --verbose Option을 사용하여 확인할 수 있습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 ldrmodules
 # python vol.py -f image.vmem --profile=Win7SP1x64 ldrmodules -v

 

 > impscan : 코드가 import 하고 있는 함수를 보여줍니다.
  - Impscan은 PE의 IAT(Import Address Table)를 파싱 할 필요 없이 API들을 불러와 정의하며, 만약 악성코드가 완벽하게 PE Header를 지우고 커널 드라이브에서 실행되고 있다면 여기엔 나오지 않을 것입니다.
  - IAT(Import Address Table) :  프로그램에서 사용할 외부 라이브러리가 메모리에 로드되고 난 후, 해당 함수의 주소를 가지고 있는 테이블입니다.
  - 명령어 라인에  -b 또는 -base 옵션으로 탐색 시작 베이스 주소 지정이 가능합니다.(Kernel driver의 Base address 도 지정 가능) 만약 Base address를 지정해 주지 않으면, Process의 main module 끝까지 탐색할 것입니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 malfind -p pid 
 # python vol.py -f image.vmem --profile=Win7SP1x64 -p pid impscan -b [IAT 주소] 

  - 명령어 라인에 -D 옵션으로 modules 명령으로 확인한 base address를 통하여 Rebuild가 가능합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 modules | grep find_text
 # python vol.py -f image.vmem --profile=Win7SP1x64 impscan -b [IAT 주소] -D folder_name/

 

 > apihooks : 사용자 및 커널 모드에서 API 후킹 정보를 분석하는 명령어입니다.
  - IAT, EAT, Inline Hooking을 찾아낼 수 있습니다.
  - Inline Hooking을 탐지하기 위해서 CALL, JMP Operand 가 직접 또는 간접적으로 위치를 참조하는 것, PUSH/RET 명령어를 탐지하며, ntdll.dll의 syscall이나 Kernel memory의 unknown code page를 호출하는 것을 탐지합니다.
  - Kernel driver의 unknown code page를 CALL 하는 부분도 탐지할 수 있습니다.(cf. tcpip.sys 에 의심스러운 redirection)

 # python vol.py -f image.vmem --profile=Win7SP1x64 apihooks

 ※ hook을 포함하는 Code 추출 가이드
  - malfind 명령어가 자동으로 찾고 추출 가능한지 확인
  - volshell의 dd/db 명령어를 통해 MZ header를 찾은 후, dlldump를 --base 값과 함께 사용하여 추출
  - vaddump 명령어를 통해 모든 Code segment 들을 추출 한 후(File 명은 주소 범위) 해당 범위에 해당하는 Dump File을 찾음.

 

 > idt : System의 IDT(Interrupt Descriptor Table) 현재 주소, Module, Interrupt 목적 등을 보여주는 명령어입니다.
  - IDT(Interrupt Descriptor Table) : 인터럽트가 발생했을 때 처리해주는 함수의 루틴을 포함하고 있는 테이블입니다.
  - Inline Hooking을 탐지하기 위해 IDT Entry 들도 Check 합니다.
  - IDT 변경사항에 대해서 자세한 정보를 얻고 싶다면, --verbose 옵션을 사용합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 idt
 # python vol.py -f image.vmem --profile=Win7SP1x64 idt --verbose

 

 > gdt : System의 GDT(Global Descriptor Table)를 탐지하는 명령어입니다.
  - GDT(Global Descriptor Table) : 커널 모드 메모리 내에 존재하는 구조체입니다.
  -  호출 문(call gate)에 설치된 Alipop 같은 루트킷들을 탐지하는데 유용합니다.
  - 조금 더 많은 조사를 원한다면 volshell을 사용하면 됩니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 gdt
 # python vol.py -f image.vmem --profile=Win7SP1x64 volshell

 

 > threads : 각 Thread에 속한 Register 정보, Thread 시작 주소의 Disassemble Code 등 조사에 관련된 다양한 정보를 제공해주는 명령어입니다.(Investigate _ETHREAD and _KTHREADs)
- ETHREAD 객체의 가상 주소, pid, tid, Thread와 관련된 모든 tag(SystemThread, AttachedProcess, HookedSSDT), 생성/종료 시간, 상태, 순서, 시작 주소 등을 확인 가능하며 SSDT base 주소와 각 Service Table, Table 안의 Hook 된 함수도 출력해 줍니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 threads

  - 가능한 tags/filters의 리스트 항목을 보고 싶다면, -L 옵션을 사용합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 threads -L

  - Default로 모든 Thread에 대한 정보를 제공해 주기 때문에 정렬에 어려움이 있을 것이며, 이 때는 -F Option을 인자에 ", "를 이용하여 여러 개의 Filter를 적용 가능합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 threads -F AttachedProcess

 

 > callbacks : Rootkit, Anti-virus, Dynamic Analysis, Windows Monitoring Tool 들에 사용됩니다.
  - 중요한 알림 루틴(notification routines)과 커널 콜백(callbacks)의 모음을 출력할 수 있습니다.
 ※ Callbakck 모음
  - PsSetCreateProcessNotifyRoutine(process creation)
  - PsSetCreateThreadNotifyRoutine(thread creation)
  - PsSetImageLoadNotifyRoutine(DLL/image load)
  - IoRegisterFsRegistrationChange(file system registration)
  - KeRegisterBugCheack and KeRegisterBugCheackReasonCallback
  - CmRegisterCallback(registry callbacks on XP)
  - CmRegisterCallbackEx(registry callbacks on Vista and 7)
  - IoRegisterShutdownNotification(shutdown callbacks)
  - DbgSetDebugPrintCallback(debug print callbacks on Vista and 7)
  - DbgkLkmdRegisterCallback(debug callbacks on 7)

 # python vol.py -f image.vmem --profile=Win7SP1x64 callbacks

 

 > driverirp : Driver의 IRP(Major Function) Table을 보기 위해서 사용하는 명령어입니다.
  - 해당 명령어는 driverscan에 속해 있기 때문에 해당 DRIVER_OBJECT 들을 찾을 수 있으며, 이후 함수 Table을 통해 Cycle을 순회하면서 각 함수들의 목적, 주소, 주소의 소유 Module 들을 출력해 줍니다.
  - 해당 명령어는 IRP 함수의 Inline Hooking 탐지를 지원하며 -v 또는 --verbose Option으로 해당 IRP 주소의 명령어들을 Disassemble 하여 제공합니다.
  - 해당 명령어는 특정 정규 표현식을 사용하지 않는 경우 Default로 모든 Driver에 대해 출력해 줍니다

 # python vol.py -f image.vmem --profile=Win7SP1x64 driverirp
 # python vol.py -f image.vmem --profile=Win7SP1x64 driverirp -r vmscsi
 # python vol.py -f image.vmem --profile=Win7SP1x64 driverirp -r vmscsi --verbose

 

 > devicetree : Show device tree
  - 장치(_DRIVER_OBJECT.DeviceObject.NextDevice)를 통해 해당 Driver 또는 Device 들의 관계를 보여주며 첨부된 장치(_DRIVER_OBJECT.DeviceObject.AttachedDevice)를 통해 Attach 된 Device 들을 보여줍니다
  - Driver를 "DRV"로, Device를 "DEV"로 표현하며, Attached Device를 "ATT"로 표현합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 devicetree

 

 > psxview : pslist 및 psscan에서 확인한 프로세스 정보를 비교하여 나열함으로써, 은폐된 프로세스를 탐지하는 명령어입니다.
 ※ 비교대상
  - PsActiveProcessHead linked list
  - EPROCESS pool scanning
  - ETHREAD pool scanning(EPROCESS를 참조)
  - PspCidTable
  - Csrss.exe handle table(Vista,7 에서는 불가, 몇몇 XP image에서는 불가)
  - Csrss.exe internal linked list(Vista,7 에서는 불가, 몇몇 XP image에서는 불가)

 # python vol.py -f image.vmem --profile=Win7SP1x64 psxview

  - 해당 열에 0으로 나타난 것은 Process 가 손실된 것을 나타내며, pslist에서 제외된 것을 통해 수상한 것을 확인할 수 있는데, 각각의 프로세스에서 탐지가 되지 않는다면 칼럼에 “False”라고 표시된다.

 

 > ssdt_ex : Rootkit에 의해 설치된 SSDT hooking에 대한 흔적을 검색해주는 명령어입니다.
  - 자동으로 어떤 SSDT 함수가 Hooking 되었는지 확인해 주며, Hooking kernel driver를 디스크로 추출, IDA Script File 인 IDC File을 Rookit의 함수 Label을 포함하여 생성해 줍니다.
  - idag.exe(Windows), idal(Linux/OS X)가 $PATH에 있으면 IDB 파일을 Kernel driver로부터 생성하여 IDC Script를 실행할 수 있습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 ssdt_ex -D folder_name/

  - folder_name을 살펴보면 추출된 Kernel Driver(sys 파일), IDC Script(sys.idc 파일), IDA Database(idb 파일)를 확인할 수 있습니다.
  - IDB File을 열어 "Hook" 단어가 앞에 붙은 함수를 유심히 살펴보면 됩니다.

 

 > timers : Installed 된 Kernel times(KTIMER)와 관련된 DPC(Deferred Procedure Calls)를 출력해 주는 명령어입니다.
  - Zero Access, Rustock, Stuxnet 의 경우 DPC 를 이용하여 timer 를 등록합니다다. DPC 주소와 KTIMES 를 통해 악성코드가 다양한 방법으로 Kernel 공간에 숨어 있는 것을 빠르게 찾을 수 있습니다

 # python vol.py -f image.vmem --profile=Win7SP1x64 timers

  - Windows XP, 2003, 2008, VISTA 의 경우 times 를 전역 변수에 저장하지만, Windows 7 의 경우 KPCR(Kernel Processor Control Region)에 저장하고 있습니다. 
  - 그렇기 때문에 Windows7 에서 모든 timers 들을 확인 하려면 kpcrscan 을 통해 KPCR 주소들을 --kpcr Option 을 통해 인자로 넣어 주어야 합니다.
  - KPCR 에 따라 다른 timers 의 목록을 볼 수 있으며, 이는 각 Processor 가 자신만의 timers 의 set 을 가지고 있기 때문입니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 kpcrscan
 # python vol.py -f image.vmem --profile=Win7SP1x64 --kpcr=0x00000000

 

Volatility 볼라틸리티 2.1 Plugins - 윈도우#01

◎ Image Identification : 이미지 식별

Volatility 볼라틸리티 2.1 Plugins - 윈도우#02

◎ Processes and DLLs : 프로세스와 DLLs 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#03

◎ Process Memory : 프로세스 메모리 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#04

◎ Kernel Memory and Objects : 커널 메모리와 오브젝트 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#05

◎ Networking : 네트워크 정보
Volatility 볼라틸리티 2.1 Plugins - 윈도우#06

◎ Registry : 단지 Registry data를 추출하는데 도움을 줍니다.
Volatility 볼라틸리티 2.1 Plugins - 윈도우#07

◎ Crash Dumps, Hibernation and Conversion : 크래쉬 덤프, 하이버네이션 정보확인 및 파일변환
Volatility 볼라틸리티 2.1 Plugins - 윈도우#08

◎ Malware and Rootkits : 맬웨어와 루트킷 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#09

◎ Miscellaneous : 기타 등등

◎ Crash Dumps, Hibernation and Conversion : 크래쉬 덤프, 하이버네이션 정보확인 및 파일변환
 > crashinfo : Crash dump header 정보를 출력해주는 명령어입니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 crashinfo

 

 > hibinfo : Hibernation file 로 부터 정보를 출력해주는 명령어입니다.
  - Hibernation file 로 부터 Control Register 상태, file 생성시간, 상태, Hibernation 직전의 해당 Windows Version 과 같은 정보를 제공해주는 명령어입니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 hibinfo

 

 > imagecopy : 크래시/BSOD 등의 분석불가능한 덤프파일을 분석가능한 덤프파일로 바꿔주는 명령어입니다.
  - Windows XP SP2 가 아니라면 --profile Option 을 통하여 Profile 을 지정해줘야 하며, -O Option 을 통하여 output file 을 지정할 수 있습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 imagecopy -O Win7SP1x64.raw

 

 > raw2dmp : physical memory 덤프를 crash dump로 변환하는 명령어입니다.
  - WinDbg 커널 디버거에서 메모리를 불러올 때 유용합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 raw2dmp -O copy.dmp

 

Volatility 볼라틸리티 2.1 Plugins - 윈도우#01

◎ Image Identification : 이미지 식별

Volatility 볼라틸리티 2.1 Plugins - 윈도우#02

◎ Processes and DLLs : 프로세스와 DLLs 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#03

◎ Process Memory : 프로세스 메모리 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#04

◎ Kernel Memory and Objects : 커널 메모리와 오브젝트 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#05

◎ Networking : 네트워크 정보
Volatility 볼라틸리티 2.1 Plugins - 윈도우#06

◎ Registry : 단지 Registry data를 추출하는데 도움을 줍니다.
Volatility 볼라틸리티 2.1 Plugins - 윈도우#07

◎ Crash Dumps, Hibernation and Conversion : 크래쉬 덤프, 하이버네이션 정보확인 및 파일변환
Volatility 볼라틸리티 2.1 Plugins - 윈도우#08

◎ Malware and Rootkits : 맬웨어와 루트킷 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#09

◎ Miscellaneous : 기타 등등

◎ Registry : 단지 Registry data를 추출하는데 도움을 줍니다.
 > hivescan : Memory Dump로부터 CMHIVEs(Registry hives)의 Physical address를 찾아주는 명령어입니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 hivescan

 

 > hivelist : Memory Dump 로 부터 레지스터 하이브(Registry hives)의 가상 메모리 주소(Virtual address)와 Disk 상의 절대 경로를 알려주는 명령어입니다.
  - 만약 특정 하이브로부터 값을 표기하기 원한다면, 이 명령어를 실행시켜서 해당 되는 하이브 주소 값을 볼 수 있으며, 이 명령어를 통하여 Windows password를 크랙 할 수 있게 됩니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 hivelist

 

 > printkey : 특정 Registry key 의 subkeys, values, data, data type를 보여주는 명령어입니다.
  - 기본적으로 printkey 는 모든 hives로 부터 검색을 하여 찾아진 key information을 출력하므로, HKEY_LOCAL_MACHINE\Microsoft\Security Center\Svc key 안을 둘러보고 싶다면 -K Option을 통하여 포함 문자열을 함께 적어 주는 것이 좋습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 printkey -K "Microsoft\Security Center\Svc"

  - 특정한 하이브를 검색하는데 제한이 있다면, printkey는 하이브의 가상 주소를 통해 확인할 수 있으며, HKEY_LOCAL_MACHINE의 내용을 보고 싶다면 -o Option을 사용하면 됩니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 printkey -o 0xfffff8a000000000

 

 > hivedump : hive로부터 모든 subkey를 list 형태로 보여주는 명령어입니다.
  - 명령어 라인에 -o Option을 통해 원하는 hive의 Virtual address를 지정해 주면 해당 hive에 대한 subkey를 list 형태로 출력 가능합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 hivedump -o 0xfffff8a000000000

 

 > hashdump : 주로 SAM File을 추출할 때 쓰이는 명령어입니다.(Windows password 크랙)
  -  SYSTEM hive의 Virtual address를 -y Option을 통해 넣어주고 SAM hive의 Virtual address를 -s Option을 넣어줍니다.
  - Memory Dump로부터 registry key를 읽을 수 없는 경우는 "ERROR : volatility.plugins.registry.lsadump: Unable to rad hashes from registry"와 같은 Error를 확인할 수 있습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 hashdump -y [system의 virtual 주소] -s [sam의 virtual 주소]

  - 만약 SYSTEM의 "CurrentControlset\Control\lsa"와 SAM의 "Domains\Account\"에 올바른 key가 존재하는 것을 확인 가능하다면 volshell을 이용해 "CurrentControlSet"을 받아야 합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 volshell

  - 그 후, printkey 명령어를 사용하여 해당 data와 keys가 존재하는지 확인 가능합니다. 만약 key가 없다면 "The requested key could not be found in the hive(s) searched"라는 Error를 확인할 수 있습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 printkey -K "ControlSet001\Control\lsa" --no-cache
 # python vol.py -f image.vmem --profile=Win7SP1x64 printkey -K "SAM\Domains\Account" --no-cache

 

 > lsadump : Registry로부터 LSA dump를 수행하는 명령어입니다.
  - Default password, RDP public key, DPAPI credentials 등의 정보를 출력 가능합니다.
  - SYSTEM hive의 Virtual address를 -y Option을 통해 넣어주고 SECURITY hive의 Virtual address를 -s Option을 통해 넣어주면 출력이 가능합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 lsadump -y 0x00000000 -s 0x00000000

 

 > userassist : 메모리 덤프 파일에서 UserAssist 관련 레지스트리 키 정보 추출하는 명령어입니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 userassist

 

 > shellbags : ShellBags 정보를 추출하는 명령어입니다.
  - 특정 사용자가 호스트에서 수행 한 파일 또는 폴더 작업을 확인하는 데 매우 유용한 방법입니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 shellbags
 # python vol.py -f image.vmem --profile=Win7SP1x64 shellbags --output=body

 

 > shimcache : Application Compatibility Shim Cache 레지스트리 키를 분석하는 명령어입니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 shimcache

 

 > getservicesids : 컴퓨터의 서비스에 대한 SID를 계산하고 나중에 사용할 수 있도록 Python 사전 형식으로 출력합니다.
  - 서비스 이름은 레지스트리 ( "SYSTEM\CurrentControlSet\Services")에서 가져옵니다. 
  - 출력을 파일에 저장하려면 --output-file 옵션을 사용하면 됩니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 getservicesids

 

Volatility 볼라틸리티 2.1 Plugins - 윈도우#01

◎ Image Identification : 이미지 식별

Volatility 볼라틸리티 2.1 Plugins - 윈도우#02

◎ Processes and DLLs : 프로세스와 DLLs 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#03

◎ Process Memory : 프로세스 메모리 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#04

◎ Kernel Memory and Objects : 커널 메모리와 오브젝트 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#05

◎ Networking : 네트워크 정보
Volatility 볼라틸리티 2.1 Plugins - 윈도우#06

◎ Registry : 단지 Registry data를 추출하는데 도움을 줍니다.
Volatility 볼라틸리티 2.1 Plugins - 윈도우#07

◎ Crash Dumps, Hibernation and Conversion : 크래쉬 덤프, 하이버네이션 정보확인 및 파일변환
Volatility 볼라틸리티 2.1 Plugins - 윈도우#08

◎ Malware and Rootkits : 맬웨어와 루트킷 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#09

◎ Miscellaneous : 기타 등등

스폿 용접기는 저항발열을 이용해 전지 단자와 니켈판을 접합하는 제품입니다.

R21의 경우 주로 리튬 배터리팩을 만드는 데 사용되고

전기 없이 별도 배터리팩을 사용하여 휴대가 간편합니다.

우선, 개인이 직접 만든걸 카페를 통해 주문해서 구입한 제품인데 디자인부터 만족도가 높습니다.^^

 

제품 구성은 R21 스폿 용접기와 XT60 단자 배터리 케이스입니다.

R21 스폿 용접기의 겉면은 월넛 원목으로 직접 제작해서 샌딩작업을 거쳐 완성된 제품이고,

배터리 케이스의 경우 3D 프린터로 직접 제작한 제품입니다.

하나하나 수작업으로 정성이 들어간 제품이다 보니 만족도가 높게 느껴집니다.

 

 

 

R21 만 감상하시죠 ㅎ

 

0123456

 

배터리 케이스와 배터리입니다.

 

012

 

R21 스폿 용접기와 배터리 케이스를 결합한 모습니다.

이렇게 연결만 하면 바로 사용할 수 있습니다. 그리고 충전을 위해 휴대용 충전기를 별도로 구매했네요

검은색 동그라미 스폿 스위치 왼쪽으로 블루 LED가 보이네요 ㅎ

스폿 강도는 가변 저항을 0.2t 쪽으로 돌리면 강해지고 0.1t로 돌리면 약해집니다.

 

 

 

스폿 작업을 몇 번 했는데 0.1t 니켈 사용 시 스폿 용접기의 가변저항을 최하로 낮추고도 작업이 되더군요.

작업 중 50~60도 정도 0.2t 방향으로 돌렸는데 니켈에 구멍이 나길래 바로 최하로 낮춰서 작업했습니다. ㅎ

스폿 작업 시 불꽃이 날아다니고, 연기도 발생하는데 니켈이 중금속으로 분류되다 보니 가정집 방에서 작업하기보다는 환기가 잘되는 장소에서 작업해야 할 것 같습니다. 휴대가 가능하기 때문에 실외 이동이 자유로운 면이 있어서 좋은 것 같습니다.

◎ Networking : 네트워크 정보
 > connections : 활성화 상태의 네트워크 연결 정보를 나열합니다. (Windows XP, Windows 2003 Server 만 사용 가능)
  - 네트워크의 pslist와 비슷합니다. 오프셋은 기본적으로 _TCPT_OBJECT 가상 주소로 출력되지만 물리적인 주소를 얻고 싶다면 -P 명령어를 추가적으로 사용합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 connections
 # python vol.py -f image.vmem --profile=Win7SP1x64 connections -P

 

 > connscan : Pool tag scanning을 통하여 connection 구조체를 찾는 명령어입니다.(Windows XP, Windows 2003 Server 만 사용 가능)
  - 활성화 상태의 네트워크 연결 정보와 함께 이미 종료된 네트워크 연결 정보도 나열합니다. 그러나 몇몇 Field에서 부분적으로 덮어쓰기 된 것과 같은 오탐(False Positive)이 존재합니다.
  - psscan과 유사하며 풀 태그 스캐닝을 사용하여 _TCPT_OBJECT 구조체를 찾기 위해 사용됩니다. 이 명령어는 이미 종료되어버린 연결들로부터 아티팩트를 찾아낼 수 있고 게다가 활성화된 것들도 찾아낼 수 있습니다. 부분적으로 덮여 쓰인 필드를 발견할 수 있지만 전체적으로 신뢰할 수 있는 정보입니다. 따라서 오탐이 발견될 수 있지만 많은 정보를 찾을 수 있다는 장점이 있습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 connscan

 

 > sockets : TCP, UDP, RAW 등의 protocol에서 listening Socket 들을 찾아내는 명령어입니다. (Windows XP, Windows 2003 Server 만 사용 가능)
  - 기본적으로 출력은 _ADDRESS_OBJECT 가상 주소를 포함하고 있으며, -P switch를 이용하여 물리적 주소를 확인 가능합니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 sockets
 # python vol.py -f image.vmem --profile=Win7SP1x64 sockets -P

 

 > sockscan : Pool tag scanning을 통하여 _ADDRESS_OBJECT 구조체를 찾는 명령어입니다. (Windows XP, Windows 2003 Server 만 사용 가능)
  - 이전의 socket으로부터 존재했던 데이터와 아티펙트들을 추출할 수 있습니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 sockscan

 

 > netscan : Pool tag scanning을 통하여 활성화 상태의 네트워크 연결 정보를 보여줍니다. (Windows Vista, 7, Windows 2008 Server만 사용 가능)
  - TCP endpoints, TCP listeners, UDP endpoints, and UDP listeners를 찾아줍니다.
  - IPv4와 IPv6을 구별하며 Local과 Remote IP(가능하다면), Local 과 Remote 포트(가능하다면), 소켓이 bind 되거나 연결이 수립된 시간, 그리고 현재 상태(TCP 연결만 지원)를 보여줍니다.

 # python vol.py -f image.vmem --profile=Win7SP1x64 netscan

 

Volatility 볼라틸리티 2.1 Plugins - 윈도우#01

◎ Image Identification : 이미지 식별

Volatility 볼라틸리티 2.1 Plugins - 윈도우#02

◎ Processes and DLLs : 프로세스와 DLLs 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#03

◎ Process Memory : 프로세스 메모리 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#04

◎ Kernel Memory and Objects : 커널 메모리와 오브젝트 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#05

◎ Networking : 네트워크 정보
Volatility 볼라틸리티 2.1 Plugins - 윈도우#06

◎ Registry : 단지 Registry data를 추출하는데 도움을 줍니다.
Volatility 볼라틸리티 2.1 Plugins - 윈도우#07

◎ Crash Dumps, Hibernation and Conversion : 크래쉬 덤프, 하이버네이션 정보확인 및 파일변환
Volatility 볼라틸리티 2.1 Plugins - 윈도우#08

◎ Malware and Rootkits : 맬웨어와 루트킷 분석
Volatility 볼라틸리티 2.1 Plugins - 윈도우#09

◎ Miscellaneous : 기타 등등

+ Recent posts