dalgorithm
달공의 개발기
dalgorithm
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • Back-end (0)
    • Java (11)
    • 자료구조 (7)
    • Network (31)
    • Database (9)
    • Baekjoon Online (24)
    • 클라우드 (6)
    • Android (15)
      • Kotlin (14)
    • AI (27)
      • Machine Learning&Deep Learn.. (27)
    • Web (23)
      • Webhacking (17)
      • WebProgramming (6)
    • 기술면접 (1)
      • JAVA&자료구조 (0)
      • Spring (0)
      • 컴퓨터구조&운영체제 (0)
      • 네트워크 (0)
      • 데이터베이스 (0)
    • CTF 스터디 (15)
    • 대외활동 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • gcp
  • 자료구조
  • CTF
  • 딥러닝
  • kotlin
  • db
  • 침입탐지
  • 코드리뷰
  • java
  • 네트워크
  • python #백준
  • 포너블
  • cs
  • 머신러닝
  • 웹해킹
  • 클라우드
  • 자바
  • 인공지능
  • Guacamole
  • 데이터베이스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dalgorithm

달공의 개발기

ModSecurity 3장_독을 품은 폰(해커 트랩)
Network

ModSecurity 3장_독을 품은 폰(해커 트랩)

2021. 2. 27. 21:13
728x90

허니트랩이란?

: 허니팟 시스템이 실제 대상처럼 행동하도록 네트워크에 배포하는 별도의 호스트를 말한다면, 허니트랩은 웹 애플리케이션 전반에 걸쳐 심어져서 공격자에게 가상의 지뢰밭처럼 동작한다. 허니트랩의 장점은 정상적인 사용자로부터 악성적인 사용자를 빠르게 구별할 수 있다는 것이다. 

세 가지 장점으로 높은 정확도의 경고, 적은 수의 경고, 미탐 식별이 있다.

 

◼ 허니팟 포트 추가

: 완전한 새로운 허니팟 시스템을 구축할 필요는 없다. 현재의 웹 서버 플랫폼을 재사용한다. 허니트랩을 구현하기 위해 HTTP 요청 트래픽을 받아들이는 네트워크 포트를 추가한다. 이 포트들은 정상적인 목적을 가지고 있지않아 수신한 어떠한 트래픽이라도 의심한다. 

 

✔ 아파치 Listen 지시자

: 아파치의 위 지시자는 요청을 받아들이고자 하는 포트/IP 주소아 포트의 조합을 정의한다. 기본적으로 HTTP 80 포트를 받아들이는 하나의 Listen 지시자가 httpd.conf 파일에 활성화되어 있는 것을 확인할 수 있다. 아래는 일반적인 대안 HTTP 포트이다. SecRule SERVER_PORT "^(8000 | 8080 | 8888)$" 

 

- 8000

- 8080

- 8888

 

허니트랩 포트 기술은 클라이언트가 요청을 보내자마자 악성인지 알 수 있기 때문에 실제 애플리케이션의 조기 경보 시스템 역할을 한다. 이 정보를 바탕으로 클라이언트를 즉시 차단하고, 감시 목록에 등록하여 이상징후 점수를 증가시킨다. 

 

◼ 가짜 HTML 주석 추가

: HTML에서 마크업 선언 시작 구분자 "<!"와 주석 시작 구분자 "--" 사이의 공백은 허락되지 않지만 주석 종료 구분자와 마크업 선언 종료 구분자 사이의 공백은 허용된다. 주로 발생하는 오류는 주석 내용에 "---"를 포함하는 경우이다. 이 기능의 본래 목적은 도움이 되지만 종종 민감한 데이터를 누설한다. 사이트 정찰 단계에서 공격자는 자동화된 스파이 툴을 실행한다. 그 후,  사이트의 다양한 요소에 대해 검토하며 민감한 정보를 찾는다. 

 

개발자가 html 주석 내에 스택 트레이스 디버깅 정보를 삽입하는 경우가 있는데, 이 정보는 애플리케이션의 내부 동작을 노출시키므로 클라이언트에 전송되어서는 안된다. 인젝션 포인트로 사용하는 중요 데이터 요소를 나타내는 FORM 태그 앞에 허니트랩 HTML 주석 데이터를 직접 삽입하여 클라이언트가 악의적인지를 식별한다.

 

◼ 가짜 숨겨진 폼 필드를 추가

: 가짜 숨겨진 폼 필드를 추가하고 데이터가 조작된 경우, 경고하는 방법을 보여준다. HTML의 숨겨진 폼 필드는 브라우저가 사용자에게 해당 필드를 보여주지 않는다는 하나의 명확한 차이를 제외하고는 일반 폼 피드와 동일하다. 숨겨진 필드는 내용이 변경되면 안된다. 브라우저는 폼 필드를 감추지만 사용자는 여전히 데이터에 접근할 수 있으므로 데이터가 조작될 수 있다. 그들은 소스 보기를 하거나 브라우저의 플러그인을 사용한다 

 

✔ 가짜 HTML 주석을 추가했던 것처럼 가짜 HTML 숨겨진 폼 필드를 주입하려면 동일한 방법을 사용하면 된다. 

</form> HTML에 집중해야한다. 허니트랩 데이터를 </form> 앞에 삽입한다.

 

◼ 가짜 쿠키 데이터를 추가

: HTTP 프로토콜은 기본적으로 세션을 인식하지 않는다. 각 트랜잭션이 다른 트랜잭션과 독립적임을 알 수 있다. 애플리케이션은 사용자가 누구이며 기존에 어떤 행위를 했는지 추적하는 방법이 필요하다. 쿠키 데이터는 브라우저에게 다음 요청 시 응답 헤더 데이터를 클라이언트 웹 브라우저에게 발행하여 클라리언트 웹 애플리케이션에 다시 전송되도록 지시한다. 

 

✔ 언제 가짜 데이터를 발생시킬 것인가?

: 쿠키 허니 트랩 데이터가 무해한 것처럼 보이길 원하므로, 애플리케이션 자체적으로 정상적인 응답헤더를 발행할 때만 추가한다.

 

✔ 가짜 데이터의 이름을 무엇으로 할 것인가?

: 허니트랩 데이터가 잘 섞이기를 원하므로 현재의 쿠키 이름과 유사한 이름으로 시도한다.


출처: ModSecurity를 활용한 웹 애플리케이션 방어레시피_라이언 바넷 지음

728x90

'Network' 카테고리의 다른 글

ModSecurity 5장_요청 데이터 분석  (0) 2021.03.06
ModSecurity 4장_평판 및 서드파티 연관성  (0) 2021.02.27
ModSecurity 2장_취약점 확인 및 개선  (0) 2021.02.17
ModSecurity 1장_애플리케이션 요새화  (0) 2021.02.17
해시 방어를 구현하기 위한 ModSecurity 지시자와 규칙  (0) 2021.02.01
    'Network' 카테고리의 다른 글
    • ModSecurity 5장_요청 데이터 분석
    • ModSecurity 4장_평판 및 서드파티 연관성
    • ModSecurity 2장_취약점 확인 및 개선
    • ModSecurity 1장_애플리케이션 요새화
    dalgorithm
    dalgorithm

    티스토리툴바