[ADSentinel] AD 취약점 탐지 프로그램ㅤ

과정
정보 보안
노출 페이지
인덱스
정보보안
대표 이미지
대표이미지
서비스 한 줄 소개
회차
5 more properties

배경

•
AD의 중요성
◦
중앙 집중식 관리의 필요성 → 기업의 사용자 인증, 권한 관리에 용이하다는 장점
◦
사이버 공격의 주요 표적 → 공격 성공 시, 기업 내부 접근 및 정보 탈취를 통한 큰 피해 유발 가능성 높음
•
AD중 Samba인 이유
◦
무료 제공 → 비용 부담이 적음, 소규모의 기업에서도 활용 가능
◦
오픈소스 → 자유롭게/유연하게 설정 및 활용 가능
◦
Windows AD 및 리눅스와의 호환성
⇒ 오픈소스이기에 공격자 또한 취약점 탐지/발견에 용이함, 인증과정의 취약점을 활용한 공격 가능성이 높음
위 사항들을 고려하여 Samba AD의 취약점을 탐지하는 프로그램을 구현하고자 함

서비스 소개

•
시연 영상
•
전체 기능 소개(기본 정보, 위험성 진단, 알림 서비스)
◦
기본 정보 탐지 : 포트 정보, 버전, 사용자 리스트, 권한, 그룹, 공유 폴더, 비밀번호 정책 등
◦
위험성 진단 : 비정상 접근이나 공격에 노출 가능성이 있는 설정 점검, 모의 공격 시도를 통한 공격 성공 가능성 점검
취약점 탐지 목록.pdf
414.7KB
◦
알림 서비스 : 포트로 들어오는 트래픽 감시, 비정상 접근/공격 발생 시 실시간 알림
•
기능 별 세부 소개
◦
기본 정보
▪
포트 현황 : nmap을 이용한 Samba 관련 포트들의 개방상태 확인
▪
enum4linux : 등록된 이용자의 username, 권한 유형, 그룹 유형, Samba 버전, 공유 폴더 정보, 비밀번호 정책
◦
위험성 진단
▪
쉘코드 : Samba의 취약한 설정이나 상태를 점검할 수 있는 쉘코드, 15가지 유형의 진단 가능
▪
익스플로잇: PoC 코드를 활용한 모의 공격 시도로 공격 노출 가능성을 점검
◦
알림 서비스
▪
수리카타를 이용한 Samba 포트 대상으로 실시간 감시, 비정상 접근/공격 발생 시 디스코드나 텔레그램, 프로그램에 실시간 알림 제공
•
부가 기능
◦
이전 로그 확인
◦
디스코드 알림
소규모 기업의 Samba AD 관리자 입장에서 손쉽게 사용할 수 있는 프로그램을 제작
•
타 프로그램 비교

아키텍처 및 핵심 기능

데이터 흐름

단계
입력 데이터
처리 방식
출력 데이터
사용자 입력
IP 주소
Django 서버로 전달
IP 검사 요청
취약점 탐지
IP 주소
.sh 파일 실행 및 정보 수집
취약점 검사 결과
모의 해킹 시도
취약점 정보
Exploit 수행
공격 성공 여부
이상 감지
네트워크 트래픽
Suricata 분석
이상 감지 로그 및 알림
CVE 정보 매핑
취약점 검사 결과
CVE DB 매핑
관련 CVE 정보
결과 저장 및 리포트 생성
검사/모의 해킹/감지 정보
MongoDB 저장
리포트 생성
웹 인터페이스 출력
리포트 요청
Django 서버 처리
결과 및 실시간 로그 표시

DB구조

DB 이름
테이블/컬렉션 이름
설명
필드
Suricata Logs
logs
Suricata에서 탐지된 네트워크 로그 저장
date, time, sid,  message
adSentinel DB
VulCheck
취약점 체크리스트 및 대응 절차 정보 저장
VulC_Id, VulC_Level,  VulC_Title, VulC_Des,  VulC_CP, VulC_TgtSrv,  VulC_Check, VulC_Sec, VulC_SecProc, VulC_Imp,VulC_Cate,  VulC_SecRisk,  VulC_Script
cve_db
Samba 관련 CVE 정보 저장
CVE_name, categories,  CVE_Detail, score_data (Base Severity, CVSS Vector, Impact Score, Score Source), samba_version
exploit
테스트에 사용된 Exploit 정보 저장
name, description,  category, script,  status  (Secure, Danger)
exploit_result
Exploit 실행 결과 저장
name, target_ip,  username, output,  error, timestamp  ($date), status
scan_results
nmap 및 enum4linux 스캔 결과 저장
ip_address, timestamp  ($date), nmap_results (open_ports (port,  service),  unknown_ports (port,  state, service)),  enum4linux_results  (samba_version,  target_os, domain,  users,  password_policy,  full_output)

아키텍쳐

핵심기능

🔥
취약점 탐지
15개의 정해진 항목으로 취약점 탐지 후 현재 상태 / 취약한 부분 / 보안 방법 안내
취약점 탐지 목록.pdf
414.7KB
🔒
CVE 위험성 안내
취약점 탐지를 기반으로 위험성 높은 CVE 안내
🚫
EXPLOIT TEST
모의해킹 테스트로 안전한 상태인지 침투 가능한 상태인지 확인
⚠️
실시간 알림
Suricata 룰을 사용하여 이상 감지 시 웹 / 디스코드에 실시간 알림
💡
기존 보고서 열람
기존에 검사한 내용 열람 및 pdf 출력

활용 라이브러리 및 개발 환경

환경

AWS
Ubuntu
VMware
Kali

언어 & 개발 도구

Visual Studio Code
Bash
Python

라이브러리

Metasploit
Nmap
enum4linux
📃ReportLab

기술 스택

Suricata
Django
MongoDB
Html5
JavaScript
Css3

Etc

Github
Discord
Notion
Zep
Draw.io

트러블 슈팅

취약점 탐지 3분 이상 소요

•
15개의 .sh파일을 순서대로 처리하다 보니 시간이 많이 소요되는 것을 확인
•
병렬 처리로 빠르게 소요되도록 수정
from concurrent.futures import ThreadPoolExecutor # ThreadPoolExecutor를 사용하여 병렬 처리 with ThreadPoolExecutor() as executor: adsentinel_results = list(executor.map(process_item, inspection_items))
Python
복사

AWS 외부 접근 불가

•
AWS 접근 권한 관리
◦
AWS에서 IAM에 접속, 사용자를 생성하고, 사용자 별 접근 권한 등의 정책 설정
•
AWS 인스턴스의 보안 그룹에 인바운드 규칙 설정
◦
AWS 콘솔 > EC2 > 보안 그룹 > 인스턴스에 연결된 보안 그룹 선택 > 인바운드 규칙 편집
•
Ubuntu 방화벽(UFW) 설정
◦
Ubuntu에서 아래의 포트 허용 설정을 진행
◦
방화벽 상태 확인 및 적용
sudo ufw allow 445/tcp sudo ufw allow 139/tcp sudo ufw allow 137,138/udp sudo ufw allow 389/tcp sudo ufw allow 53/tcp sudo ufw allow 135/tcp
Bash
복사

팀 소개