1. 메시지 후킹
user32.dll 의 SetWindowsHookExA() 메서드를 이용.
윈도우는 키보드, 마우스 등에서부터 들어오는 메시지를 훅 체인을 통해 처리.
훅 체인은 메시지를 처리하는 일련의 함수 포인터를 모아놓은 리스트.
훅 체인 상에 강제적으로 프로그래머가 원하는 처리 프로세스에 대한 포인터를 등록 -> 메시지 들어올 때 원하는 작업 가능.
이를 이용한 해킹 기법
key logger : 키보드 입력 메시지를 중간에 가로채 해커에게 전송.
2. API 후킹
운영체제에서 제공하는 디버깅 프로세스를 이용.
디버거 이용해 애플리케이션 특정 명령어에 breakpoint 설정, 특정 메서드를 수행하도록 등록.
애플리케이션은 작업을 수행하다 중단점을 만나면 등록된 메서드를 실행.(콜백 메서드라고 함)
여기에 해킹 코드를 심어 놓으면 원하는 동작 가능.
3. DLL 인젝션
동적으로 사용할 수 있는 라이브러리인 DLL을 애플리케이션에 삽입하는 기술.
3가지 방법
- 레지스트리를 사용. 레지스트리의 특정위치에 원하는 dll 이름을 입력해 놓음.
- 후킹 함수 사용. 특정 이벤트가 발생했을 때 dll을 로딩하는 후킹 함수로 등록하는 것.
- 실행 중인 애플리케이션에 원격 스레드 생성해 dll을 삽입하는 것.(윈도우는 CreateRemoteThread() 함수 제공)
4. 코드 인젝션(code injection)
스레드를 활용한 dll인젝션 기법과 유사.
차이점은 dll 대신 직접 샐항 가능한 셸 코드(shell code)를 삽입.
장점 : dll을 미리 시스템 특정 위치에 저장할 필요 x, 속도 빠르면 노출이 쉽지 않음.
단점 : shell code의 특성상 복잡한 해킹 코드 삽입 불가.
'보안' 카테고리의 다른 글
네트워킹 해킹 기술 (0) | 2019.07.05 |
---|---|
웹 해킹 기술 (0) | 2019.07.05 |