w3af 로고 |
W3AF 는 웹 응용 프로그램의 공격 및 감사 프레임워크이다. W3AF 프로젝트의 목표는 모든 웹 어플리케이션의 취약점을 발견하고, 발견된 취약점이 악용되기 전에 웹 응용 프로그램을 보호할 수 있도록 하기 위해 만들어졌다. W3AF는 SQL 인젝션, 크로스 사이트 스크립팅, 추측 가능한 인증(Guessable credentials), 처리되지 않은 응용 프로그램 오류, PHP 설정 실수 같은 취약점을 식별한다.
1.1. W3AF ARCHITECTURE
W3AF 는 코어와 플러그인 두 개의 주요 부분으로 구분된다. 이는 핵심 프로세스를 조정하고 취약점을 찾으며, 취약점을 활용하는 플러그-인스에 의해 소모되는 특징을 제공한다. 또한, 플러그인들을 연결하고 서로 지식 기반을 사용하여 정보를 공유한다.
플러그인 유형에 따른 분류 :
- Crawl
- Audit
- Grep
- Auth
- Output
- Mangle
- Evasion
- Bruteforce
2. W3AF의 특징
특정 플러그인에 대한
정보를 알고 싶다면 help
pluginName
형식을 커맨드에 입력하면 된다. 예를 들어 discovery
플러그인에 대하여 알고 싶다면, help discovery라고
입력한다. 또한 특정 플러그인에 대한 정보를 알고 싶다면, plugintype
desc pluginname의 형식을 커맨드로 입력하면 된다. 예를 들어 discovery 타입 플러그인의 spiderMan 플러그인에 대한
정보가 알고 싶다면, discovery
desc spiderMan이라고 입력한다. 따라서 이 절에서는 몇 가지 플러그인에
대한 설명을 서술한다.
2.1. OUTPUT 플러그인
스캔 결과를 저장하기 위해 사용하는 플러그인으로, 우리가 출력하기 바라는 form을 결정하는데 도움을 준다.
스캔 결과를 저장하기 위해 사용하는 플러그인으로, 우리가 출력하기 바라는 form을 결정하는데 도움을 준다.
output 플러그인 사용 |
저장 포맷은 xml/text/csv/ console/emailReport 등을 지원한다. 이 포맷에 우리는 filename, verbosity 등 다양한 파라미터를 설정할 수 있다.
※ 스캔 결과에 대해 자세한 리포트를 원할 경우 verbose 파라미터 값을 Ture로 설정해준다. [set verbose Ture]
2.2. GREP 플러그인
grep 플러그인은 요청과 응답 안에 있는 흥미로운 정보들을 찾아낼 때 사용한다. 타겟 웹 어플리케이션에 대해 모든 요청과 응답을 분석하여, 에러(Error), 쿠키(Cookies), 이메일(E-mail), 설명(contents)등의 유용한 정보를 찾을 때 사용한다. 그러나 grep 플러그인은 오직 요청과 응답을 분석하는 것만이 가능하기 때문에 discovery 플러그인이 함께 사용될 수 있게 하는 것이 중요하다.
grep 플러그인 사용 |
2.3. BRUTEFORCE 플러그인
기본적인 HTTP 로그인/ 로그인 폼을 대상으로 무차별 대입 공격(Brueteforece Attack)을
진행한다.
※ 무차별대입에 사용되는 password 파일과 user 파일은 core/controllers/bruteforce에 각 password.txt / user.txt로 존재한다. 사용자가 해당 파일에 문자열을 추가하거나 별도의 패스워드파일과 유저파일을 가지고 있다면, [config]명령어를 사용하여 패스워드파일과 유저파일의 경로를 별도로 지정해 주면 된다.
2.4. AUDIT 플러그인
audit 플러그인 사용 |
Discovery Plugin에 의해 생성된 내용을 활용하여, 대상이 되는 웹 서버와 웹 어플리케이션의 취약점을 찾아 낼 때 사용하는 플러그 인이다. 흔히 알고 있는 크로스사이트스크립트(XSS), SQL Injection, 파일업로드(FileUpload)공격, 버퍼오버플로우(Buff Over Flow)등이 이곳에 포함된다.
2.5. EVASION 플러그인
evasion 플러그인 사용 |
해당 플러그인은 IPS(Intrusion Prevention System)의 탐지를 우회하기 위해 요청을 변경할 때 사용하는 플러그인이다. 예를들어 탐지를 피하기 위해 Hex포맷으로 URL을 무작위로 인코딩을 하기위해 rndHecEncode플러그인을 사용할 수 있다.
2.6. CRAWL 플러그인
crawl 플러그인 사용 |
Crawl 플러그인은 크롤링, URL Fuzzer 등을 이용하여 사용자가 알고 있는 URL 이외에 더 많은 URL을 찾는데 도움을 주거나, 대상 서버 또는 WAS 서버가 피싱 사기에 사용되는지 확인하기 위해 phishtank.com 의 데이터베이스를 검색 하는 등에 사용하는 플러그인이다.
2.7. MANGLE 플러그인
mangle 플러그인 사용 |
사용자가 필요로 할 때 요청과 응답을 조작하기 위해 사용하는 플러그인 이다. Mangle Plugin에는 요청과 응답을 수정 하기 위해 사용하는 sed(Stream Editor)라는 비 대화모드(Non-Interactive)라인 단위 편집기만을 플러그인으로 존재한다.
2.8. AUTH 플러그인
auth 플러그인 사용 |
취약점 스캔을 하는 동안 로그인을 해야만 접근 가능한, 웹 어플리케이션을 검색 할 수 있다. W3AF가 로그인 폼을 만나게 되면 추가적인 정보를 탐지하기 위해 자동으로 로그인을 해야 할 필요가 생기는데, 이때 사용되는 플러그인이 auth Plugin이다. 사전에 미리 auth Plugin을 사용하여 자세한 로그인 정보를 설정해 두면, W3AF가 로그인 폼을 만나면 자동으로 설정된 내용을 토대로 로그인을 시도한다.
3.1 W3AF 커멘드
1) 콘솔 실행
w3af_console 실행 |
콘솔 실행 명령어를 입력하면, 몇 초 동안 w3af 콘솔이 동작하지 않는 것처럼 보일 수 있다. 하지만 눈에 보이지 않을 뿐 정상적으로 빌드를 하고 있다. w3af 콘솔이 빌드가 완료되면 위에서 보듯이 명령어를 입력할 수 있는 프롬프트 [w3af >>>] 가 생성된다.
2) help 명령을 통해 사용 가능 명령어를 확인
help 명령어 사용 |
우리는 w3af 콘솔에서 사용
가능한 명령어가 어떤 것이 있는지 알지 못한다. [help] 명령어을 이용하면 사용 가능한 명령어 리스트를
확인 할 수 있다. 참고로 [help] 명령어는 다른 명령어
들과 같이 사용이 가능 하다.
3) 공격 target 설정
target 플러그인 사용 |
웹 취약점 스캔을 진행할 대상을 설정할 때는 [target] 명령어를 이용한다. [target] 명령어를 입력하면, 명령어 프롬프트는 [w3af/config:target>>>]로 변경된다. 명령어 프롬프트를 보고 현재 어떤 명령어를 사용하여 설정을 하고 있는지 확인이 가능하다.
[target] 명령어를 이용하여 대상을 설정 해야 해야 한다. [target]을 이용하여 사용 가능한 명령어를 확인하기 위해 [help] 명령어를 이용할 수 있다.
target을 이용해 사용 가능한 명령어 확인 |
help 명령어를 통해 살펴본 주요 명령어는 다음 표와 같다.
표 target을 이용해 사용 가능한 명령어 |
set 명령어와 target 명령어를 사용한 target 설정 |
[set] 명령어는 [set + parameter + value] 순으로 입력하여 사용한다.
4) Plugin 설정
플러그인 사용 정보 확인 |
w3af 는 output, grep, bruteforce 등 9개의 플러그인을 지원한다. [help] 명령어를 이용하면, 각 플러그인의 사용 방법에 대한 정보를 확인할 수 있다.
특정 플러그인의 자세한 사용 정보 확인 |
특정 플러그인의 사용 방법에 대한 정보를 확인은 [help 플러그인명]을 입력한다.
하위 플러그인 리스트 확인 |
9개의 플러그인은 각각 하위 플러그인들이 존재한다. 하위 플러그인 리스트를 확인하기 위해서는 플러그인명만 입력한다.
특정 하위 플러그인에 대한 정보 확인 |
[desc] 명령어를 사용하면, 하위 플러그인 중에서 특정 플러그인에 대한 정보를 확인할 수 있다.
하위 플러그인 세부 설정 |
하위 플러그인들 중에서 conf가 YES로 표시된 플러그 인들은 세부 설정이 가능하다. 이때 위의 그림처럼 [config]명령을 사용하면 된다.
플러그인을 이용할 때는 단일 플러그인만 이용해서 진행하는 경우보다, 여러 개의 플러그인을 이용하여 한번에 작업하는 것이 효과적이다. [grep + 플러그인명 하위 플러그인명, 하위 플러그인명] 으로 다수의 플러그인을 활성화시키고 [list 플러그인명(하위 플러그인명이 아님) enabled]로 설정된 하위 플러그인을 확인한다. [플러그인명+ all] 을 입력하면, 해당 플러그인에 존재하는 모든 하위 플러그인이 활성화가 된다.
참고로, 플러그인 해제 방법 은 [플러그인명 ! + 제거하려는 하위 플러그인명] 을 입력 하거나, 활성화가 되어 있는 모든 플러그인을 제거 하려면, [플러그인명 !all]을 입력한다. 활성화가 되어있지 않은 플러그인을 확인하는 방법은 [list 플러그인명 disabled ]를 입력한다. 그리고 활성화되어 있지 않은 플러그인의 경우 스캔 작업에서 제외 된다.
3.2. W3AF GUI
1) GUI 실행
w3af_gui 명령어 입력 |
w3af_gui 명령을 입력하면 다음과 같은 메인화면이 나타난다.
w3af gui 메인화면 |
w3af_gui 에서 먼저 살펴 볼 부분은 [profile] 이다. profile 은 사용자가 특정한 시나리오를 가지고, 시나리오에 알맞게 플러그인을 미리 정의 할수 있다. 기본적으로 w3af 에서 아래와 같이 프로파일을 제공하고 있으며, w3af에서 제공하는 프로파일을 이용해서 취약점 점검을 진행 할 수 있다.
profiles 탭 확인 |
- empty_profile
플러그인이 선택되어 있지 않은 상태를 프로파일로 만들어 둔 것이다. - OWASP_TOP10
취약점 점검 대상 웹 어플리케이션에 대해 OWASP 에서 정의한 가장 일반적인 취약점을 검사 할 수 있도록 플러그인을 정의해 두었다 - aduit_high_risk
취약점 점검 개상 웹 어플리케이션에 대해 OS 명령어 사용과 같이 매우 위험한 취약점을 점검할 수 있도록 플러그인을 정의해 두었다. 해당 취약점은 향후 웹 어플리케이션을 완전히 손상시킬 수 있다. - bruteforce
웹 어플리케이션에 대해 무차별 대입 공격을 수행할 때 사용할 수 있도록 무차별 공격과 관련된 플러그인을 정의해 두었다. - fast_scan
취약점 점검 웹 어플리케이션에 대해 빠르게 스캔하여, 필요 정보를 획득할 수 있도록 플러그인을 정의해 두었다. - full_audit
취약점 점검 대상 웹 어플리케이션에 대해 전체 검사를 하여, 보다 많은 정보를 획득할 수 있도록 플러그인을 정의해 두었다. - full_audit_spider_man
취약점 점검 대상 웹 어플리케이션에 대해 가능한 많은 정보를 획득하도록 플러그인을 정의해 두었다. - sitemap
취약점 점검 대상 웹 어플리케이션의 전체 구성도를 만들 수 이또록 플러그인을 정의해 두었다. - web_infrastructure
취약점 점검 대상 웹 어플리케이션의 Fingerprint를 전문적으로 진행할 수 있도록 플러그인을 정의해 두었다.
2) 프로파일 생성
new 를 클릭하게 되면 profile 란에 생성한 프로파일이 생성되어 있는것을 확인 할 수 있다. 새로 생성한 프로파일은 플러그인이 활성화 되어 있지 않아 바로 사용할 수 없다. 생성한 프로파일을 클릭해서 사용자가 원하는 시나리오나 환경에 맞게 클릭하여 활성화 해준다.
원하는 플러그인 선택
|
원하는 플러그인을 모두 선택 하였으면, 메뉴에서 profiles - save를 클릭 또는 상단의 저장 아이콘을 클릭하여 설정한 내용을 저장한다.
설정한 내용 저장
|
프로파일 생성을 마쳤으면, 점검 대상 URL 을 입력하고
start를 클릭한다.
취약점 점검을 진행 하면서 발생하는 모든 내용들은 Log 탭에서 확인
할 수 있으며 보여지는 내용은 색으로 표시하여 알아 보기 쉽게 구분하고 있다.
- 빨강색: 설정한 플러그인에 의해 취약점이 발견된
내용
- 파랑색: 일반적인 정보
- 갈 색: 에러 메시지
- 파랑색: 일반적인 정보
- 갈 색: 에러 메시지
또한
취약점 점검을 진행하는 동안 콘솔에서는 아래 그림과 같은 내용을 볼 수 있다.
취약점 점검 시작 후 콘솔 화면 |
찾은 취약점 결과는 아래 그림과 같이 Results 탭에서 확인 할
수 있다.
찾은 취약점 결과 |
[출처]
http://en.wikipedia.org/wiki/W3af
http://c8korea.blogspot.kr/2013/01/w3af-app.html
http://darksoulstory.tistory.com/366
http://chogar.blog.me/220172398751
http://c8korea.blogspot.kr/2013/01/w3af-app.html
http://darksoulstory.tistory.com/366
http://chogar.blog.me/220172398751
댓글 없음:
댓글 쓰기