해킹 대회 리뷰 및 실전 해킹
SETUID0
목차
 발표자 소개
 해킹 대회 리뷰
 실전(?) 해킹
 QnA
발표자 소개
 선린인터넷고등학교 정보통신과 2015년 졸업
 Layer7 12기
 CodeRed 팀
 고려대학교 정보보호학부
 BoB 2기 Best 10
 많은 해킹대회 우승/입상
 취약점 제보도 조금
해킹 대회 리뷰
 50여개의 해킹대회에 참가
 입상은 20번 정도
 대회별 리뷰
 해킹 대회 문제 잘 푸는 법
CTFTIME
 https://ctftime.org/
 CTF(해킹대회) 일정 사이트
 외국 대회들과 국내에서 운영하는 국제 대회들의 일정
 팀들의 랭킹과 문제 풀이 링크도 있음
DEFCON CTF
 세계 최고 권위의 해킹 대회
 미국 라스베가스에서 본선
 4년마다 운영진이 바뀌며 규칙도 조금씩 변화
 기본적으로 예선은 문제 풀이, 본선은 공격/방어
 본선 참가 팀에 대한 지원이 호텔 방밖에 없음
 라스베가스 왕복 항공료…
 BoB 지원 + 사비로 갔다옴
DEFCON CTF
 2013년에 운영진이 바뀌면서
 서버의 root 권한을 주지 않고 제로데이 사용도 금지됨
 채점 방식도 변경되어 제로섬 방식으로
공격에 성공하면 방어에 실패한 팀은 점수를 빼앗김
 원래 정시에 시작하는 경우가 없었다는데
정확한 시간에 시작
 패킷 캡쳐는 실시간이 아닌 15분 전의 내용을 줌
DEFCON CTF
 본선 문제는 모두 시스템이고
팀 별로 주어진 서버를 공격하고 방어
 서버 바이너리를 직접 수정해서 취약점 패치
 크기가 크고 취약점이 여러 개있는
바이너리들이 주어짐
 공격을 하는 것도 중요하지만
방어를 제때 못하면 점수가 다 털리는 것을 볼 수 있음
 대회장에 음악 소리가 아주 크다
SECUINSIDE CTF
 국제대회
 2012, 2013, 2014 모두 운영진이 달랐지만
공통점은 포너블, 리버싱 위주의 문제들
 작년에 지오핫이 1인 팀으로 우승
 시스템 해킹 공부에 많은 도움이 됨
CODEGATE
 국제대회
 다양한 분야가 나왔었지만 작년에 운영진이 바뀌고
예선, 본선이 모두 시스템 위주로 나옴
 재미있는 문제들이 많다
CODEGATE Junior
 CODEGATE 청소년부
 해외 중고등학생 해커들과 경쟁을 해볼 수 있음
 청소년 대회들 중에서 난이도가 가장 높음
 일반부 문제들에서 비교적 쉬운 문제들과
청소년용으로 아주 쉬운 문제를 만들어서 냄
 올해에도 선린에서 우승자가 나오기를…
교내 해킹대회
 랭킹을 마지막에 공개하는데
항상 test 계정이 1등을 함
 실력 좋은 고등학생 해커들이 선린에 많이 있기 때문에
우승하기가 상당히 힘듬
 우승은 힘들지만 입상은 쉬운 편
 졸업생들이 문제를 내는데 누가 내느냐에 따라 문제 스
타일이 달라짐
 보통 다양한 분야로 난이도는 낮음~중간으로 출제
청소년 정보보호 페스티벌
 상당히 역사가 긴 해킹대회
 장관상이 걸려있음
 작년에 예선이 데프콘이랑 겹쳐서…
 다양한 시스템, 웹, 리버싱, 포렌식, misc 등
다양한 분야의 문제가 출제됨
 운영진이 친절함 (IRC에서 답을 잘 해줌)
중고생정보보호올림피아드
 본선 장소가 국회
 센스(게싱?)을 많이 요구하는 문제들
 참가자마다 문제 답이 다 다름
 예선과 본선 문제 유형이 비슷함
 리버싱 위주
 시스템 문제는 아주 쉽게 나옴
 절대로 못 풀만한 문제가 하나씩은 꼭 나옴
청소년 화이트해커 경진대회
 문제 수준은 높은 편
 예선 본선이 나눠져 있지 않음
 운영진이 공정성을 위해 채팅 응답을 잘 하지 않음
 작년에 문제 점수를
기본 2000점 / 문제를 푼 사람 수로 하는 방식이 사용됨
대한민국 화이트햇 콘테스트
 문제 난이도가 국내 대회들 중 가장 높음
 청소년부 예선은 거의 1~2 문제 풀면 본선 진출
 본선 시간도 그리 길지 않기 때문에
청소년부는 보통 1문제 풀면 우승
 라운드 2는 포렌식, 리버싱 문제들이 나옴
 점수 따기가 비교적 쉬운 라운드 2 문제들에 집중
KISA 해킹방어대회
 침해사고 대응 위주의 문제
 1차 예선은 일반적인 대회 방식이고
2차 예선과 본선은 팀별로 주어진 서버에서 과제 해결
 사고 대응 (악성코드 제거, DDoS 방어 등)
 사고 분석 (악성코드 유포지, 정보 유출 시간 등)
HolyShield
 문제는 꽤 잘 만들지만
작년에 실제 CCTV를 해킹해서 문제를 내서 논란이 됨
(경찰서에서 강제 정모?...)
 특이한 점은 입상하면 상금과 함께 로또도 줌
HUST Hacking Festival
 2013년에 지나친 게싱 문제들과
절대로 풀 수 없는 문제(해쉬 복호화)를 내서
욕을 엄청나게 먹고 사과문까지 올림
 2014년에는 그래도 풀만하게 나왔음
 시스템 문제는 나오지 않고
리버싱 문제가 많이 나옴
Hack.lu CTF
 다양한 분야의 문제들이 나오지만
특히 신기한 시스템 문제들이 인상적
 윈도우 환경에서 작동하는 문제
 쓰레드 사용으로 취약점을 발생시키는 문제
 Glibc heap의 fastbin을 이용하여 공격하는 문제
 libgcc_s의 unwind 구조를 이용해서 공격하는 문제
 이상한 libc를 써서 그걸 잘 가져와야 하는 문제
 등등…
CSAW CTF
 본선 진출이 가능한 학교들이 지정 되어있지만
예선 문제는 풀어 볼 수 있음
 공부하기 좋은 쉬운 문제들이 많이 나옴
 시스템, 웹, 리버싱 등 다양한 분야로 출제되고
검색을 열심히 해서
특정 정보를 찾아내는 리콘이라는 분야도 나옴
SIGINT CTF
 시스템 문제가 많이 나오는데
샌드박스 관련 문제를 처음으로 봐서 인상적이었음
 시스템 문제들은 난이도 하향을 위해
ASLR, NX, PIE 등의 방어 기법들을
좀 꺼주는 경우가 많은데
무자비하게 다 켜져 있었고 64비트 문제도 많았음
PlaidCTF
 PPP에서 운영하는 CTF
 PPP가 낸 것 같은 문제들이 많이 나옴
(높은 난이도)
 시스템, 웹, 리버싱, 암호학, 포렌식 등
다양한 분야가 나옴
 포렌식 문제가 해킹 대회에 나오면 보통 게싱이 많지만
PCTF 포렌식 문제는 리버싱과 암호학 실력을 요구함
PHD CTF
 예선에 시스템 문제는 나오지 않고
리버싱과 웹, 암호학, misc 위주
 웹 문제가 그냥 웹 문제가 아니라
뭔가 다른 대회에서 보기 힘든 신기한 것들이 나옴
 여성 해킹대회 power of xx 우승팀에게
본선 진출권이 주어짐
Ghost in the Shellcode
 시스템 비중이 높지는 않지만
고난이도의 시스템 문제가 나옴
 게임을 해킹하는 pwn advanture라는 신기한 문제가
있었는데..
 체력이 상당히 높은데 반피를 깎으면 순식간에 체력이
차는 보스 잡기 (integer overflow 버그 이용)
 맵에 숨겨둔 보물 찾기
(코드 분석 후 좌표 핵으로 해당 위치로 이동)
 AK47을 쏘는 곰한테서 3분 동안 생존하기
(좌표 핵으로 어그로가 끌리지 않는 곳으로 이동)
Nullcon HackIM
 게싱 문제가 좀 많음
 포너블 문제들은 공부용으로 풀어볼만 함
선린모의해킹대회
 Layer7 hacking festival
 Layer7에서 운영하는 대회
 재학생은 입상할 수 없지만
문제가 좋으니까 풀어보는 것이 좋음
 게싱이 없는 시스템, 리버싱 문제들이 대부분
 철저한 문제 검수
(이상한 문제 내면 다시 만들어야 됨)
해킹 대회 잘 하는 법
 1. 문제를 빨리 많이 풀면 된다.
 2. 다른 사람이 못 푸는 문제를 풀면 된다.
 연습
 최대한 많은 대회 참가 (CTFTIME 참고)
 문제 풀어보기 (지난 대회들, 워게임 사이트들)
 풀이 찾아보기 (write-up)
실전 해킹?
실전 해킹?
실전 해킹
 버그 헌팅
 …
버그 헌팅
 프로그램의 버그 중 악용 가능한 취약점을 찾는 것
 찾은 취약점의 심각성에 따라 돈을 받을 수도 있음
 KISA 취약점 신고 포상제, ZDI, iDefence, pwn2own
취약점을 찾는 방법들
 화이트박스 (내부 구조를 알 수 있는 경우)
- (소스 코드 오디팅, 리버스 엔지니어링 등)
 블랙박스 (내부 구조를 알 수 없는 경우)
- (퍼징 등)
 단순한 실수들도 많고 실제 프로그램에서
취약점을 찾는 것이 항상 어렵지는 않다
 잘 돌아가기만 하면 문제가 없는 것?
퍼징
 가장 단순하면서도 효과적인 방법
 취약점을 찾으려는 프로그램의 구조를 잘 몰라도 가능
 직접 작성한 퍼저나 foe, peach 등을 사용
소스 코드 오디팅
 소스 코드를 구할 수 있는 경우
 소스 코드를 분석하여 취약점을 찾는 것
 오픈 소스 소프트웨어들은
소스 코드 다운로드 링크가 있거나
svn, git 등이 공개 되어있음
리버스 엔지니어링
 소스 코드가 없는 경우
 디스어셈블리와 디버깅을 통해 취약점을 찾음
 ollyDBG, IDA 사용
제보했던 취약점들…
 XE XSS
 KCP ActiveX RCE
 등등…
 패치가 안된 것들이 많아서 2개만
XE XSS
 XSS 취약점은 입력 값을 다시 출력할 때 발생
 이스케이핑 처리를 항상 제대로 하는 것은 어렵다
XE XSS
 github에 올라와있는
XE 소스 코드를 열심히 읽어서 찾는다
(소스 코드 오디팅)
 https://github.com/xpressengine/xe-core
XE XSS
 XE는 소스 코드가 상당히 큰데
 검색해보면 개발자 매뉴얼이 있어서
분석에 유용한 정보를 얻을 수 있다
XE XSS (14-488)
 /classes/context/Context.class.php
XE XSS (14-488)
 /classes/context/Context.class.php
XE XSS (14-488)
 /classes/display/JSCallbackDisplayHandler.php
XE XSS (14-488)
XSS 취약점을 이용한 공격
 쿠키를 가져와서 Session Hijacking?
(XE에서는 세션의 IP를 확인하기 때문에 안됨)
 잘 생각해보면…
해당 세션으로 할 수 있는 모든 작업이 가능
 XE의 경우
 관리자 계정 생성, 웹쉘 코드 실행, 페이지 변조 등등
KCP ActiveX RCE
 파일 쓰기, 라이브러리 로딩 등이 자유롭게 가능했음
 설계상의 문제
 comraider로 보니 정직한 함수명…
KCP ActiveX RCE
KCP ActiveX RCE
 DLL을 만들어서
 다운로드 후 로드시키면 원하는 코드 실행 가능
QnA
끝
감사합니다

해킹 대회 리뷰 및 실전 해킹

  • 1.
    해킹 대회 리뷰및 실전 해킹 SETUID0
  • 2.
    목차  발표자 소개 해킹 대회 리뷰  실전(?) 해킹  QnA
  • 3.
    발표자 소개  선린인터넷고등학교정보통신과 2015년 졸업  Layer7 12기  CodeRed 팀  고려대학교 정보보호학부  BoB 2기 Best 10  많은 해킹대회 우승/입상  취약점 제보도 조금
  • 4.
    해킹 대회 리뷰 50여개의 해킹대회에 참가  입상은 20번 정도  대회별 리뷰  해킹 대회 문제 잘 푸는 법
  • 5.
    CTFTIME  https://ctftime.org/  CTF(해킹대회)일정 사이트  외국 대회들과 국내에서 운영하는 국제 대회들의 일정  팀들의 랭킹과 문제 풀이 링크도 있음
  • 6.
    DEFCON CTF  세계최고 권위의 해킹 대회  미국 라스베가스에서 본선  4년마다 운영진이 바뀌며 규칙도 조금씩 변화  기본적으로 예선은 문제 풀이, 본선은 공격/방어  본선 참가 팀에 대한 지원이 호텔 방밖에 없음  라스베가스 왕복 항공료…  BoB 지원 + 사비로 갔다옴
  • 7.
    DEFCON CTF  2013년에운영진이 바뀌면서  서버의 root 권한을 주지 않고 제로데이 사용도 금지됨  채점 방식도 변경되어 제로섬 방식으로 공격에 성공하면 방어에 실패한 팀은 점수를 빼앗김  원래 정시에 시작하는 경우가 없었다는데 정확한 시간에 시작  패킷 캡쳐는 실시간이 아닌 15분 전의 내용을 줌
  • 8.
    DEFCON CTF  본선문제는 모두 시스템이고 팀 별로 주어진 서버를 공격하고 방어  서버 바이너리를 직접 수정해서 취약점 패치  크기가 크고 취약점이 여러 개있는 바이너리들이 주어짐  공격을 하는 것도 중요하지만 방어를 제때 못하면 점수가 다 털리는 것을 볼 수 있음  대회장에 음악 소리가 아주 크다
  • 9.
    SECUINSIDE CTF  국제대회 2012, 2013, 2014 모두 운영진이 달랐지만 공통점은 포너블, 리버싱 위주의 문제들  작년에 지오핫이 1인 팀으로 우승  시스템 해킹 공부에 많은 도움이 됨
  • 10.
    CODEGATE  국제대회  다양한분야가 나왔었지만 작년에 운영진이 바뀌고 예선, 본선이 모두 시스템 위주로 나옴  재미있는 문제들이 많다
  • 11.
    CODEGATE Junior  CODEGATE청소년부  해외 중고등학생 해커들과 경쟁을 해볼 수 있음  청소년 대회들 중에서 난이도가 가장 높음  일반부 문제들에서 비교적 쉬운 문제들과 청소년용으로 아주 쉬운 문제를 만들어서 냄  올해에도 선린에서 우승자가 나오기를…
  • 12.
    교내 해킹대회  랭킹을마지막에 공개하는데 항상 test 계정이 1등을 함  실력 좋은 고등학생 해커들이 선린에 많이 있기 때문에 우승하기가 상당히 힘듬  우승은 힘들지만 입상은 쉬운 편  졸업생들이 문제를 내는데 누가 내느냐에 따라 문제 스 타일이 달라짐  보통 다양한 분야로 난이도는 낮음~중간으로 출제
  • 13.
    청소년 정보보호 페스티벌 상당히 역사가 긴 해킹대회  장관상이 걸려있음  작년에 예선이 데프콘이랑 겹쳐서…  다양한 시스템, 웹, 리버싱, 포렌식, misc 등 다양한 분야의 문제가 출제됨  운영진이 친절함 (IRC에서 답을 잘 해줌)
  • 14.
    중고생정보보호올림피아드  본선 장소가국회  센스(게싱?)을 많이 요구하는 문제들  참가자마다 문제 답이 다 다름  예선과 본선 문제 유형이 비슷함  리버싱 위주  시스템 문제는 아주 쉽게 나옴  절대로 못 풀만한 문제가 하나씩은 꼭 나옴
  • 15.
    청소년 화이트해커 경진대회 문제 수준은 높은 편  예선 본선이 나눠져 있지 않음  운영진이 공정성을 위해 채팅 응답을 잘 하지 않음  작년에 문제 점수를 기본 2000점 / 문제를 푼 사람 수로 하는 방식이 사용됨
  • 16.
    대한민국 화이트햇 콘테스트 문제 난이도가 국내 대회들 중 가장 높음  청소년부 예선은 거의 1~2 문제 풀면 본선 진출  본선 시간도 그리 길지 않기 때문에 청소년부는 보통 1문제 풀면 우승  라운드 2는 포렌식, 리버싱 문제들이 나옴  점수 따기가 비교적 쉬운 라운드 2 문제들에 집중
  • 17.
    KISA 해킹방어대회  침해사고대응 위주의 문제  1차 예선은 일반적인 대회 방식이고 2차 예선과 본선은 팀별로 주어진 서버에서 과제 해결  사고 대응 (악성코드 제거, DDoS 방어 등)  사고 분석 (악성코드 유포지, 정보 유출 시간 등)
  • 18.
    HolyShield  문제는 꽤잘 만들지만 작년에 실제 CCTV를 해킹해서 문제를 내서 논란이 됨 (경찰서에서 강제 정모?...)  특이한 점은 입상하면 상금과 함께 로또도 줌
  • 19.
    HUST Hacking Festival 2013년에 지나친 게싱 문제들과 절대로 풀 수 없는 문제(해쉬 복호화)를 내서 욕을 엄청나게 먹고 사과문까지 올림  2014년에는 그래도 풀만하게 나왔음  시스템 문제는 나오지 않고 리버싱 문제가 많이 나옴
  • 20.
    Hack.lu CTF  다양한분야의 문제들이 나오지만 특히 신기한 시스템 문제들이 인상적  윈도우 환경에서 작동하는 문제  쓰레드 사용으로 취약점을 발생시키는 문제  Glibc heap의 fastbin을 이용하여 공격하는 문제  libgcc_s의 unwind 구조를 이용해서 공격하는 문제  이상한 libc를 써서 그걸 잘 가져와야 하는 문제  등등…
  • 21.
    CSAW CTF  본선진출이 가능한 학교들이 지정 되어있지만 예선 문제는 풀어 볼 수 있음  공부하기 좋은 쉬운 문제들이 많이 나옴  시스템, 웹, 리버싱 등 다양한 분야로 출제되고 검색을 열심히 해서 특정 정보를 찾아내는 리콘이라는 분야도 나옴
  • 22.
    SIGINT CTF  시스템문제가 많이 나오는데 샌드박스 관련 문제를 처음으로 봐서 인상적이었음  시스템 문제들은 난이도 하향을 위해 ASLR, NX, PIE 등의 방어 기법들을 좀 꺼주는 경우가 많은데 무자비하게 다 켜져 있었고 64비트 문제도 많았음
  • 23.
    PlaidCTF  PPP에서 운영하는CTF  PPP가 낸 것 같은 문제들이 많이 나옴 (높은 난이도)  시스템, 웹, 리버싱, 암호학, 포렌식 등 다양한 분야가 나옴  포렌식 문제가 해킹 대회에 나오면 보통 게싱이 많지만 PCTF 포렌식 문제는 리버싱과 암호학 실력을 요구함
  • 24.
    PHD CTF  예선에시스템 문제는 나오지 않고 리버싱과 웹, 암호학, misc 위주  웹 문제가 그냥 웹 문제가 아니라 뭔가 다른 대회에서 보기 힘든 신기한 것들이 나옴  여성 해킹대회 power of xx 우승팀에게 본선 진출권이 주어짐
  • 25.
    Ghost in theShellcode  시스템 비중이 높지는 않지만 고난이도의 시스템 문제가 나옴  게임을 해킹하는 pwn advanture라는 신기한 문제가 있었는데..  체력이 상당히 높은데 반피를 깎으면 순식간에 체력이 차는 보스 잡기 (integer overflow 버그 이용)  맵에 숨겨둔 보물 찾기 (코드 분석 후 좌표 핵으로 해당 위치로 이동)  AK47을 쏘는 곰한테서 3분 동안 생존하기 (좌표 핵으로 어그로가 끌리지 않는 곳으로 이동)
  • 26.
    Nullcon HackIM  게싱문제가 좀 많음  포너블 문제들은 공부용으로 풀어볼만 함
  • 27.
    선린모의해킹대회  Layer7 hackingfestival  Layer7에서 운영하는 대회  재학생은 입상할 수 없지만 문제가 좋으니까 풀어보는 것이 좋음  게싱이 없는 시스템, 리버싱 문제들이 대부분  철저한 문제 검수 (이상한 문제 내면 다시 만들어야 됨)
  • 28.
    해킹 대회 잘하는 법  1. 문제를 빨리 많이 풀면 된다.  2. 다른 사람이 못 푸는 문제를 풀면 된다.  연습  최대한 많은 대회 참가 (CTFTIME 참고)  문제 풀어보기 (지난 대회들, 워게임 사이트들)  풀이 찾아보기 (write-up)
  • 29.
  • 30.
  • 31.
  • 32.
    버그 헌팅  프로그램의버그 중 악용 가능한 취약점을 찾는 것  찾은 취약점의 심각성에 따라 돈을 받을 수도 있음  KISA 취약점 신고 포상제, ZDI, iDefence, pwn2own
  • 33.
    취약점을 찾는 방법들 화이트박스 (내부 구조를 알 수 있는 경우) - (소스 코드 오디팅, 리버스 엔지니어링 등)  블랙박스 (내부 구조를 알 수 없는 경우) - (퍼징 등)  단순한 실수들도 많고 실제 프로그램에서 취약점을 찾는 것이 항상 어렵지는 않다  잘 돌아가기만 하면 문제가 없는 것?
  • 34.
    퍼징  가장 단순하면서도효과적인 방법  취약점을 찾으려는 프로그램의 구조를 잘 몰라도 가능  직접 작성한 퍼저나 foe, peach 등을 사용
  • 35.
    소스 코드 오디팅 소스 코드를 구할 수 있는 경우  소스 코드를 분석하여 취약점을 찾는 것  오픈 소스 소프트웨어들은 소스 코드 다운로드 링크가 있거나 svn, git 등이 공개 되어있음
  • 36.
    리버스 엔지니어링  소스코드가 없는 경우  디스어셈블리와 디버깅을 통해 취약점을 찾음  ollyDBG, IDA 사용
  • 37.
    제보했던 취약점들…  XEXSS  KCP ActiveX RCE  등등…  패치가 안된 것들이 많아서 2개만
  • 38.
    XE XSS  XSS취약점은 입력 값을 다시 출력할 때 발생  이스케이핑 처리를 항상 제대로 하는 것은 어렵다
  • 39.
    XE XSS  github에올라와있는 XE 소스 코드를 열심히 읽어서 찾는다 (소스 코드 오디팅)  https://github.com/xpressengine/xe-core
  • 40.
    XE XSS  XE는소스 코드가 상당히 큰데  검색해보면 개발자 매뉴얼이 있어서 분석에 유용한 정보를 얻을 수 있다
  • 41.
    XE XSS (14-488) /classes/context/Context.class.php
  • 42.
    XE XSS (14-488) /classes/context/Context.class.php
  • 43.
    XE XSS (14-488) /classes/display/JSCallbackDisplayHandler.php
  • 44.
  • 45.
    XSS 취약점을 이용한공격  쿠키를 가져와서 Session Hijacking? (XE에서는 세션의 IP를 확인하기 때문에 안됨)  잘 생각해보면… 해당 세션으로 할 수 있는 모든 작업이 가능  XE의 경우  관리자 계정 생성, 웹쉘 코드 실행, 페이지 변조 등등
  • 46.
    KCP ActiveX RCE 파일 쓰기, 라이브러리 로딩 등이 자유롭게 가능했음  설계상의 문제  comraider로 보니 정직한 함수명…
  • 47.
  • 48.
    KCP ActiveX RCE DLL을 만들어서  다운로드 후 로드시키면 원하는 코드 실행 가능
  • 49.
  • 50.