
ShellSweeping: 악을 쓸어내다.
ShellSweeping the evil
"ShellSweep"는 지정된 디렉터리에서 잠재적인 웹 셸 파일을 탐지하도록 설계된 PowerShell/Python/Lua 도구입니다.
ShellSweep와 그 도구 모음은 파일 콘텐츠의 엔트로피를 계산하여 파일이 웹 셸일 가능성을 추정합니다. 높은 엔트로피는 더 많은 무작위성을 나타내며, 이는 웹 셸에서 흔히 발견되는 암호화되거나 난독화된 코드의 특성입니다.
정보 이론 또는 데이터 과학의 맥락에서 엔트로피는 데이터 집합의 예측 불가능성, 무작위성 또는 무질서의 척도입니다. 이 개념은 Claude Shannon이 1948년 논문 "A Mathematical Theory of Communication"에서 도입했습니다.
파일이나 텍스트 문자열에 적용될 때 엔트로피는 데이터의 무작위성을 평가하는 데 도움이 될 수 있습니다. 작동 방식은 다음과 같습니다. 파일이 완전히 무작위 데이터(각 바이트가 0에서 255 사이의 어떤 값일 가능성이 동일)로 구성된 경우 엔트로피는 8에 가깝습니다(log2(256) = 8). 파일이 고도로 구조화된 데이터(예: 대부분의 바이트가 ASCII 문자인 텍스트 파일)로 구성된 경우 엔트로피는 더 낮습니다. 웹 셸이나 악성 파일을 찾는 맥락에서 엔트로피는 유용한 지표가 될 수 있습니다.
ShellSweep에는 파일 콘텐츠의 엔트로피를 계산하는 Get-Entropy 함수가 포함되어 있습니다:
ShellSweepX는 ShellSweep의 핵심 기능을 한 단계 더 발전시켜 기존 EDR(Endpoint Detection and Response) 솔루션에 비해 여러 장점을 제공합니다:
ShellSweepX는 본격적인 EDR 솔루션을 대체하는 것은 아니지만, 특히 웹 셸이 심각한 위협이 되는 환경에서 보안 무기고의 강력하고 전문화된 도구로 사용됩니다.
ShellScan은 알려진 여러 악성 웹 셸 디렉터리를 스캔하고 파일 확장자별 평균, 중앙값, 최소 및 최대 엔트로피 값을 출력하는 기능을 제공합니다.
Pass ShellScan.ps1 some directories of web shells, any size set. I used:
This will give a decent training set to get entropy values.
Output example:
Statistics for .aspx files:
Average entropy: 4.94212121048115
Minimum entropy: 1.29348709979974
Maximum entropy: 6.09830238020383
Median entropy: 4.85437969842084
Statistics for .asp files:
Average entropy: 5.51268104400858
Minimum entropy: 0.732406213077191
Maximum entropy: 7.69241278153711
Median entropy: 5.57351177724806
먼저, ShellCSV의 사용법과 디스크에 있는 정상 파일의 엔트로피를 식별하는 데 어떻게 도움이 되는지 설명하겠습니다. 방어자가 웹 서버에서 이 도구를 실행하여 모든 파일과 엔트로피 값을 수집하고, 작업 환경에서 어떤 경로와 확장자가 가장 두드러지는지 더 잘 이해할 수 있다는 아이디어입니다.
출력 예시는 ShellCSV.csv를 참조하십시오.
블로그: Ghost in the Web Shell: Introducing ShellSweep
먼저, 선호하는 언어를 선택하세요: Python, PowerShell 또는 Lua.
여기까지 오셨다면, 이제 튜닝을 반복할 차례입니다. 새로운 셸을 발견하셨나요? 엔트로피를 수집하고 필요에 따라 수정하세요.
블로그: Introducing ShellSweepPlus: Open-Source Web Shell Detection
ShellSweepPlus는 웹 환경에서 잠재적인 웹 셸을 탐지하고 분석하도록 설계된 고급 PowerShell 스크립트입니다. ShellSweep의 핵심 기능을 기반으로 하여 향상된 기능과 탐지 능력을 제공합니다.
주요 기능:
사용법:
$DirectoryPaths 변수에서 스캔할 디렉터리를 지정합니다.$suspiciousPatterns를 사용자 정의합니다.$excludePaths를 사용하여 특정 디렉터리를 건너뜁니다.$ignoreHashes 또는 $ignoreHashesFilePath를 사용하여 알려진 안전한 파일을 제외합니다.예제 출력:
json
{
"TotalFilesScanned": 1000,
"Potential web shells": 5,
"ScanDuration": "00:05:30"
}
ShellSweepPlus는 여러 분석 기술을 결합하여 정확도를 높이고 정교한 위협까지 탐지하는 강력하고 유연한 웹 셸 탐지 솔루션을 제공합니다.
Git 이슈를 열거나 위키를 확인해 주세요.
이 프로젝트가 마음에 드셨다면 프로젝트에 별표를 눌러 주시고 가족 및 친구와 공유해 주세요.
| 특징/측면 | ShellSweep | ShellSweepPlus | ShellSweepX |
|---|
| 베이스라인 탐지 | 특정 파일 확장자에 대해 하드코딩된 엔트로피 값 사용 | 동적 베이스라인 탐지로 즉석에서 엔트로피 계산 | 엔트로피 기반 탐지와 머신러닝 예측의 조합 사용 |
| 파일 확장자 | .asp, .aspx, .asax, .jspx, .html, .ashx 확장자 처리 | .asp, .ashx, .asax, .jspx, .html, .aspx 확장자 처리 | API를 통해 구성 가능한 파일 확장자 |
| 엔트로피 계산 | 파일 콘텐츠의 엔트로피를 계산하여 잠재적 웹 셸 탐지 | 향상된 엔트로피 기반 탐지, 의심 키워드와 교차 참조 | 청크 기반 분석을 통한 고급 엔트로피 계산 |
| 제외 기능 | 특정 디렉터리를 스캔에서 제외 가능 | 특정 디렉터리를 스캔에서 제외 가능 | API를 통해 구성 가능한 제외 |
| 해시 무시 | 특정 해시를 가진 파일 무시 | 특정 해시를 가진 파일 무시 | API를 통해 구성 가능한 해시 무시 |
| 출력 | 잠재적 웹 셸 발견 시 파일 이름, 엔트로피 값, 해시 출력. 그렇지 않으면 "No evil identified today." 출력 | 잠재적 웹 셸 발견 시 파일 이름, 엔트로피 값, 해시, 마지막 수정 날짜, 탐지 방법, 신뢰도 점수를 JSON 형식으로 출력. 그렇지 않으면 "No potential web shells detected." 출력 | 파일 메타데이터, 엔트로피, 예측 결과, YARA 일치를 포함한 상세 JSON 출력 |
| 엔트로피 및 표준편차 | 엔트로피 값 사용 | 각 파일 확장자에 대해 엔트로피 값의 평균과 표준편차 계산 | 고급 분석을 위해 엔트로피와 표준편차 모두 계산 |
| 혼합 모드 탐지 | 없음 | 엔트로피 기반 탐지, 표준편차 기반 탐지, 혼합 모드 탐지(하드코딩된 임계값과 표준편차 활용)의 조합 사용 | 엔트로피 기반 탐지, 머신러닝 예측, YARA 규칙 매칭 결합 |
| 정적 코드 분석 | 없음 | 알려진 악성 패턴을 식별하고 플래그 지정하기 위해 코드를 정적으로 분석하는 패턴 기반 탐지 메커니즘 | 패턴 기반 탐지를 위해 YARA 규칙 활용 |
| 휴리스틱 분석 | 없음 | 휴리스틱 규칙에 기반한 이상 징후를 탐지하기 위한 Perform-HeuristicAnalysis 함수 도입, 제로데이 웹 셸 탐지 강화 | 휴리스틱 분석을 위해 머신러닝 기반 예측 구현 |
| 상세 결과 표시 | 없음 | 파일 경로, 엔트로피, 표준편차, 해시, 마지막 수정 날짜, 탐지 방법, 신뢰도 점수를 포함한 구조화된 JSON 형식으로 잠재적 위협 표시 | 모든 분석 방법을 포함한 종합 결과를 구조화된 JSON 형식으로 제공 |
| 종합 로깅 | 없음 | 상세 로깅 및 운영 투명성을 위해 스크립트 전체에 Write-Verbose 명령 통합 | 에이전트 및 서버 구성 요소 전반에 상세 로깅 구현 |
| 신뢰도 점수 | 없음 | 탐지 방법에 기반한 신뢰도 점수를 계산하고 의심 패턴 존재 여부에 따라 조정 | 머신러닝 예측 신뢰도를 사용하고 다른 탐지 방법과 결합하여 종합 점수 생성 |
| 모듈식 설계 | 없음 | 다양한 작업에 대해 별도의 함수(예: Process-File, Create-ResultObject, Adjust-ConfidenceScore)를 사용하여 코드 재사용성과 유지보수성 촉진 | 에이전트, 서버, 분석 함수를 위한 별도 구성 요소로 고도로 모듈화된 설계 |
| 크로스 플랫폼 지원 | PowerShell 전용 | PowerShell 전용 | PowerShell, Python, Bash 구현 지원 |
| API 통합 | 없음 | 없음 | 구성, 결과 제출, 관리를 위한 포괄적인 API |
| AI 기반 분석 | 없음 | 없음 | AI 기반 분류 및 분석 기능 통합 |
| YARA 규칙 관리 | 없음 | 없음 | API를 통해 YARA 규칙 추가, 업데이트, 삭제 가능 |
| 웹 인터페이스 | 없음 | 없음 | 결과 시각화 및 분석을 위한 웹 기반 인터페이스 제공 |