22019, 1/1101 회원가입  로그인  
   mitssi
   http://blog.naver.com/yonguk6726
   해킹에 대해서 공부해보고 싶습니다

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


안녕하세요~
컴퓨터과 3학년 1학기를 거의 다 보낸 어떤 공대생입니다.
이전부터 해킹쪽엔 관심이 많았는데, 어떤걸부터 시작해야할지 몰라서 다른 공부를 하다가
3학년 1학기를 거의 마치고나니 이제 컴퓨터를 '약간 알겠다' 라는 감이 와서 그동안 미뤄왔던 해킹을 한번 이번 방학때 공부해볼려고 합니다.

하지만 컴퓨터를 약간 알겠다는 수준이지 해킹에 대해서는 지식이 거의 없어서, 방학때 어떤 방법으로 공부를 할지는 아직 막막합니다. 일단 관심있는 분야는 네트워크 해킹, 시스템 해킹 분야인데.. 이걸 학원에서 배우는게 나을지 아님 독학으로 하는게 나을지 판단이 서질 않네요..
학원에 가면 왠지 제가 아는내용들도 중복해서 설명해주는걸 들어야 하는 단점도 있는것 같고, 독학을 하자니 방향부터 잘못잡을 수도 있어서 조심스럽습니다.

일단 저는..
언어는 C, C++, Java(3년전에 배워서 조금 가물가물), C#, XML, 웹언어(html, java script, php), MIPS(약간)..
정도 알고있고
자료구조, 운영체제, 컴퓨터구조, 데이터베이스(mssql) 을 수강해서 이쪽에서 최소한의 지식은 있고,
리눅스는.. 그 안에서 시스템 프로그래밍은 좀 해봤지만 리눅스를 '잘안다' 라고 할 수는 없고,
TCP/IP 부분에서는 공부해도 공부해도 나중에 또보면 초기화된것같은 느낌이지만 기초적인 부분은 조금 아는 수준입니다..


여기서 어떤분야를 더 공부해야 하는지... 학원을 다니는게 좋은지, 독학을 하는게 좋은지 알려주시면 감사하겠습니다~ ㅠㅠ 해킹 공부해보고 싶어요!

  Hit : 9125     Date : 2011/06/05 01:41



    
$Zero 그정도 기반 지식이 있으면 독학하셔도 전혀 무리 없으실 것 같네요..
물론 처음부터 독학을 해도 문제 없다고 생각합니다. 저또한 아무런 지식없이 독학하는 중이구요..

이제 도구를 다뤄보세요. 버퍼오버플로우 기법에 대해 알아보고 .. 포맷스트링 버그등.. 각각 해킹기술들에 관해 알아보시고 사용해보시면 될듯 합니다.
그러다 어 ? 이거 모르겠다 하면 그 기술의 근본이 되는 지식을 습득하시구요..

제가 추천하는건 리버싱 입니다.
리버싱을 배워보시면 프로그램의 구조를 직접 보게되거든요. 더 깊게 이해하고 프로그램을 뜯어 고칠 수 있게됩니다.
리버싱은 다 번역본이라 책으로 공부하기 힘든데.. 제가 요즘 공부하는 블로그를 소개해드릴게요.

www.reversecore.com <-- 리버스코어 라는 분이 강의를 올리셨는데 책을 쓰고 계산다고 합니다.
설명 정말 잘 되어있구요. 리버싱 배우는 분들이 많이 보고 배우는 블로그에요.
2011/06/05  
mitssi $Zero // 오우 리버싱.. 딱 봐도 뭔가 익혀놓으면 프로그램 구조를 역추적하기에 굉장히 좋을것 같네요. 음.. 저런 버그를 일부러 일으켜서 시스템의 약점을 뚫는건가요!? 버그 디버깅을 즐기는(?) 저로썬 매우 재미있는 공부가 될 것 같네요 ㅋㅋ 좋은 정보 감사합니다~ 2011/06/05  
늅늅 헠ㅋ상당히 많이 공부하셨네요
존경 ㄷㄷ..
2011/06/05  
Mach 와....많이아시는데?ㅋㅋㅋㅋㅋ 2011/06/06  
mitssi 늅늅, Mach // 컴퓨터과 공대생이라 ㅠㅠ 너무 정직(?)한것들만 배우다보니 그래도 3학년 1학기까지 보내면서 기초지식 쌓는데는 시간을 많이 투자한것 같아요,. 아무래도 전공이다보니 학점은 낮으면 안되니깐요 ㅋㅋ;; 해킹에 대한 지식이 거의 전무한지라 해커스쿨에서는 무쟈게 뉴비입니다 ㅠㅠ 2011/06/06  
profreez 여기 ftz의 레벨 해킹 공부를 해본다고 가저하면
해킹책(해킹 공격의 예술) 한권 사서 책보면서
ftz 레벨해킹을 끝내보세요.

해킹책 읽다가 모르는게 나오면 다른책을 참고해서 꼭 이해 하고 넘어가는 식으로
책 한권을 다 읽으면 전공 공부하는데도 많은 도움이 되실겁니다.

다 이해 하면서 읽으면 한 6개월 정도 걸릴지도..

사실 전 전공 공부하는데 어셈블리만큼 좋은게 없다고 생각합니다. - 근데 힘들긴 하죠.. 당장 써먹을곳도 없고..
C언어보다 어셈블리를 먼저 배웠는데 그게 전공 공부하는데 많이 도움을 얻었습니다.
2011/06/06  
mitssi 헛 저 책을 공부하면 여기 FTZ레벨 문제들을 풀 수 있는거군요..
여기 레벨해킹을 2달만에 끝낼 수 있을지 ㅋㅋ 아마 끝낼려고 하면 그건 욕심이겠죠

어셈블리 계열은... 컴퓨터구조 할때 MIPS 좀 했던 기억밖에 없네요 ㅠㅠ
근데 약점은 고수준의 언어보단 저수준의 언어에서 더 쉽게 발견될 터이니.. 나중에라도 어셈블리는 꼭 따로 공부해봐야겠네요.. 아님 학교에서 어셈블리어 수강을 해도 되고 ㅋㅋ
2011/06/07  
profreez 여기 레벨해킹을 끝내는것을 목표로 하는것도 괜찬습니다.
다만 이해하고 끝내야 남는것도 많습니다.
어셈은 전공을 시작하기전 그러니까 디지털공학, 컴퓨터구조수업 전에 공부해두시는것을 추천합니다.
어셈블리하면 두 과목이 쉬워져요. 어셈블리는 쉬엄쉬엄 독학하면 3개월에서 6개월정도 걸릴듯 싶구요.
책 반정도만 이해 및 직접타이핑 해도 충분합니다.
2011/06/07  
U_SoRang 컴구조라... 배우면서 잠시 피눈물을 흘렸던 기억이...ㄲㄲㄲ 2011/06/07  
jazz1212 리버싱은 어덯게 시작하는게 좋을까요.. 영어 문서도 괜찮은데 2011/06/08  
mitssi 컴퓨터구조랑 OS수업때문에 지금 죽을 지경입니다 ㅠㅠ
옙 한번 방학동안 여기 레벨해킹을 끝내는걸 목표로 해봐야겠습니다 ㅋㅋ
조언 감사합니다

리버싱은 저도 그냥 아직은 막막하기만 해용 ㅋㅋ
2011/06/09  
profreez 당부 말씀 하나 더 하자면 해킹책이나 어셈블리나 많이 이해하면 반정도라고 생각하세요.

한 1/3 정도까지만 이해해도 괜찮습니다. 그정도만 이해해도 여기 해킹레벨 깰수 있으니깐요.

처음부터 이해하는건 힘듭니다. 해킹같은경우는 학부 과정을 모두 끝마쳐야 이해가 가기 시작합니다.
2011/06/09  
$Zero 에그쉘은 되도록 쓰지 마세요~~ 2011/06/09  
칼로만든두부 컴퓨터공학과분들보면 다들 OS수업은 들어도 듣는게 아니며 이해하는 사람들은 괴물이라고 불평불만이 많더군요
얼마나 어려우면...
2011/06/10  
mitssi profreez // 네 ㅠㅠ MIPS 이해하는것도 매우 힘들더라고요.. 음.. 완벽하게 이해하지 않아도 된다는 것이군요 감사합니다

zero // 으음.. 툴인가요? ㅋㅋ 코딩으로 해결할 수 있는 부분은 코딩으로 해결해봐야겠습니다

칼로만든두부 // 그래서 그런지 ㅋㅋㅋ 저희 OS는 과제로 파일시스템을 직접 구현해서리 ㅋㅋㅋㅋㅋ 학생들에게 파일시스템만큼은 '잘안다' 수준까지 만들더라고요.... inode, vnode 에 의한 파일시스템과 파일디스크립터 테이블을 hash table로 구현한 버퍼캐쉬로 구현하면.. 진짜 파일시스템은 머리에 강제주입이 되더군요 ㅠㅠ 으으.... 이러면 학교인증일까나 ㅋㅋㅋ
Lv3 까지는 끝냈고 최종보스 Lv4는 vnode와 fd는 이제 구현해야하네요 ㅠㅠ
2011/06/10  
lsn10919 조금 비판적인 입장에서 글을 써 보겠습니다. 저도 이러한 경험이 있고해서 글을 올리니 기분 나쁘게 생각하지는 말아주세요^^

우선 프로그래밍 언어를 많이 안다고해서 좋은것은 아닙니다
C,C++,JAVA,C#등 많은 언어를 알고 계시는데 이 중에서 정말 내가 이거 하나만큼은 해박하다 할만하신게 있으십니까?
대부분 C언어를 학교나 학원에서 많이 배우고 저 또한 어릴쩍부터 컴퓨터에 관심이 많아 학원에서 배웠습니다
그 당시 제가 중3정도 였고 C,C++,JAVA 를 학원에서 4개월만에 전부 나갔습니다
어린나이에 자만해졌고 저보다 못하는 대학생 또는 직장인들도 많았기에 제가 모라도 되는줄 알았습니다.
그러다가 문득 해킹에 관심이 많아져서 공부를 다시 하게됬는데... 분명히 C를 다배웠는데 머리속에 그려져있는 간단한
프로그램 예를 들어 자신의 컴퓨터로부터 해킹할 서버(혹은 다른것이 될수도있음)까지의 라우터경로등 기본적인
정보 수집을 할 수 있는 프로그램조차 못짜더라구요... 그저 학원에서 배운게 전부 였습니다.
그래서 저는 언어의 역사부터 다시 배웠습니다. 처음에는 역사 무시하고 대충 넘어가죠. 하지만 역사를 알고나니
배우는 의미도 알겠더라구요... 제가 봤을때 C언어만 3~6개월정도 해야 어느정도 했다고 볼 수 있습니다.
그저 문법을 다끝내고 그 문법 수준에 맞는 프로그램을 100줄 1000줄 짤줄 안다고 배운게 아닙니다.
완벽히 이해하지 못하고 쓰려고하면 언젠가는 한계에 다다르게 됩니다.

해킹을 무조건 공부한다고하면 아무도 답변을 못해줍니다. 그저 추상적으로 대답해 줄수는 있겟죠
이거공부하고 이거공부하고 저거 공부하세요 그다음에 어쩌구 저쩌구....
이런식의 말은 정말 영양가 없습니다... 해킹을 공부하신다면 정말 언어 하나만큼은 자신있게 할 줄 알아야합니다.

해드리고 싶은 말이 너무 많지만 온라인 상으로는 한계가 있네요.

해킹세계는 넓습니다.. 넓고 깊은 지식을 요구합니다. 이것은 약간 알아요. 기억이 가물가물 이런건 안배운것이나
마찬가지입니다. 차라리 그시간에 기존에 알던것의 깊이를 파는것이 백번 천번 이익입니다. 그리고 미치지 않으셨다면
지금 포기하시는게 좋습니다. 미친사람만이 계속 해킹이란걸 할 수 있습니다. 저도 여러 사람들을 오프라인에서
도와준 적이 있습니다... 하지만 모두가 의욕이 앞서더군요... 결국 중도 포기자가 많습니다.

어느정도 공부 하셨으니 해킹공부를 한다고해서 바로 해킹을 하는것이 아니라는 것을 잘 아실겁니다.
지금 공부에 돌입한다하셔도 3년뒤가 될지 5년뒤가 될지는 모릅니다.. 어느순간부터인가 학교 서버나 간단한 개인서버쯤은
어떻게하면 되겠다라는 느낌이 오실겁니다... 그전까지 정말 피드백을 해드릴 수 있습니다... 만약에 관심이 있으시다면
쪽지를 주세요.... 여기에 두서없이 마구 글을 쓰다보니 앞뒤 내용도 맞을지 모르겠네요...

그럼 너무 기분나쁘게 생각하지마시구 정말 발을 들여놓겠다 싶으시다면 끝은 없습니다.
정상도 없습니다. 그래서 미치지 않으면 안됩니다. 또 뵐 수 있으면 좋겠습니다^^
2011/07/05