22018, 1/1101 회원가입  로그인  
   morieye
   제가 지금 공부를 어떻게 해야할지 막막합니다 도와주세요.....

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=34987 [복사]


저는 지금 학점운영제를 다니는 해킹과 1학년입니다.
저는 리눅스쪽을 좀더 공부하고싶습니다. 그런데 학교에서는 윈도우즈API라든가 윈도우환경리버싱을 가르치는거같습니다. 물론 윈도우환경에서 리버싱을 배워두면 리눅스환경에서 리버싱할때 도움이 된다는건 알고있습니다만.... 그래도 제가 편하게 공부할수있는 기간은 2년도 안남아서 리눅스쪽만 파고싶습니다.... 그리고 제가 학점운영제를 다니고 있어서 학점관리(독학사, 자격증)를 해야해서 제쪽 공부도 제대로 못하고있는 실정입니다....
어떻게해야할까요?
댓글로 어떻게하면되는지 답변해주셔도되고 kakao_talk로 상담해주시면 감사하겠습니다 도와주세요...어떻게 해야할지를 모르겠습니다
(kakao_talk는 검색ID를 쪽지로 보내드리겠습니다)

  Hit : 9346     Date : 2017/05/16 03:27



    
rabbitlycat 학교공부 본인공부 따로 하면 되죠. 2017/05/16  
morieye 하..... rabbitlycat님 그건 진작에 하려고하고있습니다. 글을 제대로 읽고 답변해주셨으면합니다.
학점관리때문에 제꺼 공부를 못하고있으니깐 이렇게 글을 적은거죠;;
2017/05/17  
rabbitlycat 잘읽었는데요? 아니 애초에 그만큼 많은 시간투자해서 본인이 잘 나눠서 해야죠 별수있나요?
그게 안되는거면 본인 노력이 부족한거겠죠 그럴 능력이 안되거나요
2017/05/17  
해쿨러 어려운 상황이시네요
사실 글에서도 쓰셨듯이 윈도우즈로 하든 리눅스로 하든 어느 한곳에서 제대로 공부해두면 플랫폼 상관없이 활용되는게 리버싱입니다
리눅스쪽만 파고 싶다는것이 리눅스 상에서 리버싱을 하고 샘플프로그램을 익스플로잇해보고 보호기법도 공부해보고 싶다 이런의미라면은 워게임을 취미로 가지시는수밖에는 마땅히 없을것같습니다
워게임은 overthewire.org smashthestack.org pwnable.kr FTZ LOB exploit-exercises.com pwnable.tw 이런것들이 대중적이구요
리눅스를 파고싶단게 그 의미가 아니고 리눅스 운영체제에 대한 학습을 원한다는거라면 자기전에 30분씩이라도 리눅스 커널책을 꾸준히 읽으시면 어느정도 공부가 되지 않을까 싶습니다
혹은 서버 관리에 대한걸 공부하고 싶으신거라면 이거는 여러개를 설치해보고 써보는 연습을 해야죠 python의 virtualenv, docker, qemu, 혹은 웹서버라면 apache, nginx, 디비라면 mysql등과 같이 현업에서 많이 사용되는 프로그램 혹은 프레임워크들을 열심히 검색해서 다운받아보고 써보면 됩니다
2017/05/17  
morieye @해쿨러
정말 감사합니다 도움받았습니다. 그리고 궁금한게있습니다.
제가 시스템해킹쪽으로 공부를 하고있는데 이쪽을 공부하려면 반드시 짚어봐야하거와 반드시는 아니지만 알면 도움이되는 것은 무엇무엇이있나요(리눅스)?
2017/05/17  
해쿨러 쪽지로도 보내주셨지만 같은고민을 하고계실분들을 위해 댓글로만 작성합니다
시스템해킹은 세가지 상세분야로 나눌 수 있습니다
1. 어떻게 취약점을 찾는가
2. 어떻게 취약점을 공격하는가
3. 어떻게 그 취약점을 고칠것인가
1번은 취약점 분석 자동화로 쭉 연구되고 있습니다. 몇가지 공부 키워드를 나열해드리면
1. 퍼징
1-1. mutation fuzzing
1-2. structural fuzzing (or smart fuzzing)
1-3. program adaptive mutational fuzzing (카이스트 차상길 교수님 연구)
1-4. American Fuzzy Lop (or AFL)
2. Taint Analysis
2-1. Dynamic Binary Instrumentation (or DBI)
2-2. Symbolic/Concolic Execution과 결합된 형태의 Taint Analysis
2-3. Dynamic Taint Analysis (주로 윈도우/리눅스 쪽 논문이 많음)
2-4. Static Taint Analysis (안드로이드 쪽 논문이 많음)
3. Symbolic Execution
3-1. Z3
3-2. angr
4. Machine Learning based approach
4-1. 휴리스틱적 통계 기반 취약성 예측
4-2. 유사도 기반 취약성 예측
5. 그냥 경험에 기반한 소스코드 오디팅

그리고 취약점 공격
1. 끈기와 센스로 계속 다른 공격벡터를 찾는 부류
Google Project Zero팀이 대표적입니다 지금은 보기 어려우시겠지만 어느정도 공부하신후에 보면 영감을 많이 얻으실 수 있을겁니다
https://googleprojectzero.blogspot.kr/
2. Automatic Exploit Generation (보통 취약점 분석 자동화 -> 자동 익스플로잇 생성의 순서로 연구될것이라고 생각하기 쉬우나 AEG 단일로써 취약점을 찾아내려는 연구도 활발합니다. 왜냐면 AEG에서 분석하는 정보들은 취약성을 분석할때도 사용될만한 정보들이기 때문에)
3. Patch based Exploitation
이건 PPP팀의 박세준님이 오래 연구하고 여러번 발표하신 주제인데, 어떤 소프트웨어의 패치가 릴리즈되면 그 패치와, 그 전 프로그램의 차이점을 분석해 어떤 취약성에 대한 패치인지 알아내고, 그 패치가 모두 퍼지기 전에 알아낸 취약점을 이용해 공격하는 방법론입니다. 취약점 분석에 들어갈수도 있고 공격에 들어갈수도 있겠죠
4. Mitigation Bypass
보호기법만해도 열개 스무개는 기본으로 나열할 수 있을만큼 많습니다. 이 보호기법들에 대한 연구와 보호기법을 우회하는 방법론을 연구하는 부류도 있습니다
예를들어 ASLR, NX부터 시작해 PIE, SSP, RELRO, kASLR, SMEP, SMAP, Isolated Heap, Sandboxing, Virtualization based mitigation, Intel shadow stack, Control Flow Guard, vtguard, 그리고 윈도우즈의 EMET에서 제공하는 엄청나게 많은 보호기법들 등이 있습니다

취약점 패치
1. 정책적 방법
예를들어 IoT제품은 이제 시장에 출시하기전에 무조건 보안 인증을 받아야 하도록 정책이 생겼습니다. 이런식으로 취약성을 보완해나가는 방법도 있습니다
2. 시큐어코딩
당연한 얘기기도 하지만, 실제 개발현장에서는 너무나도 당연한 취약성을 인지하지 못하거나 인지하고서도 고칠 수 있는 일정이 잡히지 않는 경우가 많습니다. 조직문화차원에서 시큐어코딩을 검수하고 강제하는것이 필요합니다
3. 자동화 패치
상용제품의 경우 제대로 된 분석과 설계를 토대로 패치를 진행해야겠지만
예를들어 Defcon과 DARPA가 같이 진행했던 Cyber Grand Challenge라는 인공지능 해킹대회를 보면 인공지능이 취약점을 찾고 자동으로 패치까지 진행해야하는 형식의 대회입니다
CGC에서 사용한 인공지능 프로그램이 인터넷에 많이 공개돼있으니 찾아보세요
Shellphish에서 공개한것이 제일 유명합니다
https://github.com/shellphish 여기 patcherex 가 패치 자동화 툴이네요
2017/05/19