(뻘소리) VHDX에서 KMS 인증이 안풀린다고 한다면.....
2012.09.27 11:39
----- (약간의 컴덕후성 단어가 남발되는 글입니다.)
다른 프로젝트를 보다 보니, KMS 인증이 VHDX에서만 되는 것 같은데요,
그 얘기는 인증 형태(리테일/MAK/KMS)에 따라
인증 확인을 위해 컴퓨터에서 채취하는 정보의 종류나 가짓수가 각기 다르다는 의미군요.
아무래도 KMS 인증은 하드디스크 정보만 채취하는 듯 한데,
VHD는 안되고 VHDX만 된다는 건 파티션의 GUID가 아니라, 장치 자체의 ID를 채취한다는 소리겠네요.
(파티션 GUID 역시 채취할 수도 있겠지만...)
아마도 VHDX 규격에서는 가상 저장 장치 자체의 ID나 시리얼 넘버까지
이미지에 포함시키도록 규격이 확장된게 아닌가 추측 해 봅니다.
커널드라이버 개발하실 수 있는분이 있다면 그 부분만 SSDT hooking을 하게 만들면
항상 동일한 장치 ID가 나오게 속이는 것도 가능하리라 봅니다.
그러면 거의 모든 컴에서 KMS 인증을 유지할 수가 있는 거죠.
(저는 커널쪽은 문외한이라서...)
....조금 더 생각을 발전시켜 보면, DeviceIoControl 함수의 전역 후킹을 하게 되면
컴에 설치된 모든 장치의 ID를 조작하는게 가능할지도 모르겠다는 생각이 듭니다.
그러면 KMS가 아니라 MAK 인증도 복사가 가능할지도 모르죠.
VMWARE에서 인증된 MAK 토큰을 가져와서 실컴의 모든 장치 ID를 VMware것으로 나오게 만들면 인증이 안풀리겠죠.
시간날 때 커널 드라이버 개발이랑 SSDT 후킹쪽도 공부를 해봐야겠군요.
댓글 [18]
-
sone 2012.09.27 13:10 -
sone 2012.09.27 14:45 Process Hacker 는 Explorer보다 훨씬 고급기능이 많습니다.
오픈소스이기때문에 해커 드라이버와 제공해주는 sdk의 API를 이용한다면
막강한 툴을 만들어낼 수 있을겁니다.
-
초월신 2012.09.27 14:21 오 Process Hacker는 열리는군요.
그냥 Process Explorer 아류라고만 생각하고 안쓰던 프로그램인데....
여기서 부터 연구 해 나가면 뭔가 실마리라도 있을지도 모르겠군요.
좋은 말씀 정말 감사합니다.
-
sone 2012.09.27 14:12 Process Explorer 말고 , Process Hacker를 써보세요.
https://processhacker.sourceforge.net
-
초월신 2012.09.27 14:08 SeDebugPrivilege은 예전에 짜놨던 코드에 남아있길래 해봤지만,
SeLoadDriverPrivilege는 안해봤군요.
하지만 가능성은 낮을 듯 합니다.
디버거든 모니터든 SPPSVC를 열 수 있는놈이 없는 것 같네요.
Process Explorer도 드라이버 쓰긴 하지만, 프로세스 객체까지는 못 얻어오고....
보호되어 있다고만 나오네요.
-
sone 2012.09.27 13:58 이미 하셨을수도 있겠지만, 만약 안하셨다면 먼저 SuperPrivilege를 확보하고 OpenProcess 해보세요.
슈퍼권한이란건 SeDebugPrivilege나 SeLoadDriverPrivilege를 말합니다.
-
초월신 2012.09.27 13:51 SPPSVC프로세스에 OpenProcess가 실패하는 거라도 뚫을 수 있다면
유저모드에서라도 어떻게 해 볼 텐데, 이것도 아무래도 커널에서 막고있지 않을까 싶군요.
-
sone 2012.09.27 13:56 사실....패치가드 비활성화라는 아이디어까지 가는것이 도박적이라고 생각되네요.
패치가드를 비활성화 한다는것은 , 악성코드건 뭐건간에 내 시스템 마음대로 후킹하시오~ 하는거하고 다를바 없으니까요.
만약에 개발하실거면, 패치가드 비활성화까지 가는건 추천드리고 싶지 않네요.
아직까지 어떠한 보안 벤더에서 패치가드까지 비활성화 시키면서까지 커널 후킹해서 자가보호모듈을 설계하는곳을 본적은 없습니다.
그리고 64비트 시스템에서는 드라이버가 커널에서 돌아가려면, 해당 드라이버는 무조건 드라이버 사이닝을 받아야 됩니다.
받지 않으면 , 커널로 로드가 안됩니다. 제대로 사이닝이 안된 드라이버를 로드시키려면, Test Mode로 부팅해야하는데,
그렇다면 인증툴을 사용하고자 하는 모든 사람의 컴퓨터를 테스트모드로 부팅시켜야하는 상황이 일어날듯 하네요.
차라리 유저레벨의 ntdll.dll 에서 Export 하고 있는 녀석인 , ZwDeviceIoControlFile을 인라인 후킹하는것도 방법이라면 방법이 될수 있을듯 하네요. 유저레벨은 패치가드의 감시따위 받지 않으니까요.
단, 이렇게 할 경우, 후킹을 하고자 하는 모든 프로세스의 ntdll.dll을 후킹해야된다는 번거로움은 있네요.
-
초월신 2012.09.27 13:47 흠...XP에서 흔한 루트킷들이 커널객체나 SSDT 후킹하는것 보다는
훨씬 어려울 것이라고 예상은 했지만, MS라고 놀고 먹지는 않는군요.
말씀대로 한다고 치면 각 드라이버(MAK인증 경우)의 종류에 따라
각각 작업해야 할 테니, 실효성은 없는 얘기가 되겠군요.
저도 그 때문에 시스템 콜을 후킹했으면 하고 생각한거지만, 그것도 녹록치 않은가 보군요.
EasyHook의 PatchGuard Disabler도 2008년도에서 중단된 듯 하고....
그런거 하기 이전에, KMS인증이 HDD의 장치ID만 있으면 되는지도 아직은 확실치 않고....
WinDbg 연습좀 해서 일단 확인이나 좀 해보고 싶네요.(그 전에 드라이버 개발 공부부터 해야할텐데.....ㅡㅡ;)
아직은 뜬구름 잡는 얘기였습니다요~ ^^;
-
카리스마조 2012.09.27 13:30 서버 2012는 리테일키도 다른 pc의 VHDX에서는 안풀립니다.
-
초월신 2012.09.27 18:17 종류만 같다고 되는건 아닌것 같고, 혹시 내부적으로 부여된 시리얼 넘버 같은게 있다면
그런것도 비교가 되지 않을까 싶은데요,(CPU에도 고유ID가 있는것 처럼...)
그렇게 말하지 않으면 VHDX에서만 인증이 공유되는 걸 설명하기 힘들거든요.
그냥 VHDX만 특별취급 해 주는거였다고 한다면 할 말 없지만요....
하드와 컨트롤러까지 완전 같은 장치에다 CPU,램, VGA만 바꿔서 해보고 싶어요.
SATA 컨트롤러 따로 쓰시는 분이라면 메인보드까지 변경 실험 가능하겠죠.
-
ASUS 2012.09.27 16:15 이종컴에 같은 컨트롤러 부팅 가능한데, 인증이 풀리더군요.
다른 재인증 하려고 해도 에러 내고요...
KJ툴만 가능 해요....ㅠㅠ;
-
초월신 2012.09.27 13:58 만약! 그렇다면 말이죠......
VHDX가 아니라, 인증먹은 실제 하드를 통째로 다른 컴에 갖다 달면 어찌 되나요?
하드의 ID만이 문제라면 실제 하드를 다른 컴에 갖다 달아도 문제가 없을 것이고,
어쩌면 하드 + ATA나 SCSI 장치까지는 엮여 있을 가능성도 있으니,
(가상하드는 컨트롤러도 가상일테니...)
슬롯에 SATA 컨트롤러 추가로 꽂아서 쓰시는 분들은 그것까지 떼서
다른컴에 달아보는 실험을 해봐도 괜찮지 않나 싶습니다.
-
무등산 2012.09.27 14:10 저도지금 VHDX에서 하드 복사중Open 파일 이부분 엑쎄스가 거부 돼는군요
-
초월신 2012.09.27 14:12 VHDX를 하드로 복사만 해서는 하드웨어 ID 까지 나오지 않을 것 같습니다.
VHDX에서 하드로 복사하는 것 보다는
전화 인증이든 뭐든 정식인증 된 하드를 다른 컴에 달아보는 실험을 해 보고 싶네요.
-
라일리락 2012.09.27 14:12 이렇게되면 하드웨어에 직접적인접근이 필요하겠군요.. 바이오스와 어셈블링까지 ㄷㄷㄷ
-
세상에이런힐이 2012.09.27 14:52 ㅋ~ 초월님의 활약이 대단하시네요~
저는 귀찮아서 자주 쓰는 프로그램이 트라이얼 경고가 나와도 손꾸락 까딱 안하고 시스템 날짜만 살짝 변경해서 쓰곤 합니다.;;
오늘도 시간 내서 리버싱 툴로 분석좀 해볼 까 하다가 이내 급 피로와 귀차니즘으로 슬립모드로 빠집니다.;;;
아마도 이런 형국은 반복 될 듯 하네요.
하이테크날라지까지 동원하시는 열정에 박수를보냅니다. ^^
-
무등산 2012.09.27 15:11 USB ESS-SERVER 2012 VHDX 하드복사 부팅 인증풀림
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 자유 게시판 이용간 유의사항 (정치, 종교, 시사 게시물 자제) [1] | gooddew | - | - |
15172 | 파란창 뜨게 하는 프로세스.... [32] |
|
2962 | 09-28 |
15171 | 미디어 센터 푸른화면 빨리 뜰 순 없나요? [8] |
|
1609 | 09-28 |
15170 | 모든님들 덕분에 잘 사용합니다. 저만인지 한가지 문제가... [1] |
|
857 | 09-28 |
15169 | 7 클래식 UI 오류 나네요 [20] |
|
1471 | 09-27 |
15168 | 일단 프로64는 잘 됩니다. [2] |
|
867 | 09-27 |
15167 | 카님 신상품으로 잘 맞는지 테스트해 보겠습니다. [3] |
|
911 | 09-27 |
» | (뻘소리) VHDX에서 KMS 인증이 안풀린다고 한다면..... [18] |
|
1978 | 09-27 |
15165 | 2012 STANDARD [24] |
|
2471 | 09-27 |
15164 | 부탁 좀 드릴께요.. [2] |
|
1767 | 09-26 |
15163 | 2012 DataCenter VHDX 인증테스트!(내용수정) [30] |
|
3035 | 09-25 |
15162 | wmc 실컴인증완료 [7] |
|
1269 | 09-25 |
15161 | Windows 8 Pro 미디어센터 인증 과정 [7] |
|
2934 | 09-25 |
15160 | 오늘 새벽 이렇게 인증되는 경우도 있었어요. [22] |
|
2271 | 09-25 |
15159 | VHDX 관련 인증 상황 정리 좀 해주세요. [5] |
|
973 | 09-25 |
15158 | Win8 WMC VHDX 테스트...(종료) [28] |
|
2210 | 09-24 |
15157 | 카조님,, 이런 경우의 인증은...어떡하죠... [4] |
|
5261 | 09-24 |
15156 | jpg 파일 [2] |
|
1316 | 09-24 |
15155 | 초월신님의 방법이 성공하신다면... [3] |
|
2561 | 09-24 |
15154 | 별 도움 드리지 못해 죄송할 따름입니다. [1] |
|
916 | 09-23 |
15153 | 나쁜소식 1개 좋은소식 2개 [45] |
|
2731 | 09-23 |
커널 프로그래밍으로 각종 후킹을 해본 경험은 있습니다만, 제가 현재까지 진행된 상황도 전혀 모르고 있는 상태에서, 섵불리 뛰어들긴 힘들거 같네요. (어느날 와보니, 이런 게시판이 있었고, 이런 글들이 있었네요.....)
그리고 32비트는 커널 후킹이 아무 문제없이 가능하지만, 64비트 환경에서는 PatchGuard 라는 녀석이 실시간으로 돌아가고 있기 때문에, 커널 후킹( IA32_LSTAR, SSDT, IDT, GDT, Inline Hooking 등등) 이 사실상 불가능합니다.
이 패치가드라는 녀석은 Undocumented 된 녀석이며, MS가 64비트 시스템에서 커널을 함부로 조작할수 없게끔 하기 위해서 도입한 녀석입니다. 인터넷에 비활성화 하는 정보들을 간혹 찾아볼순 있지만, 운영체제마다 그 구조가 모두 상이하기 때문에, 어떠한 한 버젼의 운영체제에서 제대로 작동하는 이론이라고 해서 , 다른 버젼의 운영체제에서도 작동하지는 않을겁니다. 현재까지 소스가 공개된 녀석은 윈도우비스타 64비트의 패치가드를 무력화 하는 녀석만 공개되었는데, 윈도우7의 패치가드는 비스타의 그것과 또 다른 구조기 때문에, 동작하지 않는걸 확인했습니다.
패치가드를 무력화 하려면 , Timer DPC 비활성화, KeBugCheckEx 후킹 등등등 고려해야될 요소가 많은걸로 알고있습니다.
그리고 DeviceIoControl을 후킹하기보다는, 해당 디바이스의 IRP 핸들러를 후킹해서 원하는 작업을 수행하는것이 오버헤드가 훨씬 적을거라고 생각되는군요. 그렇게 되면, 64비트에서도 PatchGuard를 피해서 ,후킹이 가능하지 않을까 싶네요. (단, 해당 드라이버가 만약에 패치가드의 감시대상에 포함된다면, 후킹이 불가능합니다.)
어차피 DeviceIoControl이라는건 적절한 IoControlCode와 Buffer를 전달해줘서, 보내고 받아오는 역할만 하는거니까요.
그러기 위해선 , 해당 타겟 드라이버의 IoCtlDispatchRoutine을 분석해보는수밖에 없을듯하네요.