본문 바로가기

분류 전체보기

(267)
퍼징 버그의 유형버퍼 오버플로우가장 흔한 형태의 소프트웨어 취약점으로써, 모든 종류의 메모리 관련 함수, 문자열 처리 루틴, 프로그래밍 언어 자체의 내부 기능 조차도 버퍼 오버플로우를 일으켜 소프트웨어를 취약하게 만들 수 있다. 데이터를 담을 변수의 크기보다 너 많은 데이터를 입력해 코드 흐름을 변경. 버퍼오버플로우는 두가지로 구분된다.스택 기반 오버플로우, 힙기반 오버플로우로 구분된다.동작 원리등이나 여러모로 다른 점이 많지만, 공격자가 원하는 코드를 실행시킬 수 있다는 점에서 결과는 동일하다. 스택 오버 플로우는 스택에 데이터를 덮어 씌움으로써 코드 실행의 흐름을 변경한다. 스택 오버플로우를 이용해 함수의 리턴 주소를 변경하거나 함수 포인터나 변수를 변경하거나 예외 핸들러의 체인을 변경하는 등의 자신의 코..
백도어 제작
코드 인젝션 코드 인젝션은 DLL 인젝션과는 달리 실행중인 프로세스에 쉘 코드를 삽입하여 그것이 메모리 상에서 실행되게 만들 수 있다. 또한 공격자가 다른 프로세스로 쉘 커넥션을 바꾸는 것이 가능하다. 여기서는 단순히 특정 PID를 가진 프로세스를 종료시키는 기능을 가진 간단한 쉘코드를 이용할 것이다. 원격 프로세스에 이 쉘코드를 삽입시킴으로서 이 쉘코드를 실행시킨 프로세스를 종료시킴으로서 흔적이 남지 않도록 할 수 있다.이는 이후에 작성할 트로이 목마의 핵심적인 기능이 될 것이다.필요에 따라 쉘코드의 일부를 안전하게 변경하는 방법도 살펴볼 것이다. 메타스플로잇을 이용해 쉘코드를 제작 할 수 있다.
DLL 인젝션 DLL 인젝션 기술은 사용 목적의 선악에 구분 없이 오래 사용되어 왔다.여기저기 다양한 곳에서 DLL인젝션이 이용되는 것을 볼 수 있다. 마우스 커서를 화려하게 바꿔주는 윈도우 쉘 익스텐션에서 부터 광범위 하게 이용된다. 프로세스가 DLL을 메모리에 로드하게 만들기 위해 kernel32.dll 의 LoadLibrary() 를 이용한다. HMODULE LoadLibrary(LPCSTR lpFileName); lpFileName 파라미터는 단순히 로드하려는 DLL의 경로를 나타낸다. 그런데 로드하려는 DLL 경로 문자열의 포인터가 파라미터로 전달되는 LoadLibraryA를 원격 프로세스가 호출하게 만들어야 한다. 그렇게 하려면 먼저 LoadLibraryA의 주소를 구하고 로드할 DLL의 이름을 써 넣어야 ..
DLL과 코드 인젝션 리버싱이나 공격을 수행 시 원격 프로세스 안에서 코드를 로드하고 그것을 해당 프로세스 컨텍스트 내에서 실행시키는 것은 상당히 유용한 기술.DLL과 코드 인젝션을 통해 패스워드 해쉬를 스니핑하거나 공격 대상 시스템의 원격 데스크탑 제어권을 얻을 수 있다. DLL과 코드 인젝션 기술은 일반적인 개발자나 페이로드 개발자, 쉘 코드 제작자, 침투 테스터 모두가 사용하는 기술이다. DLL인젝션을 이용해 다른 프로세스 내에서 팝업 윈도우를 띄울 것이며, 특정 PID를 가진 프로세스를 종료시키게 된 쉘 코드를 테스트 하기 위해 코드 인젝션을 사용할 것이다.마지막으로는 완전히 파이썬만으로 코딩된 트로이 목마를 작성한다.일단 원격 쓰레드 생성부터 알아보자. 쓰레드를 생성하는데 사용되는 Win32 API가 kernel32..
Immunity 디버거를 이용한 하드 후킹 이 기술은 x86 어셈블리 코드로 작성된 후킹 코드를 사용하기 때문에 후킹 대상 프로세스에 많은 영향을 끼치지 않는다. 소프트 후킹의 경우에는 브레이크 포인트가 호출될 때 마다 프로세스가 많은 작업 (그리고 더 많은 명령들)을 처리해야 하며, 후킹 코드를 실행시킨 다음에는 자기 자신의 코드를 계속해서 실행시켜야 한다.반면 하드 후킹의 경우 특정한 코드 조각만으로 후킹 코드를 실행시키고 기존의 프로세스 코드 흐름으로 돌아온다.하드 후킹을 사용할 때의 장점은 소프트 후킹의 경우와는 달리 후킹 대상 프로세스가 에러로 인해 종료되는 일이 없다. Immunity 디버거에서는 FastLogHook 이라는 객체를 통해 복잡한 하드 후킹 설정 과정을 간단히 처리 할 수 있다. FastLogHook 객체는 원하는 값을 ..
PyDbg 를 이용한 소프트 후킹 소프트 후킹을 이용해 모질라 파이어 폭스가 데이터를 암호화 시키기 전 데이터를 스니핑 해보자. 파이어폭스는 통상적으로 SSL 암호화를 사용한다.어느 함수에 후킹을 할 지는 본인의 선택이지만, 여기서는 PR_Write 함수에 후킹을 설정한다. 이 함수가 호출되면 ESP+8을 통해 암호화 되기 전의 아스키 문자열에 대한 포인터를 얻을 수 있다. ESP 레지스터로부터 오프셋+8의 위치라는 것은 (오프셋이란 거리를 이야기 한다.)아스키 문자열이 PR_Write 함수에 두 번째 파라미터로 전달된다는 의미이다. --> 암호화 되기 전 아스키 문자열을 스니핑 하기 위해서는, 이 함수를 후킹한다.(수정) 이 함수를 후킹할 경우, 아스키 문자열을 스니핑 할 수 있다. 파이어폭스 웹 브라우저를 열고 https://www...
vampire -> skeleton argv 전체,환경변수 전체 를 초기화 시킨다.마땅한 페이로드가 생각나지 않아 삽질하던중,메모리에 파일의 경로 값이 남는것을 발견했다. 그래서 gdb 로 확인을 해봤더니, 정말 초기화가 되지 않았다. 인자에 포함이 되지 않는 값인 것 같다. 그래서 심볼릭 링크를 이용해, (하드링크시 아이노드가 복사되어서 권한이 변경된다.)파일 이름에 쉘코드를 포함시켰다. [vampire@localhost payload]$ ls????????????????????????????????????????????????????????????????????????????????????????????????????h?��?h�?SThjo?�h?i0chi0tij?Y�??Iy�A��T�[vampire@localhost payload]$..