본문 바로가기

분류 전체보기231

7장-DLL과 코드 인젝션 리버싱이나 공격을 수행할 때 원격 프로세스 안에 코드를 로드시키고 그것을 해당 프로세스 컨텍스트 내에서 실행시키는 것은 상당히 유용한 기술이다.DLL과 코드 인젝션을 통해 패스워드 해시를 훔치거나 공격 대상 시스템의 원격 데스크탑 제어권을 획들할 수 있다.DLL과 코드 인젝션은 일반적인 개발자나 공격 코드 제작자, 셸 코드 제작자, 침투 테스터 모드가 사용하는 기술이다.DLL 인젝션을 이용해 다른 프로세스 내에서 팝업 윈도우를 띄울 것이며, 특정 PID를 가진 프로세스를 종료시키게 설계된 셸 코드를 테스트하기 위해 코드 인젝션을 이용할 것이다. 2015. 1. 29.
6장-2 Immunity 디버거를 이용한 하드 후킹 Immunity 디버거는 FastLogHook 이라는 객체를 통해 복잡한 하드 후킹 설정 과정을 간단히 처리할 수 있다.FastLogHook 객체는 원하는 값을 로깅 해주는 어셈블리 코드를 만들어 주고 해당 어셈블리 코드로 점프하게 후킹하고자 하는 원래의 명령을 점프 코드로 덮어써준다.후킹 코드를 실행시키려면 후킹 코드로 점프하게 만들어야 한다.그러기 위해 원래의 명령을 점프 코드로 덮어야 하는데,그 작업을 logFunction() 함수가 수행해준다.함수의 시작부분을 후킹하고 해당 함수의 파라미터를 관찰하고 싶다면 num_arguments에 해당 함수의 파라미터 개수를 입력하고,함수의 종료 부분을 후킹하고자 한다면 logRegister(), logBaseDisplacement(), logDirectMem.. 2015. 1. 26.
6장-후킹-1(PyDbg를 이용한 소프트 후킹) 애플리케이션 계층에서 암호화된 트래픽을 스니핑 하는 것이 첫 번째다.이 책은 파이어폭스를 이용한다.firefox.exe 프로세스가 데이터를 암호화해 서버에 전송하기 전에 데이터를 스니핑해볼 것이다.파이어폭스가 쓰는 암호화 형태는 SSL 이다.nspr4.dll의 익스포트 함수인 PR_Write 함수에 후킹을 설정한다.이 함수가 호출되면 [ESP+8]을 통해 암호화되기 전의 아스키 문자열에 대한 포인터를 얻을 수 있다ESP 레지스터로부터 오프셋+8 위치라는 것은 아스키 문자열이 PR_Write 함수에 두 번째 파라미터로 전달된다는 의미다.파이어폭스를 열고 http://www.openrce.org 사이트로 이동한다.firefox.exe에 immunity 디버거를 붙이고 nspr4.PR_Write에 브레이크포인.. 2015. 1. 26.
6장-후킹 후킹은 프로세스를 모니터링하기 위해 실행 흐름을 변경하거나 프로세스가 접근하는 데이터를 변경하기 위해 사용되는 강력한 기술이다.소프트 후킹과 하드 후킹이 나온다.소프트 후킹은 대상 프로세스에 붙인 다음에 실행 흐름을 가로채기 위해 INT 3 브레이크포인트 핸들러를 구현하는 것이다.하드 후킹은 어셈블리 언어로 작성된 후킹 코드가 실행되게 점프 코드를 삽입하는 것이다. 소프트 후킹은 집중돼 있지 않거나 자주 호출되지 않는 함수를 후킹하는데 유용하다.반대로 자주 호출되거나 프로세스에 최소한의 영향을 주기 위해서는 하드 후킹을 사용해야 한다. 2015. 1. 26.
5장-4 악성 코드의 안티 디버깅 루틴 무력화-2(반복적인 프로세스 탐지 기법 우회) 악성 코드는 디버거가 실행 중인지 확인하기 위해 반복적으로 실행 중인 프로세스를 검사하기도 한다.예를 들면 Immunity 디버거를 사용한다면 Immunitydebugger.exe 가 실행될 것이다.악성코드는 실행 중인 프로세스의 리스트를 반복적으로 구하기 위해 Process32First 함수와 Process32Next 함수를 이용한다.두 함수 모두 실행 결과를 불린값으로 반환한다.EAX 레지스터의 값을 0으로 만들고 곧바로 리턴하게 함수를 패치하면 악성코드는 실행 중인 프로세스 리스트를 구할 수 없다고 한다. 머리가 참 좋다.immunity 디버거에 내장된 어셈블러를 이용해면 함수 패치를 쉽게 수행할 수 있다. 2015. 1. 26.
5장-4 악성 코드의 안티 디버깅 루틴 무력화 악성 코드가 디버거를 이용해 자신의 동작 방식을 분석하지 못하게 차단하려고안티 디버깅 루틴을 사용한다고 한다. 안티 디버깅 예가장 널리 사용되는 안티 디버깅 기법kernel32.dll 의 IsDebuggerPresent 함수를 사용하는 것이다.이 함수는 파라미터 없이 사용되며 디버거가 현재 프로세스에 붙여져 있으면 1을 반환하고 그렇지 않으면 0을 반환한다.IsDebuggerPresent 함수를 디스어셈블한 코드PyCommand에 포함하거나 Immunity 디버거의 파이썬 셸에서 밑의 코드를 실행한다.그러면 안티 디버깅이 우회될 것이다. 2015. 1. 26.
728x90