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