박주현 Exploit Helpers 안녕하세요 포너블을 도와주는 exploit helpers에 대해 발표하게된 박주현이라고 합니다.

Slides:



Advertisements
Similar presentations
Revers3r( 임재혁 ). Contents 1. About me 2. Pwntools 에 대해 … 3. Pwntools 설치 4. Pwntools 의 다양한 기능들 5. Pwntools 를 이용한 익스플로잇 몇 가지.
Advertisements

경영학과 이은지 경영학과 윤혜리 경영학과 이지은 경영학과 유승연 경영 성공사례 분석.
윤준혁 (12), 이주연 (13), 박혜원 (14), 안혜경 (15) 허니버터칩으로 알아본 SNS 의 영향 력.
Oh Ji Ae Young-do Elementary School 다양한 활동을 통한 영어 학습자의 자율성 향상 방안 탐구 (Improving Learning Autonomy through Using Various Activities)
1 ‘ 우리나라의 주요공업 ’ - 정도웅, 주민혁, 안수진, 백경민, 엄다운, 박경찬 -.
2011년 부산대역‘아마존’ 벼룩시장 운영 현황 조사
Linux Debugging issues
Linux/UNIX Programming APUE (The Environment of a UNIX Process)
Shellcode 작성 김영성.
공부할 내용 조상들이 살던 곳 자연과 잘 어울리는 한옥 지방에 따라 서로 다른 집의 모양 섬 지방의 집
사랑, 데이트와 성적 자율성 :데이트 성폭력!!! 성폭력예방교육 전문강사 / 여성학 전공 신 순 옥.
1636 쇼핑몰.
퇴계와 율곡의 사회사상 비교 남 일 재 동서대학교 교수/ 정치학 박사 1. 퇴계 이황과 율곡 이이의 약전(略傳)
제 2장 컴퓨터 구조.
제3장 사회 복지 발달사.
Beyond the Present Way! 비즈 커뮤니케이션 투비앤포스트㈜ 대표이사 박금용 박사
501. 군인들의 세상 502. 민정 이양과 한일회담 이선용.
2015년 하반기 소방교육 자 유 전 공 학 부 (금) 안녕하십니까 자유전공학부 행정실 입니다.
크로스 컴파일 환경 구축.
제주지역대학 제주 새별오름 들불축제 지역 식생(植生) 변화 조사 연구
게임 엔진 : 프로젝트 PPT_1 참참참 김 현 원.
Linux를 이용한 Embedded 장비 개발
아동복지 제9장.
Software Exploit and Kernel Protection
PowerPC ABI 김종화.
Hacker Debugging Uncovered Chapter 9:Hashing and How to Overcome it Chapter 10:Popular Protection Mechanisms Used in Demo Versions 이동현.
임베디드 시스템 개론 3주차 Embedded System..
버퍼 오버플로우 시스템보안 인터넷공학전공 권영락.
Computer Architecture
리버스 엔지니어링 안녕하십니까? 리버스 엔지니어링 발표를 맡은 정창하입니다. 지금부터 리버스 엔지니어링 발표를
어셈블리어 및 실습 금 1,2 (314) / 금 3,4 (307) RTDCS 이 종 태
Geek-OS Project 정영진
BOF of 2.6 Kernel ! 박수완 / Su-Wan, PARK [ L1nkC] 숭실대학교 정보보호동아리 ACK
“애견보험 사업계획서” 팀명 : 뷰티풀 젠트 팀원 : 유연화(CEO) 최영미
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
제1장 시스템 소프트웨어의 개요 컴퓨터시스템 및 하드웨어 구성 컴퓨터의 구성과 기능 시스템프로그램의 개요
School of Computer Science and Engineering Seoul National University
Buffer Overflow
제13장 장애인 복지.
사회복지 법제론 /노인장기요양보험법 문은홍 조소라.
제4장 유닉스 쉘 숙명여대 창병모 2011 가을.
Windows 환경에서 동작하는 Arm Emulator(Simulator)
「 LINUX IBM SpectrumScale 설치 가이드」
A Web-Based Little Man Computer Simulator
운영체제 (Operating Systems) (Memory Management Strategies)
발표자료는 다음링크에서 다운로드 받으실 수 있습니다.
정치개혁의 가능성 논의 권력구조 개편을 통하여 본 -개헌을 통한 정부형태의 변화를 중심으로 [한국정치론] 윤성이 교수님
Operating System Multiple Access Chatting Program using Multithread
치료 레크레이션 프로그램 (지적 장애 대상) 과 목: 학 과: 학 번: 이 름: 제 출 일 자 담 당 교 수:
게임 엔진 : 프로젝트 PPT_2 참참참 김 현 원.
쉽게 풀어쓴 C언어 Express 제1장 프로그래밍의 개념 C Express.
광고 모델의 영향력.
HW 1: Buffer Overflow.
노년기 발달 장안대 행정법률과 세류반 정 오 손
FTZ 과제풀이 Level 11,12 HyunJae Lee
태국 문학 욜라다 왓짜니 싸란차나 팟차라와라이 끼따야펀 르앙다우 타니다.
GDB - GNU Debugger 김진용.
자료구조 세미나 발표 주제: 자료구조 기초 - 1회 차: 자료구조의 정의, 기초 지식 (함수, 포인터, 레퍼런스)
세일즈의 원칙과 기술.
Z3로 공부하는 SMT Solver, 그리고 CTF
평생 저축해도 강남 아파트 못산다 학 과 : 회계학과 1학년 B반 과 목 : 회계학원론 담당교수: 박성환 교수님
콘텐츠 디자인 황아현.
센터 코칭 결과 소 속 제천센터 코칭대상 엔지니어, 상담사 코칭일시
수학 2 학년 1 학기 문자와 식 > 부 등 식 ( 2 / 2 ) 부등식의 성질 이용 풀기.
고객만족 서비스 교육 Ⅴ. 전화예절.
자기소개 PPT 창의적 발상과 표현 이지원.
경영학의 상황학파에 대해서… 경제학과 3학년 최준용 회계학과 4학년 진현빈
워밍업 실뭉치 전달게임.
음파성명학 최종욱.
Eclipse를 이용한 Embedded Linux 응용 프로그램 개발
Presentation transcript:

박주현 Exploit Helpers 안녕하세요 포너블을 도와주는 exploit helpers에 대해 발표하게된 박주현이라고 합니다.

Contents Who Am I 2. Exploit sequence Checking protection in binary – checksec.sh Finding exploitable vector – IDA Pro, Gdb-peda, Qira, Core dump Exploit – Pwntools 먼저 목차로는 크게 제 소개와 익스플로잇을 할때 저만의 순서? 랄까 그것에 따라서 헬퍼들을 정리해 보았습니다. 포너블 하시는 꽤 많은 해커분들이 저와 비슷한 과정을 거치시는것 같습니다. 자기소개는 아무도 관심없겠지만… 컨퍼런스 들으러 가보면 다른 발표자님들 하는거 보면 너무 멋있어서 저도 넣어보았습니당 ㅎ.. 우리 함께 멋진 툴키디가 되어봅시다~

Who Am I X ㅡ ㅁ Terminal 누구세요? 뭐 하고 계세요? cdor1@Ubuntu ~$ whoami Name = 박 주 현 Nick = cdor1 Age = 17 School = 한세사이버보안고등학교 해킹보안과 Team = H3X0R Belong to = 서울여대정보보호영재교육원 3기, KSIA 2. 뭐 좋아하세요? Pwnable, Reversing 뭐 하고 계세요? Pwnable.kr 문제풀이.. Heap exploit 공부.. OS 원리 공부.. arm, mips공부.. 음 저는 박주현이고요 올해부터 한세사이버보안고등학교 해킹보안과에 재학중입니다. 팀은 저번에 ctf를 온라인 상에서 개최했었던 h3xor에 속해 있구요. 닉네임은 cdor1이라는 이름을 가지고 대회에 나가거나 워게임을 풀고 있는데 저는 처음에 제 중학교때 별명이였던 컴돌이를 생각하고 만든것인데.. 다들 보시고 크도르원 아니면 씨도르원이라 부르셔서 편하신대로 해석하시면 될 것 같네요 ㅎ.. 해킹 맛보기라는 책을 읽고 제가 공부하고 싶은 분야를 포너블로 정했었고 어셈블리 언어와 친숙해지고 싶어서 리버싱 공부도 줃곧 해왔는데 제가 공부하는 주 분야가 되어서 포너블과 리버싱을 주 분야로 생각하고 공부하고 있습니다. 요번 인코그니토 컨퍼런스 가서 힙 익스플로잇이 스택에서 터지는 취약점보다 훨씬 많이 발견되고 공격된다는 것을 알고 힙익스플로잇도 공부중에 있습니다. 그리고 추가적인 목표였던 os개발도 공부중이고 요번 순천향대 본선에 가서 털렸던 arm문제때문에 i386아키텍쳐 뿐만 아닌 다른 아키텍쳐도 공부하겠다고 마음먹었습니다. cdor1@Ubuntu ~$ https://fb.com/parkcdor1

Exploit sequence Checking protection in binary - checksec.sh Finding exploitable vector - Static analyze : IDA Pro Dynamic analyze : Gdb-peda, Qira, Core dump 3. Exploit - Pwntools 먼저 바이너리에 어떠한 보호 기법이 탑재되어 있는지 알아보기 위해 checksec.sh를 사용하는데 이 친구가 뭐하는 친구인지 알아보도록 합시다.

Checksec.sh Checking Protection 이런 식으로 뒤에 –file옵션을 주고, 바이너리를 인자로 주게되면 카나리 존재 여부.. Nx활성화 여부.. Pie존재 여부.. 등 다양한 바이너리 보호 기법에 대해 출력해줍니다. 파일 다운로드는 밑에 trapkit.de사이트에서 할 수 있습니다. 추가로 설명드라자면 RELRO 라는 보호기법은 리로케이션 리드-온리의 줄임말로 ELF파일의 데이터 섹션을 보호하는 기술입니다. 컴파일 할 때에 파티클 리록 옵션을 주게되면 .ctors, .dtors, .jcr, .dynamic 영역이 read-only 옵션으로 변경되고 풀 리록 옵션을 주게되면 .ctors, .dtors, .jcr, dynamic, .got 섹션들이 모두 read-only옵션으로 변경됩니다. 내 got overwrite ㅠㅠ… 카나리는 SSP라는 기법이 적용되면 붙게되는 부가 옵션? 과 같은 걔념인데 스택에 카나리값을 포함시켜 실행 전과 후의 값을 비교해 스택이 망가졌는지 망가지지 않았는지 체크를 한답니다. 이를 우회하는 기술이 카나리 릭입니다. 다음으로 nx에 대해서 설명을 해드리자면 노 익스큐터블의 약자로 스택 혹은 힙 영역에 실행 권한을 부여하지 않는 것입니다. 이를 우회하는 공격이 텍스트 섹션에서 명령어를 한줄한줄 빼와 공격하는 rop공격이죠. 이 공격에 대해서는 후에 시연하면서 자세히 말씀드리겠습니다. 그리고 pie라는 보호기법은 code영역까지 랜덤화를 시켜버리는 아주 사악한 기법이죠 -> 이것두 ulimit –s unlimited로 스택 주소를 무한대로 넓혀버리면 우회됩니다. 한번 직접 보시죠. 이 파일은 plaid ctf 2013에 출제되었던 알오피사우르스?? 문제인데 nx빼고는 아무런 보호기법이 적용되어 있지 않습니다. http://www.trapkit.de/tools/checksec.html

How Checksec.sh Works? 1. Find symbol name 2. Segment header 3. File Type 4. Entry Checksec.sh의 원리에 대해서 말씀드리자면 바이너리에서 심볼 네임을 찾거나 세그먼트 헤더를 뒤집고 파일 타입에 대해서 알아보기도 하고 엔트리 포인트를 체크하기도 합니다. 예를 하나 들자면 카나리를 넣는 SSP가 활성화 되어있다면 바이너리에 __stack_chk_fail이라는 함수가 포함되어야만 하는데 이를 통해서 checksec.sh는 이 친구가 어떠한 보호기법을 가지고 있나 체크를 한답니다.

Exploit sequence Checking protection in binary - checksec.sh Finding exploitable vector - Static analyze : IDA Pro Dynamic analyze : Gdb-peda, Qira, Core dump 3. Exploit - Pwntools 자 2번째 세션에서는 어디서 취약점이 일어나는지를 찾는 부분입니다. 먼저 대표적인 정적 분석의 꽃? Ida에 대해서 말씀드리겠습니다.

IDA Pro Hex-Ray Assembly ->Disassemble-> C language https://www.hex-rays.com/products/ida/processors.shtml Ida는 다양한 아키텍쳐들의 어셈블리언어를 디스어셈블 해주는 기능을 가지고 있습니다. 근데 저는 이 ida를 사용하면서 제일 불안했던 부분이, 안티디버깅 기법처럼 안티아이다 기법도 곧 나올텐데 그러면 나같은 포너블 뉴비는 어떻게 취약한 부분을 찾지? 싶었습니다. 그래서 실무 경험이 많으신 분들께 질문을 드려본 결과 아직까지 아이다를 막을만한 난독화 기법은 꽤 후에 나올것이라고 하시더군요. 정말 다행입니다 앗 참 구매는 저기 밑에서 하시길 바랍니다 가격은 1129달러 부터 시작됩니다 -> 원화론 125만원 쯤 됩니다. -> 여기다 플러그인까지 달면… 엇! 이쯤 다 구매하실수 있으시잖아요? Hex-Ray Assembly ->Disassemble-> C language https://www.hex-rays.com/products/ida/

How IDA Pro works? Automate hand-ray into Algorithm DWORD PTR [esp+0x8],0x3 mov DWORD PTR [esp+0x4],0x2 mov DWORD PTR [esp],0x1 call 0x80483c4 <babo> babo(1,2,3); mov edx,DWORD PTR [ebp+0x8] mov DWORD PTR [esp+0x4],edx mov DWORD PTR [esp],eax call 0x80482f4 <printf@plt> (gdb) x/s 0x8048510 0x8048510: "%d\n" printf(“%d\n”,argv[1]); 아이다의 작동 원리라 함은, 우리가 어셈블리를 c로 바꾸는 작업(핸드레이)를 알고리즘으로 자동화를 시키는 것 입니다. -소스설명 - Automate hand-ray into Algorithm

Exploit sequence Checking protection in binary - checksec.sh Finding exploitable vector - Static analyze : IDA Pro Dynamic analyze : Gdb-peda, Qira, Core dump 3. Exploit - Pwntools 다음으로 동적 분석입니다. 먼저 gdb의 업그레이드 버전? gdb-peda에 대해서 말씀 드리겠습니다.

Gdb-peda 페다는 많은 기능을 가지고 있습니다. 이전 gdb와 다르게 코드가 흘러가고 스택의 상태와 레지스터의 상태 들을 시각화해주고 disas명령어도 call하는 구문을 하이라이팅 해서 이쁘게 표현해주었습니다.

Gdb-peda How To Install 뭐 이렇게 공격 스크립트를 짜주기도 합니다만 아직까지 이 스크립트를 사용하시는 분들을 뵌 적이 없네요 ㅋㅋ… 그리고 가장 중요한 설치방법에 대해서 말씀드리자면 저 두가지 명령어를 복붙해서 사용하시면 됩니다. 그러면 분명히 에러가 터질텐데 peda는 2.7버전 기반의 파이썬을 사용하는데 리눅스가 3.x버전의 파이썬을 사용하게 되면 구문 에러가 뜹니다. 그래서 원본 gdb를 삭제하고 새로운 gdb소스를 받아 2.7버전으로 컴파일 하는 수 밖에 없습니다. (정말 오래걸립니다..) How To Install 1. git clone https://github.com/longld/peda.git ~/peda 2. echo "source ~/peda/peda.py" >> ~/.gdbinit IF error Downgrade your linux python version 3.x.x -> 2.7.x or Downgrade your gdb version

Gdb-peda https://github.com/longld/peda 이런 식으로 가젯을 찾아주기도 하고 쉘코드를 만들어 주기도 합니다. Vmmap도~~ https://github.com/longld/peda

How Gdb-peda works? Visualization the stack & code & register Peda의 원리라 함은 별로 언급해드릴만한게 없습니다. 제작자가 정말로 대단한 일을 한 것은 맞지만 본래 gdb의 스택, 코드, 레지스터를 시각화 하고 나머지 ropsearch나 쉘코드를 뿌려주는 것은 제작된 툴을 탑재하거나 쉘코드를 안에 저장해둔 것 뿐입니다.. Visualization the stack & code & register

Exploit sequence Checking protection in binary - checksec.sh Finding exploitable vector - Static analyze : IDA Pro Dynamic analyze : Gdb-peda, Qira, Core dump 3. Exploit - Pwntools 2번째로 제 발표의 핵심, qira에 대해서 소개하도록 하겠습니다.

Qira Timeless Debugger http://qira.me 이렇게 보기에는 UI가 이쁘지도 않고~ 뭐가 다른지 모르겠고~ 하는데 qira의 가장 큰 장점은 타임리스입니다. 쉽게 설명드리자면 시간에 구제를 받지 않습니다. 명령어 트레이싱의 흐름이 이제까지 밑으로만 이어졌다면 이젠 위로도 올라갈 수 있습니다. 여담을 말씀드리자면 지오핫이 파이어폭스 취약점을 찾을 때, 이 퀴라가 없었으면 불가능 했을 것이라고 발표에서 언급하기도 했었습니다. -실습- 파이어폭스 메시지 보여주기 -t옵션 -s옵션 쓰면서 트레이싱 x.inetd.d Timeless Debugger http://qira.me

How Qira works? Save the status at the Previous command 퀴라의 핵심 원리라 함은 전 명령어의 스택 상태라거나 레지스터 상태라거나 부분부분 변경된 부분만 떼어서 저장하는 것인데, 설명은 이렇게 해도 효율적으로 상태를 저장하기 위해서 알고리즘에 정말 많은 노력을 기울였을것 같습니다.

Exploit sequence Checking protection in binary - checksec.sh Finding exploitable vector - Static analyze : IDA Pro Dynamic analyze : Gdb-peda, Qira, Core dump 3. Exploit - Pwntools 마지막 동적 분석으로는 core dump가 있습니다. Ftz를 풀때부터 써오던 오래된 친구입니다.

Core dump How To Use 1. sudo -s Ftz를 풀 때는 그대로 문제 폴더에 dump가 쌓여서 사용하기 편리했는데 제 우분투는 그렇지 않아 밑에 설정을 해줘야만 했습니다. 여러분들도 같을 것입니다. 먼저 앞에다 sudo를 붙여 2번째 명령어를 실행하면 실행이 되지 않아 1번째로 root로 사용자를 전환해주고 2번째로 kernel밑에 있는 패턴파일을 제 홈폴더 안으로 생성되도록 넣어줍니다. Ulimit명령어를 이용해서 코어파일이 생성되는 용량 제한을 풀고, 비정상 종료를 시킨 뒤에 4번처럼 생성된 덤프 파일을 gdb로 바이너리와 함께 열어주시면 됩니다. -실습- How To Use 1. sudo -s 2. echo "/home/cdor1/core.%e" > /proc/sys/kernel/core_pattern 3. ulimit –c unlimited 4. gdb Binary core.Binary

How Core dump works? 0x41414141 in () ? When the interruption occurred, system makes core dump Like SIGSEGV 앞에서도 말씀 드렸듯이 시스템이 비정상적으로 종료가 되면 dump를 사용할 수 있게 되는데 대표적인 2가지 비정상적 종료 중 SIGSEGV가 눈에 띕니다. SIGSEGV는 우리가 SEGMENTATION FAULT를 발생시키면 발생하는 시그널인데 이는 자신에게 할당되지 않은 세그먼트 영역을 건들였을때 발생하는 시그널입니다. SEGFAULT는 우리가 대표적으로 BOF공격을 성공시키면 eip레지스터가 정확하지 않은 부분을 가르켜서 발생하는 것입니다. 포너블을 하면서 더미값으로 a를 막 몇백개씩 넣어보다가 SEGFAULT가 뜨고 Core dump를 확인했는데 0x41414141 in ()?가 나올 때의 쾌감이란.. 0x41414141 in () ?

Exploit sequence Checking protection in binary - checksec.sh Finding exploitable vector - Static analyze : IDA Pro Dynamic analyze : Gdb-peda, Qira, Core dump 3. Exploit - Pwntools 마지막으로 13회 해킹캠프때 재혁님의 발표이기도 했던 pwntools에 대해 설명 드리겠습니다.

Pwntools Make exploit easily, short, spend less time, look nice 폰툴즈의 가장 큰 장점이라 함은 너무 많은데.. 대표적으론 익스플로잇을 쉽고, 짧고, 빠르고, 이쁘게! 만들어 줍니다. 설치는 밑에 있는 사이트에서 설치법을 알려주고 있구요 Ppt에선 모든 pwntools의 기능에 대해서 보여주지는 않지만 조금 있다가 대표 사이트에 들어가 하나하나 훑어보려고 합니다. 왼쪽 사진을 보시면 뭐 초기 설정에 ~ ida에서 plt, got 찾고 ~ 섹션 찾고 ~ 해서 주솟값을 막 써놨는데! 익스플로잇이 안된다? 점검 점검 점검 ~ 삽질 삽질 삽질 ~ 오류 오류 오류 ~ 알고보니 주솟값 문제 ~ 자살 오른쪽을 보시면 초기설정뿐만 아니라 그냥 elf파일을 불러와서 자동적으로 plt, got를 전부 가져다 줍니다. 훨씬 짧고 보기쉬워졌죠? 이거 뿐만 아니라 훨씬 많은 기능이 있습니다. 한번 보시죠. Make exploit easily, short, spend less time, look nice http://pwntools.readthedocs.io

How Pwntools works? Pwntools simplifies the exploit code into 1 line s = socket(AF_INET,SOCK_STREAM) s.connect(‘cdor1.com’, 0113) s = remote(‘cdor1.com’, 0113) p = lambda x: struct.pack("<L",x) up = lambda x: struct.unpack("<L",x)[0] payload += p(system_plt) payload += p32(system_plt) 폰툴의 기능에 대해서는 엄청 말씀드릴게 많지만 폰툴은 예전에 쓰이던 익스플로잇 코드들? 을 하나로 묶어 훨씬 편리하게 사용하도록 했습니다. 확실히 해킹 팀에서 만든것이라 와 이런 세심한 부분까지? 싶은 것들이 매우 많이 존재합니다. Pwntools simplifies the exploit code into 1 line

Practice Plaid CTF 2013 Ropasaurusrex With Plaid CTF 2013 Ropasaurusrex 이제 이 문제를 가지고 제가 이전에 설명드린 익스플로잇 헬퍼들로 익스플로잇을 해 볼 것인데 이들이 어떤 기능인지 설명하고 전체적인 사용 방법에 대해서 말씀 드리겠습니다.

THANK YOU http://cdor1.tistory.com 제 발표를 끝까지 들어주셔서 감사합니다. 발표 자료는 제 닉네임인 컴돌이.tistory.com에 남겨두겠습니다. 질문있으신분??