joon님의 블로그에서 퍼온 글입니다.

해커가 알아야할 30가지

1. 유닉스
기존의 대형 network는 대부분 유닉스를 기반으로 구성되어 있었으며 해커들은 여기서 자양분을 공급받았고 해킹을 해왔다.

그러므로 당연히 알아야 된다.

2. 리눅스
리눅스는 유닉스와 비슷한 형태의 운영체제로 PC 에서구동될 수 있도록만든 유닉스 비슷한 운영체제라고 보면된다.
명령도 거의 비슷하고 커널 구조도 거의 흡사해서 유닉스 사용자는 리눅스를 무리없이 쓸 수 있고 유닉스 해킹법은 리눅스에서도 거의 통한다.

3. 윈도우95/98/2000/NT/ME
요즘대부분의 개인 PC 사용자들이 윈도우시리즈에 바탕을 두고 있고 서버시장에서도 그 편리성에 힘입어 NT가 입지를 넓혀가고 있다.

그러므로 당근 알아야 된다.

4. HTML
HTML은 웹 페이지를 구성하는 가장 기본이 되는 언어이며 초보자들이 프로그래밍의 개념을 잡는데 어느 정도 도움을 줄 수 있다.또한 요즘 들어 웹 보안이 중요한 문제로 자리잡고 있으므로 웹의 기본인 HTML은 꼭 알아야 된다.

5. C/C++ 언어
이 언어는 가장 많은 사용자를 가지고 있으면서 가장 오래된 언어 중 하나이며 가장 강력하고 빠른 언어 중 하나이다. 해커들 중 이 언어를 사용하지 못한다면 그 사람은 이미 해커가 아니다. 많은 언어들 이 C 언어를 바탕으로 생성되었으며 C를 능숙하게 다룰 수 있는 사람은 다른 언어를 배우는데도 문제가 없을 것이다.

6. Java script
자바 스크립트는 자바와는 다르다.
웹이 활성화됨과 동시에 다양한 웹 프로그래밍 도구들이 생겼다.
자바 스크립트도 그 중 한가지로 많은 웹 페이지에서 이것을 사용하고 있다.
자바 스크립트만 알아도 해킹할 수 있는 웹페이지가 있을 정도이니 당연히 알아두자.
참고로 자바 스크립트와 자바를 확실히 구별해서 사용하자.

그렇지 않으면 자바 프로그래머들이 들으면 기분 나빠할 것이다.

7. Java
현재로서는 자바를 굳이 알아야 한다고 하기는 이른 감이 있지만 자신이 능력있는 해커가 되고자 한다면 자바는 또한 필수다.
자바는 썬 마이크로시스템즈 사가 만든 객체지향 언어로 요즘 많은 네트워크 관련 장비와 연계하여 보이지 않게 많은 입지를 넓히고 있다. 네트워크에 연결될 수 있는 많은 장비들과 심지어는 가전제품까지 자바의 지원을 표방하고 나선 마당에 자바를 배우지 않을 이유가 없다.
네트워크는 컴퓨터에만 있는 것이 아니다.

8. CGI
Common Gateway Interface의 약자인 CGI는 웹에서 어떤 입력을 받아서 그 데이터를 처리하는 프로그램과 연결을 위한 일반적인 규약으로 특정 언어나 수단을 지칭하는 것은 아니다.
CGI를 통한 입력을 처리하는 방법은 다양하며 그 다양한 방법들 중 일반적으로 사용되는 방법들을 해커는 반드시 알 필요가 있다.뒤에 다시 언급할 것이다.

9. Perl
펄은 앞에서 언급한 CGI와 관련되어서 중요한 것이다.
CGI 데이터 처리를 위해서 사용되는 많은 수단들 중 하나가 바로 펄이며 펄은 CGI를 떠나서 그 자체만으로도 주목받는 언어들 중 하나다. 초보자의 경우는 모르겠으나 기존 프로그래머는 배우기 쉬우며 다양한 기능들에 만족할 것이다.

10. Shell Programming
쉘 프로그래밍은 유닉스/리눅스의 쉘 번역기를 이용하여 작성하는 프로그램을 말한다.
쉘은 원래 명령어 해석기지만 그 명령어들을 모아서 하나의 파일로 만든 다음일반 프로그램처럼 실행시킬 수 있다. 해커들은 쉘 프로그래밍의 대가이며 쉘 프로그래밍은 별다른 컴파일러를 요구하지 않는 인터프리터 언어이므로 적용하고자 하는 곳에 바로 쉽게 적용할 수 있어서 해킹 도구로 그만이다.
또한 많은 유닉스/리눅스 서버가 CGI 처리를 위해 쉘 프로그래밍을 사용하므로 반드시 알아야 겠다.


11. OSI 7 layer
OSI 7 계층은 네트워크를 위한 전반적인 구조를 정의하고 있는 일종의 프로토콜이라고 할 수 있다.

많은 네트워크가 이 계층 구조를 바탕으로 형성되어 있으므로 해커라면 개념은 반드시 잡고 넘어갈 필요가 있다.

12. TCP protocol
인터넷의 대부분은 이 프로토콜을 이용해서 구현되어 있다.
인터넷 해킹에 관심이 많은가?
네트워크가 뭔지 알고 싶은가?
그렇다면 이건 전공필수다.

13. CISCO router
라우터는 네트워크를 구현하는데 필수적인 장치이다.
특히나 CISCO router는 전 세계 라우터 시장의 75%를 장악하고 있다.
시장을 좌지우지하는 점유율이 60%라는 것을 감안할때 라우터는 시스코가 표준이라고 봐도 좋다.
그러므로 시스코 라우터의 구조 등에 대해서 공부하는 것은 당신을 대단한 해커로 만드는 지름길이다.

14. DES 암호화
DES 암호화는 유닉스/리눅스의 대표적인 패스워드 암호 변환 알고리즘이다.많은 암호들이 DES 암호 방법을 사용하여 구현되어 있으므로 이에 대한 학습도 중요하다 하겠다.

15. PGP [Pretty Good Privacy]
PGP는 공개키 암호 방식을 사용하는 암호화 알고리즘이다.
인터넷을 통한 대부분의 데이터 전송이 암호화 되지 않은 상태로 전송된다.해커라면 이런 암호화 되지 않은 데이터 전송으로 인해 다른 사람이 자신의 데이터를 패킷 스니핑 하는 것을 용납하는 것은 자존심 상하는 문제다.
PGP는 그에 대한 적절한 해답이 될 수 있다.

16. 자료구조론
자료구조론은 프로그래밍에 있어서 기본이나 마찬가지다.
자료구조는 가장 깔끔한 프로그래밍을 가능하게 하는 반석이다.
해커라고 해서 무작정 네트워크를 뚫기만 하는 좁은 영역만 보지 말고 기본을 다질 줄 알아야 한다.

17. 컴퓨터 구조론
컴퓨터의 구조를 일단 알게 되면
컴퓨터가 절대 대단한 장치가 아니라는 것을 깨닫게 된다.
누군가 쓴 책의 제목처럼 컴퓨터는 깡통에 지나지 않는다.
하지만 그 깡통은 말 잘듣는 훌륭한 하인이 될 수 있으며 당신에게 가장 유용한 도구가 될 수 있다.
컴퓨터 구조론을 공부함으로 해서
당신은 그 하인을 가장 적절하게 부릴 수 있을 것이다.

18. 어셈블리어
어셈블리어는 가장 빠른 언어이며 가장 근본적인 언어이고 가장 까다로운 언어 중 하나이다. 어셈블리어를 배우는 가장 근본적인 이유는 가장 근본적으로 컴퓨터를 다룰 수 있기 때문이다.
하지만 어셈블리어는 머신에 종속되므로
그것을 컴퓨터 종류마다 다 배운다는 것은 무척이나 소모적인 작업일 수 있다.필수라고 말하기는 힘들지만 어셈블리어를 능숙하게 다룬다는 것은 확실히 유리한 점이 있다.

19. Ethernet Structure
대부분의 네트워크 환경이 LAN으로 구성되어 있으며 Lan은 또한 대부분 Ethernet 프로토콜을 구현하고 있다.
몇몇 해킹법[패킷 스니핑, E-mail intercepting 등]은 Ethernet 프로토콜의 단점을 바탕으로 하며 Ethernet은 그 구조상 많은 재미있는 해킹을 맛볼 수 있다.

20. 영어
어디선가 해커가 알아야할 가장 기본적인 사항으로 영어를 언급한 글을 본적이 있다.
맞는 말이다. 영어를 모르고서는 해커되기를 포기하는 것이 좋다.
왜냐하면 대부분의 자료가 영어로 되어 있기 때문이다.
당신이 만약 남이 다 먹고 소화 다 시킨 자료로만으로도 만족한다고 하면 영어를 배울 필요는 없을 것이다. 다른 해커에게 자료를 구걸하면 되니까 말이다.

21. Gateway/Firewall
상업적으로 또는 중요한 정보를 포함하고 있는 네트워크는 그 정보를 보호하기 위해서 방화벽을 사용한다.
방화벽은 비유적으로 말하자면 어떤 건물로 들어 가는 문이라고 할 수 있으며 문을 지나가고자 하는 사람이나 문을 지키고자 하는 사람 둘다그 문의 구조에 대해서 잘 알 필요가 있다.

22. 디지털 회로 이론
컴퓨터를 사용한다고 하면 일반적으로 소프트웨어적인 면만 강조하기 마련이다.하지만 실제로 컴퓨터는 하드웨어이며 소프트웨어는 결국은 그 하드웨어에 종속되기 마련이다.
소프트웨어가 구현되는 곳이 하드웨어를 바탕으로 하므로 컴퓨터를 구성하는 디지털이라는 신세기의 괴물을 알지 못하면 근본적인 컴퓨터에 대한 이해는 기대하기 힘들다.
우리의 선대 해커들 거의 모두가 하드웨어 해커였다는 것을 상기해보기 바란다.

23. 유즈넷
유즈넷은 많은 정보의 보고이다.
거의 대다수의 해커들이 유즈넷을 거점으로 활동하고 있으며 유즈넷을 위해서 봉사하고 있다. 가장 빠른 정보를 얻을 수 있는 곳은 유즈넷이다.
하지만 유즈넷은 완전히 걸러진 정보를 얻기는 불안하므로 어느 정도의 해안이 필요하다.

24. 소프트웨어 공학
여기서 말하는 소프트웨어 공학은 넓은 의미의 소프트웨어 공학을 말하는 것이 아니다.
단지 소프트웨어를 만들때 필요한 설계적인 측면에 대한 공부가 필요하다는 것이다.
해커는 어설퍼서는 곤란하다.
해커가 만든 프로그램은 그 이름에 걸맞는 격을 갖출 필요가 있다.
그러므로 버그가 없는 소프트웨어는 해커의 명성을 드높인다.

25. ASCII
아스키 코드는 컴퓨터에서 일반적으로 사용되는 문자 256개를 숫자 0-255에 매핑시킨 것이다.
모든 문서 파일의 기본이 되며 어떤 해커는 이 255개의 모든 문자를 외우고 다니는 사람도 있다.
외우면 무엇이 좋으냐고? 당연히 컴퓨터 조작과 프로그래밍을 빠르게 할 수 있다.

26. X진수 연산
진법은 아주 기본이 되는 것이다.
특히나 2진수와 16진수간의 변환은 빠르면 빠를 수록 좋다.
2의 16승까지 정도는 외우고 있어야 한다.
이것도 빠르면 빠를 수록 프로그래밍을 빠르게 한다.
계산기가 있는데 무슨 말이냐고 할지 모르지만
외우고 있는 사람과 못외우는 사람은 차이가 많이 난다.

27. Bool 연산
불 연산은 논리연산을 수행하기에 적합하도록 만든 수학이다.
필수라고 말하기는 그렇지만 이것도 알아두면 프로그래밍시 조건식 판단에서 상당히 빠르고 견고한 작업을 할 수 있다.

28. IRC
IRC는 일종의 채팅이다.
많은 해커들이 IRC에서 채팅을 하고 얘기를 나누며 의견을 교환하고 자료를 공유하고 있다.
해커들이 자주 찾는 IRC를 알아 두었다가 그곳에 자주 들리며 자기 입지를 조금씩 넓혀 가는 것도 좋겠다.

29. 해킹 툴
일부 해커는 이것에 반감을 가지고 있을 수도 있다.
해킹 툴을 사용한다는 것은 훌륭한 해커들에게는 일종의 모욕이다.
하지만 난 사용하라고는 하지 않았다.
단지 알아야 한다고 말하는 것이다.
알아야만 피할 수 있고, 그 해킹툴에서 사용하는 보안 취약점과 기법들을 배울 수 있다.
또한 간단한 방법이 있다면 어려운 방법을 굳이 선택할 이유는 없다. 툴에만 얽매이는 것은 위험한 것이지만 이해를 한 상태에서 동작 시키는 것은 우리가 계산을 하기 위해서 컴퓨터를 사용하는 것과 다를 바가 없다.
"세상에는 해결해야할 문제가 산재해 있다."

30. 기본 윤리
윤리가 바탕이 되지 않은 해커는 결국 크래커가 되고 만다.
왜냐하면 해커라는 존재는 과거의 말썽장이와 이단아의 이미지를 넘어서 이제는 권력에 어느 정도 접근하고 있다.
컴퓨터에 대한 능력은 사회적으로도 많은 인정을 받고 있으며 존경을 받는 입장에까지 이르고 있다.
이런 마당에 기본 윤리가 바탕이 되지 않은 해커는 권력을 탐하는 썩은 정치가들 마냥 그 권력을 엉뚱한 곳에 사용하게 될 것이다.
진정으로 존경받는 해커가 되고자 한다면 결국 윤리적인 사람이 되어야 한다.차가운 컴퓨터를 다루는데에도 따뜻한 가슴이 필요하다.
Buy me a coffeeBuy me a coffee

+ Recent posts