INTRO
이 글에서는,
웹보안을 공부하고 해킹을 실습해 볼 수 있는 툴을 알아보고 설치 방법을 간단히 안내 하고자 합니다.
사실 웹보안 시리즈를 연재하고자 마음을 먹고서는, 개요부터 쭉~ 한번 훓고 가려 했는데요.
개요 작성에는 시간이 좀 더 필요할 것 같아서, 바로 본론으로 들어갑니다.
중간에 틈이 나면 전반적인 개요을 한번 다뤄볼까 합니다.
미리 말씀드리자면,
개요에서는 웹 보안의 중요성이나 해킹사례, OWASP Top 10과 같은 국제적 참고자료와 웹 보안 관련한 국내 현황과 법률 사항 등 전반의 내용을 다룰 예정입니다.
사실 과거(2006년)에 웹 보안 글을 몇개 끄적인 적이 있습니다.
당시에서 큰 보부를 가지고 웹보안 전반을 다룰려고 했으나, 그러질 못했네요.
이번에는 인생의 숙제(?)라 생각하고 웹 보안 전반을 다뤄보고자 합니다.
과거 글들은 아래 링크를 참고하세요.(지금 다시 보니 글에 미숙한 점이 많이 보이네요 ^^;)
자 이제 본론으로 들어갑니다.
저의 개발 환경은 '64bit 윈도우 10 Pro' 환경입니다. 이 글에서 소개하는 툴들은 다른 환경(Linux, OS X)에서도 동작가능합니다. 다만 여기서는 윈도우 환경만 설명합니다.
많은 툴들이 있겠지만, 여기서는 앞으로 제가 진행할 웹 보안 Article에서 사용될 몇 가지에 대해서만 알아봅니다. 만일 여기서 소개되지 않은 툴을 제 글에서 다룬다면, 툴 설명을 별도로 추가하겠습니다.
참고로 이 글에서는 설치 과정을 세세하게 설명하지는 않습니다. 설치와 관련된 사항은 이미 인터넷에 많은 자료가 있으니 참고 바랍니다. 물론 그럼에도 설치 문제를 해결하지 못한 경우 편하게 댓글로 문의 주세요.
좋은 도구는 높은 생산성과 직결합니다. 아래 소개한 도구를에 익숙해지길 바랍니다.
---------------------------------------------------------------------------------------------------------------
1. XAMPP (Cross-platform Apache, MariaDB, PHP, Perl)
XAMPP는 APM(Apache, PHP, MySql) 환경구축을 한번에 할 수 있도록 하는 패키지 프로그램이다.
아래 설명할 DVWA 사이트가 PHP와 MariaDB로 구현되어 있는데, 이 사이트를 로컬 PC 구동시키기 위해서 APM 환경이 필요하다.
1.1 XAMPP 다운로드 및 설치
아래 사이트로 가서 XAMPP 설치파일을 다운로드 받는다.
각 OS 별로 설치 프로그램을 제공하는데, 필자의 경우 현재 시점의 최신 버전의 윈도우용 설치파일을 받아서 설치했다.
(현재 시점 최신 버전) XAMPP for Windows 7.3.0 (PHP 7.3.0)
다운받은 파일을 기본 설정으로 하고 '다음 > 다음 ..' 하여 설치한다.
(설치 과정중 Select Components 단계에서, 불필요한 환경을 제외할 수 있다. 필자 역시 Apache, MySQL, PHP외에 불필요한 것은 설치에서 제외 시켰다)
(그리고 설치 경로를 기억해 두자. 기본값으로 설치했다면 'C:\xampp' 일 것이다)
1.2 XAMPP Control Panel 을 통한 서비스 제어
XAMPP 설치가 완료되면 XAMPP Control Panel이라는 관리패널이 실행된다.
XAMPP Control Panel은 서비스들을 컨트롤 할 수 있는 관리 기능을 제공하는 프로그램이다.
(참고로 XAMPP Control Panel이 실행되면 윈도우 트레이 아이콘에 자동 추가 되므로 창을 닫아도 프로그램이 종료되는 것은 아니다. 프로그램을 종료하려면 트레이 아이콘을 우측 클릭하여 Quit 하면 된다.)
(또한 XAMPP Control Panel 프로그램을 종료(quit)한다고 해서 Apache나 MySQL이 같이 종료되는 것은 아니다. 이 프로그램은 말 그대로 편의성을 위해 별도로 제공되는 GUI 기반 프로그램일 뿐이다)
위 화면에서 보는바와 같이, Apache와 MySQL을 구동(Start)시키자.
브라우저에서 http://127.0.0.1 로 접속해보자. 다음 그림과 같이 XAMPP 대시보드가 로딩된다면 성공적이다.
1.3 설치 및 구동 실패 해결
설치 과정이나 설치 후 Apache, MySQL을 구동 시킬때 제대로 동작하지 않는 경우가 종종있다.
이는 대부분 XAMPP가 사용하는 포트와 서비스가 충돌되기 때문이다.
1.3.1 아파치 구동 실패
Apache 웹서버의 경우 기본 80포트를 사용하는데, 이미 로컬 PC에 80포트가 사용되고 있는 경우 Apache 웹 서버를 시작할 수 없다. (필자의 경우에도 로컬 PC에 IIS 웹서버가 동작중인데 80포트를 사용하는 사이트가 있어서 포트를 변경하였다.)
80 포트를 이용하는 서비스를 찾아서 포트를 변경하던지 해당 서비스를 중지 시키던지 한다.
다음 명령어를 통해 현재 로컬 PC의 포트와 서비스 PID를 확인할 수 있으니 참고하자.
netstat -ano
(XAMPP Control Panel 에서도 바로 포트를 확인할 수 있도록 기능을 제공한다. 관리 패털의 우측 상단에 있는 'Netstat' 버튼을 클릭하면 포트와 PID 확인이 가능하다.)
1.3.2 MySQL 구동 실패
로컬 PC에 MySQL이 이미 설치되어 있는 경우, path 관련 오류(MySQL Service detected with wrong path)가 나면서 MySQL이 구동되지 않을 것이다.
될수 있으면 기존 설치된 MySQL을 제거하는 것이 가장 단순한 해결 방법이다.
관리자 계정으로 cmd(명령프롬프트)를 실행하고 다음의 명령어로 해당 MySQL을 제거하면 된다.
(기존 MySQL에 있는 오브젝트들은 미리 백업 받아 두는 것이 좋다)
sc delete mysql
만일 기존에 설치된 MySQL과 XAMPP의 MySQL을 동시에 같이 사용하고 싶을 경우, 다음의 글을 참고하자. (포트와 서비스 명을 서로 다르게 하여 두개의 MySQL 인스턴스를 띄우는 방식이다.)
http://emjaywebdesigns.com/xampp-and-multiple-instances-of-mysql-on-windows/
1.4 DVWA를 위한 XAMPP 셋팅
1.4.1 dvwa 데이터베이스 생성
XAMPP 웹(http://127.0.0.1)에 접속하여 상단의 phpMyAdmin 메뉴로 이동한다.
phpMyAdmin은 웹으로 MySQL을 관리할 수 있는 프로그램이다. 상단의 '데이터베이스' 메뉴로 이동하여 dvwa라는 이름으로 새 데이터베이스를 만든다.
1.4.2 php.ini 파일 수정
'C:\xampp\php\php.ini' 파일에서 다음 값이 Off로 되어 있다면 On으로 변경하고 저장한다
allow_url_fopen=On
allow_url_include=On
이 설정이 필요한 이유는, dvwa 사이트에서 url include을 사용하기 때문이다.
Apache 웹서버를 재기동 하면 변경된 설정 값이 반영된다.
2. DVWA(Damn Vulnerable Web Application)
DVWA는 그 약자에서도 알 수 있듯이 의도적으로 취약하게 만든 웹 사이트이다.
보통 웹해킹을 공부하고 직접 시도해 볼려면 여의치가 않다. 임의의 공개된 사이트에 테스트로 해킹을 시도 했다가는 법률적 제재를 받을 수도 있다.
그렇다고 직접 개발하기도 만만치가 않다.
DVWA는 PHP/MySQL 기반으로 제작된 웹 애플리케이션으로, 웹 해킹 기술을 직접 실습하고 공격 대응 방안을 학습하기 위한 목적으로 제작되었다.
다음은 DVWA 사이트에서 발췌한 설명이다.
DVWA (Damn Vulnerable Web App)는 PHP / MySQL 웹 애플리케이션으로 취약합니다. 주요 목표는 보안 전문가가 법률 환경에서 자신의 기술과 도구를 테스트하고 웹 개발자가 웹 응용 프로그램을 보호하는 과정을 더 잘 이해할 수 있도록 지원하고 교사 / 학생이 강의실 환경에서 웹 응용 프로그램 보안을 가르치고 배우도록 돕는 것입니다 .
2.1 DVWA 다운로드 및 설치
아래 주소로 이동하여 DVWA-master.zip 파일을 다운로드 받는다
다운 받은 파일의 압축을 풀고 DVWA-master 폴더의 하위 내용물들을 모두 다음의 위치로 옮긴다
C:\xampp\htdocs\dvwa
(XAMPP 웹으로 접속 가능하도록 htdocs 폴더 하위에 dvwa라는 이름의 폴더를 생성하여 그 아래로 DVWA-master 폴더 내용을 이동(or 복사) 한다.)
파일들이 정상적으로 이동되었다면, 다음의 주소로 dvwa 사이트에 접속할 수 있다.
http://127.0.0.1/dvwa
위 주소로 최초 접근하면 다음과 같은 Setup 화면이 나오고 추가 설정을 해 줘야 한다.
여기서 빨간색으로 나온 부분을 모두 잡아줘야 사용이 가능해 진다.
reCAPTCHA key 가 설정되지 않아서 빨간색으로 표시되어 있다. 키를 발급 받는 방법을 알아보자.
2.2 reCAPTCHA key 발급 받기
DVWA에서 캡챠 관련 공격을 테스트 하기 위해 필요한 설정이다. reCAPTCHA 키를 받기 위해서 다음의 주소로 접속한다
www.google.com/recaptcha/admin
구글 계정으로 로그인해야 키 발급이 가능하다. 로그인 후 다음 그림과 같이 입력하고 폼을 제출한다.
폼을 제출하면 Site Key와 Secret key가 생성된다. 이 두 키 값을 dvwa 설정 파일에 등록해야 한다.
2.3 설정 파일 수정
먼저 config 폴더에 있는 config.inc.php.dist 파일 이름에서 '.dist'을 제거한다.
config.inc.php.dist --> (파일명 변경) --> config.inc.php
2.3.1 reCAPTCHA key 설정
config.inc.php 파일을 열어서 다음의 내용을 설정한다. 앞서 발급받은 key들을 다음과 같이 알맞게 지정한다.
$_DVWA[ 'recaptcha_public_key' ] = '(Site Key 값 입력)';
$_DVWA[ 'recaptcha_private_key' ] = '(Secret key 값 입력);
2.3.2 DB 접속 패스워드 수정
config.inc.php 파일의 DB 패스워드를 다음과 같이 패스워드를 공백으로 변경한다.
$_DVWA[ 'db_password' ] = '';
이제 dvwa 설정이 완료되었다. 앞서 접속한 dvwa 설정화면을 새로고침 해보면 reCAPTCHA key 가 녹색으로 표시된것을 확인할 수 있다.
2.4 데이터베이스 생성
마지막으로 dvwa 데이터베이스에 관련 오브젝트들을 생성한다.
설정화면에서 'Create / Reset Database' 버튼을 클릭해서 관련 테이블등을 생성하자
dvwa로 해킹 실습을 해 보다가 데이터를 초기화 하고 싶으면 언제든이 Reset 할 수도 있다.
2.5 DVWA 사이트 접속
이제 DVWA를 위한 모든 설정이 완료되었다.
http://127.0.0.1/dvwa/ 로 접속하여 사이트를 확인해 보자
로그인 창이 뜨면 admin / password로 입력한다. 다음 그림과 같이 DVWA 사이트를 확인할 수 있다.
사이트를 한번 쭉 훓어 보기 바란다.
3. Burp Suite 설치
웹 사이트 테스트 및 해킹 용도로 자주 사용되는 웹 프록시 프로그램이다.웹 요청을 프록시를 경유하도록 만들어서, 중간에 패킷을 가로채어 조사하고 변조해 볼 수 있다.
Burp Suite는 프록시 기능을 넘어, 실제 웹 해킹을 자동화 해서 수행할 수 있는 기능도 제공한다.
유료와 무료 버전이 존재하며 우리는 무료인 커뮤니티 버전을 설치한다.
3.1 Burp Suite 다운로드 및 설치
아래 주소로 이동하여 커뮤니티 버전의 설치 파일을 다운로드 받아서 설치한다.
https://portswigger.net/burp/communitydownload
3.2 브라우저 프록시 설정
3.2.1 프록시 설정 확인
Burp Suite는 기본 8080 포트로 프록시 역할을 수행한다. 다음 그림은 Burp Suite를 실행해서 Proxy 옵션을 확인하는 화면이다. 여기서 프록시 리스닝 포트를 변경할 수 있지만 여기서는 기본값을 사용한다.
3.2.2 브라우저에 프록시 설정하기
필자가 사용하는 구글 크롬 브라우저를 기반으로 프록시 설정을 알아본다.
크롬 브라우저의 설정화면으로 이동한다. 상단의 '설정 검색'에서 '프록시' 라고 검색한다.
'프록시 설정 열기'를 하여 LAN 설정에서 프록시 서버 사용을 활성화하고 IP(localhost)와 포트(8080)를 입력한다.
이렇게 브라우저에 프록시가 설정되면, 이제부터는 모든 웹 요청과 응답은 이 프록시를 경유하게 된다.
* 주의
웹 해킹을 실습하지 않을 때는 프록시 서버를 비활성화 시켜 놓는 것이 좋다.
그렇지 않으면 일반 사이트 접속이 원활하지 않을 수 있다.
이로써 기본적인 툴 설치와 환경 설정이 완료 되었다. 이제부터 본격적으로 웹보안 공부를 시작해 보도록 하자
수고 하셨습니다~~~~~~~~~~~~~~~~
'SW개발' 카테고리의 다른 글
[웹보안] SQL Injection (5) | 2019.01.28 |
---|---|
[웹보안] 브루트 포스(BRUTE FORCE) 공격 (8) | 2019.01.23 |
설정 파일의 외부화(Spring Cloud Config) (5) | 2018.03.29 |
SPA와 Social sharing(소셜 공유) (20) | 2017.06.26 |
좋은 소프트웨어를 위한 기본기 (6) | 2016.12.14 |