본문 바로가기

파이썬 스터디 과제43

7장-DLL과 코드 인젝션-3 (백도어 제작) 백도어는 시스템의 권한을 획득하는 데 사용될 수 있는 것이다.프로세스를 종료시키는 것은 백도어의 핵심 기능이다. 파일 숨기기NTFS 파일 시스템의 ADS를 이용하면 실행 바이너리에 파일을 은닉시키는 것이 가능하다.ADS는 애플의 HFS파일 시스템과의 호환성을 위해 Windows NT 3.1 부터 지원됐다.ADS를 이용해 디스크네 있는 기존 파일에 alternate stream 형태로 해당 파일에 DLL을 붙일 수 있다.ADS 스트림 파일은 특별한 파일이 아니라 단지 은닉되지 않은 기존파일에 붙여서 보이지 않게 숨겨진 파일이다.http://forensic-proof.com/archives/427이 링크를 참조하면 NTFS에대한 정보가 나온다.ADS 파일을 이용하려면 기존에 존재하는 파일 이름에 콜론을 포함.. 2015. 1. 31.
7장-DLL과 코드 인젝션-2 (코드 인젝션) 코드 인젝션은 DLL인젝션에 비해 좀 더 교묘한 기술이다.코드 인젝션을 이용하면 실행 중인 프로세스에 셸 코드를 삽입해 그것이 메모리상에서 실행되게 만들 수 잇다.또 공격자가 다른 프로세스로 셸 커넥션을 바꾸는 것이 가능하다.이 부분에서는 단순히 특정 PID를 가진 프로세스를 종료시키는 기능을 가진 간단한 셸 코드를 이용할 것이라고 한다.이 셸 코드를 이용하면 셸 코드를 원격 프로세스에 삽입해 그것을 실행시킨 프로세스를 종료시킴으로써 흔적이 남지 않게 할 수 있다. Metasploit 프로젝트의 홈페이지에서 제공하는 셸 코드 생성기를 이용하면 프로세스를 종료시키는 셸 코드를 얻을 수 있따.http://metasploit.com/shellcode/ 페이지를 방문해 셸 코드를 구하면 된다.위 셸 코드는 셸 .. 2015. 1. 31.
7장-DLL과 코드 인젝션-2 (DLL 인젝션) DLL 인젝션 기술은 사용 목적에 상관없이 오래 동안 사용돼 왔다.여기저기서 DLL 인젝션이 이용되는 것을 볼 수 있다고 한다.DLL 인젝션의 장점은 컴파일된 바이너리를 프로세스 내에 로드하고 그것을 해당 프로세스의 일부분으로 실행시킬 수 있다는 것이다.예를 들어 DLL 인젝션 기술을 사용하면 외부로의 네트워크 연결에 대해 특정 애플리케이션인 경우에만 허용해주는 방화벽 소프트웨어를 우회하는 것이 가능하다. 프로세스가 DLL을 메모리에 로드하게 만들기 위해 kernel32.dll의 LoadLibrary() 함수를 이용해야 한다.LoadLibrary() 함수의 프로토타입------------------------------------------------------------------HMODULE Load.. 2015. 1. 29.
7장-DLL과 코드 인젝션-1 (원격 스레드 생성) DLL 인젝션과 코드 인젝션 사이에는 몇 가지 차이가 있다.하지만 두 가지 모두 동일한 방법으로 수행된다. 그것이 원격 스레드 생성이다.원격 스레드를 생성하는 데 사용되는 Win32 API가 Kernel32.dll의CreateRemoteThread()다.CreateRemoteThread()의 프로토타입--------------------------------------------------------------------HANDLE WINAPI CreateRemoteThread(HANDLE hProcess,LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpPara.. 2015. 1. 29.
7장-DLL과 코드 인젝션 리버싱이나 공격을 수행할 때 원격 프로세스 안에 코드를 로드시키고 그것을 해당 프로세스 컨텍스트 내에서 실행시키는 것은 상당히 유용한 기술이다.DLL과 코드 인젝션을 통해 패스워드 해시를 훔치거나 공격 대상 시스템의 원격 데스크탑 제어권을 획들할 수 있다.DLL과 코드 인젝션은 일반적인 개발자나 공격 코드 제작자, 셸 코드 제작자, 침투 테스터 모드가 사용하는 기술이다.DLL 인젝션을 이용해 다른 프로세스 내에서 팝업 윈도우를 띄울 것이며, 특정 PID를 가진 프로세스를 종료시키게 설계된 셸 코드를 테스트하기 위해 코드 인젝션을 이용할 것이다. 2015. 1. 29.
6장-2 Immunity 디버거를 이용한 하드 후킹 Immunity 디버거는 FastLogHook 이라는 객체를 통해 복잡한 하드 후킹 설정 과정을 간단히 처리할 수 있다.FastLogHook 객체는 원하는 값을 로깅 해주는 어셈블리 코드를 만들어 주고 해당 어셈블리 코드로 점프하게 후킹하고자 하는 원래의 명령을 점프 코드로 덮어써준다.후킹 코드를 실행시키려면 후킹 코드로 점프하게 만들어야 한다.그러기 위해 원래의 명령을 점프 코드로 덮어야 하는데,그 작업을 logFunction() 함수가 수행해준다.함수의 시작부분을 후킹하고 해당 함수의 파라미터를 관찰하고 싶다면 num_arguments에 해당 함수의 파라미터 개수를 입력하고,함수의 종료 부분을 후킹하고자 한다면 logRegister(), logBaseDisplacement(), logDirectMem.. 2015. 1. 26.
728x90