본문 바로가기

스터디/파이썬 해킹 프로그래밍

(27)
IDAPython ida pro Scripting 아이다 프로는 유명한 디스 어셈블 프로그램이다.주로 정적 분석에 쓰이는데, 최근 동적 분석으로도 쓰는걸 보았다.벨기에의 유명한 아키텍트가 개발한 아이다 프로는 개발자의 명성 처럼 뛰어난 능력을 자랑한다. 아이다의 강점으로는 다양한 플랫폼 지원과, IDC라는 자체 스크립트 언어를 가지고 있다.또한 개발자가 IDA의 플러그인 API를 사용할 수 있게 SDK를 제공하고 있다. IDA 파이썬을 설치한 후에, 우리가 이용할 수 있는 IDAPython 함수를 보자.IDA파이썬은 IDC와 완벽하게 호환된다. 즉, IDC가 지원하는 모든 함수를 IDAPython 에서도 사용할 수 있다.여기서는 주로 스크립트를 작성할 때 쓰는 함수를 살펴본다. 유틸리티 함수ScreenEA() : IDA 화면에 있는 커서의 현재 위치를 ..
10장 질문 보호되어 있는 글입니다.
윈도우 드라이버 퍼징 윈도우 드라이버를 공격하는 것은 이제는 버그 헌팅 뿐만 아니라 공격 코드 개발자에게도 일상적인 일이 됐다.몇년 전에는 드라이버에 대한 원격 공격이 몇개 있었긴 하지만,지금은 공격 대상 시스템에 대한 권한 상승을 위한 로컬 드라이버 공격이 훨씬 보편적으로 되었다.전에는 WarFTPD의 스택 오버플로우 버그를 찾아내기 위해 Sulley 를 이용했다. 한 가지 간과한 것은 WarFTPD가 사용자 권한으로 동작하고 있어서 사용자 권한밖에 얻지 못했다는 점.--> 원격으로 공격에 성공했어도 관리자 권한은 얻지 못했을 것이다. 만약 오버플로우나 Impersonation 공격 취약점이 있는 드라이버가 로컬에 설치되어 있는 경우, 그것을 이용하면 시스템 권한을 획득해 자유롭게 시스템의 모든 정보에 접근할 수 있다. 드..
질문정리 1. Sulley 를 읽으면 "설리" 인가?2. 무자비한 퍼징 시도를 막을 수 있는 방법은 무엇인가?3. 퍼징은 무작위 대입으로 오류를 발생시켜 취약점을 탐색하는 방법이라고 했는데, 이 말대로라면 실제 오류를 찾기까지의 시간은 매우 짧을 수도, 반대로 매우 길수도 있다. 실제 취약점 탐색에서 퍼징이 쓰이는가? 쓰인다면 어떤 방식으로 퍼징을 이용하는가?4.
Sulley! Sulley 는 TrippingPoint 의 패드램 아미니와 아론 포트노이가 개발한 파이썬 기반의 강력한 퍼징 프레임워크로써 Sulley 라는 이름은 영화 몬스터 주식회사에 나오는 크고 푸른 괴물인 Sulley 의 이름을 따서 지은 것이다. Sulley 는 단순한 퍼저가 아닌 퍼저 그 이상이다. 패킷을 캡쳐할 수 있고 광범위한 에러 보고 기능과 VMware 자동화를 제공한다. 또한 퍼징 대상 애플리 케이션에서 에러가 발생하면 해당 애플리케이션을 재시작 시켜 버그를 발견하기 위한 퍼징 세션을 다시 시작시킬 수 있다. Sulley 는 블록 기반의 퍼징을 수행한다. 블록 기반 퍼징 방법은 데이브 아이텔이 개발한 SPIKE 에서 처음으로 사용됐다. 블록 기반 퍼징에서는 퍼징을 수행할 프로토콜이나 파일 형식 등을..
퍼징 버그의 유형버퍼 오버플로우가장 흔한 형태의 소프트웨어 취약점으로써, 모든 종류의 메모리 관련 함수, 문자열 처리 루틴, 프로그래밍 언어 자체의 내부 기능 조차도 버퍼 오버플로우를 일으켜 소프트웨어를 취약하게 만들 수 있다. 데이터를 담을 변수의 크기보다 너 많은 데이터를 입력해 코드 흐름을 변경. 버퍼오버플로우는 두가지로 구분된다.스택 기반 오버플로우, 힙기반 오버플로우로 구분된다.동작 원리등이나 여러모로 다른 점이 많지만, 공격자가 원하는 코드를 실행시킬 수 있다는 점에서 결과는 동일하다. 스택 오버 플로우는 스택에 데이터를 덮어 씌움으로써 코드 실행의 흐름을 변경한다. 스택 오버플로우를 이용해 함수의 리턴 주소를 변경하거나 함수 포인터나 변수를 변경하거나 예외 핸들러의 체인을 변경하는 등의 자신의 코..
백도어 제작
코드 인젝션 코드 인젝션은 DLL 인젝션과는 달리 실행중인 프로세스에 쉘 코드를 삽입하여 그것이 메모리 상에서 실행되게 만들 수 있다. 또한 공격자가 다른 프로세스로 쉘 커넥션을 바꾸는 것이 가능하다. 여기서는 단순히 특정 PID를 가진 프로세스를 종료시키는 기능을 가진 간단한 쉘코드를 이용할 것이다. 원격 프로세스에 이 쉘코드를 삽입시킴으로서 이 쉘코드를 실행시킨 프로세스를 종료시킴으로서 흔적이 남지 않도록 할 수 있다.이는 이후에 작성할 트로이 목마의 핵심적인 기능이 될 것이다.필요에 따라 쉘코드의 일부를 안전하게 변경하는 방법도 살펴볼 것이다. 메타스플로잇을 이용해 쉘코드를 제작 할 수 있다.