1. 시스템 보안에 대해
시스템 해킹 공부 가이드라인
2016.03.08
TeamH4C
홍승표(Phantom)
2. 『이 글을 보는 대상』
• 막연히 시스템 분야를 공부하려는 사람
• 시스템 보안과 관련된 직업을 희망하는 분
• 철학적으로 시스템 보안을 배우고 싶으신 분
3. 『머리말』
많은 분들이 시스템 분야에 대해서 ‘진입 장벽'이 높다 라
고 말씀 하십니다. 하지만 그 진입장벽을 허물었을 때의 쾌
감은 말로 표현할 수 없을 정도로 짜릿했습니다.
그런 짜릿함을 이 가이드라인을 보시는 분들도 느끼고 보
안 분야에 많은 관심을 가져주셨으면 좋겠습니다.
4. 『Who am I』
• 홍 승 표(newbie pwner, TeamH4C 팀원, 흑객 멘티)
2006
프리서버 구축, 게임 버그
등등을 하며 컴퓨터에 대해
관심이 생김
09.02실업계 고등학교로
입학, 수능 직업탐구의
컴퓨터일반, 비주얼베이
직으로 for문까지 공부
2012
공주대 입학
2014
컴공의 기초를 배움(겉핥기)
14.02 시스템 해킹에
대해 공부를 시작
2015
15.11 흑객에 들어감
15.12 TeamH4C에 들어감
2016
5. 1. 시스템 보안
2. 리버싱과 시스템해킹
3. 취업을 하게 되는 분야
4. 나는 왜 시스템 보안을 공부하고 싶은가?
5. 어떻게 공부해야 하나?
6. 공부에 도움되는 사이트들
Contents
7. 1. 시스템 해킹이란
운영체제의 취약점, 설치된 프로그램 내의 취약점등의 위협으로부터
공격을 미리 예방하는 것
1. 시스템 보안?
8. 2. 만약…
어느 시스템을 설계할때
• 네트워크(네트워크 연결 방안, 방화벽, IPS정책 등등
• OS(버전 선택, 파티셔닝, 업데이트 적용)
• App설치(불필요한 서비스 및 설정 제거
• 로그 수집 및 분석
등등 시스템 기획설치 단계부터 보안을 고려하여 운영하는 그 모든 것들을 생각하여 설계
를 했을 때와 안 했을 때
두 서버의 안전은 얼마나 차이가 날지 스스로 생각 해보세요.
그리고 특히 모든 보안에서 로그는 제일 중요합니다. 증거 자료이기도 하며 공격자입장에
서는 이것을 남기면 좋지 않으니까요
이에 대해서는 여기를 참고 부탁 드립니다.
1. 시스템 보안?
10. 1. 시스템 해킹이란
OS 또는 프로그램의 취약점을 찾아 공격하여 관리자 권한 등을 얻어 시스템을 장악하는 것
• 시스템 해킹 정도는 해줘야 해커라는 소리를…
• 몇 년 전부터 ASLR/DEP의 출현으로 인해 빡세졌다.
• 난이도는 어렵지만 상당히 재미있는..쉘을 땄을때 쾌ㄱ…….
2. 리버싱? 시스템해킹?
11. 2. 리버스 엔지니어링(리버싱)이란
역공학이라고 불리며 프로그램등을 분석하여 원하는 동작을 만들어 내는 것
• 제로데이 헌팅, 악성코드 분석, 해킹대회 문제풀이 등등 많은 곳에 쓰인
다.
• 최근 리버싱 관련 서적이 많이 나와 공부하기가 좋다.
• 어셈블리어를 잘 해야 한다.
• 윈도우와 리눅스 뿐만 인줄 알았지만 리버싱도 역시 OS마다 다 익혀야
한다(ex> arm, mips etc…)
• 이 분야도 역시 변태들이….
2. 리버싱? 시스템해킹?
12. 각 분야마다 대회에서 이렇게 부릅니다.
• 시스템 -> 포너블(Pwnable), 포너(Pwner)
• 리버싱 -> 바이너리(Binary), 리버서(Reverser)
• 웹해킹 -> 웹(Web), 웹해커(Webhacker)
• 크립토(Crypto) – 암호
• 네트워크(Network)
• 포렌식(Forensic)
• Misc(잡다한 문제)
2. 리버싱? 시스템해킹?
14. 1. 보안 컨설팅
고객의 정보자산과 비즈니스 프로세스에 따른 위협 및 취약점을 분석하여 보안 수준을 파악하고(AS-IS
분석)
요구수준에 맞는 통합적인(기술과 관리측면) 개선책을 설계 및 제시하는 업무
• 자산과 관련된 서비스 및 프로세스를 진단 등을 통해서 AS-IS를 분석하고 개선 방안을 제
시함
• 기반시설, 금융, 의료, IT서비스 대/중기업 등을 대상으로 하며, 대부분 1년에 1회 이상 수
행
• 컨설팅의 목적과 목표에 따라 다양한 컨설팅이 존재
– ISO27001, ISMS 등 인증을 위한 컨설팅
– PIMS, ISMS 체계 수립을 위한 컨설팅
– 정보보호 마스트플랜 수립을 위한 종합 컨설팅
– 컴플라이언스 대응을 위한 컨설팅
– 취약점 점검 또는 모의해킹 컨설팅 등
• 보안 컨설팅은 크게 관리적인 분야와 기술적인 분야로 구분
– 관리적인 분야:
• 체계(정책/지침 등 기준, 조직, 프로세스 등) 수립 (개인정보, 침해사고 대응등 포함)
• 컴플라이언스 기준 대비 현황분석 및 개선 방안 제시
• 마스트플랜 수립 등
– 기술적인 분야:
• 인프라(서버, 네트워크, Web/WAS/DBMS, 보안솔루션 등)에 대한 취약점 점검
• 모의해킹(Blackbox, whitebox, 시나리오기반 등), 소스코드 Auditing 등
15. 1. 보안 컨설팅
정보보호 컨설팅의 일반적인 수행 절차는 아래와 같으나, 프로젝트 목적에 따라서 변화가 있다
17. 2. 침해 대응 전문가
침해사고가 발생한 정확한 원인을 파악하여 동일 공격과 2차 피해, 추가 공격 등을 원천적으로 방어할
수 있는
대안책을 제시하는 보안 전문가
• 해킹, 악성코드 감염 등과 같은 사이버침해사고에 대한 원인분석을 하는 과정
• 공격자의 행위 추적, 침투원인 분석, 악성코드 감염경로 분석, 악성코드 행위 분석 등
• 최근들어 침해사고분석과 디지털포렌식은 기술적인 방법에서 공통점이 많으며 상호
보완하는 추세
– 침해사고분석과 디지털포렌식의 차이점은 점차 희석되어가고 있음
• 침해사고분석 시 디지털포렌식 기술이 사용되고 있으며, 프로파일링 작업 시 침해사고분
석을 통해 추출된 데이터가 사용됨
업무적 세분화
• 서버, PC, 스마트폰 등에서 각종 로그파일을 분석하여 공격자의 침투경로나 악성코드 감
염경로를 찾는 침해사고 분석가
• 공격자가 사용한 공격코드(Exploit) 및 악성코드를 분석하는 악성코드 분석가
• 공격자가 사용한 취약점을 분석하여 침해사고의 재발 및 확산을 방지하는 취약점 분석가
20. 3.악성코드 분석가
악성코드 분석 전문가는 탐지된 악성코드를 분석하여 동작원리 및 패턴을 분석하고, 이를 보안프로그램
(백신 등)에 패턴을 등록함으로써, 2차 및 피해 확산을 차단하는 전문가
• 악성코드란 Virus, Bot, Worm, Ransomware, Trojan horse, Rootkit 등의 악의적인 행동을
하는 프로그램을 말하며 이런 악성코드를 분석하여 구현된 공격기법, 근원지, 데이터의 흐
름 등을 분석하는 전문가를 말함
• 분석된 악성코드 정보를 감염 재발 방지를 위해 백신등 보안 제품에 패턴을 등록하여 추
가피해 차단
• 악성코드 분석 전문가는 수많은 악성코드 분석을 위해 자동화된 분석도구와 접근방식을
개발하고, 악성코드 제작자는 백신탐지불가, 파일분석 불가를 위한 개발을 하는 창과 방패
의 싸움
23. 4. 보안 교육 전문 강사
기업이나 개인을 대상으로 보안에 대한 교육을 전문으로 수행하는 전문 강사
• B2B 영역 : 대기업 또는 공공기관 등에 강의하는 형태로 회사 소속이거나 프리랜서 강사
• B2C 영역 : 보안전문가 양성을 목표로 하는 학원 등에서 강의 하는 강사
• 하지만, 현실적으로 한 사람이 모든 분야를 다 이해하고 강의하는 것은 어려우며
• 개인적으로 좋아하는 전문분야를 연구하고 전담 강사로 활동하는 것이 일반적임
• 유관 분야 실무 경력이 없어도 가능은 하나, 있는 것이 좋음(최소 3~5년 정도면 적당하다
고 판단)
25. 5. 보안제품 개발자
• 백신프로그램부터 방화벽/웹방화벽, IDS/IPS, ESM 등의 침해사고 대응 솔루션
• 안전한 데이터 저장 및 통신을 위해서 암호화 모듈 및 관련 솔루션
• 정보 유출 및 저작권 관련 DRM, DLP 등의 솔루션(이외에도 다양한 분야가 있음)
• 정보보호 관련 사고를 미연에 탐지 및 대응하기 위한 고객의 니즈에 맞는 솔루션을 개발
하는 개발 전문가
– 보안 SW분석/설계 전문가
– 보안 SW 개발자
– 보안제품 기술자(SE)
– 보안제품 기술 영업 (기술영업 등)
28. 1. 무엇을 어떻게 해야 하는가?
• 프로그래밍만 할 줄 알면?
• Exploit을 만들 수 있음 되나?
• 해킹 프로그램을 잘 사용하면 되지 않을까?
• 영화 나 드라마에서는 키보드 다다다 치면 화면 주르륵 나오면서 10초만에 해
킹하던데?
• 포기하지 않을 자신이 있는가?
– 발암…인내심…몸에 사리날것같…
– 아무것도 보이지 않는 곳에서 아이디어를 찾아, 취약점, 등을 찾아 수많은 실패 끝에
하나의 결과를 얻어내는 것
인내하지 못하고 즐기지 못하면 절대 도달할 수 없다
4. 나는 왜 시스템 보안을 공부하고 싶은가?
30. 1. 목표 설정
• 정말 컴퓨터 보안 분야에 관심이 있는지?
• 왜 하고 싶은지?
• 목표와 비전은?
–잘 보이지 않는 것이 우리 대부분이다.
–그래서 나는 개인적으로 기초부터 하고 웹이나 네트워크가 아닌
–시스템을 공부 하는 것을 추천한다.
5. 어떻게 공부해야 하나?
31. 2. 기본기
• C언어, 객체 지향언어(C++, JAVA, Python etc..)중 하나, 아님 개념이라
도
• 리눅스
• 네트워크 기초(패킷을 떠보지 않아도 좋다 나도 아직 안해봤…)
– 그저 네트워크의 개념과 각 패킷의 형태 OSI 7 Layer, 라우터 와스위치 조금정도
만이라도 알길 바란다.
5. 어떻게 공부해야 하나?
35. A. Pwnable
• 추천 공부 순서
– 달고나 문서
– Hackerz on the ship – 우리 집에 gdb있는데.. 메모리 보고갈래?
– Hackerschool FTZ training 1~10, Level 1~20
– Hackerschool Load Of BOF 1~20
– Hackerschool FC3» aa
• Wargame 이라고 하여 가상OS에 취약점이 있는 환경을 만들어 각 단계에서 취
약점을 공략하여 다음 단계로 올라가는 방식
• 여기까지 하는데도 상당한 시간이 걸린다.
• 개인적인 의견인데 training 1~10, Level 1~9까지는 처음에 왜 하는지 잘 이해
가 가지 않을 수 있다.
• 한번 하고 나중에 다시 보게 된다면 왜 이것을 했는지 이해 할 수 있다.
• 그리고 이것들을 공부하면서 프로그래밍 등 기초가 흔들리는 자신의 모습을 볼
수 있다. » aa
5. 어떻게 공부해야 하나?
36. A. Pwnable
• 추천 공부 순서
– 달고나 문서
– Hackerz on the ship – 우리 집에 gdb있는데.. 메모리 보고갈래?
– Hackerschool FTZ training 1~10, Level 1~20
– Hackerschool Load Of BOF 1~20
– Hackerschool FC3» aa
• 처음에는 달고나 문서와 최근에서야 알게 된 Hackerz on the ship의 문서를 읽는 것을
추천한다. 리버싱도 마찬가지이다.
• 적어도 이렇게 돌아 가는 것인지는 알아야 리버싱이든 포너블이든 가능하기 때문에..
• 여기까지 하는데도 상당한 시간이 걸린다.
• 개인적인 의견인데 training 1~10, Level 1~9까지는 처음에 왜 하는지 잘 이해가 가지 않
을 수 있다.
• 한번 하고 나중에 다시 보게 된다면 왜 이것을 했는지 이해 할 수 있다.
• 그리고 이것들을 공부하면서 프로그래밍 등 기초가 흔들리는 자신의 모습을 볼 수 있다.» aa
5. 어떻게 공부해야 하나?
37. A. Pwnable
• 개인적인 의견
– 나는 처음 공부할 때 어떻게 해야 할 지 몰라 문제 풀이로 배우는 시스템 해킹
테크닉이라는 FTZ문제 풀이 책을 봤다.
– 이해가 가는 부분도 있고 가지 않는 부분도 있을 것이다.
– 적어도 한번은 안가는 부분은 최대한 해보고 안되면 다음을 기약하며 넘기고 앞
으로 계속 가기를 바란다.
– FTZ를 풀고 LOB까지? FC3까지는 처음 혼자 해보다 잘 안되면 풀이를 보고 공부
했다. 그리고 다시 풀이를 보지 않고 공부를 했다.
– 해커스쿨의 각종 문서들과 발표자료 등등 필요할 때 매우 자주 찾아보는 것을
추천한다.
– 그리고 문제풀이 라는 것은 FTZ Level9?부터 익스플로잇 코드까지 작성하는 것
을 푸는 것이라 생각하는 것이 좋다.
5. 어떻게 공부해야 하나?
38. A. Pwnable
• 이 후 추천 공부 순서
– Exploit-exercises.com - Nebula, Protostar, Fusion
– Overthewire – votex
– Pwnable.kr » aa
• 이미 여기까지 할 수 있는 실력이라면 해킹방어대회(CTF)에 참가하
면 순위권 안에 들지도 모른다..
• 본인이 공부한 책으로는 시스템 해킹 테크닉(FTZ), 해킹 공격의 예술
이 포너블에는 해당되는 것 같다.(해공예 읽기 불편..에Xㅋ..)
• 대부분이 문서로 존재..
• 본인이 공부 한 책은
» aa
5. 어떻게 공부해야 하나?
39. B. Reversing
• 추천 공부 순서
– Abex’s Crackme 1-5
– CodeEngeen Basic RCE 1-20
– Simples.kr Season 1 Crack, Unpack, Season 2 Reverse
– CodeEngeen Advanced RCE 1-18
– Reversing.kr » aa
• 글쓴이는 처음 리버싱을 공부 했을 때 흔히 나뭇잎책, 방독면책 하는
바이블이라 불리는 책을 보면서 공부를 하려 했는데 하나도 몰랐다!!!!
• 책을 따라가며 부분부분 이해하며 넘기긴 하는데…
• 정신을 차리면 난 영혼이 잠시 마실 나갔다 온 것처럼 기억을 못하
는..
• 어셈블리어 한 줄 한 줄은 알겠는데 전체적인 흐름이 보이지 않는..
» aa
5. 어떻게 공부해야 하나?
40. B. Reversing
• 개인적인 의견
– 앞의 저러한 이유로 리버싱을 자주 포기했었다 거의 포기했다.
– 그리고 역시 달고나 문서와 Hackerz on the ship의 문서를 읽기를 바란다
– 멘토 님이 한가지 과제를 주셨다.
– Simples.kr Crackme 1-20 1 WriteUp 보고 풀고 1주일 후에 보고서 제출
– 진짜 더럽게 이해 안가고 그랬지만 1주일 안에 했다.
– 그리고 지금, 다시 문제를 푸니 전체적인 개념?이 조금이나마 깃들어 있어 혼자
풀기 시작한다. 심지어 아주 쉬운 CTF문제 하나도 혼자 풀었다.
본인이 공부한 책으로는….나뭇잎, 방독면 등등 두 세 개 있는 것 같은데 대부분 레
퍼런스로 보고 있다.
5. 어떻게 공부해야 하나?
41. B. Reversing
• 개인적인 의견
– 어셈블리어를 체화 하는 것에는 핸드레이가 좋다(hand + hex-ray) 헥스레이를
손으로 하는….
– C를 어셈으로, 어셈을 C로 이것은 개인적인 의견이 아니라 대표님들이, 악성코
드분석 현업에 계신 분들이 말씀해 주신 것을 토대로 하는 이야기다..
– 이정도 할 생각이면 포너블이든 리버싱이든 크게 심적으로 힘들지 않을 것이다.
– 그리고 나뭇잎 책과 같은 것은 처음엔 많이 어려울 수 있다.
하지만 선행학습이 된다면 그 내용들이 쉬워질 것이다.
나 또한 지금에서야 깨달은 것이지만 매우 쉽다 아직 앞부분만이지만…
그 이후 부분에 PE부터는 OS지식에 대한 것이 부족하다는 것을 느낄 것이다.
그 때부터 기본을 쌓기 시작할 수도 있다.
5. 어떻게 공부해야 하나?
42. B. Reversing
• 개인적인 의견
– Crackme를 풀 때부터 Windows API를 보고 막 그럴 것이다. 그러면서 기초가 쌓
인다.
– Codeengn은 시스템의 해커스쿨과 비슷한 곳이다 그곳에서 문서를 쉽게 찾을
수 있을 것이다.
5. 어떻게 공부해야 하나?
43. 어떻게 공부해야 하나?
• 전체적인 본인의 개인적인 의견
– 포너블이든 리버싱이든 어느 정도의 기초지식은 워게임을 통해 Writeup을 보고 먼저
한 바퀴 만큼은 풀길 바란다.
– 이유는 적어도 이것이 어떤 것이라는 적응이 필요하기 때문(특히나 리버싱)
– 그리고 다시 돌아와 제대로 공부하기를 바란다.
– 그래도 처음에 영혼 없이 하더라도 이게 어느 것인지는 인식을 하고 있어야 한다.
5. 어떻게 공부해야 하나?
46. 마치며..
• 공부하는 방법을 알아내는 것도 실력이고
• 뭘 공부 해야 할지 알아내는 것도 실력이다.
• 뭘 공부할지 모를 때 오는 슬럼프를 극복하는 것도 실력이다.
• 어차피 공부 하는 것은 혼자이다. 스터디에 들었다고, 팀에 들었다고
• 절대 내 실력이 오르는 것이 아니다. 이 생각이 제일 위험하고 자만
하면 안된다.
• 스스로 찾고 해결해나가는 것이 중요하다.
47. Thanks to
이 가이드라인의 전반적인 참조를 허락해주신
• 황석훈(現 ㈜타이거팀, ㈜타이커팀아카데미, 코어시큐리티 대표)
• 시스템 보안에 대해 고민할 때 도움을 주신 SecurityPlus, 생활해
킹의 많은 변ㅌ…..아니 많은 분들
• 리버싱에 대해 공부하는 방법과 처음 해킹에 대해 공부할 때의
글을 숟가락만 뜨게 도움주신 해피용님
48. Thanks to
• 공부하는 마인드를 바꿔주신 cd80님
• 멘토이신 흑객 박태광 멘토님
• 이 가이드라인을 작성할 계기를 만들어준 TeamH4C
• 처음 시스템 해킹을 배우기에 좋은 문서를 만들어주신 블랙펄 시
큐리티 심준보님의 후배 분들
• 리버싱에 대한 문서가 별로 없어 헤맬 때 도움을 주신
SecurityPlus와 생활해킹의 많은 분들
49. Reference to
보안 전문가의 길 - link
시스템 보안이란? – link
달고나 문서 – link
우리집에 gdb있는데.. 메모리 보고갈래? - link
해킹 입문서, 커리큘럼, 테크 트리, 리버싱 – link
제가 쓴 Writeup – link
Q&A
질문 같은 것이 있으시다면 페이스북으로 문의 바랍니다.
위의 말과 같이 검색으로 나오는 것은 검색으로….