[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에서 탐지된 네트워크 로그 저장
datetimesidmessage
adSentinel DB
VulCheck
취약점 체크리스트 및 대응 절차 정보 저장
VulC_IdVulC_LevelVulC_TitleVulC_DesVulC_CPVulC_TgtSrvVulC_CheckVulC_SecVulC_SecProcVulC_ImpVulC_CateVulC_SecRiskVulC_Script
cve_db
Samba 관련 CVE 정보 저장
CVE_namecategoriesCVE_Detailscore_data (Base SeverityCVSS VectorImpact ScoreScore Source), samba_version
exploit
테스트에 사용된 Exploit 정보 저장
namedescriptioncategoryscriptstatus (SecureDanger)
exploit_result
Exploit 실행 결과 저장
nametarget_ipusernameoutputerrortimestamp ($date), status
scan_results
nmap 및 enum4linux 스캔 결과 저장
ip_addresstimestamp ($date), nmap_results (open_ports (portservice), unknown_ports (portstateservice)), enum4linux_results (samba_versiontarget_osdomainuserspassword_policyfull_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
복사

팀 소개