본문 바로가기

전체170

[ROOTKIT #3-2] 자신의 Driver를 분석해보자! 우리는 이전에 이렇게 코드를 작성하였습니다.그리고 컴파일을하여 드라이버파일을 얻어냈구요.이번 강의는 따라하지않으셔도 됩니다.강의 흐름상 Hex-ray로 보여드리겠습니다. IDA로 DriverEntry함수를 바로 찾아들어갔습니다. 코드가 매우 유사합니다.그런데 DriverEntry의 형과 인자가 아~~주 조금다르네요.그리고 return STATUS_SUCCESS; 부분에는 return 0;으로 변환되어있습니다.#define STATUS_SUCCESS 0정도로 생각하시면 되겠네요! return은 누구에게로 해주는걸까요?DriverEntry는 누가 불러준걸까요? GsDriverEntry라는 함수가 불러주네요__security_init_cookie함수는 BufferOverFlow를 방지하기위한 Canary를 설.. 2014. 5. 29.
[ROOTKIT #3] "Hello, world!" 드라이버 ################################################강의는 City님의 강의를 기반으로함을 재차 말씀드립니다.################################################ 어느 프로그래밍이나 단골로 나오는 "Hello, world!" 드라이버를 만들어 봅니다.우선 첨부한 InstDrv.zip 을 다운받아서 자신의 룻킷 폴더에 풀어주세요. 자신의 c 소스 파일을 열어서 아래와 같이 코딩하고 저장합니다. (제 경우는 empier.c)코드를 올릴까 하다가 코딩하면서 얻는게 있을거라는 생각에 이미지로 올렸습니다 ;) [ 코드 해석 ] 대문자는 이미 선언된 데이타 타입이나 상수, 매크로에 해당합니다.예) VOID, NTSTATUS, IN PDRIVER_O.. 2014. 5. 29.
[ROOTKIT #2] 드라이버 제작을 위한 필수 파일들 프로그램이 실행되는 영역에는 크게 두가지가 있습니다.사용자 모드(User mode 또는 Ring 3)와 커널 모드(Kernel mode 또는 Ring 0)쉽게 생각해서 사용자 모드는 학생이고커널 모드는 선생님이라고 보심 이해가 쉽습니다.커널 모드에서 내 코드가 실행되어야 여러가지 특권을 누림으로써 컴퓨터 시스템을내 마음대로 조정할 수 있습니다. ################################################몇년전 글이다보니 운영체제가 진화하면서 아래에서 설명하는 DDK는 비스타부터 호환이 잘안되게 되었으니 WDK로 다운받아주세요~ 네이버에 Windows Driver Kit이라 검색하시면 뜹니다.################################################ .. 2014. 5. 28.
[ROOTKIT #1] RootKit이란? 룻킷이란 컴에서 젤로 중요한 루트(Root) 디렉토리에 접근하여 여러가지 작업(?)을가능하게끔 하는 작지만 유용한 프로그램의 집합체(Kit)입니다.가장 중요한 특징은 "검색되지 않는 것" 즉 코드나 자료를 숨기는 것입니다.파일이나 폴더를 숨기기도 하고 원격조정이나 패킷 훔쳐보기 등등... 크게 두가지 기능이 있는데 하나는 원격조정입니다.파일을 제어하거나, 재부팅을 초래하거나 (심지어 BSOD 까정 ㅜ) ...또하나는 훔쳐보기입니다.패킷엿보기, 키보드로거, 이멜엿보기 등등 ;) 룻킷의 기본원리는 "수정" 입니다.수정할 수 있는 곳을 몇군데 보면; 1. 바이너리 코드 우리가 치엔으로 바이너리 코드를 수정해서 원래 소프트웨어가 해야할실행을 수정하듯이 이런 작업을 패치한다고 합니다.심지어 마소도 핫패치라고 해서.. 2014. 5. 28.
반응형