해킹 초기 기본 진행 절차

해킹 초기 기본 진행 절차

장애는 진행 절차가 아닌 원인이 존재한다. 그에 반해 해킹은 진행하는 방식이라는 다양한 경로가 존재한다. 그럼 여기서 해킹의 일반적인 진행 방식에 대해 얘기해 보고자 한다. 이 진행 절차의 이해를 통해, 시스템을 보호할 수 있는 방안을 모색하고 시스템의 취약점이 무엇인지, 앞으로 어떠한 부분들을 수정해야 하는지에 대해서도 함께 고민해 보기 바란다.

해킹의 전체 과정을 요약해서 애기하자면, 다양한 경로의 사전 조사와 취약점 조사가 진행되고, 취약점을 통해서 시스템 권한을 탈취, 해킹의 목적인 백도어를 설치하면 해킹이 마무리 된다.

그리고 해킹을 크게 3단계로 나눌 수 있는데, 정보 수집 단계와 취약점 확인 단계, 그리고 관리자 권한 획득 단계가 있다.

다음 그림은 해킹의 진행 절차를 요약하여 순서도로 표현한 것이다.

해킹 초기 기본 진행 절차

그림에서 볼 수 있듯이 시스템 공격의 시작은 대부분 서버와 연결되는 네트워크라고 할 수 있다 (우리가 이 책에서 주의 깊게 관찰해야 되는 영역인 네트워크이지만, 해킹 전체를 두고 보자면 물리적인 공격이나, 문서 등 여러 경로가 존재할 수 있다. 따라서 해킹의 공격 범위는 한정 지어서는 안 된다). 우리가 얘기하는 서버라는 것은 서비스를 제공하는 시스템으로, 서비스를 위해 고객과 네트워크를 통해 연결되어 있기 때문에, 네트워크에 대한 보안이 1차적 보안과 동시에 최우선적으로 중요하다(4부 25장 네트워크 보안에서 이 부분에 대해 다룬다).

만약 첫 번째 저지선인 네트워크에서 방어를 하지 못한다면, 공격자는 손쉽게 서버의 정보를 확인, 접근하여 취약점 확인을 진행할 수 있기 때문에 서버 보호를 위해 더 많은 기술을 도입해야 할 것이다. 따라서 네트워크에서 정보를 수집하거나 접근할 수 없도록 보안을 강화해야 한다.

이러한 해킹 절차를 우리가 이해하여야 하는 이유는, 공격 가능한 경로를 사전에 확인하고, 해당 경로를 방어할 수 있는 방안을 구축할 수 있는 것이다. 하나의 예로, 만약 여러분의 기업에서 온라인 게임과 같이 프로그램을 배포 한다면, 정보 수집 단계에서 프로그램 역분석을 통한 정보 수집 활동을 보호할 방안을 마련해야 한다는 것을 알 수 있다.

그럼 각 단계에 대해 조금 더 자세히 알아 보자.

1 정보 수집 단계

정보 수집 단계는 원격지에서 시스템과 연결된 경로를 이용하여, 서비스 유형, 서버 정보, 그리고 연결 가능한 서비스등, 공격하기 전에 시스템 정보를 수집하는 단계이다. 이러한 수집 방법은 구글링과 Nmap과 같은 네트워크 스캐닝 방법이 많이 사용되며, 관리되지 않는 포트가 존재한다거나 비공개 사이트 정보가 노출되었을 때, 취약점을 해당 경로를 통해 공격을 시도할 수 있다.

[그림] 저자가 운영하는 사이트에 대한 구글에 노출된 페이지들

위와 같은 site라는 검색 구문을 이용해 구글에서 색인한 특정 사이트의 모든 내용을 확인할 수 있다. 이처럼 간단하면서도, 해당 사이트에서 예상하지 못한 많은 정보를 얻을 수 있다. 예를 들어 저자 사이트에 저자가 따로 감상하기 위해 올려 놓은 레이싱 모델들의 그림이 있었다면, 해당 정보도 구글을 통해 어떤 레이싱 모델을 좋아하는지, 저자가 어디를 주로 가는지, 어느 사는지 등등, 내 취향이나, 성품 등 개인 정보를 확인할 수 있었을 것이다. 더욱이 기업을 대상으로 했다면, 기업에서 미쳐 삭제하지 않거나, 관리되지 않은 상태로 운영되는 사이트라던가 게시판 등등 뜻밖의 정보도 쉽게 얻어 낼 수 있다.

구글링 취약점이 발생하는 이유는 구글 및 여러 사이트들이 검색봇을 이용하여 웹사이트의 정보들을 자동으로 수집하는데, 이때 서버에 Robots.txt와 같은 파일로 제한 설정을 하지 않으면, 수집 가능한 모든 페이지를 수집하게 된다.

따라서 보호를 위해서도 Robots.txt에 대한 설정을 해둘 필요가 있다. 아래 이 링크를 확인해 보면 검색봇 설정하는 방법에 대해서 잘 설명되어 있다.

http://googlekoreablog.blogspot.com/2008/04/robotstxt.html

이 외에도 네트워크로 연결 가능한 포트 정보를 확인하는 방법도 정보 수집 단계에서 유용하다.

연결 가능한 포트 정보를 통해 운영체제의 종류, 서비스 종류를 유추할 수 있기 때문에 관련 취약점 공격이 가능하게 된다. 이러한 수집 활동을 위해 사용되는 도구로 다양한 각도로 네트워크 검색을 진행하는 Nmap은 너무나도 유명한 네트워크 정보 수집 도구이다(4부에서 Nmap에 대해 진행한다).

[그림] 네트워크 스캔 도구로 유명한 Nmap, 스캔만으로 디바이스 타입을 구분할 수 있다

이외에도 유용한 네트워크 정보 수집 도구들이 많으니 확인해 보기 바란다.

예로 아래 도구는 네트워크 서브넷 단위로 연결가능 포트를 조사할 때 유용한 Advanced Port Scanner이다. 아래 경로에서 다운로드 하여 사용할 수 있다.

http://www.radmin.co.kr/download/utilities.php

[그림] 네트워크 대역 검색에 유용하다

이렇게 네트워크 정보 수집을 통해, 공격하고자 하는 서버의 정보를 충분히 수집하였다면, 수집된 정보를 이용하여 해당 서비스의 취약점을 확인하게 된다.

2 취약점 확인(공격) 단계

가장 기본적인 방법은 앞서 정보 수집 단계에서 확인한 서비스 종류에서 서버에서 운영 중인 서비스의 버전별 취약점을 이용하는 방법이 대표적이라고 할 수 있다.

각 서비스들은 운영되는 플랫폼에 따른 취약점이 존재하는데, 우리가 운영하는 시스템과 서비스의 보안 업데이트를 신경 써야 하는 이유가 바로, 운영중인 서비스 자체의 취약점을 이용하여 손쉽게 공격을 할 수 있기 때문이다(http://cve.mitre.org/cve/에서 발표된 전체 취약점 정보를 얻을 수 있다).

↓웹서비스가 아파치이며, PHP 5.2.17버전을 사용하고 있음을 확인하였다.

[그림] PHP 버전별 다양한 취약점을 확인할 수 있다

 

이러한 취약점 이외에도, 서비스별 무차별 대입 공격을 시도하여 시스템에 접근을 시도할 수도 있다.

이미 공개된 도구인데, 아래 도구는 HTTP, POP3, FTP, SMB, Telnet 등 잘 알려진 네트워크 서비스의 로그인 방식을 인식해서 이를 무작위 대입 공격을 시도할 수 있다.

이 Brutus라는 도구는 다음 사이트에서 다운로드 가능하다.

http://www.hoobie.net/brutus/

[그림] 한때 무차별 공격으로 유명한 도구였던 Brutus

Brutus와 유사한 도구로서, 더 많은 프로토콜을 지원하는 또 다른 도구인 Bruter는 현재 많이 쓰이는 무차별 공격 도구이다. 이 도구는 다음과 같은 프로토콜에서 이용할 수 있다.

FTP, HTTP, IMAP, MSSQL, MySQL, PgSQL, POP3, SIP, SMB, SMTP, SNMP, SSH2, Telnet, VNC, Web Form

이 중에서는 SNMP와 같은 경우 프로토콜 자체만으로는 로그인 시도 횟수를 제한을 할 수 없어, SNMP에 무차별 공격에 많이 사용되었었다. 따라서 포트를 연결할 네트워크 범위를 한정하여 설정하여야 한다(앞서 명시했듯, 4부 네트워크 보안에서 다룬다).

http://sourceforge.net/projects/worawita/

[그림] 더 많은 기능을 제공하는 Bruter

그리고 뉴스에서 자주 등장하는 서비스 거부(DoS, Denial of service)를 위해 공격하는 경우도 발생할 수 있다.

아래 도구는 Mcafee에서 운영하는 Foundstone에서 제공하는 도구로 네트워크 성능 테스트 용도로 사용되는 UDP 패킷을 생성하는 도구이다.

http://www.mcafee.com/us/downloads/free-tools/udpflood.aspx

아래 도구를 이용하여 서비스 중인 UDP 포트에 무리를 주어 정상적인 서비스가 불가능하도록 조정할 수 있다.

[그림] UDP 서비스 포트 공격이 가능하다

대중적으로 많이 사용하는 웹 서비스의 취약점을 공격하는 방법도 많이 이용된다. 웹은 공개적으로 시스템과 연결되는 지점인 만큼 공격도 제일 많이 이루어진다.

웹 서비스 취약점이 위험한 이유는 데이터베이스와 시스템 접근 등이 가능한데, 서비스 포트를 이용하므로 차단하는 게 쉽지 않기 때문이다. 특히 웹쉘(웹서비스를 통해 서버의 제어 권한를 장악하는 프로그램)과 SQL 인젝션의 취약점을 이용한 공격인 경우 시스템 장악은 물론 데이터베이스의 중요 정보까지 해커에게 넘어갈 수 있기 때문에 각별히 신경 써야 한다.

[그림] Phpspy라는 웹쉘을 업로드 하여 서버 조작이 가능하다

[그림] 또 다른 유명 웹쉘 C99Shell

웹쉘은 웹 공격 중 가장 위험하다. 웰쉘이 업로드 되어 동작한다면, 서버의 권한은 해커에게 넘어간 것과 다르지 않다. 따라서 이러한 웹쉘 동작에 대해 테스트를 위해 아래 사이트에서 Phpspy를 다운로드 한 후, 앞서 1부에서 웹 스트레스 테스트를 위해 설치한 웹 서비스의 홈 디렉토리에 Phpspy를 업로드하여 테스트 해보고 권한에 따른 방어 방법에 대해서도 고민해 보는 것도 좋은 생각이라 할 수 있다(웹쉘은 IIS 구성 옵션의 스크립트 실행 권한, 유닉스에서는 파일 실행 권한이 없으면, 실행 할 수 없어 시스템을 보호할 수 있으므로 필요한 디렉토리 이외에는 실행 권한을 제한하여야 한다).

http://www.4ngel.net

[그림] Phpspy 웹쉘 제공 사이트

이 외에도 SQL 인젝션 공격, CSRF 공격 등은 너무도 유명하므로 여기서 거론하지 않겠다.

이러한 취약점들은 사전에 점검과 차단을 하지 않는다면, 시스템의 권한은 쉽게 사용자에게 넘어가게 된다.

[그림] SQL 인젝션 도구로 유명한 Pangolin

다행히 웹 취약점을 해결하기 위해 OWASP(Open web application security project)에서 위험한 웹 취약점에 대해 알리고, 테스트하는 방법을 아래 URL에서 제공하고 있다.

https://www.owasp.org/index.php/Category:OWASP_Presentations에서 다운로드 하여 사전 테스트를 진행할 수 있는 자세한 가이드라인을 제공하므로 한 번 정도는 살펴보기 바란다.

그리고 SQL 인젝션에 대해서도 다루고 있으므로, 해당 홈페이지를 통해 웹 보안의 많은 도움을 받을 수 있을 것이다.

[그림] 일반 웹 공격 외에 SQL Injection 공격 방식과 방어책에 대해서도 상세하게 알려준다

위와 같은 공격을 통해 시스템을 장악하게 되면, 해커는 시스템에 다시 들어올 수 있는 경로인 백도어를 따로 만들어 두려고 할 것이다(백도어란 뒷문, 즉 일반 사용자, 관리자들이 모르는 시스템에 접근할 수 있는 뒷문을 만들어 놓고 해당 경로를 이용해 서버를 자유롭게 제어하게 된다). 이를 통해 사후 편리하게 시스템에 접근할 수 있게 될 것이다. 이 외에도 여러 구성 변경을 해커가 자기 입맛에 맞게 변경하였을 수도 있다. 이 상황이라면, 단순히 서버를 재설치 하는 것으로는 문제점 해결이 되지 않는다. 문제점 발생 원인을 해결하지 않은 상태로, 다시 시스템을 설치하여도 다시 취약점을 이용해 공격자는 백도어를 설치할 것이다.

Facebook Comments

Leave A Reply

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.