
ThePhish: 자동화된 피싱 이메일 분석 도구
ThePhish는 TheHive, Cortex 및 MISP를 기반으로 한 자동화된 피싱 이메일 분석 도구입니다. Python 3으로 작성되고 Flask 기반의 웹 애플리케이션으로, 이메일 헤더와 본문에서 관측 가능 항목(observable)을 추출하는 것부터 대부분의 경우 최종 판정(verdict)을 산출하기까지 전체 분석 과정을 자동화합니다. 또한, 필요에 따라 분석가가 분석 과정에 개입하여 분석 중인 이메일에 대한 추가 정보를 얻을 수 있도록 합니다. TheHive 및 Cortex와 상호작용하기 위해 각각 TheHive와 Cortex에서 제공하는 REST API를 사용할 수 있는 Python API 클라이언트인 TheHive4py와 Cortex4py를 사용합니다.
다음 다이어그램은 ThePhish가 높은 수준에서 어떻게 작동하는지 보여줍니다:
이 예시는 사용자가 분석을 위해 이메일을 ThePhish에 보내는 방법과 분석가가 ThePhish를 사용하여 해당 이메일을 실제로 분석하는 방법을 보여주기 위한 것입니다.
사용자는 ThePhish가 분석할 이메일을 가져오기 위해 사용하는 이메일 주소로 이메일을 보낼 수 있습니다. 이메일 헤더의 오염을 방지하기 위해 이메일을 EML 형식의 첨부 파일로 전달(forward)해야 합니다. 이 경우 사용된 메일 클라이언트는 Mozilla Thunderbird이며, 사용된 이메일 주소는 Gmail 주소입니다.
분석가는 ThePhish의 웹 페이지로 이동하여 "List emails" 버튼을 클릭하여 분석할 이메일 목록을 얻습니다.
분석가가 선택한 이메일에 대한 "Analyze" 버튼을 클릭하면 분석이 시작되고 진행 상황이 웹 인터페이스에 표시됩니다.
그 동안 ThePhish는 이메일에서 관측 가능 항목(URL, 도메인, IP 주소, 이메일 주소, 첨부 파일 및 해당 첨부 파일의 해시)을 추출한 다음 TheHive와 상호작용하여 사례를 생성합니다.
사례 내에 세 개의 작업(task)이 생성됩니다.
그런 다음 ThePhish는 추출된 관측 가능 항목을 사례에 추가하기 시작합니다.
이 시점에서 Mailer 응답기(responder) 덕분에 분석이 시작되었음을 사용자에게 이메일로 알립니다.
첫 번째 작업의 설명을 통해 Mailer 응답기가 이메일 알림을 보낼 수 있습니다.
첫 번째 작업이 종료된 후 두 번째 작업이 시작되고 관측 가능 항목에 대한 분석기가 실행됩니다. 분석기가 실행되는 동안 분석 진행 상황이 웹 인터페이스에 표시됩니다.
TheHive의 라이브 스트림 기능을 통해 분석 진행 상황을 볼 수도 있습니다.
모든 분석기 실행이 종료되면 두 번째 작업이 종료되고 세 번째 작업이 시작된 후 ThePhish가 판정을 계산합니다. 판정이 "악성(malicious)"이므로 악성으로 확인된 모든 관측 가능 항목이 IoC로 표시됩니다. 이 경우 하나의 관측 가능 항목만 IoC로 표시됩니다.
그런 다음 사례가 MISP로 이벤트(event)로 내보내지며, 위에서 언급한 관측 가능 항목이 단일 속성(attribute)으로 포함됩니다.
그런 다음 ThePhish는 Mailer 응답기를 통해 사용자에게 이메일로 판정을 보냅니다.
마지막으로 작업과 사례 모두 종료됩니다. 세 번째 작업의 설명을 통해 Mailer 응답기가 이메일로 판정을 보낼 수 있습니다. 또한 사례는 5분 후에 종료되었으며 "True Positive" 및 "No Impact"로 해결되었습니다. 이는 공격이 피해를 입히기 전에 탐지되었음을 의미합니다.
사례가 종료되면 판정이 분석 진행 상황의 전체 로그와 함께 웹 인터페이스에서 분석가에게 제공됩니다.
이 시점에서 분석가는 돌아가서 다른 이메일을 분석할 수 있습니다. 위에 설명된 사례는 피싱 이메일에 관한 것이지만, 분석된 이메일이 "안전(safe)"으로 분류될 때도 유사한 워크플로우가 관찰됩니다. 실제로 사례가 종료되고 판정이 사용자에게 이메일로 전송됩니다.
그런 다음 판정이 웹 인터페이스에서 분석가에게도 표시됩니다.
반면, 이메일이 "의심스러움(suspicious)"으로 분류되면 판정이 웹 인터페이스에서 분석가에게만 표시됩니다.
이 시점에서 분석가는 페이지 왼쪽의 버튼을 사용하여 추가 분석을 위해 TheHive, Cortex 및 MISP를 사용해야 합니다. 분석이 아직 완료되지 않았기 때문에 사용자에게는 자신이 ThePhish에 전달한 이메일의 분석이 시작되었음을 알리는 알림만 전송됩니다. 실제로 마지막 작업과 사례는 분석가가 최종 판정을 내린 후 직접 종료해야 하므로 아직 종료되지 않았습니다.
분석가는 TheHive 및 Cortex에서 모든 분석기의 보고서를 볼 수 있으며, 이것만으로 충분하지 않은 경우 이메일의 EML 파일을 다운로드하여 수동으로 분석할 수도 있습니다.
분석가가 분석을 마치면 마지막 작업의 설명에 사용자에게 보낼 이메일 본문을 작성하고, Mailer 응답기를 시작하고, 판정이 "악성"인 경우 "Export" 버튼을 클릭하여 사례를 MISP로 내보낸 후 사례를 종료할 수 있습니다.
ThePhish는 Python 3으로 작성된 웹 애플리케이션입니다. 웹 서버는 Flask를 사용하여 구현되며, 애플리케이션의 프론트엔드 부분(HTML, CSS 및 JavaScript로 작성된 동적 페이지)은 Bootstrap을 사용하여 구현됩니다. 웹 서버 모듈 외에도 애플리케이션의 백엔드 로직은 애플리케이션 자체의 로직을 캡슐화하는 세 개의 Python 모듈과 WebSocket 프로토콜을 통해 로깅 기능을 지원하는 데 사용되는 Python 클래스로 구성됩니다. 애플리케이션 로직의 그래픽 표현을 보려면 여기를 클릭하세요. 또한 앞서 언급한 모듈에서 사용되는 여러 구성 파일이 있으며 다양한 목적을 제공합니다.
분석가가 애플리케이션의 기본 URL로 이동하면 ThePhish의 웹 페이지가 로드되고 서버와 양방향 연결이 설정됩니다. 이는 웹 페이지에서 Socket.IO JavaScript 라이브러리를 사용하여 수행되며, 브라우저와 서버 간의 실시간, 양방향 및 이벤트 기반 통신을 가능하게 합니다. 이 연결은 가능할 때마다 WebSocket 연결을 통해 설정되며 HTTP long polling을 대체 수단으로 사용합니다. 이를 위해 서버 애플리케이션은 Flask 애플리케이션에 Socket.IO 통합을 제공하는 Flask-SocketIO Python 라이브러리를 사용합니다. 그런 다음 ThePhish는 이 연결을 사용하여 웹 인터페이스에 분석 진행 상황을 표시합니다.
분석가가 웹 인터페이스에서 작업을 수행할 때마다 AJAX 요청이 서버로 전송됩니다. AJAX 요청은 비동기 HTTP 요청으로, 백그라운드에서 서버와 데이터를 교환하고 페이지를 다시 로드하지 않고 업데이트할 수 있도록 합니다. 이를 통해 분석가는 분석할 이메일 목록을 시각화하고 분석을 시작할 수 있습니다.
ThePhish는 TheHive4py 및 Cortex4py를 통해 TheHive 및 Cortex와 상호작용합니다. 또한 IMAP 서버와 상호작용하여 분석할 이메일을 검색합니다.
프로덕션 환경을 위해 TheHive, Cortex 및 MISP 서비스를 처음부터 설치하고 구성하는 것이 매우 간단하지 않을 수 있으므로, TheHive Project는 설치 절차를 용이하게 하기 위해 Docker 이미지 및 Docker Compose 템플릿을 여기에 제공합니다. 단순화를 위해 제공된 템플릿은 각 Docker 이미지의 전체 구성 옵션을 제공하지 않고 간단하게 만들어졌습니다.
ThePhish를 빠르게 테스트하거나 가능한 한 빨리 실행하려면 docker 폴더에 제공된 Docker 템플릿을 사용할 수 있습니다. 이 템플릿은 TheHive Project에서 제공하는 Docker 템플릿 중 하나를 수정한 버전으로, ThePhish 컨테이너도 생성할 수 있습니다. Docker 및 Docker Compose를 사용하여 ThePhish를 설치하려면 이 가이드를 참조하세요. 처음 사용할 때는 최소한 이 방법으로 설치하여 기본 사항과 최소 구성으로 첫 시도에 작동하는 방법을 배우는 것을 강력히 권장합니다. 실제로 앞서 링크된 가이드에서는 TheHive, Cortex 및 MISP 인스턴스를 구성하는 단계별 절차도 제공합니다.
이 가이드는 ThePhish 단독 설치에 관한 것으로, 다음이 필요합니다:
TheHive, Cortex 및 MISP 인스턴스를 설치, 구성 및 통합하려면 공식 문서를 참조하세요:
ThePhish가 분석할 이메일을 가져오는 이메일 주소는 ThePhish가 가장 많이 테스트된 Gmail 주소인 것이 좋습니다. 계정은 ThePhish에서만 사용할 목적으로 새로 생성하는 것이 좋습니다. ThePhish가 사서함에 연결하여 이메일을 가져오는 데 필요한 앱 비밀번호를 활성화하는 절차는 여기에 설명되어 있습니다.
이 설치 절차는 Ubuntu 20.04.3 LTS가 설치된 VM에서 Python 3.8과 이 docker-compose.yml 파일에 표시된 TheHive, Cortex 및 MISP 버전으로 테스트되었습니다.
TheHive, Cortex 및 MISP가 특정 URL에서 수신 대기하도록 구성되고 이메일 주소를 사용할 준비가 되면 ThePhish를 설치하고 구성할 수 있습니다.
저장소를 클론합니다.
$ git clone https://github.com/emalderson/ThePhish.git
Python 가상 환경을 생성하고 활성화합니다 (좋은 관행이지만 필수는 아닙니다).
$ cd ThePhish/app
$ sudo apt install python3-venv
$ python3 -m venv venv
$ source venv/bin/activate
요구 사항을 설치합니다.
$ pip install -r requirements.txt
TheHive4py의 api.py 파일에 run_responder() 함수를 추가합니다.
사용자에게 이메일을 보내기 위해 ThePhish는 Mailer 응답기를 사용합니다. ThePhish는 TheHive4py를 사용하여 TheHive와 상호작용하므로, 응답기 ID로 응답기를 실행할 수 있는 함수가 필요합니다. 불행히도 이 함수는 아직 TheHive4py에 포함되어 있지 않지만, 추가하기 위한 풀 리퀘스트가 제출되었습니다 (#219). 추가될 때까지 ThePhish가 제대로 작동하려면 다음 명령을 사용하여 수동으로 추가해야 합니다 (다른 Python 버전을 사용하는 경우 명령에서 Python 버전을 변경하세요):
$ (cat << _EOF_
def run_responder(self, responder_id, object_type, object_id):
req = self.url + "/api/connector/cortex/action"
try:
data = json.dumps({ "responderId": responder_id, "objectType": object_type, "objectId": object_id})
return requests.post(req, headers={"Content-Type": "application/json"}, data=data, proxies=self.proxies, auth=self.auth, verify=self.cert)
except requests.exceptions.RequestException as e:
raise TheHiveException("Responder run error: {}".format(e))
_EOF_
) | tee -a venv/lib/python3.8/site-packages/thehive4py/api.py > /dev/null
<ul class="navbar-nav text-light" id="accordionSidebar">
<li class="nav-item"><a class="nav-link active" href="/" style="max-width: 114px;" target="_blank" rel="noopener noreferrer"><img class="img-fluid" data-bss-hover-animate="bounce" src="https://raw.githubusercontent.com/emalderson/thephish/static/assets/img/logo_rounded.png" style="margin-top: 0px;margin-left: 0px;"></a></li>
<li class="nav-item"><a class="nav-link" href="http://thehive:9000" style="max-width: 114px;" target="_blank" rel="noopener noreferrer"><img class="img-fluid" data-bss-hover-animate="bounce" src="https://raw.githubusercontent.com/emalderson/thephish/static/assets/img/thehive.png" style="margin-right: 0px;margin-left: 0px;"></a></li>
<li class="nav-item"><a class="nav-link" href="http://cortex:9001" style="max-width: 114px;" target="_blank" rel="noopener noreferrer"><img class="img-fluid" data-bss-hover-animate="bounce" src="https://raw.githubusercontent.com/emalderson/thephish/static/assets/img/cortex.png" style="transform: translate(0px);"></a></li>
<li class="nav-item"><a class="nav-link" href="https://misp" style="max-width: 114px;" target="_blank" rel="noopener noreferrer"><img class="img-fluid" data-bss-hover-animate="bounce" src="https://raw.githubusercontent.com/emalderson/thephish/static/assets/img/misp.png" style="transform: translate(0px);"></a></li>
</ul>
Start the app
$ python3 thephish_app.py
The server that will be used to run the application is the WSGI server provided by eventlet, since it is listed in the requirements. It is needed for the WebSocket protocol to work and avoid falling back to HTTP long polling. Without eventlet, the default Flask WSGI server (Werkzeug) will be used. If you wish to use another WSGI server (e.g. Gunicorn) or use a reverse proxy (e.g. NGINX), the Flask-SocketIO documentation explains how to do that.
Now the application should be reachable at http://localhost:8080.
⚠️ Warning: If you are using Mozilla Firefox to use ThePhish and for some reason an error message appears during the analysis, the solution may be found here.
ThePhish can start an analyzer or a responder only if it is enabled and correctly configured on Cortex. This part of the documentation explains how to enable them, while this part lists the available analyzers and responders with their configuration parameters. It should be noted that while many analyzers are free to use, some require special access and others necessitate a valid service subscription or product license.
Each analyzer outputs a report in JSON format that contains a maliciousness level for an observable that can be one of "info", "safe", "suspicious" or "malicious". However, even though the report structure usually follows a convention, this convention is not always respected. Moreover, after the analysis of the code of many analyzers and several tests, some analyzers have been found to contain bugs. For this reason, some tweaks and workarounds have been used either to obtain the maliciousness levels provided by these analyzers anyway or to prevent the application from crashing due to those bugs.
Furthermore, these levels do not always represent the real maliciousness level of an observable. Since this depends on how the analyzers themselves have been programmed, ThePhish comes with another configuration file called analyzers_level_conf.json, with which it is possible to create a mapping between the actual maliciousness levels provided by any analyzer and the levels decided by the analyst. Besides that, this file allows the analyst to choose what are the observable types to which these modifications should be applied. The file needs to follow the structure shown in the example here, using the exact name of the analyzers to configure and with the desired level on the right. If an analyzer is not listed in this file, then the maliciousness levels it provides are left untouched. The file needs to follow the structure shown in the following example, using the exact name of the analyzers to configure and with the desired level on the right. If an analyzer is not listed in this file, then the maliciousness levels it provides are left untouched.```json
{
"DomainMailSPFDMARC_Analyzer_1_1" : {
"dataType" : ["url", "ip", "domain", "mail"],
"levelMapping" : {
"malicious" : "suspicious",
"suspicious" : "suspicious",
"safe" : "safe",
"info" : "info"
}
},
"MISP_2_1" : {
"dataType" : ["url", "ip", "domain", "mail"],
"levelMapping" : {
"malicious" : "malicious",
"suspicious" : "malicious",
"safe" : "safe",
"info" : "info"
}
}
}
이 예제에서는 *MISP_2_1* 분석기의 수준 "suspicious"가 "malicious"로 상향 조정되었습니다. 이는 현재 분석 중인 이메일의 일부 관측 가능 항목이 이전에 분석된 이메일에서 이미 발견되었으며, 해당 이메일의 평결이 "malicious"였음을 나타내기 때문입니다. 반대로, *DomainMailSPFDMARC_Analyzer_1_1* 분석기의 수준 "malicious"는 "suspicious"로 하향 조정되었습니다. 많은 합법적인 도메인이 DMARC 및 SPF 레코드를 구성하지 않았기 때문입니다.
이 파일에서 원하는 대로 분석기를 추가하거나 제거할 수 있지만, 이미 파일에 있는 분석기는 그대로 두는 것을 권장합니다. 해당 수정 사항은 다양한 이메일에서 수행된 많은 테스트를 통해 동기 부여되었기 때문입니다.
### 테스트된 분석기
ThePhish는 다음 분석기에서 테스트되었습니다:
- AbuseIPDB_1_0
- AnyRun_Sandbox_Analysis_1_0
- CyberCrime-Tracker_1_0
- Cyberprotect_ThreatScore_3_0
- *DomainMailSPFDMARC_Analyzer_1_1*
- DShield_lookup_1_0
- EmailRep_1_0
- FileInfo_8_0
- Fortiguard_URLCategory_2_1
- IPinfo_Details_1_0
- **IPVoid_1_0**
- KasperskyThreatIntelligencePortal_1_0
- Maltiverse_Report_1_0
- *Malwares_GetReport_1_0*
- *Malwares_Scan_1_0*
- MaxMind_GeoIP_4_0
- MetaDefenderCloud_GetReport_1_0
- *MISP_2_1*
- NERD_1_0
- *Onyphe_Summary_1_0*
- OTXQuery_2_0
- PassiveTotal_Enrichment_2_0
- *PassiveTotal_Malware_2_0*
- PassiveTotal_Osint_2_0
- PassiveTotal_Ssl_Certificate_Details_2_0
- PassiveTotal_Ssl_Certificate_History_2_0
- PassiveTotal_Unique_Resolutions_2_0
- PassiveTotal_Whois_Details_2_0
- PhishTank_CheckURL_2_1
- **Pulsedive_GetIndicator_1_0**
- *Robtex_Forward_PDNS_Query_1_0*
- *Robtex_IP_Query_1_0*
- *Robtex_Reverse_PDNS_Query_1_0*
- Shodan_DNSResolve_1_0
- **Shodan_Host_1_0**
- **Shodan_Host_History_1_0**
- Shodan_InfoDomain_1_0
- **SpamhausDBL_1_0**
- StopForumSpam_1_0
- *Threatcrowd_1_0*
- UnshortenLink_1_2
- **URLhaus_2_0**
- Urlscan_io_Scan_0_1_0
- *Urlscan_io_Search_0_1_1*
- VirusTotal_GetReport_3_1
- VirusTotal_Scan_3_1
- Yara_2_0
*기울임체*로 강조된 분석기는 수준이 수정된 분석기입니다(재정의 가능하지만 권장되지 않음). 반면 **굵게** 강조된 분석기는 보고서 구조의 규칙을 따르지 않거나 버그가 있어 ThePhish 코드에서 직접 처리되는 분석기입니다. 또한 다음 분석기는 최상의 방식으로 사용하기 위해 ThePhish 코드에서 처리됩니다:
- **DomainMailSPFDMARC_Analyzer_1_1**: 이메일을 보낼 수 있어야 하는 도메인에서만 시작됩니다.
- **MISP_2_1**: MISP와의 통합에 사용됩니다.
- **UnshortenLink_1_2**: URL에서 다른 분석기보다 먼저 시작되어 링크를 단축 해제하고 단축 해제된 링크를 추가 관측 가능 항목으로 추가할 수 있도록 합니다.
- **Yara_2_0**: EML 첨부 파일에서 시작되는 유일한 분석기입니다.
### *MISP* 분석기 활성화
Cortex를 MISP와 통합하려면 *MISP_2_1* 분석기를 활성화하고 Cortex가 MISP와 상호 작용하는 데 사용할 MISP에서 생성된 사용자의 인증 키로 구성해야 합니다. 즉, MISP에서 먼저 조직과 해당 조직 내 `sync_user` 역할을 가진 사용자를 생성해야 합니다(이를 수행하고 인증 키를 얻는 방법은 [여기(ThePhish 문서, 권장)](https://github.com/emalderson/ThePhish/tree/master/docker#configure-the-misp-container) 또는 [여기(MISP 문서)](https://www.circl.lu/doc/misp/administration/#users)에서 확인할 수 있습니다).
### *Yara* 분석기 활성화
*Yara_2_0* 분석기를 사용하려면 Cortex가 실행 중인 시스템에 다음을 포함하는 폴더를 생성해야 합니다:
- Yara 규칙. 각 규칙은 `.yar` 확장자를 가진 파일입니다.
- `index.yar`라는 파일. 이 파일에는 해당 폴더의 각 Yara 규칙에 대한 행이 포함되며, 다음 구문을 따릅니다: `include "yara_rule_name.yar"`
그런 다음 Cortex에서 이 폴더의 경로를 구성해야 합니다. 예를 들어, `/opt/cortex` 경로에 `yara_rules` 폴더를 생성한 경우, Cortex에서 경로 `/opt/cortex/yara_rules`를 구성해야 합니다(웹 인터페이스에서).
## *Mailer* 응답기 활성화
사용자에게 이메일을 보내려면 *Mailer* 응답기를 활성화하고 올바르게 구성해야 합니다. 응답기를 활성화하는 절차는 분석기를 활성화하는 절차와 동일합니다. Gmail 주소를 사용하는 경우 올바른 매개변수는 다음과 같습니다:
- from: `<YourGmailEmailAddress>`
- smtp_host :`smtp.gmail.com`
- smtp_port: `587`
- smtp_user: `<YourGmailEmailAddress>`
- smtp_pwd: `<YourGmailEmailAddressAppPassword>`
## 화이트리스트 사용
ThePhish는 오탐을 유발할 수 있거나 분석 중에 고려되지 않아야 한다고 분석가가 결정한 관측 가능 항목을 분석하지 않도록 화이트리스트를 생성할 수 있습니다. 화이트리스트는 `whitelist.json`이라는 파일에 포함되어 있으며, 일치시킬 관측 가능 항목 유형과 일치 모드 모두에서 뛰어난 유연성을 제공하기 위해 여러 목록으로 구성됩니다. 다음 일치 모드를 지원합니다:
- 이메일 주소, IP 주소, URL, 도메인, 파일 이름, 파일 유형 및 해시에 대한 정확한 문자열 일치
- 이메일 주소, IP 주소, URL, 도메인 및 파일 이름에 대한 정규식 일치
- 지정된 도메인을 포함하는 하위 도메인, 이메일 주소 및 URL에 대한 정규식 일치
다음은 `whitelist.json` 파일의 예시입니다.```json
{
"exactMatching": {
"mail" : [],
"ip" : [
"127.0.0.1",
"8.8.8.8",
"8.8.4.4"
],
"url" : [],
"domain" : [
"adf.ly",
"paypal.com"
],
"filename" : [],
"filetype" : [
"application/pdf"
],
"hash" : []
},
"domainsInSubdomains" : [
"paypal.com"
],
"domainsInURLs" : [
"paypal.com"
],
"domainsInEmails" : [
"paypal.com"
],
"regexMatching" : {
"mail" : [],
"ip" : [
"10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}",
"172\\.16\\.\\d{1,3}\\.\\d{1,3}",
"192\\.168\\.\\d{1,3}\\.\\d{1,3}"
],
"url" : [],
"domain" : [],
"filename" : []
}
}
정확 일치와 정규식 일치에 관련된 부분은 수정 없이 사용되는 반면, 나머지 부분은 세 개의 추가 정규식 목록을 만드는 데 사용됩니다. 이러한 기능을 활성화하기 위해 복잡한 정규식을 설계할 필요는 없으며, 올바른 목록에 도메인을 추가하기만 하면 ThePhish가 나머지를 처리합니다. 예를 들어, 위의 예시에서는 "paypal.com" 도메인뿐만 아니라 "paypal.com" 도메인을 포함하는 모든 하위 도메인, URL 및 이메일 주소도 필터링됩니다. 이러한 정규식은 "paypal.com.attacker.com"과 같은 도메인이 실수로 허용 목록에 추가되는 것을 방지하는 등 원치 않는 동작을 피하기 위해 설계되었습니다.
참고: "domainsInSubdomains" 아래에 도메인을 추가하면 해당 도메인 자체도 필터링됩니다. 따라서 동일한 도메인을 "exactMatching" 아래의 도메인 목록에 추가할 필요가 없습니다. 이 구분은 도메인 자체만 허용 목록에 추가해야 하고 하위 도메인은 추가하지 않아야 하는 경우를 위해 마련되었습니다. 따라서 이 예제에서 "paypal.com"을 두 목록 모두에 포함시키는 것은 불필요합니다.
이 저장소에 제공된 허용 목록 파일에는 이미 일부 허용된 관측 가능 항목이 채워져 있지만, 이는 단지 예시일 뿐입니다. 요소를 제거하거나 추가하여 필요에 맞게 편집할 수 있습니다(그리고 해야 합니다).
ThePhish는 케이스를 MISP 이벤트로 내보낼 수 있는 TheHive의 훌륭한 기능을 사용합니다. 이를 통해 MISP_2_1 분석기를 사용하여 케이스의 관측 가능 항목과 MISP의 이벤트 속성 간의 일치를 검색할 수 있습니다. 안타깝게도 ThePhish 개발 초기 단계에서는 TheHive4py에서 Python API를 통해 이를 수행하는 함수를 아직 사용할 수 없었습니다. 이러한 이유로 TheHive4py에 이러한 기능을 추가하기 위한 풀 리퀘스트(#187)가 제출되었습니다. 풀 리퀘스트는 승인되었으며, export_to_misp() 함수가 TheHive4py의 1.8.0 마일스톤에 추가되었습니다.
ThePhish는 Cortex에서 제공하는 분석기에 크게 의존합니다. 분석기가 계속 의도한 대로 작동하도록 하기 위해, 분석기가 포함된 저장소에 풀 리퀘스트가 제출됩니다. 다음은 이러한 풀 리퀘스트의 업데이트된 목록입니다.
ThePhish는 AGPL (Affero General Public License) 하에 배포되는 오픈 소스 무료 소프트웨어입니다.
이 프로젝트는 2020년에 시작되었으며, 초기 및 미완성 버전은 나폴리 페데리코 2세 대학교가 주최한 Cybersecurity HackAdemy 졸업을 위한 최종 프로젝트로 발표되었습니다. 이에 대해 초기 아이디어를 제공한 Roberto Celletti와 초기 배포 및 첫 테스트를 통해 애플리케이션 개발 초기 단계를 도와준 gianpor, MrFelpon, xdinax로 구성된 팀에 감사드립니다.
그 후 도구의 기능, 로고 및 UI를 완전히 재설계하고 Docker 지원을 추가했으며, 2021년 나폴리 페데리코 2세 대학교 컴퓨터 공학 석사 학위 최종 논문으로 발표하기 위해 지도 교수 Simon Pietro Romano(spromano)와 함께 상세한 문서를 작성했습니다.
또한 IMAP2TheHive를 개발하여 GitHub에 공개한 Xavier Mertens(xme)에게 감사드립니다. 이 프로젝트의 출발점이 되었고 ThePhish의 코드가 참고한 원천이기 때문입니다.
구성
configuration.json 파일은 사서함 및 TheHive, Cortex, MISP 인스턴스에 연결하기 위한 매개변수를 설정할 수 있는 전역 구성 파일입니다. 또한 TheHive에 생성될 사례와 관련된 매개변수를 설정할 수 있습니다.
{
"imap" : {
"host" : "imap.gmail.com",
"port" : "993",
"user" : "",
"password" : "",
"folder" : "inbox"
},
"thehive" : {
"url" : "http://thehive:9000",
"apikey" : ""
},
"cortex" : {
"url" : "http://cortex:9001",
"apikey" : "",
"id" : "local"
},
"misp" : {
"id" : "MISP THP"
},
"case" : {
"tlp" : "2",
"pap" : "2",
"tags" : ["email", "ThePhish"]
}
}
TheHive에서 조직(organization)과 해당 조직 내에서 org-admin 역할을 가진 사용자를 생성하고 API 키를 얻는 방법은 여기 (ThePhish 문서, 권장) 또는 여기 (TheHive 문서)에서 확인할 수 있습니다. 마찬가지로, Cortex에서 조직과 해당 조직 내에서 read, analyze 역할을 가진 사용자를 생성하고 API 키를 얻는 방법은 여기 (ThePhish 문서, 권장) 또는 여기 (Cortex 문서)에서 확인할 수 있습니다.
이 파일에 설정된 URL과 ID는 TheHive의 구성 파일인 application.conf에 설정된 것과 동일해야 합니다. 이 파일에는 Cortex 관련 부분과 MISP 관련 부분이 포함되어 있습니다. 찾아야 할 매개변수는 두 부분 모두에서 name과 url이며, 이는 Cortex 및 MISP 인스턴스의 ID와 URL에 해당합니다. ID는 TheHive 웹 인터페이스의 About 창에서도 찾을 수 있습니다. 다음 그림은 Cortex ID가 local이고 MISP ID가 MISP THP인 예를 보여줍니다:
application.conf 파일은 TheHive를 Cortex 및 MISP와 통합하는 데 사용됩니다. Cortex와의 통합 설정 방법은 여기 (ThePhish 문서, 권장) 또는 여기 (TheHive 문서)에서 확인할 수 있으며, MISP와의 통합은 여기 (ThePhish 문서, 권장) 또는 여기 (TheHive 문서)에서 확인할 수 있습니다.The URLs at which TheHive, Cortex and MISP instances are reachable should also be replaced in the file templates/index.html so that the buttons on the web interface will be able to reach them. To do that, replace the last three href of this portion of code: