
IP 평판과 과거 데이터를 기반으로 위협 및 악성 웹 트래픽을 식별하는 고급 실시간 위협 인텔리전스 프레임워크

ARTIF는 MISP 위에 또 다른 추상화 계층을 추가하여 IP 평판과 과거 데이터를 기반으로 위협 및 악성 웹 트래픽을 식별하는 새로운 고급 실시간 위협 인텔리전스 프레임워크입니다. 또한 다양한 요소를 기반으로 관찰 가능 항목을 수집, 처리 및 상관 분석하여 자동으로 강화하고 위협 점수를 매깁니다.
ARTIF의 주요 기능은 다음과 같습니다:-
일부 사용 사례:-
ARTIF를 사용해야 하는 이유는 무엇인가요? MISP에 존재하지 않는 악성 IP도 식별할 수 있는 실시간 위협 인텔리전스 프레임워크입니다. 이를 통해 조직은 서버에 도달하는 악성 웹 트래픽에 대한 투명성을 확보하여 첫 번째 방어 계층을 구축할 수 있습니다.
MISP에서 인용: MISP는 사이버 보안 사고 분석 및 악성코드 분석에 관한 사이버 보안 지표 및 위협을 수집, 저장, 배포 및 공유하기 위한 오픈 소스 소프트웨어 솔루션입니다. MISP는 사고 분석가, 보안 및 ICT 전문가, 악성코드 리버서들이 일상 업무에서 구조화된 정보를 효율적으로 공유할 수 있도록 설계되었습니다.
MISP는 소스 코드 또는 사전 빌드된 AWS 이미지를 사용하여 설치할 수 있습니다. MISP 설치에 대한 자세한 내용은 해당 웹사이트에서 확인할 수 있습니다.
maxmind:
image: maxmindinc/geoipupdate
environment:
GEOIPUPDATE_ACCOUNT_ID: xxxxx
GEOIPUPDATE_LICENSE_KEY: xxxxxxxxxxxxxx
git clone https://github.com/CRED-CLUB/ARTIF/
sudo docker-compose build
sudo docker-compose up
참고용 config example.yaml입니다. 해당 값을 본인의 값으로 바꾸십시오.
credentials:
MISP_URL: "https://127.0.0.1"
MISP_KEY: "qwertyuiopasdfghjk"
python3 /home/user/ARTIF/ip_rep/feed_ingestor/update_check.py -s
python3 /home/user/ARTIF/ip_rep/feed_ingestor/update_check.py
python3 manage.py crontab add
python3 manage.py runserver
그러면 IP 주소의 메타데이터를 가져오는 데 사용할 수 있는 포트 8000이 열립니다. 이제 특정 IP의 위협 점수를 얻을 수 있습니다.
curl 127.0.0.1:8000/ip/?ip=x.x.x.x
출력은 다음과 같습니다.
{"is_IoC": false, "is_Active": false, "metadata": {"asn": "AS165**", "country": "XXX", "org": "XXX"}, "score": 80.14671726301682, "description": "XXX", "blacklists": "", "type": "", "historical":false, verdict": "No action needed"}
점수는 위협 점수가 높을수록 IP에 대한 위험이 낮음을 나타냅니다. 점수가 높을수록 비악성 IP일 가능성이 낮아집니다.
참고: ARTIF 설치에는 8GB RAM의 인스턴스가 권장됩니다.
도커 컨테이너 설정

ARTIF 시작

ARTIF는 MISP와의 동기화를 지원합니다. MISP 피드를 동기화하여 settings.yaml에서 가장 최근 구성을 가져오고 MISP에서 수정된 모든 새 이벤트는 settings.yaml에 반영됩니다. 새 IP를 추가하려면 MISP에 로그인하고 피드 추가 페이지를 클릭하기만 하면 됩니다. IP가 추가되면 cronjob이 예약에 따라 이를 가져와 자동으로 처리됩니다.
ARTIF는 위협 프레임워크로서 조직 내 트래픽 가시성에 매우 유용합니다. 완전히 Python으로 작성되었으며 다양한 피드에서 IP에 대한 인텔리전스를 수집합니다. 그런 다음 이 데이터를 상관 엔진으로 보내 위협 점수를 생성하며, 여기서 과거 데이터도 위협 점수 계산에 고려되는 요소 중 하나입니다.
새 IP가 서비스에 도달할 때마다 celery worker가 할당되어 상관 엔진과 조정하여 데이터베이스에서 점수를 업데이트하며, 상관 엔진은 여러 소스에서 데이터를 수집합니다. 데이터가 오래되지 않도록(기본 '유효 시간' 값은 24시간) 지난 '유효 시간' 동안 업데이트되지 않은 데이터베이스의 각 IP에 대해 worker를 실행합니다. 다른 모든 매개변수와 마찬가지로 이 값도 구성 가능합니다. 위협 점수 계산이 이 모든 것의 핵심이므로 많은 중점을 두었습니다. MISP, Cortex, Alien Vault, VirusTotal 및 널리 알려진 IP 블랙리스트와 같은 잘 알려진 위협 피드 외에도 비즈니스 및 보안 사용 사례에 따라 사용자 정의 피드를 추가할 수 있으며, 여기서 고객 충성도도 위협 점수 계산의 매개변수로 사용할 수 있습니다.
구성의 용이성을 위해 ARTIF는 실행을 위해 다음 입력이 필요합니다.
실행 시 데이터는 MongoDB 컨테이너에 처리되어 저장됩니다. MongoDB 컨테이너에는 피드의 IP에 대한 정보와 해당 메타데이터(예: 국가/ASN, 조직 등)를 저장하는 3개의 중요한 데이터베이스가 있습니다. 데이터베이스에서 IP를 찾을 수 없으면 서버에 도달한 새 IP이며 MISP에 정보가 없는 것입니다. 그런 다음 알고리즘과 지리적 위치, ASN, 조직 등 다양한 기타 매개변수를 사용하여 특정 IP에 대한 위험 점수를 계산합니다. 점수 엔진에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
ARTIF에는 오래된 피드를 추적하는 추가 기능이 있습니다. 기본 구성은 24시간마다 최신 피드를 보충합니다. 24시간 후에 오래된 피드는 다른 컬렉션으로 이동되고 최신 피드가 추가됩니다. 운영의 용이성을 위해 출력에 "historical"이라는 필드를 추가하여 IP가 역사적으로 악성인지 여부를 알려줍니다. false 값은 IP가 최근에 피드에 추가되었음을 나타내고 true 값은 IP가 이미 오래된 피드에 존재했으므로 역사적으로 악성 IP임을 나타냅니다.
모든 과거 IP는 기본적으로 7일 후에 데이터베이스에서 제거됩니다.

ARTIF의 핵심인 update_check.py를 사용하여 ARTIF를 호출해야 합니다.
ubuntu@localhost:~/ARTIF/ip_rep/feed_ingestor$ python3 /home/user/ARTIF/ip_rep/feed_ingestor/update_check.py -h
usage: update_check.py [-h] [-s [S]] -k [KEY] -m MISP
IP reputation program
optional arguments:
-h, --help show this help message and exit
-s [S] Required only for the first run
또한 아래 명령을 실행하여 cron 작업을 확인할 수 있습니다 -
python3 manage.py crontab show
이렇게 하면 피드가 자동으로 업데이트됩니다. 기본적으로 24시간마다 MISP에서 최신 피드를 확인하고 피드의 새 IP로 DB를 보충합니다. 7일이 지난 IP도 스케줄러에 의해 제거됩니다.
태그가 이미 있는데 추가하려고 할 때 발생하므로 안전하게 무시할 수 있습니다. 해당 경우 위와 같은 오류가 발생하므로 태그 제거를 수행할 수 없습니다. MISP는 이러한 예외를 포착할 방법이 없으므로 이 방법에 의존해야 합니다.
인터넷 속도와 RAM에 따라 30분에서 90분까지 시간이 걸릴 수 있습니다. 기본적으로 모든 피드를 MongoDB에 다운로드하고 처리하는 작업이므로 시간이 걸리며 일회성 작업입니다.
해결 방법: 이러한 경우 -s 인수 없이 update_check.py 파일을 실행하십시오. 그러면 피드에서 모든 IP를 다운로드합니다. 이 오류는 일반적으로 update_check.py 실행을 초기 단계에서 갑자기 중단할 때 발생합니다.
기여는 언제나 환영합니다! 시작하는 방법은 contributing.md를 참조하세요. 이 프로젝트의 code of conduct를 준수해 주시기 바랍니다.
팀과 소통하는 가장 쉬운 방법은 GitHub Issues를 이용하는 것입니다. 새 이슈, 기능 요청 및 제안을 등록해 주시되, 새 이슈를 생성하기 전에 유사한 열려 있거나 닫힌 기존 이슈를 검색해 주세요.