Try Attack91

[논문요약] 소프트웨어의 크래시를 분석 후 자동 공격코드를 생성 제목 설명 주제 소프트웨어의 크래시를 분석해서 자동으로 공격코드를 생성하는 프로그램 설명 정보 자동 exploit 생성, 버그 포렌식. 소프트웨어 크래시 분석, 기호실행, 오염분석 제시 내용 소프트웨어에서 크래시가 발생한 경우 바이너리 프로그램에 대한 공격코드를 자동으로 생성할 수 있는 방법 목표 스택 및 힙 오버플로우, 형식 문자열 및 초기화 되지 않은 변수 사용을 포함한 취약성 유형에 대해서 공격을 시도할 수 있는 exploit 생성 exploit을 생성하는 것은 소스코드 없이 소프트웨어 장애에 대한 자동화된 프로세스 방법 공격은 concolic 실행으로 취약한 경로를 전환하고 IP를 조작하기 위한 제약조건을 이용해서 ROP 페이로드와 결합 조건 연속된 메모리공간이 오염되었고, symbolic하다면 .. 2019. 8. 21.
[연구] 바이너리 취약점 탐지 및 공격코드 생성[1] 제목을 조금 풀어서 설명하면... 주제 : 소프트웨어의 crash를 분석해서 자동으로 공격코드를 생성하는 솔루션 제작 소프트웨어의 취약점을 점검해주는 프로그램을 만든다고 생각해도 됩니다. crash를 분석한다는 의미는 취약할 가능성이 있는 곳을 탐지한다는 말이지만, crash가 발생했다고 해서 모두 취약한 것은 아닙니다. 그래서 페이로드를 넣고 취약할 가능성이 있는 부분에 대한 익스플로잇 만드는 과정을 자동화합니다. 만들어진 익스플로잇을 실제로 넣어보고 공격에 성공했다면 취약할 가능성이 있는 부분은 취약점이 됩니다. 이 후 취약한 부분에 대한 자동패치를 진행합니다. 바이너리코드는 역함수가 없기 때문에 어떨지 모르겠지만 IDA Pro의 디컴파일 기능에서 사용하는 휴리스틱을 이용하면 가능성이 zero는 아니.. 2019. 8. 18.
Windows에서 Shellcode 작성하기 오늘은 shellcode작성하기로 포문을 열겠습니다. 갑자기 shellcode? 이럴 수 있지만.. symbolic execution을 하는 과정에서 비트벡터 내 shellcode를 삽입하고 메모리에 올리기 위한 기초공사로 shellcode를 만들고 있지요. 그럼 시작해 볼까요? shellcode 넌 누구니?! 위키백과가 왈 "컴퓨터 보안에서 셸코드란 작은 크기의 코드로 소프트웨어 취약점 이용을 위한 내용부에 사용된다." "셸코드로 불리는 까닭은 일반적으로 명령 셸을 시작시켜 그곳으로부터 공격자가 영향 받은 컴퓨터를 제어하기 때문이다." 요약해보면 "취약점을 이용해 내부에 삽입하는 코드" 정도로 보이네요. shellcode는 악성동작을 하는 코드인 페이로드(payload)이고, 실제로 공격을 하려면 sh.. 2019. 7. 27.
Virtual address 날씨가 많이 덥지만 시간은 정신없이 지나가네요.. 방학시즌이라 그런지 여러가지주제로 교육이나 컨퍼런스등이 많네요~ 19년 7월 9, 10, 11일 KISA 핀테크 기술지원센터에서 주최하는 git 교육으로 시작해서, 19년 7월 10일 블록체인 TechBiz 컨퍼런스와, 19년 7월 13일은 BOAZ에서 빅데이터컨퍼런스도 하고, 19년 7월 16일에 이스트시큐리티에서 2019 엔드포인트 보안컨퍼런스도 있구.. 19년 7월 16일에 KISA에서 사이버 빅데이터 교육 공통과정도 있네요.. 오늘이 7월 12일이니까.. 7월 16일에 이스트시큐리티의 컨퍼런스 대신 저는 빅데이터 교육을 들으러 가겠네요..ㅜㅡ 19년 7월 18일은 KISA 핀테크 기술지원센터에서 금융시장의 데이터를 빅데이터로 활용하는 방법에 대해 .. 2019. 7. 12.
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.
위장 악성코드를 실행하는 방법 ※ OS : Windows환경의 악성코드 1. 위장 악성코드 ▶ 악성코드 제작자는 악성코드를 은닉하기 위해 여러가지 방법을 개발한다. ▶ 즉, 탐지를 우회하기 위해 위장 실행 기법을 개발한다. 2. Launchers(실행기) (1) Launcher란? [1] Loader라고도 부르며 현재 실행하고 있거나 추후에 (은밀하게) 실행하기 위해 자기자신이나 다른 악성코드를 설정하는 악성코드이다. [2] 편의상 exploit이라고 생각하려고 한다. (2) Launcher가 필요한 이유? [1] 나쁜 짓 할 때 사용자에게 걸리지 않으려고? 설정하기 위해서..ㅎ (3) Launcher가 로딩할 악성코드를 포함한 경우 [1] .exe파일이나 .dll을 자신의 resource section에 가지고 있다. [2] PE파.. 2019. 5. 31.
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.
MFC_reversing 1. MFC(1) Visual Studio의 c++로 만들어지고 UI가 있는 프로그램을 리버싱할 경우 MFC로 개발된 프로그램을 리버싱할 가능성이 높다,(2) 이 말은 리버싱을 하기 위해서는 MFC의 구조를 알아야 한다는 것을 의미하지 않을까?(3) MFC(Microsoft Foundation Classes)란? [1] 통합개발환경을 위한 Visual C++에 부속되는 클래스 라이브러리이다. [2] 객체지향 프로그래밍을 기반으로 윈도우 애플리케이션 개발에 적합한 환경으로 제공되는 프레임워크이다. [3] 쉽게 말해 API로 개발 시 같은 일을 반복하지 않기 위해, 유사한 내용은 사전에 클래스로 만들어 놓고 제공하는 라이브러리이다. 2. MFC의 구조(1) 메세지 처리방식 [1] MFC는 객체지향의 특성을 .. 2019. 5. 26.
[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.
Web hacking 이론 1. 가상화 1) Hyper-V(하이퍼바이저) 란? ▶ Host System에서 다수의 Guest OS를 돌리기 위한 Platform ▶ Host OS = Physical System에 설치된 OS ▶ Guest OS = Virtual Machine, Container 위에 설치된 OS 2) Hyper-V의 유형 [차이 구분] ▶ Type1 = Hyper-V가 하드웨어 위에서 바로 실행 ▶ Type2 = Host OS위에 Hyper-V를 실행 3) Hyper-V의 종류 ▶ VMware - ESXi(Type1), Workstation(Type2) ▶ MS Hyper-V - Windows Server에 통합 ▶ Ctrix Xen (최초의 반가상화 Hyper-V) ▶ KVM (OpenStack, Cloud 구.. 2019. 4. 27.