해킹 공부

 

안녕하세요 택이짱입니다. 과거 유닉스와 서버가 개발되고 해킹은 시스템에 대한 정보와 기술을 배울 수 있는 용도로 사용되었습니다. 최근에는 일부 재화나 자신의 탐욕을 위해 해킹은 어두운 의미로 해석이 되고 있는 현실입니다. 때론 많은 기업들이 자신의 시스템의 보안성 및 장/단점을 테스트하기위해 해커를 직원으로 채용을 하는 경우도 있습니다. 해커를 비즈니스나 IT 분야에 투입해 화이트 해커를 양성하는 경우도 있으며, 현재는 그 들의 능력을 하나의 직업으로 인정하고 있는 상황입니다. 아래부터 간단하게 해킹 기초와 대략적인 접근방법에 대해 알아보도록 하겠습니다. 

 

#1. 프로그래밍 언어를 배워야 합니다.

세상에는 아주많은 컴퓨터 프로그래밍 언어가 있지만 가장먼저 C 언어와 어셈블리 언어를 배우셔야 합니다. C는 UNIX를 개발한 언어이며, 생성한 자료구조가 어떻게 메모리에 작동하며, 메모리 주소를 어떻게 다루는지 배우셔야 합니다. 서버와 입/출력 장치 등에 어떻게 접근하는지 해킹에 매우 중요한 부분을 차지하고 있습니다. 어셈블리언어는 CPU 프로세서를 이해하는 기본적인 언어입니다. 모든 프로그램의 기본 베이스는 전부 어셈블리어로 해석이 되며 어셈블리어를 이해하지 못하면 해킹은 물론이며, 프로그램을 처음부터 끝까지 분석하는 리버싱 작업을 할 수 없습니다.

 

BASH 쉘 스크립트를 활용해 UNIX / LINUX 계열 시스템에서 만들어진 프로그램을 자동화하는 방법도 배우셔야 합니다. 파이썬이나 루비 같은 스크립트 언어도 해킹의 도구로 사용이 되며, PHP 나 Perl 과 같은 웹프로그래밍 언어와 DB 데이터베이스에 대한 전반적인 지식을 가지고 계셔야 웹 환경에서 해킹을 알고 시도할 수 있습니다. 또한 네트워크에 대한 기본 개념과 라우터 / 허브 / 방화벽 등의 네트워크장비가 어떠한 기능과 역할을 하는지도 알고 계셔야 합니다.

 

 

#2. 리눅스 터미널, 가상화 운영체제를 사용한다.

보통 윈도우 환경을 통해서도 리눅스 계열 터미널 환경을 사용할 수 있습니다. Cygwin 일명 시그윈 이라는 프로그램을 사용하면 리눅스를 시스템에 설치하지 않아도 터미널을 통해 연습이 가능합니다. 기본적인 리눅스의 BASH 쉘을 지원하고 다양한 명령어를 실행하고 테스트해 볼 수 있습니다. 처음 공부하시는 분들은 터미널 화면만 쳐다보셔도 답답함이 밀려올 수 있습니다. 그래서 일반적으로 컴퓨터에 윈도우와 리눅스를 선택해서 사용할 수 있게 운영체제를 설치하거나, VMWARE 같은 가상화 프로그램을 사용해 GUI 기반에 우분투나 해킹에 특화된 칼리 리눅스 등을 설치해서 사용합니다.

 

Cygwin 공식 홈페이지, 다운로드 -> 링크

Kali Linux 공식 홈페이지, ISO 다운로드 -> 링크

 

 

#3. 해킹 대상은 자신부터 선정한다.

타인의 시스템 보다는 가장먼저 자신의 시스템이 해킹 공격 대상이 되어야 합니다. 자신에게 소유권과 공격에 권한이 있는 시스템을 준비를 합니다. 연습용 시스템이 2대 이상 없다면 VMWARE 같은 가상머신을 통해서도 다양한 운영체제 설치가 가능합니다. 물론 모두 네트워크가 가능해야 하며, 공격 대상에 접근이 가능한지 시스템에 대한 정보탐색을 먼저 하셔야 합니다. 정보탐색은 기본적인 리눅스 명령어를 통해 가능합니다. 패킷을 보내 본다거나, 열려있는 포트를 확인하다 거나, 방화벽 설치 유/무 등도 알 수 있지만 주로 직관적인 툴 들을 사용하여 대상 시스템의 정보를 가져오게 됩니다. 다양한 정보탐색 툴 들이 존재하니 검색을 통해 찾아보시길 바랍니다. 여기서 구체적인 방법론에 대해선 다루지 않겠습니다. 추가로 칼리 리눅스를 사용하면 해킹에 특화된 리눅스라 기본적인 툴 들을 많이 지원하니 참고하시기 바랍니다.

 

 

#4. 시스템의 취약점을 찾습니다.

해킹 대상 시스템의 정보 분석을 마쳤다면, 열린문을 찾아야 합니다. 주로 포트라고 얘기를 합니다. 보통 서버에서는 서비스가 가능한 포트를 항상 개방하게 됩니다. 주로 웹은 80 / FTP 21 과 같은것이 기본 포트의 개념입니다. 기본 포트를 사용하기도 하지만 보안상 포트를 바꾸어 사용하게 됩니다. 주로 nmap 과 같은 명령어를 통해 포트스캔을 하기도 하거나 툴 들을 사용해 개방된 포트를 찾습니다. 개방된 포트를 찾았다면 열린 문을 통해 접근 가능한 정보들을 수집하게 됩니다. 관리자 계정에 대한 정보를 알아본다거나, 사용하고 있는 OS, 방화벽이나 라우터의 종류 등의 정보를 추가로 수집하여 공격 대상 시스템에 관한 자신만의 데이터 베이스를 구축합니다.

 

 

#5. 관리자 권한을 가져온다.

관리자 또는 슈퍼유저라고 합니다. 일반적으로 관리자 계정은 윈도우 계열에서는 Admin 또는 Administrator 리눅스 계열에서는 Root 권한이 됩니다. 가장 간단한건 관리자의 권한, 즉 아이디 / 비밀번호를 알 수 만 있다면 사실상 게임은 끝났다고 보시면 됩니다. 정보탐색을 통해 관리자 아이디를 찾을 수 있겠지만, 비밀번호를 알아내는 것은 어려운 작업입니다. 간단하고 쉬운 비밀번호라면 무차별 대입으로 툴 이나 쉘 스크립트를 사용해 비밀번호를 찾아 볼 수 있겠지만, 보안상 관리자 비밀번호는 무차별 대입이 안되도록 거의 모두 보안화가 되어있다고 보시면 됩니다. 간혹 무차별 대입이 가능한 시스템이 있긴 하지만 서버에서 관리자 아이디로 접근하게 되면 IP 에 대한 모든 정보를 기록하게 됩니다. 자신이 사용하고 있는 IP 를 숨기거나 우회하는 것도 하나의 방법입니다. 또한 비밀번호는 모두 암호화 과정을 거쳐 DB에 저장이 됩니다. 해시알고리즘 이라고 하며, 짜여진 로직에 의해 비밀번호를 쉽게 알 수 없도록 암호화 해버립니다. 예를들어 비밀번호가 1234 이면 hj4Ssdf23$adsf$%!@xx <- 이런식으로 암호하 해서 DB에 저장이 된다는 의미입니다. 그럼 암호하된 비밀번호는 풀 수는 없나? 라고 생각할 수 있습니다. 풀어 버릴 수 있습니다. 해커의 기술력에 의해 좌우가 되며, 늘 그랬듯이 창 과 방패의 대결에 승자는? 다들 아실거라 생각합니다. 관리자 권한을 얻기위해 코드 인젝션을 하거나, 백도어를 시스템에 심거나, 감시 프로그램을 설치하는 등 다양한 기법이 있지만 여기서 구체적인 방법론에 대해선 다루지 않겠습니다 검색과 관련문서 공부를 통해 자신만의 기술력을 쌓으시길 바랍니다.

 

 

마치며, 해킹 기초에 대한 내용은 정말 많습니다. 처음 해킹 공부를 시작하시는 분들을 위해 대략적인 공부와 접근방법에 대해서 알아보았습니다. 저도 예전에 관심이 있어 공부를 했었는데, 솔직히 공부할게 너무 많습니다. 해킹 공부에는 지름길은 없는듯 합니다. 쉽게 접근할 수 있는 다양한 툴들이 있지만 프로그래밍 언어라던지 네트워크에 전반적인 지식이 없는 상태에서, 해킹 공부를 좀 더 깊게 들어가면 쉽게 포기하거나 이해를 할 수 없습니다. 꼭 해킹 기초에 관한 전반적인 지식을 잘 쌓으시고 실전 해킹에 접근하시기 바랍니다.


감사합니다.

'IT 정보 기술' 카테고리의 다른 글

USB C타입에 대해 알아보기  (0) 2016.10.20
IPv6 간단하게 알아보기  (0) 2016.10.18
BIOS와 UEFI에 대한 이해  (3) 2016.10.16
마우스 DPI와 게임의 관계  (0) 2016.10.10
NFC 사용법 쉽게 알아보기  (0) 2016.10.08

+ Recent posts