
모듈식 Python3 공격 프레임워크로서, 자격 증명 도용, 페이로드 배포 및 사후 침투 모듈을 통해 SIEM 플랫폼(Splunk, Graylog, OSSIM, QRadar, McAfee)의 악용을 자동화합니다.
MultiSIEM 모듈식 Python3 공격 프레임워크
By ElevenPaths https://www.elevenpaths.com/
사용법: python3 ./siemsframework.py
SIEM은 사이버 보안 분야, 특히 주요 기업과 고도로 중요한 시스템 및 네트워크를 모니터링하는 기업에서 점점 더 많이 사용되는 방어 도구입니다. 그러나 공격자의 관점에서 볼 때, SIEM에 부여된 기업 네트워크의 시스템 및 계정에 대한 권한은 높습니다. 또한 SIEM에 대한 관리자 액세스는 해당 SIEM이 설치된 서버에서 코드 실행을 얻는 데 사용될 수 있으며, SIEM이 Active Directory 서버, AWS 서버, 데이터베이스 및 네트워크 장치(예: 방화벽 및 라우터)와 같은 이벤트를 수집한다는 점을 고려할 때 클라이언트 머신에서도 사용될 수 있습니다.
조사 과정에서 우리는 다양한 SIEM을 손상시키는 데 사용될 수 있는 많은 공격 벡터를 발견했습니다. 예를 들면:
• LDAP/AD 서버, 데이터베이스, 네트워크 장치, AWS 서버와 같은 중요 시스템에서 SIEM에 저장된 사용자 계정 및 비밀번호 획득.
• SIEM이 설치된 서버를 손상시키기 위해 Windows/Linux 리버스 쉘, Windows/Linux 바인드 쉘 또는 악성 스크립트와 같은 악성 애플리케이션 개발 및 설치.
• SIEM이 이벤트를 수집하는 머신을 손상시키기 위해 Windows/Linux 리버스 쉘, Windows/Linux 바인드 쉘 또는 악성 스크립트와 같은 악성 애플리케이션 개발 및 설치.
• 특정 이벤트가 발생했을 때 명령을 실행할 수 있는 악성 작업 또는 알림 생성 및 적용(예: SIEM이 설치된 서버에서 리버스 쉘을 얻기 위해).
• 기본 비밀번호 및 OVA 이미지 구성의 SIEM 취약점을 이용하여 서버, 데이터베이스 또는 SIEM 웹 인터페이스 자체의 관리자 자격 증명 획득.
• 웹 또는 관리자 인터페이스, 또는 SIEM 클라이언트 소프트웨어에 대한 사전 공격 또는 무차별 대입 공격을 수행하여 관리자 자격 증명 획득.
• SIEM이 설치된 서버에서 임의 파일 읽기.
• 추가 공격을 수행하기 위해 SIEM 구성 정보 및 기타 관련 매개변수 획득.
조사 결과를 바탕으로 오픈 소스 SIEMs 프레임워크 도구가 개발되었습니다. 이는 ElevenPaths의 혁신 및 연구소 팀이 개발한 Python3 기반의 모듈식 도구입니다. 시중에 존재하는 다양한 SIEM(상용 및 오픈 소스 모두)에 대한 잠재적 공격을 자동화할 수 있습니다.
SIEMs 프레임워크는 공격 대상 SIEM과 해당 운영 체제에 따라 선택할 수 있는 여러 공격 페이로드를 지원합니다. PowerShell, Python, Bash, Exe 등 다양한 형식의 페이로드가 있습니다. 선택한 공격이 실행되면 도구는 화면에 결과를 표시하며, 동일한 SIEM에 대해 다른 공격을 수행하거나 다른 SIEM을 선택하여 손상시킬 수 있습니다. 간단하고 사용하기 쉬우며 직관적인 인터페이스를 제공합니다. 현재 다음 SIEM에서 사용할 수 있습니다: Splunk, Graylog, OSSIM.
SIEMs 프레임워크는 GitHub에서 .zip 파일을 다운로드하거나 리포지토리를 복제하여 다운로드할 수 있으며, pip3 install -r requirements.txt를 통해 설치할 수 있는 다음과 같은 요구 사항이 있습니다:
• splunk-sdk
• requests
• python-nmap
• colorama
• pandas
• paramiko
• pymongo
• qradar4py
• requests_mock
• urllib3
요구 사항이 설치되면 다음과 같이 도구를 사용할 수 있습니다: python3 ./siemsframework.py
도구가 실행되면 메인 메뉴가 표시되며, SIEM이 있을 특정 IP를 스캔할지 아니면 네트워크 내에서 SIEM을 탐지할지 선택해야 합니다. 특정 IP 주소에서 SIEM을 스캔하고 탐지하려면 옵션 1을, 네트워크 스캔에는 옵션 2를 사용해야 합니다.
옵션 1 "Scan and Detect SIEM"을 선택하면 도구가 IP 주소를 요청하여 지원되는 SIEM의 특정 포트를 스캔하고 웹 또는 관리 인터페이스에 연결하여 실제로 SIEM인지 확인합니다.
위의 방법으로 SIEM이 탐지되면 도구는 탐지된 SIEM을 빨간색으로 표시하고 해당 SIEM의 공격 모듈을 실행할 수 있는 옵션을 제공합니다.
옵션 2 "Find SIEMs on the network"를 선택하면 도구가 CIDR 표기법으로 스캔할 네트워크를 요청합니다(예: 192.168.137.0/24). 정보가 입력되면 SIEMs 프레임워크는 먼저 활성 시스템을 탐지하기 위해 디스커버리를 수행한 다음, 지원되는 SIEM의 기본 포트를 스캔하고, 마지막으로 각 시스템의 웹 또는 관리 인터페이스에 연결하여 실제로 SIEM인지 확인합니다.
위의 방법으로 SIEM이 탐지되면 도구는 탐지된 SIEM을 빨간색으로 표시하고 공격할 SIEM의 IP 주소를 요청합니다.
"y"를 입력하고 Splunk 공격 모듈 실행을 선택하면 도구는 이 SIEM에 대해 수행할 수 있는 모든 가능한 공격을 표시합니다. 처음 두 공격에는 자격 증명이 필요하지 않지만, 다섯 번째 공격에는 Splunk 관리자 권한이 필요합니다.
이 공격 모듈에는 dict.txt라는 Splunk 전용 사전이 포함되어 있으며, 2018년 가장 많이 사용된 100개의 비밀번호와 SIEM 상표명 및 관리자 사용자의 다양한 변형(대문자 및 소문자, 모음을 숫자로 대체)으로 구성됩니다. 위에서 언급한 목록과 다른 목록을 사용하려면 /splunk/dict.txt를 다른 단어 목록으로 교체할 수 있으며, 파일 이름은 유지해야 합니다. Splunk 비밀번호 정책은 admin 역할의 사용자에게 적용되지 않으므로 실패한 액세스 시도로 인한 비밀번호 또는 계정 차단에 대한 제한이 적용되지 않습니다. 사전 공격을 시작하기 전에 도구는 분석할 Splunk가 인증을 사용하지 않는 Free 버전인지, 아니면 이 소프트웨어의 이전 버전에서 기본 비밀번호 "changeme"를 여전히 유지하고 있는지 확인합니다.
분석할 Splunk 서버에 웹 인터페이스가 활성화되어 있는 경우, 이 모듈은 인증 없이 웹 인터페이스 자체에서 서버 및 세션 정보를 얻을 수 있습니다. Splunk 웹 인터페이스의 기본 포트는 8000입니다. 이 모듈을 사용하려면 웹 인터페이스가 게시된 포트를 알고 입력해야 합니다.
이 모듈은 Splunk 서버 또는 Universal Forwarder에서 사용할 수 있습니다. 사용하려면 Splunk 관리자 자격 증명이 필요하며, 예를 들어 사전 공격(1차 공격)을 통해 얻을 수 있습니다. 모듈의 결과는 현재 Splunk 설치의 정보(버전, 운영 체제, Splunk 구성 등)입니다.
이 모듈은 Splunk 서버에서만 사용됩니다. 사용하려면 Splunk 관리자 자격 증명이 필요하며, 예를 들어 사전 공격(1차 공격)을 통해 얻을 수 있습니다. 모듈의 결과는 이벤트를 수집하는 장치에 연결하기 위해 Splunk에서 사용하는 앱에 저장된 모든 자격 증명입니다.
이 모듈은 Linux Splunk 서버에서 사용할 수 있습니다. 사용하려면 Splunk 관리자 자격 증명이 필요하며, 예를 들어 사전 공격(1차 공격)을 통해 얻을 수 있습니다. 모듈은 인덱스를 사용하여 해당 파일을 로드하며, 결과는 Splunk가 설치된 서버의 /etc/shadow 파일 내용입니다.
이 모듈은 SIEMs 프레임워크의 다음 버전에서 제공될 예정입니다. Universal Forwarder를 손상시키기 위해, 지금까지는 자격 증명을 얻기 위한 공격 1을 수행한 다음 플랫폼에 따라 악성 애플리케이션을 설치하기 위한 공격 7을 수행할 수 있습니다.
이 공격 모듈은 대상 시스템을 손상시키기 위해 설계된 악성 애플리케이션을 Splunk에 개발 및 설치할 수 있습니다. 먼저 운영 체제와 공격할 Splunk 유형(Splunk Server 또는 Universal Forwarder)에 따라 사용할 페이로드 유형을 선택해야 합니다. Splunk Server 또는 UF용 Linux Python 리버스 또는 바인드 쉘; Splunk Server용 Windows Python 리버스 또는 바인드 쉘(Python이 기본으로 설치된 경우); Windows Universal Forwarder용 실행 가능 바인드 쉘 또는 관리자 사용자 추가 스크립트(Python이 기본으로 설치되지 않은 경우)를 사용할 수 있습니다. 그런 다음 사용자 이름, Splunk 관리자 비밀번호 및 공격자의 IP 주소를 입력해야 합니다.
"y"를 입력하고 Graylog 공격 모듈 실행을 선택하면 도구는 이 SIEM에 대해 수행할 수 있는 모든 가능한 공격을 표시합니다. 처음 세 공격에는 자격 증명이 필요하지 않지만, 네 번째 공격에는 Graylog 관리자 권한이 필요합니다.
이 공격 모듈에는 dict.txt라는 Graylog 전용 사전이 포함되어 있으며, 2018년 가장 많이 사용된 100개의 비밀번호와 SIEM 상표명 및 관리자 사용자의 다양한 변형(대문자 및 소문자, 모음을 숫자로 대체)으로 구성됩니다. 위에서 언급한 목록과 다른 목록을 사용하려면 /graylog/dict.txt를 다른 단어 목록으로 교체할 수 있으며, 파일 이름은 유지해야 합니다.
이 공격 모듈은 분석할 Graylog가 Graylog 웹 인터페이스에 기본 자격 증명(admin/admin)을 가지고 있는지, 그리고 콘솔 또는 SSH로 시스템에 연결하기 위한 기본 자격 증명(ubuntu/ubuntu)을 가지고 있는지 확인합니다. 이 두 가지 자격 증명 쌍은 Graylog 가상 머신 어플라이언스(OVA 및 AMI 모두)에 기본으로 구성됩니다.
이 공격 모듈은 분석할 Graylog가 인증 없이 구성된 MongoDB 데이터베이스를 가지고 있는지 확인합니다. 그렇다면 MongoDB에 연결하여 구성 정보, LDAP 자격 증명(현재 Graylog 버전에 따라 일반 텍스트 또는 암호화됨), AWS 플러그인에 구성된 액세스 키 및 시크릿 키를 얻습니다. 암호화된 경우 LDAP 사용자 키는 AES CBC로 암호화됩니다. 키는 구성 파일 server.conf(표준 설치의 경우) 또는 graylog.conf, 또는 OVA 설치의 경우 graylog-secrets.json 파일의 secret_token 필드에 있는 password_secret 필드의 처음 16비트이며, IV는 화면에 표시된 salt입니다.
이 공격 모듈은 Graylog REST API에서 일반 텍스트로 LDAP 및 AWS에 대한 구성 및 자격 증명 정보를 얻습니다. 이 모듈을 사용하려면 Graylog 관리자 자격 증명이 필요합니다.
"y"를 입력하고 OSSIM 공격 모듈 실행을 선택하면 도구는 이 SIEM에 대해 수행할 수 있는 모든 가능한 공격을 표시합니다. 첫 번째 공격에는 자격 증명이 필요하지 않지만, 이후 공격에는 OSSIM 관리자 자격 증명이 필요합니다.
이 공격 모듈에는 dict.txt라는 OSSIM 전용 사전이 포함되어 있으며, 2018년 가장 많이 사용된 100개의 비밀번호와 SIEM 상표명 및 관리자 사용자의 다양한 변형(대문자 및 소문자, 모음을 숫자로 대체)으로 구성됩니다. 위에서 언급한 목록과 다른 목록을 사용하려면 /ossim/dict.txt를 다른 단어 목록으로 교체할 수 있으며, 파일 이름은 유지해야 합니다.
이 공격 모듈은 OSSIM 서버에서 구성 정보를 얻을 수 있습니다. 사용하려면 OSSIM 관리자 자격 증명이 필요하며, 예를 들어 사전 공격(1차 공격)을 통해 얻을 수 있습니다. 모듈의 결과는 현재 설치의 관련 구성 정보(정의된 사용자, LDAP 구성 및 비밀번호 정책을 포함한 로그인 매개변수)입니다.
이 공격 모듈은 OSSIM 서버에서 공격자 시스템으로의 리버스 쉘을 얻을 수 있습니다. 사용하려면 OSSIM 관리자 자격 증명이 필요하며, 예를 들어 사전 공격(1차 공격)을 통해 얻을 수 있습니다. 모듈은 netcat을 통해 공격자 시스템에 연결될 악성 작업을 개발합니다. 그런 다음 해당 작업을 사용하여 보안 이벤트가 발생할 경우 경고하는 새 정책을 트리거하며, 이 이벤트는 OSSIM 서버에 대한 실패한 SSH 로그인 시도를 통해 트리거됩니다. 결과적으로 OSSIM 서버에서 공격자 시스템의 포트 12345로 root 권한을 가진 리버스 쉘이 얻어집니다.
"y"를 입력하고 QRadar 공격 모듈 실행을 선택하면 도구는 이 SIEM에 대해 수행할 수 있는 모든 가능한 공격을 표시합니다. 처음 두 공격에는 자격 증명이 필요하지 않지만, 이후 공격에는 QRadar 관리자 자격 증명 또는 API 키가 필요합니다.
이 공격 모듈에는 dict.txt라는 QRadar 전용 사전이 포함되어 있으며, 2018년 가장 많이 사용된 100개의 비밀번호와 SIEM 상표명 및 관리자 사용자의 다양한 변형(대문자 및 소문자, 모음을 숫자로 대체)으로 구성됩니다. 위에서 언급한 목록과 다른 목록을 사용하려면 /qradar/dict.txt를 다른 단어 목록으로 교체할 수 있으며, 파일 이름은 유지해야 합니다. 이 공격은 QRadar에 30분당 5회 시도만 허용하는 보호 기능이 있기 때문에 매우 느립니다.
이 공격 모듈에는 apikeys.txt라는 QRadar 전용 사전이 포함되어 있으며, 이 SIEM에서 필요한 구조를 유지하는 1000가지 다양한 API 키 옵션으로 구성됩니다. 위에서 언급한 목록과 다른 목록을 사용하려면 /qradar/dict.txt를 다른 단어 목록으로 교체할 수 있으며, 파일 이름은 유지해야 합니다. 프로그램은 API 키를 임의로 생성하여 파일을 만들 수 있는 옵션을 제공합니다.
이 공격 모듈은 API 키를 사용하여 서버 구성을 얻을 수 있습니다. 사용하려면 QRadar API 키 관리자가 필요하며, 예를 들어 사전 공격(2차 공격)을 통해 얻을 수 있습니다. 모듈의 결과는 현재 설치의 관련 구성 정보(정의된 사용자, 네트워크 계층 구조, 배포 호스트)입니다.
이 공격 모듈은 Ariel 데이터베이스에 저장된 사용자 목록을 얻을 수 있습니다. 사용하려면 QRadar API 키 관리자가 필요하며, 예를 들어 사전 공격(2차 공격)을 통해 얻을 수 있습니다. 모듈의 결과는 Ariel 데이터베이스와 접촉한 사용자에 대한 관련 구성 정보입니다.
"y"를 입력하고 McAfee 공격 모듈 실행을 선택하면 도구는 이 SIEM에 대해 수행할 수 있는 모든 가능한 공격을 표시합니다. 첫 번째 공격에는 자격 증명이 필요하지 않지만, 이후 공격에는 McAfee 관리자 자격 증명이 필요합니다.
이 공격 모듈에는 dict.txt라는 McAfee 전용 사전이 포함되어 있으며, SIEM 상표명 및 관리자 사용자의 다양한 변형(대문자 및 소문자, 모음을 숫자로 대체)을 사용하여 임의로 생성된 7000개의 비밀번호로 구성됩니다. 위에서 언급한 목록과 다른 목록을 사용하려면 /mcafee/dict.txt를 다른 단어 목록으로 교체할 수 있으며, 파일 이름은 유지해야 합니다. 이 공격은 McAfee에 10분당 3회 시도만 허용하는 보호 기능이 있기 때문에 매우 느립니다.
이 공격 모듈에는 dict.txt라는 McAfee 전용 사전이 포함되어 있으며, SIEM 상표명 및 관리자 사용자의 다양한 변형(대문자 및 소문자, 모음을 숫자로 대체)을 사용하여 임의로 생성된 7000개의 비밀번호로 구성됩니다. 위에서 언급한 목록과 다른 목록을 사용하려면 /mcafee/dict.txt를 다른 단어 목록으로 교체할 수 있으며, 파일 이름은 유지해야 합니다.
이 공격 모듈은 관리자 자격 증명을 사용하여 서버 구성을 얻을 수 있습니다. 사용하려면 SSH 관리자 자격 증명이 필요하며, 예를 들어 사전 공격(2차 공격)을 통해 얻을 수 있습니다. 모듈의 결과는 현재 설치의 관련 구성 정보(네트워크의 네임서버, 활성 서비스, 네트워크 구성, 방화벽 구성)입니다.
이 공격 모듈은 관리자 자격 증명을 사용하여 서버 구성을 얻을 수 있습니다. 사용하려면 SSH 관리자 자격 증명이 필요하며, 예를 들어 사전 공격(2차 공격)을 통해 얻을 수 있습니다. 모듈의 결과는 현재 설치의 관련 구성 정보(SIEM 릴리스 번호, HDD 데이터, RAM 데이터, 프로세서 데이터, 활성 시간, 상태 다음 확인 날짜, 상태 규칙 확인 날짜, 백업 다음 날짜)입니다.
이 공격 모듈은 관리자 자격 증명을 사용하여 서버 구성을 얻을 수 있습니다. 사용하려면 SSH 관리자 자격 증명이 필요하며, 예를 들어 사전 공격(2차 공격)을 통해 얻을 수 있습니다. 모듈의 결과는 시스템 사용자에 대한 관련 정보입니다.
"y"를 입력하고 SIEMonster 공격 모듈 실행을 선택하면 도구는 이 SIEM에 대해 수행할 수 있는 모든 가능한 공격을 표시합니다. 첫 번째 공격에는 자격 증명이 필요하지 않지만, 이후 공격에는 SIEMonster 관리자 자격 증명이 필요합니다.
이 공격 모듈에는 dict.txt라는 SIEMonster 전용 사전이 포함되어 있으며, SIEM 상표명 및 관리자 사용자의 다양한 변형(대문자 및 소문자, 모음을 숫자로 대체)을 사용하여 임의로 생성된 7000개의 비밀번호로 구성됩니다. 위에서 언급한 목록과 다른 목록을 사용하려면 /siemonster/dict.txt를 다른 단어 목록으로 교체할 수 있으며, 파일 이름은 유지해야 합니다.
이 공격 모듈은 관리자 자격 증명을 사용하여 서버 구성을 얻을 수 있습니다. 사용하려면 SSH 관리자 자격 증명이 필요하며, 예를 들어 사전 공격(1차 공격)을 통해 얻을 수 있습니다. 모듈의 결과는 현재 설치의 관련 구성 정보(네트워크의 네임서버, 활성 Docker 컨테이너, 활성 서비스 목록, 네트워크 구성, 방화벽 구성)입니다.
이 공격 모듈은 관리자 자격 증명을 사용하여 서버 구성을 얻을 수 있습니다. 사용하려면 SSH 관리자 자격 증명이 필요하며, 예를 들어 사전 공격(1차 공격)을 통해 얻을 수 있습니다. 모듈의 결과는 시스템 사용자에 대한 관련 정보입니다.### ElasticSIEM 공격 모듈 "y"를 입력하고 ElasticSIEM 공격 모듈 실행을 선택하면, 이 SIEM에 대해 수행할 수 있는 모든 공격이 표시됩니다. 첫 번째 공격에는 자격 증명이 필요하지 않지만, 이후 공격에는 ElasticSIEM 관리자 자격 증명이 필요합니다.
이 공격 모듈에는 ElasticSIEM 전용 사전(dict.txt)이 포함되어 있으며, 이는 2018년 가장 많이 사용된 7000개의 비밀번호와 SIEM 상표명 및 해당 관리자 사용자의 다양한 변형(대문자 및 소문자, 모음을 숫자로 대체)으로 구성됩니다. 위에서 언급한 목록 외에 다른 목록을 사용하려는 경우, /elasticsiem/dict.txt를 다른 단어 목록으로 교체할 수 있습니다(단, 파일 이름은 유지해야 함).
이 공격 모듈을 사용하면 관리자 자격 증명을 사용하여 서버 구성을 얻을 수 있습니다. 이를 이용하려면 SSH 관리자 자격 증명이 필요하며, 예를 들어 사전 공격(1차 공격)을 통해 획득할 수 있습니다. 이 모듈의 결과는 현재 설치의 관련 구성 정보(네트워크의 네임서버, 활성 Docker 컨테이너, 활성 서비스 목록, 네트워크 구성)입니다.
오류가 발생하면 GitHub에서 이슈를 열어 신고해 주십시오. 여러분의 협력에 매우 감사드립니다!