Try Attack/Symbolic Execution8 [연구] Windows binary vulnerability analysis[1] 먼저 지금부터 작성하는 내용은 정확한 내용이라고 할 수 없음을 알려드립니다. 왜냐하면? 연구하고 있는 부분이기 때문이지요. Symbolic Execution은 angr를 사용해서 진행하였습니다. 아래쪽에 진행한 내용에 설명이 있습니다. 1. 페이로드 생성 공격을 하기 위해 Shellcode를 만들어야 합니다. 1) 리눅스 system_call로 호출이 가능하고 32비트의 경우 0xb 64비트의 경우 0x3b 입니다. 2) 윈도우즈 Windows의 경우 API를 통해 호출 가능합니다. Kernel32.dll에 있는 WinExec()를 사용하면 됩니다. 2. 취약점을 찾는 방법 1) Unconstrained state를 찾기 crash가 발생한다면 오버플로우가 일어날 수도 있기 때문이지요. 2) Uncons.. 2019. 8. 22. [논문요약] 소프트웨어의 크래시를 분석 후 자동 공격코드를 생성 제목 설명 주제 소프트웨어의 크래시를 분석해서 자동으로 공격코드를 생성하는 프로그램 설명 정보 자동 exploit 생성, 버그 포렌식. 소프트웨어 크래시 분석, 기호실행, 오염분석 제시 내용 소프트웨어에서 크래시가 발생한 경우 바이너리 프로그램에 대한 공격코드를 자동으로 생성할 수 있는 방법 목표 스택 및 힙 오버플로우, 형식 문자열 및 초기화 되지 않은 변수 사용을 포함한 취약성 유형에 대해서 공격을 시도할 수 있는 exploit 생성 exploit을 생성하는 것은 소스코드 없이 소프트웨어 장애에 대한 자동화된 프로세스 방법 공격은 concolic 실행으로 취약한 경로를 전환하고 IP를 조작하기 위한 제약조건을 이용해서 ROP 페이로드와 결합 조건 연속된 메모리공간이 오염되었고, symbolic하다면 .. 2019. 8. 21. [연구] 바이너리 취약점 탐지 및 공격코드 생성[1] 제목을 조금 풀어서 설명하면... 주제 : 소프트웨어의 crash를 분석해서 자동으로 공격코드를 생성하는 솔루션 제작 소프트웨어의 취약점을 점검해주는 프로그램을 만든다고 생각해도 됩니다. crash를 분석한다는 의미는 취약할 가능성이 있는 곳을 탐지한다는 말이지만, crash가 발생했다고 해서 모두 취약한 것은 아닙니다. 그래서 페이로드를 넣고 취약할 가능성이 있는 부분에 대한 익스플로잇 만드는 과정을 자동화합니다. 만들어진 익스플로잇을 실제로 넣어보고 공격에 성공했다면 취약할 가능성이 있는 부분은 취약점이 됩니다. 이 후 취약한 부분에 대한 자동패치를 진행합니다. 바이너리코드는 역함수가 없기 때문에 어떨지 모르겠지만 IDA Pro의 디컴파일 기능에서 사용하는 휴리스틱을 이용하면 가능성이 zero는 아니.. 2019. 8. 18. AFL_fuzzer 설치 및 사용방법[영상포함] 1. AFL fuzzer란? (1) 프로그램에 무작위 데이터를 입력해서 버그 및 취약점을 찾는 툴 (2) 소스코드가 주어질 경우 입력받는 곳의 루틴을 자동으로 찾음 ▶ input 값에 대한 무작위 데이터 생성 (3) 블랙박스 테스트는 가능은 하지만 효과적이지 못하다는 단점... 2. AFL fuzzer의 지원 (1) 지원가능한 언어 ▶ C, C++, Objective C(OSX, IOS) (2) 지원가능한 OS ▶ Linux, OpenBSD, FreeBSD, NetBSD ▶ 32비트, 64비트 (3) 지원가능한 컴파일러 ▶ gcc, g++, clang, clang++ (씨랭이라고 읽고 C_language의 약자) 3. AFL_fuzzer의 기능 4. AFL_fuzzer 설치방법 5. AFL_fuzzer .. 2019. 6. 24. Peach Fuzzer install 1. 시스템에 Mono repository 등록 ▶ sudo apt install gnupg ca-certificates ▶ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF ▶ echo "deb https://download.mono-project.com/repo/ubuntu stable-bionic main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list ▶ sudo apt update 2. Mono 설치(Mono를 설치하는 이유? peach3.x버전이 C#으로 제작되었기 때문) ▶ sudo.. 2019. 6. 3. python3에서 angr 설치 1. 설치 전에..(1) 설치환경 ▶ Ubuntu 18.04 desktop 에서 설치하려고 한다. (2) 특이사항 [1] python3의 가상환경을 생성하고 그 위에 설치한다. [2] 가상환경에 설치하는 이유? ▶ angr의 모듈의 내부도 Z3의 solver를 이용하는데 angr와 Z3를 동시에 설치하면 서로의 영역에 침범해서 모듈을 사용할 수 없다. ▶ 이 부분은 직접 겪었고, 그 외에도 가상환경에서 설치하고 삭제해야 관리가 용이하다는 면에서 가상환경에서 설치를 추천한다. (3) 사전에 설치한 프로그램▶ 만약 아래 프로그램이 설치되지 않았다면 설치하고 진행하기를 권장한다. [1] sudo apt install python3 [2] sudo apt install python3-pip [3] sudo ap.. 2019. 5. 29. python3에서 z3 설치 1. 설치 전에..(1) 설치환경 ▶ Ubuntu 18.04 desktop 에서 설치하려고 한다. (2) 특이사항 [1] python3의 가상환경을 생성하고 그 위에 설치한다. [2] 가상환경에 설치하는 이유? ▶ angr의 모듈의 내부도 Z3의 solver를 이용하는데 angr와 Z3를 동시에 설치하면 서로의 영역에 침범해서 모듈을 사용할 수 없다. ▶ 이 부분은 직접 겪었고, 그 외에도 가상환경에서 설치하고 삭제해야 관리가 용이하다는 면에서 가상환경에서 설치를 추천한다. (3) 사전에 설치한 프로그램▶ 만약 아래 프로그램이 설치되지 않았다면 설치하고 진행하기를 권장한다. [1] sudo apt install python3 [2] sudo apt install python3-pip [3] sudo ap.. 2019. 5. 29. [Symbolic Execution] 용어정리 1. Symbolic Execution(줄여서 Symbex라고 부름) (1) Taint Analysis처럼 프로그램 상태에 대한 메타데이터를 추적한다. (2) Symbolic Execution은 프로그램의 상태와 다른상태에 도달하기 위해 어떻게 해야하는지를 알 수 있다. (3) 사용하는 이유? 다른 기술로 불가능한 많은 강력한 분석을 가능하도록 한다. (4) 프로그램 상태를 논리적인 공식으로 표현하는 소프트웨어 분석 기법이다. (5) 프로그램의 동작에 대한 복잡한 내용을 알 수 있다. (6) H/W 제조 시 하드웨어 언어(회로도)로 작성된 코드를 테스트할 수 있다. (7) S/W 테스트 및 악성코드 분석 시 탐색되지 않은 경로를 생성하는 입력을 알아내서 동적 분석이 가능하도록 한다. (8) Code Co.. 2019. 5. 22. 이전 1 다음