보안/케이쉴드

보고서 작성해보기 (작성중)

RavenKim 2022. 8. 15. 17:34
반응형

  (여러사이트를 종합하여 작성함_취약점 작성 연습)

 

 

/...............평균적으로 들어가는 것들............................../

수행개요(배경/목적/일정/인원)

점검 형식(기준명시)

수행결과

대응방안

 

이것을 참조하자!

 

 

 

 

목차

 

1. 수행개요

a. 모의해킹이란

b. 배경

c. 목적

d. 일정

e. 수행 인원

 

점검 형식

a. 수행 대상 및 장소

b. 수행 단계별 방법

c. 침투시나리오 

d. 점검항목

e. 점검도구 

 

점검결과

a. 영향도 평가기준

b. 총평

c. 취약점 요약 

d. 상세 설명

    d-1. 

    d-2. 

    d-3. 

    d-4. 

    d-5. 

    d-6. 

    d-7. 

    d-8. 

 

대응방안

1. 

2. 

3. 

4. 

 

 

--------------------------------------------------------------------------------------------------------------------------------------------

 

 

1. 수행개요

a. 모의해킹이란

운영 시스템, 설정 오류, 애플리케이션 에러 혹은 사용자의 행동으로 발생할 수 있는 취약성을 안전한 범위 내에서 공격하여 IT 기반시설의 보안시스템에 접근을 시도하는 것을 의미합니다.

 

b. 배경

그간 k-shield에서 배운 내용들을 바탕으로 보고서를 작성해 보는것을 목적으로 한다. 

 

c. 목적

본 모의해킹 진단은 구 k-shield 사이트를 직접 점검해 봄으로써 모든 정보 자산에 대해 취약점을 분석/도출 하여 대책을 수립하기 위함입니다. 해커와 동일한 환경과 조건, Hacking Skill을 가지고 모의적인 침투가 이루어지며, 발견된 취약점에 대해서는  사전에 예방을 통한 효과를 발생시키는데 목적이 있습니다.

d. 일정/수행인원

2022/00/00  00:00:00 ~~ 2022/00/00  00:00:00 

~~시행 1명_(김해준)

2022/00/00  00:00:00 ~~ 2022/00/00  00:00:00

~~시행 3명_(김해준, B, C)

2022/00/00  00:00:00 ~~ 2022/00/00  00:00:00

~~시행 1명_(김해준)

 

점검 형식

a. 수행 대상 및 장소

본   모의해킹은    아래    대상을   전달받았으며, Task 별로   해당   대상에    대해   점검이   이루어집니다

 

모의해킹 수행 범위

구분(task) 대상도메인 대상 IP정보 서비스
외부 모의해킹 - 10.200.11.2 정보보호 교육센터 웹 서비스


모의해킹은 vm웨어로 진행하였으며, 수행자의 아이피는 담당자에게 사전에 공지하고 장애 발생시 담당자에게 즉각  보고합니다. 

 

모의해킹 수행자 정보

구분(task) 대상도메인 장소
외부 모의해킹 10.200.11.4 (외부에서 했다는 가정) 랩실

 

b. 수행 단계별 방법

본 모의해킹은 아래 단계별로 정보수집부터 결과 보고서까지 과정을 통해 진행이 됩니다.

각 단계별 설명

가. 정보 수집

대상에 대한 서버/네트워크/서비스에 대한 불필요한 서비스 접근 가능성, 외부에서 파악할 수 있는 정보들을 수집하는 단계

나. 취약점 수집

각 네트워크 구간별로 적합한 취약점 스캔 도구를 이용하여 발생할 수 있는 취약점에 대한 정보를 수집하는 단계 (단, 네트워크 장비/서비스에 장애를 유발할 수 있는 경우에는 제외)

다. 침투 단계

취약점 수집 단계를 통해 획득한 정보를 기반으로 수동점검(Manual) 을 통해 내부 시스템까지 침투할 가능성이 있는지 시나리오 기반으로 접근 하는 단계

라. 상세 분석

취약점이  도출되었을 경우에 공격에 의해서 보안 위협이 시스템 및 비지 니스 측면에서 어느정도의 영향을  줄 수 있는지 분석하는 단계

마. 보고서 작성

도출된 취약점에 대한 총평/영향도/상세분석/보안가이드가  포함된  보고서 를 작성하는 단계

 

c. 침투시나리오 

TTPs

정찰 및 자원개발 단계 > 초기침투&정보수집 단계 > 정보 유출 단계 

 

정찰 및 자원개발 단계

외부 모의해킹은 외부에서 비 인가자가 접근할 수 있는 서비스를 대상으로 이루어비며, 지난 서비스의 취약점 시나리오는 각 취약점 상세 내역에 포함되어 있습니다. 

스캐닝, OSINT 등의 방식이 있습니다.

시스템에 영향을 주지 않는 선에서 수집합니다. 

 

시나리오1. 

-내트워크 대역의 모든 정보를 수집합니다 (네트워크 장비의 버전에 따른 취약점 공격이 가능합니다)

-IDS/IPS 에 대해서 패턴 탐지를 우회 공격 시도를 통해 공격합니다.

- web 서버에서 발생할 수 있는 취약점을 이용하여 내부 서버 침투를 시도합니다. 

- was 플랫폼에서 발생할 수 있는 최신 취약점에 대한 공격을 시도합니다

- 데이터 베이스/로그서버 등에 침투하여 개인정보/사내 주요 정보를 획득합니다.

 

시나리오2.

 

d. 점검항목

점검항목은 OWASP TOP 10, SANS TOP 25, KISA 48 대 취약점 항목등을 기반으로 제작되었습니다. 

순번 분류 코드 진단항목
1 개인정보 추측 및 대입 001 취약한 패스워드 설정 여부
002 장비 기본 패스워드 설정 여부
2 인증우회 003 쿠키 재사용 여부
004 중요 페이지 세션/인증/접근 체크 여부
005 클라이언트 측면 인증 우회 허용 여부
3 파라미터 조작 006 URL 정보 내 파라미터 위/변조 여부
007 필드 값 조작에 따른 검정 여부
4 XSS (CSRF) 취약점 008 악의적인 스크립트 필터링 여부
009 URL 파라미터 스크립트 필터링 여부
010 XST, TRACE 옵션 허용 여부
011 CSRF 취약점 허용 여부
5 에러 메세지 처리 012 에러 메세지를 통한 중요/불필요한 정보 유출
6 디렉토리 리스팅 취약점 013 디렉토리 인덱싱 여부
7 관리자 페이지 추축 014 페이지 내 관리자 페이지 링크 여부 혹인
015 관리자 페이지 접근 여부
8 페이지내 주요 정보 노출 016 중요 개인정보 노출 여부
017 쿠키 값 내 중요 정보 유출 여부
018 데이터베이스 관련 정보 유출 여부
019 사내 서내 인프라 정보 노출 여부
9 불필요 파일 존재  020 불필요한 기존 페이지 존재 여부
021 백업, 압축등 불필요 파일 여부
022 테스트 페이지, 데모페이지 삭제 여부
10 파일 다운로드 취약점 023 입력값 검증 미흡으로 파일 다운로드 공격 가능 여부
11 파일 업로드 취약점 024 입력값 검증 미흡으로 파일 업로드 공격 가능 여부
12 부적절한 Include 허용 여부 025 부적절한 include 허용 여부
13 URL 강제 호출 026 비인가 페이지 강제 호출 여부
14 SQL Injection 027 입력값 검정 미흡으로 SQL Injection 허용 여부
15 최신 취약점 미패치 028 보안에 취약하거나 버전이 오래된 어플리케이션 사용 여부
16 부적절한 서버 설정 029 서버 보안 설정 여부
17 법적 요구사항 검토 030 개인정보 보호법에 의한 적절성 여부 체크
       
       

 

e. 점검도구 

도구 이름 사이트 용도 메뉴얼
nmap https://nmap.org/    
Cain & Abel http://www.oxid.it/cain.html 스니핑, 패스워드크랙  
Burp Suite https://portswigger.net/burp 프록시 도구  
BeEF http://beefproject.com 사용자 권한 획득  
Nessus http://www.tenable.com/products/nessus/select-your-operating-system 서비스 취약점 스캐닝  
hydra download.cnet.com/Hydra/3000-2229_4-10701643.html 패스워드 크랙  
whatweb https://github.com/urbanadventurer/WhatWeb web응용프로그램 정보조사  

 

점검결과

a. 영향도 평가기준

영향도는 총 5개 (L, U, E, R, N)으로 구분되어 있으며, 외부/내부 서비스 침투여부 및 정보 노출에 따라 아래와 같은 기준으로 평가되었습니다. 

영향도  
매우높음(Legend) 외부 노출된 서비스를 통해 내부 네트쿼트 대역에 침투가 가능하여 개인정보 및 사내 주요정보 노출 가능성이 존재, 시스템에 심각한 영향을 줘서 비지니스적 피해를 줄 위혐성이 존재
높음(Unike) 시스템에 일부 심각한 영향을 발생하나 2차적인 피해 발생이 이루어질 가능성이 적음
중간(Epic) 외부 노출된 서비스를 통해 시스템 정보 및 중요 정보가 제한된 환경에서만 노출
낮음(Rare) 추가적인 공격 가능성을 줄 수 있는 정보 노출
매우낮음(Nomal) 서비스에 영향을 미치지 않고 

* 영향도 기준은 환경에 따라서 변할수 있음

 

b. 총평

전체적으로 매우높음(L): 00개, 높음(U): 00개 ,,,, 총 00개의 취약점이 도출되었고 주요 취약점은 다음과 같습니다. 

c. 취약점 요약 

d. 상세 설명

    0_환경 분석

nmap스캔시 열려있는 포트를 확인 할 수 있다. 

허용 포트
22/tcp ssh
80/tcp http
3306/tcp mysql
5901/tcp vnc-1
6001/tcp x11:1

 

whatweb으로 프레임 워크 종류 및 버젼 정보를 확인

> apache, php버전의 원데이 취약점 (CVE) 확인

 

6_013 디렉토리 리스팅 취약점 (E)

http://10.200.11.12/_core/ 로 접근시 다음과 같이 디렉토리 리스트를 볼 수 있다. 

 

 

14_027 SQL Injection

원리

Structured Query Language  의 약어로 데이터 베이스에 접근할 수 있는 데이터 베이스의 하부 언어라고 할 수 있습니다. 그리고 웹 어플리케이션의 경우 사용자의 입력값을 이 SQL  을 통해 데이터 베이스와의 통신을 하게 됩니다. 하지만 SQL  역시 인터프리터 언어의 일종이기 때문에 다른 인터프리터 언어와 같이 사용자가 입력한 데이터를 받은 후 형식에 맞게 변환하여 실행됩니다. 이 떄 사용자가 제공하는 데이터와 프로그래머가 작성한 명령어와 뒤섞여 실행되므로 만약 사용자에 의해 예상치 못한 값을 입력받게 되면 프로그래머가 의도하지 않은 방식으로 웹 어플리케이션이 동작하게 됩니다. 

종류

(1) 사용자 인증 우회 점검

(2) 에러 기반의 점검

(3) 문자열 데이터 기반의 점검(연결    연산자를    활용한   점검)

(4) 정수 데이터 기반의 점검

(5) 응답 기반의 점검

 

(1) 사용자 인증 우회 점검

입력 값에 대한 정확한 검증이 이루어지지 않는다면 비정상적인 SQL Query 가 입력된다해도 전달하여 사용자 인증을 우회하게 됩니다.

로그인 우회 점검용 치트

위의 시트에 나와있는 문자열을 활용하여 로그인 우회 시도

 

(2) 에러 기반의 점검

input 란에 ' 혹은 "를 입력하여 에러 발생 여부를 확인 > 문자열 검색을 통해 에러 페이지를 출력하게 하고 해당 페이지를 통해 데이터베이스 종류, 데이터 등의 정보를 습득하는 정검 방법

 

(3) 문자열 데이터 기반의 점검(연결    연산자를    활용한   점검)

각    데이터베이스는    저마다의    연결    연산자를    갖고    있는데    이번    점검은    이    연결    연산자를    활용하여 SQL Injection 취약점    점검을   진행합니다.

DB별 연산자

다음과 같이 나올시 연결    연산자를    중간에    입력하고    저장하였으나    실제로    등록된    정보는    hyde0401@gmail.com 으로 현재    웹    사이트는    문자열    기반의    SQL Injection 공격에   노출되어    있습니다.

 

(4) 정수 데이터 기반의 점검

연결    연산자    방식과    유사한데    정수   데이터를    입력하는    부분에서 단순    값과    산술    연산자를    통한    연산    값이    이와   같은    결과를    내는지에    대해    점검합니다.

 

게시판 파라미터  (no=1 ) 과 (no = 2-1) 이 같은 페이지를 보여주면 이 웹사이트는 정수   기반의    Injection 공격에    노출되었습니다.

 

(5) 응답 기반의 점검

 쿼리문을 전송하고 이 쿼리의 참, 거짓 여부를 활용하여 데이터를 얻어내는 점검방식 입니다.

정상 작동시 다음과 같이 N 값이 전송되어야 하지만 파라미터의 값 뒷부분에 and 1=1-- 입력시 동일한 결과값이 나오지만 틀린 값(1=2)을 넣을시 결과가 다르게 나오면 위 사이트는 응답 기반의 SQL Injection 에 노출되어 있습니다. 이를통해 여러가지를 유추 할 수 있다. 

 

sqlmap 활용!

 

 

 

대응방안

 

6_013 디렉토리 리스팅 취약점

 

14_027 SQL INJECTION

 

가. 입력 값 필터링

사용자가 값을 입력하였을때 SQL Injection 을 발생 시키지 않도록 해야합니다.  이를 위해서는 사용자 입력 시 특수 문자(' " / \ ; :  공백 -- +  등)가 포함되었는지 확인하고 허용되지 않은 문자열이나 문자가 포함되어 있다면 에러로 처리합니다.

 

나. 에러메세지의 은닉

쿼리 에러가 났을 경우에 에러에 대한 정보를 보여 주는 것이 아니라 일반적인 오류 페이지가 나타나도록 설정합니다.

 

다. 소스코드에 대한 대책

a. 기본적으로

- 입력 값을 통해 SQL 쿼리 문을 생성하는 CGI 는 입력 값에 대해 체크하고 로직을 포함해야 합니다.

- 입력 받은 변수와 데이터 베이스 필드의 데이터 형을 일치시켜야 하며 사용 중인 SQL 구문을 변경  시킬 수 있는 특수문자가 있는지 체크하는 문장을 포함해야 합니다.

- 검색 부분과 마찬가지로 클라이언트로부터 생성된 SQL 구문을 받는 부분이 있다면 이를 제거해야 합니다

b. ASP경우

- 입력 값에  대해 특수문자를 검사하고 replace 함수를 활용하여 특수문자를 제거합니다.

c. PHP경우

-  addslashes()  함수를 활용하여 사용자가 입력하는 값($_GET,  $_POST)에 역슬레쉬를 붙여서 반환하게 되면 쿼터, 더블쿼터, 역슬레쉬 등의 특수문자를 일반 문자로 변환하여 SQL Injection 을 방지합니다.

 

 

 

 

 

최종본은 여기서 확인

https://docs.google.com/document/d/1Tjck8s7U-C_fteNKMNpLLLbD0Ux2oXQ2rDKnXGVkGe4/edit?usp=sharing