안녕하세요 ghatdev 입니다.

이번에 우연히 MDM이라는 녀석을 보게 되었는데요..

정말 신기하더군요... 루트권한 없이 시스템어플을 설치하지를 않나..

프로세스 종료를 막지를 않나.. 기기 관리자 설정 해제를 막지를 않나..

게다가 공초를 해도 살아나지를 않나...


제생각에는(어디까지나 제 생각입니다.)

이게 플랫폼을 건드려 기본어플에 자신을 집어넣는거 아닌가.. 하는 생각이 들더군요.

2014.01.07 - MDM이 지원되는 갤럭시 기종의 폰들은 DMMoniter 라는 시스템 앱이 기본으로 깔려있습니다. 이를 삭제하면 임시방편으로는 동작합니다.

여튼 삭제에는 성공하였습니다.

제가 한 방법은

1. 테그라크 커널 설치 및 루팅(참고로 갤럭시 S3 LTE, SHV-E210K모델 사용)

2. /data/app 에 들어가서 MDM 관련 파일 싸그리 다 삭제.

3. /system/app 에 들어가서 DMMoniter 관련 파일 싸그리 다 삭제.



2015.10.30 업데이트

MDM이 지원되는 모든 갤럭시 기기들은 시스템 앱으로 MDM 관련 어플리케이션이 내장되어 있습니다.

해결방법에는 루팅을 통한 시스템 파일 삭제와 전화를 통한 해결이 있습니다.

시스템 파일을 삭제하면 완전히 기기상에서 MDM 관련된 파일들이 삭제됨으로 혹여나 모르는 불상사는 없을겁니다. 

하지만 시스템을 건드려야하고, 취약점이 없는 펌웨어의 경우 knox 워런티를 포기하셔야 합니다.


루팅을 통한 방법은 이러합니다.

1. SuperSU 혹은 다른 방법 (기기마다의 방법을 구글에 검색)으로 기기를 루팅합니다.

2. 루팅 후 Root Explorer나 Es 파일 탐색기 등 루트권한이 지원되는 파일 탐색기에서 /system/app 디렉토리로 이동합니다.

3. 해당 디렉토리에서 MDM이나 DMM이라는 이름이 들어가는 apk 파일들을 모두 삭제하거나 확장자를 바꿔줍니다. ex) MDMApp.apk -> MDMApp.apk.bak

4. 기기를 공장 초기화 시킵니다.


루팅을 이용하지 않고 전화를 통하여도 해제할 수 있다고 합니다. 이 경우 시스템 파일은 그대로 남아있게 됩니다.

방법은 아래와 같습니다. (와이파이가 연결된 상태에서 진행하는것을 권장합니다)

1. 유선전화(집전화 등)으로 1644-0030(안될시 02-2255-2340) 에 전화를 건다.

2. 개통된 단말기일 경우는 그대로 진행하고, WIFI 모델의 경우 개통된 폰을 통해 문자메시지로 url을 전송받아야 합니다.

3. 문자로 전송받은  url을 클릭하여 패키지를 다운받는다.


왠만하면 상담원이 친절하게 안내하여 어려움 없이 진행된다고 합니다. (10분정도 소요된다고 하니 참고하세요~)




이상입니다


안녕하세요~ ghatdev 입니다.

갤럭시 s1 기종을 루팅하고 빌드프롭을 튜닝하다가 벽돌이 되는경우가 있습니다.

오늘, 노가다로 그방법을 찾아냈습니다!!


일단, 준비하실 파일은 오딘, ADB, 순정 빌드프롭, 테그라크 커널 빌드 38 입니다.

(모두 압축해서 첨부하였습니다)


방법 :


1. 압축을 푼다


2. 폰을 다운로드모드로 부팅한다(부팅할때 홈키+전원키를 눌러 부팅)


3. Odin 을 실행한다.


4. 오딘의 화면이 이런화면인지 확인한다.


5. PDA 를 체크하고 PDA 버튼을 눌러 Tegrak-Kernel-Build-38-for-M110S-WC13.tar 를 선택한다(밑의 그림 참고).



6. Start 를 누른다.


7. 리붓이 되고 잠시 기다린다.


8. 명령 프롬프트를 열어 ADB 의 디렉터리로 이동한다.


9. adb shell 을 입력후 엔터


10. mount -o remount /rw /system 을 입력후 엔터


11. exit 입력 후 엔터


12. adb push build.prop /system/build.prop 입력 후 엔터


13. 완료되면 adb reboot 입력 후 엔터


14. 리붓이 완료되면 벽돌이 풀린 갤럭시 s1 을 볼 수 있다. (ㅎㅎ반가워라)


15. 여기선 선택

최신 커널버전은 wf07 이다. 하지만 이버전에서는 adb shell 에서의 루트권한 접속을 막아놨음으로 다운그래이드후 복구를 진행하였다. 복구가 끝났음으로 다시 WF07 로 업그래이드 하려면 

다운로드 모드로 리붓후, 5의 과정에서 PDA 에 파일을 Tegrak-Kernel-Build-39-for-M110S-WF07.tar 로 바꿔주고 Start 를 누른후 기다리면 최신 커널으로 업뎃된다.(그렇다고 과정 5부터 쭉 진행하지말기를... 난 5번과정에서의 파일만 바꿔서, 5번 과정'만' 하라는 말이다.) 

업그래이드를 하지 않을 사람은 그냥 사용하면 된다.


16. (옵션) 만약의 일을 대비해서 현제 상태로 백업을 한번 하는것을 추천합니다.


17. 끗!!





Recover.vol1.egg


Recover.vol2.egg


엑스키퍼란, 현제 안철수연구소(AHNLAB)보다 뛰어나다고 알려진 보안 소프트웨어 회사 지란지교소프트 에서 만든 자녀 음란물 차단/컴퓨터 사용관리 프로그램입니다.

하지만 사람이 만든것인지라 역시 취약점이 존제하는대요..

이것을 주제로 첫포스팅을 올려보겠습니다.

*본포스팅은 프로그램 디버깅을 사용하지 않은 분석입니다*


-설치과정은 생략하겠습니다.혹시 궁굼하시면 http://blog.kippler.com/82 에 들어가 보세요-



1. 프로그램 실행

엑스키퍼는 부팅이 될때 자동으로 같이 로딩되는 프로그램입니다.

허나, 다른 프로그램과 달리(백신 제외)

엑스키퍼는 안전모드에서도 자동으로 실행이 되어있습니다.

저의 상식중에 %SystemRoot%\\system32\drivers 에 디바이스 드라이버를 등록시켜놓으면, 안전모드에서도 자동실행이 된다고 알고있었습니다.

확인을 해보니...


제 생각이 맞았군요...ㅎ


위 디랙터리에 엑스키퍼의 디바이스드라이버 3개가 보입니다.

저놈들이 하는 일로는

1)프로세스 보호(prcsxkdm.exe,prcsxkman.exe,prcsxsdbman.exe,xktmprcs.exe,svcxkcore.exe 많다...;;)

2) 윈도우 부팅시 자동 실행

3) 생성값 보호(설치된 파일들,레지스트리 등등..)

등이 있습니다.

대부분 커널모드 후킹으로 수행하는것 같아 보입니다.


요놈들때문에 



이런 일들이 일어나게 됩니다..


2. hookxkpro.dll

이 dll은 하는일이 워낙 많아서 따로 적겠습니다.

이름에서부터 알수 있듯이 후킹하는데 사용되는 dll 입니다.

엑스키퍼는 프로그램 시작할때 이 dll을 모든 실행되는 프로세스에 인젝션 시킵니다.

또, 프로세스 실행을 감지해서 세로 실행된 프로세스에도 이 dll 파일을 인젝션 시킵니다.


인젝션을 시키는 이유는

1) 만의하나의 경우로 프로세스가 종료될경우를 대비하여.


윗글의 캡쳐를 보셨듯이 유저레벨에서는 엑스키퍼 프로세스를 종료시킬수 없습니다.

  

  ( 테스트 결과 디버그 불가, CreatRemoteThread - EixtProcess 실행 불가,

  TerminateProcess 로 종료 불가, 터미널서비스로 종료 불가 라는 결과가 나왔습니다.

  CreatRemoteThread-ExitProcess 의 경우는 아예 원격 쓰레드 생성이 불가합니다.

  이 이야기는 유저레벨에서 dll 인젝션도 불가능하다는 뜻입니다. )

  

그러나, 커널레벨(디바이스드라이버를 이용해)ZwTerminateProcess를 이용하면 강제종료가 가능합니다.

이렇게 될 경우를 대비해 winlogon.exe 의 dll은 

prcsxkdm.exe,prcsxkman.exe,prcsxsdbman.exe,xktmprcs.exe,svcxkcore.exe

들을 감시하고 있다가,

(이름으로 감시하는것 같습니다. 똑같은 이름의 프로그램을 만들어 실행시켜보니 그 프로세스도 보호가 되었습니다.)

하나라도 종료되면 자동으로 종료된 프로세스를 실행시킵니다.



2)실행 프로그램 감시


엑스키퍼는 자신을 무력화시킬수 있는 프로그램 목록을 가지고 있고, 관리자가 프로그램 실행을 차단할 수 있는  기능이 있습니다.

그리고 어떤 프로그램이 실행되면, 그프로그램에 dll을 인젝션시키고,

dll은 그 프로그램이 무력화 프로그램의 목록에 있거나, 차단 프로그램 목록에 있으면

알림창을 띄우고 프로그램을 종료합니다.


이부분에서 취약점이 발견되었습니다.

엑스키퍼가 프로그램 실행을 감지하고, 인젝션을 시키는데는 약간의 시간이 필요합니다.

그래서 어떤프로그램의 dll 인젝션을 막은체로 실행시키면 차단하지 못하고, 심지어 감지도 하지 못합니다.


밑은 언락커(unlocker)의 도우미 파일인데요, 엑스키퍼는 이 프로그램의 실행을 차단합니다.


정상적으로 실행했을때인데요, 엑스키퍼가 프로그램을 차단하고 언락커는 바로 종료되는것을 확인하실수 있습니다.




자작툴로 보호를 씌워 실행시켜본 화면입니다.

프로그램은 정상적으로 실행되었고,

엑스키퍼는 감시조차 하지 못했습니다.

보완을 하려면 프로세스 목록을 계속 감시하면서, 이미지 이름으로 비교/차단하는 방안도 게발해야 할 것 같습니다.



3)인터넷 검색 감시 및 차단

업데이트가 되기전의 엑스키퍼는 나가는 패킷과 들어오는 패킷을 감시하여 음란물이나, 유해물 검색을 차단했는데요, 이방법은 https연결을 사용하거나 암호화 연결을 사용하면 무용지물이 되어 버립니다.


그러나 현제, 엑스키퍼는 https는 물론 암호화 연결도 잘 잡아내어 차단합니다.

그 프로세스의 키보드 입력 후킹, 프로세스의 모든 문자열 감시 등의 방법을 사용했을거라 추정합니다.(어디까지나 추정일뿐입니다)

역시나, 이부분에서도 취약점이 발생하였습니다.

인터넷 브라우저의 dll인젝션을 차단하면, 유해물 차단을 하지못하며 감시도 하지 못하게 됩니다.

이를 보완하려면 패킷 스니핑이나 캡쳐링을 통한 차단방법을 개발해야할것 같습니다..



제 생각에는 거의모든 유해물 감시를 dll이 하는것 같네요...





3. 자기방어의 취약점

는, 엑스키퍼가 자기방어 면에서는 현존하는 다른 자녀관리 프로그램보다 압도적으로 우월하다고 봅니다.

하지만, 역시나 취약점이 발견되었습니다.

프로세스나, 파일I/O접근은 대단하다고 생각됩니다.

허나, 지란지교소프트에서 한가지 빠트리신것이..

메모리 접근을 차단하지 않았습니다.

프로그램 실행시 cheatengine같은 툴으로 메모리를 변경하여 오류 발생을 유도할 경우,

엑스키퍼의 메모리를 변조당한 프로세스는 군소리없이 죽어버립니다(물론 다시 살아나지요..hookxkpro.dll이란 놈 때문에) 이를 이용하여 엑스키퍼의 모든 프로세스의 메모리를 변조한후 오류 발생 유도-종료 시킨후 강제적으로 \%SystemRoot%\\Downloaded Program Files\xkv3root 를 삭제할경우 

중요 프로그램들이 삭제되고 결국 나머지 파일들도 삭제될 수 있습니다.


4.아쉬운 점

엑스키퍼는 복구기능이 없습니다.

엑스키퍼의 설치 디렉터리를 부팅시 복구하거나(업데이트있을경우 내용을 포함하여)

자신의 파일이 삭제되었을 경우 그 파일을 다시 복구할 수 있으면 좋을것 같습니다




이로써 2012-05-19 (토) 의 첫 포스팅을 마치겠습니다

이 포스팅은 앞으로 변경사항에 따라 업데이트될 예정입니다.

잘못된 것이 있으면 댓글 남겨 주세요.



2012-05-19 :: 1차 작성 완료


+ Recent posts