남기면 좋잖아

5장 취약점 평가 단계 본문

Penetration testing/Kali Linux

5장 취약점 평가 단계

Beautiful Hugo 2017. 5. 26. 03:15
반응형

- Contents -



5.1 서비스 취약점 수집

5.2 CMS 서비스 취약점 진단






오늘은 취약점 평가 단계에서는 어떤 도구를 사용하는지 알아 볼텐데요. 취약점 평가 단계는

 자동 스캔 취약점 도구를 활용해 외부에 노출돼 있는 웹 애플리케이션 서비스 진단, 관련 서버 진단을 수행/평가하는 단계

라고 합니다 ㅎㅎ


여기서부터는 주의할 점이 모든 도구는 대상 서버/네트워크/서비스에 영향을 줄 수 있으니 불법적인 행위로 판단되기 때문에 꼭! 실습환경에서 하셔야 된다는 점입니다.





5.1 서비스 취약점 수집



서비스에서는 기본적으로 발생하는 취약점에 대한 관리, 버전 관리, 보안상 지켜야 할 부분들에 대해 자세히 알아 보겠습니다.


서비스 취약점 수집 단계는 취약점 자동 스캔 진단, 네트워크 취약점 자동 수집, 웹 애플리케이션 취약점 자동 수집, 데이터베이스 취약점 자동 수집 단계등 대부분 자동 점검 도구와 취약점 정보 사이트를 이용해 이뤄지는 단계입니다.




5.1.1 DirBuster : 디렉터리 구조 파악


DirBuster는 일종의 디렉터리와 파일 정보 수집 도구로, 웹/애플리케이션상의 숨겨진 파일이나 디렉터리들을 브루트포스 방식으로 검출해 공격 팩터를 찾는 멀티스레드 자바 애플리케이션입니다.


터미널에 dirbuster 라고 치시면



이런 GUI 창이 나옵니다.


1. 타겟 웹사이트의 URL을 기입하고 반드시 URL 뒤에 포트도 기입해줍니다


2. Work Method 옵션은 타겟 웹사이트의 브루트포스에 사용할 HTTP메소드를 설정하는 부분


3. 브루트포스에 사용할 스레드의 개수 지정


4. 문자열 파일 지정. (2017.01 amd64 칼리리눅스 기준 /usr/share/dirbuser/wordlists/ 에 파일들이 있습니다.)


5. 브루트포스 옵션지정. 특정 디렉터리부터 시작하게 설정할 수 있습니다.




그리고 Start를 하게되면 브루트포스를 실행하는 모습을 볼 수 있습니다.

저는 오리지날 리스트인 directory-list-1.0.txt 로 취약서버에 공격을 해봤는데, 결과물이 예상외로 많이 나왔습니다.


그리고는 List나 tree view로 사용자 입맛대로 보시면 될것 같습니다.



브루트포스 공격이 끝나고나면 Report를 클릭합니다.


그리고 본인이 원하는 디렉터리를 지정하고 Generate Report를 누르면 심플한 보고서가 생성됩니다.




5.1.2 Nikto : 서비스 취약점 수집과 평가



Nikto는 오픈소스로 웹 서버와 애플리케이션에 대한 취약성을 자동으로 점검해주는 도구입니다.

업데이트도 정기적으로 되고 있으며, GUI 환경보다 빠른 응답을 하기 때문에 빠르게 적용 할 수 있는 장점이 있다고합니다.


옵션은 이렇게 됩니다.


 옵션

설명 

-config(c) 

config 파일을 지정, 기본 설정 값을 포함한 nikto.conf 파일을 참고 

-host(h) 

스캔을 수행할 웹 서버 주소 

-Cgdirs(C) 

스캔할 CHI 디렉터리를 설정 none, all, /cgi 처럼 특정 폴더의 지정도 가능. all을 권장.

-output(o) 

결과를 출력할 파일 지정 

-Single(s) 

한 개씩 옵션을 지정해주면서 스캔을 수행 

-cookies 

쿠키가 있으면 적용 

-evasion 

IDS를 우회하기 위해 URL을 인코딩 

-Format 

결과 파일의 포맷 지정. txt, html, csv 가능. -output과 같이 사용 

-id 

호스트 인증이 필요한 경우 id:Password 형식으로 지정 

-port(p) 

스캐닝할 포트 지정 

-ssl  

https(ssl)를 이용하는 홈 페이지 스캔 

-vhot 

가상 호스트를 사용 

-update 

nikto 취약점 진단 패턴 업데이트 


일단 예제로, 대상 IP 주소의 해당포트 번호를 대상으로 CGI 디렉터리를 모두 설정하고, 결과의 포멧 방식은 html 방식으로 지정 후 결과값은 result.html이고, 인증이 필요한 웹 서비스이므로 root/root 로 설정하겠습니다.



결과가 금방 나오네요. 이번에도 역시 Metasploitable 대상으로 스캔중인 모습입니다.


실행이 끝나면 resutl.html 파일이 생성되어있고, 열어보면 각각의 취약점들이 나열되어있습니다.

이렇게 Nikto 취약점 진단만을 이용해 다양한 취약점을 판단할 수 있었습니다.






5.2 CMS 서비스 취약점 진단



CMS는 'Content Management System'의 약자로 블로그나 이력 관리 시스템 등에 활용할 수 있습니다. 워드프레스나 줌라가 대표적이죠. 국내에서는 워드프레스가 일반인들에게 많이 알려졌습니다. 

대부분 공개돼 있는 플랙폼이기 때문에 정기적으로 발생할 수 있는 취약점에 대한 진단이 필수적으로 이뤄져야 합니다.



5.2.1 joomscan : 서비스 취약점 정보 수집


joomscan은 공개 CMS 서비스 줌라의 SQL 인젝션, 명령 실행, 크로스사이트 스크립팅을 대상으로 줌라의 데릭터리 탐색과 취약점을 감지할 수 있는 서명 기반의 스캐너입니다.


줌라는 보통 전자상거래, 쇼핑, 포럼처럼 여러 용도로 사용하고 배포하는 데 널리 사용되는 CMS라고 합니다.


옵션

설명 

 -x <string:int> 

 프록시 설정

 -c <string>

 쿠키(name=value;)

 -g

 원하는 사용자 에이전트(User Agent) 사용

 -nv

 버전 핑거프린팅(Version fingerprinting)을 확인하지 않음

 -nf

 방화벽을 확인하지 않음

 -nvf/-nfv

 -nv, -nf 둘 다 확인하지 않음

 -pe

 Poke 버전까지만 스캔하고 빠져나옴

 -ot

 텍스트 파일로 저장(target-joexploit.txt)

 -oh

 HTML 파일로 저장(target-joexploit.htm)

 -vu

 자세히 보여줌 (output every Url scan)

 -sp

 완료된 것을 %로 나타냄


joomscan 또한 간단하게 


#joomscan -u <타겟 URL>


만으로도 실행하면 서버의 정보상태, 대상에서 사용하는 안티스캐너 스캔, 방화벽 탐지, 핑거프린팅 확인 등 관련 정보들을 포함해 출력합니다.



5.2.2 WhatWeb : 서비스 정보 수집


WhatWeb은 웹사이트를 식별합니다. 

CMS, 블로그 플랫폼, 통계/분석 패키지, 자바스크립트 라이브러리, 웹 서버와 임베디드 장치 등의 웹 기술을 인식합니다. 

1000개 이상의 플러그인을 보유하고있고, 버전번호, 이메일주소, 계정아이디, 웹 프레임워크 모듈, SQL 에러 등을 확인 해줍니다.



옵션 

설명 

 <URLs>

URLs에 파일 이름이나 엔맵 형식의 IP 범위를 입력하거나 HTML 파일을 직접 사용 

 --input-file=FILE, -i

파일에서 URL을 확인. 예) -i /dev/stin 

--url-prefix 

URLs를 타겟팅할 접두사를 추가 

 --url-suffix

URLs를 타겟팅할 접미사를 추가 

 --url-pattern

URL에 타겟을 삽입한다. --input-file 옵션 필요.

예) www.example.com/%insert%/robots.txt 

 --example-urls, -e

예를 들어 타겟 목록에 선택한 각 플러그인의 URL을 추가. 

기본적으로 모든 플러그인에 대한 URL을 추가 

 --aggression, -a=LEVEL

공격 수준은 속도/은폐와 신뢰성 사이의 트레이드 오프를 제어. 기본값은 1

공격 레벨은 다음과 같음.


1(Passive) : 타겟당 하나의 HTTP를 리디렉션만 빼고 요청

2(Polite) : 향후 사용을 위해 예약

3(Aggressive) : 플러그인이 수동적으로 일치하는 경우에만 공격적인 플러그인 기능을 유발

4(Heavy) : 모든 플러그인에 대해 공격적인 기능을 실행 

 --user-agent, -U=AGENT

에이전트를 대신해 WhatWeb/0.4.8 을 확인 

 --user, -u=<user:password>

HTTP 기본인증 

--header, -H HTTP 

헤더를 추가. 예)"홍길동:Bar". 기본 헤더를 지정하면 교체

빈값을 지정. 예) User-Agent(사용자 에이전트) 헤더를 제거 

--follow-redirect=WHEN 

리디렉션 수행 시 제어 

--max-redirects=NUM 

연속 리다이렉션 최대 개수. 기본 값:10 

--proxy-user <username:password>

호스트 이름과 포트로 프록시 설정. 기본 값: 8080 

--plugins, -p 

콤마로 범위를 선택하고 플러그인을 설정한다. 기본값: 모든값.

각 요소는 디렉터리에 파일이나 플러그인 이름이어야 하며, 선택적으로 변형할 수 있음. 

--list-plugins, -l

플러그인 목록 

--info-plugins, -I ( 대문자 i )

 모든 플러그인에 대한 정보 표시




테스트로 대상 IP에 버전정보까지 확인해보고자


#whatweb 대상IP -v


이렇게 실행했더니 웹 서비스의 종류와 버전 정보들이 상세하게 출력되는 것을 확인할 수 있었습니다.






5장에서는 자동 도구를 활용해서 시스템, 앱, 플랫폼에 대한 취약점을 획득할 수 있는 방법을 소개하게 되었습니다.

언제나 약간은 아쉬운것이 현재 가장 최신버전 칼리리눅스에서는 책과는 조금씩 다르고 버전과 경로, 심지어 도구까지 없는 경우가 허다한것이 아쉽긴 합니다.

위에 joomscan 말고 WPscan도 있지만 워드프레스를 또 따로 설치해야된다는 점때문에 빼게 되었습니다.


근데 뭘까요.. 


도구가 안될때마다 쓸거리가 줄어든다는 생각에 왠지 다행이라는 느낌이 드는건;;;;


여튼 이번장도 다행히 마무리를 지을 수 있었습니다.. 

다음장에서는 드디어 메타스플로잇 이용하게 되는 취약점 진단 단계를 소개해드리겠습니다.


그럼 다들 열공하시고 좋은하루 되세요~

반응형

'Penetration testing > Kali Linux' 카테고리의 다른 글

7장 침투 심화 공격 단계  (0) 2017.07.03
6장 취약점 진단 단계  (0) 2017.07.02
칼리 리눅스 설치 후 초기 설정  (0) 2017.05.21
4장 정보 수집 상세 단계  (0) 2017.05.19
3장 정보 수집 단계  (2) 2017.05.17
Comments