QWER
OVERVIEW * Paloalto Firewall에서 방화벽 정책을 생성할때, 사용될수 있는 destination의 적용과 관련된 부분에 대한 메모 * 목적지에 대한 적용 순서는 destintaion -> url category -> url filtering 로 적용 CONTENT * Packet 처리 방법에 대한 자세한 Diagram * 자세한 내용은 https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClVHCA0 참고 DESTINATION 적용 테스트 CASE1 * Destination IP : any * URL Category : www.naver.com * URL Filtering : X * Action : Allow * Result * www.naver.com 접근 가능 * CASE2 * Destination IP : 1.1.1.1 * URL Category : www.naver.com * URL Filtering : X * Action : Allow * Result * www.naver.com 접근 불가능 * CASE3 * Destination IP : 223.130.192.248 -> naver.com ip * URL Category : www.naver.com * URL Filtering : X * Action : Allow * Result * destination ip와 url 매칭해야 접속 허용 * * CASE4 * Destination IP : any * URL Category : www.naver.com * URL Filtering : www.naver.com / alert * Action : Allow * Result * 정상접근 * CASE5 * Destination IP : any * URL Category : www.naver.com * URL Filtering : www.naver.com / block * Action : Allow * Result * 정상접근 * CASE6 * Destination IP : any * URL Category : www.naver.com * URL Filtering : www.naver.com / alert * Action : deny * Result * 차단되는데 차단 정책이 실제로는 다른 정책에 걸림 * * 차단 정책이 실제 설정된 정책에서 차단되는 것이 아니라 아래의 STUDY_TEST_MACHINE_ALL_DENY 에 걸림 * CASE7 * Destination IP : any * URL Category : www.naver.com * URL Filtering : www.naver.com / alert * Action : deny * Result * Case6에서 차단되는 정책을 Disable 할 경우 * * 이번에는 원하는 정책에서 차단됨을 볼수 있음 * * * (?) REFERENCE * https://networkinterview.com/palo-alto-firewall-architecture/ [https://networkinterview.com/palo-alto-firewall-architecture/] * https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClVHCA0
QWER
OVERVIEW * React 상에서 Loading 페이지를 만들때 유용하게 사용되는 Spinners의 모음 * Next.js 에서 react-spinner 사용시 Animation이 정상적으로 동작하지 않는 상태 * 결론적으로는 client components에서 사용해야 정상적으로 작동 * Next.js 에서의 react-spinners 사용 관련 설명 Youtube * https://www.youtube.com/watch?v=uurNrvXbXto&t=300s [https://www.youtube.com/watch?v=uurNrvXbXto&t=300s] * react-spinners Git : https://github.com/davidhu2000/react-spinners [https://github.com/davidhu2000/react-spinners] CONTENT * Spinner Library를 설치 후 그냥 Server Components로 사용하는 경우 정상적으로 Animation이 동작하지 않음 import BeatLoader from "react-spinners/BeatLoader"; export default function Loading() { return <> <div className="h-full flex flex-col items-center justify-center"> <div className="spinner"> <BeatLoader color="#3a5df6" speedMultiplier={0.8} /> </div> <p className="text-slate-500">Loading...</p> </div> </> } * 아래와 같은 형태로 변화 Spinner가 변화 없는 상태 * Spinner를 별도 client component로 생성 후 생성된 component를 Import 해주시면 정상적으로 Spinner 동작 SPINNER.TSX "use client" import BeatLoader from "react-spinners/BeatLoader"; const Spinner = () => { return ( <div className="spinner"> <BeatLoader color="#3a5df6" speedMultiplier={0.8} /> </div> ); } export default Spinner; PAGE.TSX import Spinner from '@/ui/Spinner' const AdminPage = () => { return ( <div> <Spinner/> </div> ) } * Client Component로 import 시 정상적으로 동작 * 실제 로딩 페이지 적용
QWER
OVERVIEW * Suricata는 고성능 네트워크 보안 엔진으로, 침입 탐지 시스템(IDS), 침입 방지 시스템(IPS), 네트워크 보안 모니터링(NSM)을 지원한다. * 다중 스레드를 활용하여 높은 트래픽을 처리할 수 있으며, Snort 규칙과 호환된다. * 패킷 캡처 및 분석을 통해 네트워크 위협을 실시간으로 감지한다. * 현재 6.X 버전대는 EOL 되었고, 7.0.X 가 Stable로 배포되고 있다. * Raspberry PI에는 6.X 버전만 현재 설치 간 * 공식 사이트 : https://suricata.io/ [https://suricata.io/] * 대략적인 구성도 * NETWORK INTERFACE SETTING * Raspberry PI의 wlan은 Mgmt용으로, UTP Port는 Mirror 트래픽 수집용으로 사용 * Mirror Traffic 수집용 Network Interface는 Deactive해서 실질적인 통신은 이루어지지 않도록 함 user@raspberrypi:~/suricata-custom $ nmtui * 아래 이미지가 deactivate 상태 * Deactivate 설정 후에는 tx count가 올라가지 않음 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 2c:cf:67:29:2d:17 txqueuelen 1000 (Ethernet) RX packets 1632800 bytes 788679755 (752.1 MiB) RX errors 0 dropped 1383 overruns 0 frame 0 TX packets 10155 bytes 3826902 (3.6 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 106 INSTALL * ARM버전으로는 현재 7버전은 설치 불가능 한 것으로 보임 * ubuntu의 경우 https://docs.suricata.io/en/latest/install.html#ubuntu-from-personal-package-archives-ppa [https://docs.suricata.io/en/latest/install.html#ubuntu-from-personal-package-archives-ppa] 을 참고해서 설치 user@raspberrypi:~ $ sudo apt-get install suricata Reading package lists... Done Building dependency tree... Done Reading state information... Done The following additional packages will be installed: libhiredis0.14 libhtp2 libmaxminddb0 libnet1 libnetfilter-log1 libnetfilter-queue1 libpcre3 suricata-update Suggested packages: mmdb-bin libtcmalloc-minimal4 Recommended packages: snort-rules-default The following NEW packages will be installed: libhiredis0.14 libhtp2 libmaxminddb0 libnet1 libnetfilter-log1 libnetfilter-queue1 libpcre3 suricata suricata-update 0 upgraded, 9 newly installed, 0 to remove and 47 not upgraded. 41 not fully installed or removed. Need to get 2,326 kB of archives. After this operation, 7,835 kB of additional disk space will be used. ...(중략)... user@raspberrypi:~ $ sudo systemctl status suricata ● suricata.service - Suricata IDS/IDP daemon Loaded: loaded (/lib/systemd/system/suricata.service; enabled; preset: enabled) Active: active (running) since Sat 2024-08-10 16:17:26 KST; 21s ago Docs: man:suricata(8) man:suricatasc(8) https://suricata-ids.org/docs/ Process: 3566 ExecStart=/usr/bin/suricata -D --af-packet -c /etc/suricata/suricata.yaml --pidfile /run/suricata.pid (code=exited, status=0/SUCCESS) Main PID: 3567 (Suricata-Main) Tasks: 10 (limit: 9252) CPU: 183ms CGroup: /system.slice/suricata.service └─3567 /usr/bin/suricata -D --af-packet -c /etc/suricata/suricata.yaml --pidfile /run/suricata.pid Aug 10 16:17:26 raspberrypi systemd[1]: Starting suricata.service - Suricata IDS/IDP daemon... Aug 10 16:17:26 raspberrypi suricata[3566]: 10/8/2024 -- 16:17:26 - <Notice> - This is Suricata version 6.0.10 RELEASE running in SYSTEM mode Aug 10 16:17:26 raspberrypi systemd[1]: Started suricata.service - Suricata IDS/IDP daemon. SURICATA CONFIGURATIONS * service file * 기존 service config를 변경할 일은 크게 없지만, 변경이 필요한 경우 아래 Path에서 설정 파일 변경 필요 user@raspberrypi:~/suricata-custom $ vim /usr/lib/systemd/system/suricata.service [Unit] Description=Suricata IDS/IDP daemon After=network.target network-online.target Requires=network-online.target Documentation=man:suricata(8) man:suricatasc(8) Documentation=https://suricata-ids.org/docs/ [Service] Type=forking #Environment=LD_PRELOAD=/usr/lib/libtcmalloc_minimal.so.4 PIDFile=/run/suricata.pid ExecStart=/usr/bin/suricata -D --af-packet -c /etc/suricata/suricata.yaml --pidfile /run/suricata.pid ExecReload=/usr/bin/suricatasc -c reload-rules ; /bin/kill -HUP $MAINPID ExecStop=/usr/bin/suricatasc -c shutdown Restart=on-failure ProtectSystem=full ProtectHome=true [Install] WantedBy=multi-user.target * Suricata configuration과 rule는 git으로 관리하는 형태로 진행 * git 설정이 완료되면 suricata-start.sh [https://suricata-start.sh/] 를 실행하면 정책을 기본 설치 경로에 복사하고 실행 #!/bin/bash git pull sudo cp -r ./* /etc/suricata/ sudo sudo systemctl restart suricata SURICATAK ES INTEGRATIONS * Elastic Agent를 이용하면 Log 수집이 쉬움 * 일반적인 PC 프로세서가 아니기에 안내의 인스톨링 방법이 아닌, ARM 관련 패키지를 이용해 설치 필요 * 정상적으로 설치가 되면 아래의 이미지와 같이 수집된 로그 확인 가능 curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.14.1-linux-arm64.tar.gz tar xzvf elastic-agent-8.14.1-linux-arm64.tar.gz cd elastic-agent-8.14.1-linux-arm64 sudo ./elastic-agent install --url=https://{IP}:{Port} --enrollment-token={{Toekn}} --insecure
QWER
nginx로 reverse proxy 이용할려고 하니 계속 오류 발생. 단순 nginx conf 관련 오류로 판단해서, 설정을 이리 저리 수정 해도 안됨 대강 아래와 같은 오류 발생 GET / HTTP/2.0", upstream: "http://127.0.0.1:5678/", host: "192.168.1.50" 2024/05/01 21:35:47 [crit] 41577#41577: *1 connect() to 127.0.0.1:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.1.162, server: 192.168.1.50, request: "GET /nginx-logo.png HTTP/2.0", upstream: "http://127.0.0.1:5678/nginx-logo.png", host: "192.168.1.50", referrer: "https://192.168.1.50/" 2024/05/01 21:35:48 [crit] 41577#41577: *1 connect() to 127.0.0.1:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.1.162, server: 192.168.1.50, request: "GET / HTTP/2.0", upstream: "http://127.0.0.1:5678/", host: "192.168.1.50" 2024/05/01 21:35:48 [crit] 41577#41577: *1 connect() to 127.0.0.1:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.1.162, server: 192.168.1.50, request: "GET /nginx-logo.png HTTP/2.0", upstream: "http://127.0.0.1:5678/nginx-logo.png", host: "192.168.1.50", referrer: "https://192.168.1.50/" 2024/05/01 21:35:48 [crit] 41577#41577: *1 connect() to 127.0.0.1:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.1.162, server: 192.168.1.50, request: "GET / HTTP/2.0", upstream: "http://127.0.0.1:5678/", host: "192.168.1.50" 2024/05/01 21:35:48 [crit] 41577#41577: *1 connect() to 127.0.0.1:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.1.162, server: 192.168.1.50, request: "GET /nginx-logo.png HTTP/2.0", upstream: "http://127.0.0.1:5678/nginx-logo.png", host: "192.168.1.50", referrer: "https://192.168.1.50/" 2024/05/01 21:35:49 [crit] 41577#41577: *1 connect() to 127.0.0.1:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.1.162, server: 192.168.1.50, request: "GET / HTTP/2.0", upstream: "http://127.0.0.1:5678/", host: "192.168.1.50" 2024/05/01 21:35:49 [crit] 41577#41577: *1 connect() to 127.0.0.1:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.1.162, server: 192.168.1.50, request: "GET /nginx-logo.png HTTP/2.0", upstream: "http://127.0.0.1:5678/nginx-logo.png", host: "192.168.1.50", referrer: "https://192.168.1.50/" 2024/05/01 21:35:49 [crit] 41577#41577: *1 connect() to 127.0.0.1:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.1.162, server: 192.168.1.50, request: "GET / HTTP/2.0", upstream: "http://127.0.0.1:5678/", host: "192.168.1.50" 2024/05/01 21:35:49 [crit] 41577#41577: *1 connect() to 127.0.0.1:5678 failed (13: Permission denied) while connecting to upstream, client: 192.168.1.162, server: 192.168.1.50, request: "GET /nginx-logo.png HTTP/2.0", upstream: "http://127.0.0.1:5678/nginx-logo.png", host: "192.168.1.50", referrer: "https://192.168.1.50/" nginx 설정은 대강 아래와 같음 [root@localhost nginx]# cat conf.d/n8n.conf server { listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate "/etc/pki/nginx/rootCA.crt"; ssl_certificate_key "/etc/pki/nginx/private.key"; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; chunked_transfer_encoding off; proxy_buffering off; proxy_cache off; proxy_read_timeout 1200s; charset utf-8; location / { proxy_pass http://127.0.0.1:5678; } location /webhook { proxy_pass http://127.0.0.1:5678; } location /webhook-test { proxy_pass http://127.0.0.1:5678; } #location /static/ # { # alias /home/web/web/static/; # } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } 문제 해결 명령어 [root@localhost nginx]# setsebool httpd_can_network_connect on 접속가능하게 됨
QWER
[user@fleet-server-1 ~]$ curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.13.2-linux-x86_64.tar.gz tar xzvf elastic-agent-8.13.2-linux-x86_64.tar.gz cd elastic-agent-8.13.2-linux-x86_64 sudo ./elastic-agent install \ --fleet-server-es=https://192.168.1.147:9200 \ --fleet-server-service-token={service_token} \ --fleet-server-policy=fleet-server-policy \ --fleet-server-es-ca-trusted-fingerprint={es_ca_fingerprint} \ --fleet-server-port=8220 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 564M 100 564M 0 0 46.2M 0 0:00:12 0:00:12 --:--:-- 47.0M elastic-agent-8.13.2-linux-x86_64/data/elastic-agent-6d53d8/elastic-agent elastic-agent-8.13.2-linux-x86_64/NOTICE.txt elastic-agent-8.13.2-linux-x86_64/otel.yml elastic-agent-8.13.2-linux-x86_64/elastic-agent.yml elastic-agent-8.13.2-linux-x86_64/LICENSE.txt elastic-agent-8.13.2-linux-x86_64/README.md elastic-agent-8.13.2-linux-x86_64/data/elastic-agent-6d53d8/package.version elastic-agent-8.13.2-linux-x86_64/elastic-agent.reference.yml elastic-agent-8.13.2-linux-x86_64/data/elastic-agent-6d53d8/components/ elastic-agent-8.13.2-linux-x86_64/data/elastic-agent-6d53d8/components/.build_hash.txt elastic-agent-8.13.2-linux-x86_64/data/elastic-agent-6d53d8/components/LICENSE.txt elastic-agent-8.13.2-linux-x86_64/data/elastic-agent-6d53d8/components/NOTICE.pf-elastic-collector.txt elastic-agent-8.13.2-linux-x86_64/data/elastic-agent-6d53d8/components/NOTICE.pf-elastic-symbolizer.txt elastic-agent-8.13.2-linux-x86_64/data/elastic-agent-6d53d8/components/NOTICE.pf-host-agent.txt elastic-agent-8.13.2-linux-x86_64/data/elastic-agent-6d53d8/components/NOTICE.txt elastic-agent-8.13.2-linux-x86_64/data/elastic-agent-6d53d8/components/README.md elastic-agent-8.13.2-linux-x86_64/data/elastic-agent-6d53d8/components/apm-server ...(중략)... Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:Please write 'y' or 'n' Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:Please write 'y' or 'n' Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:Please write 'y' or 'n' Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]: y Please write 'y' or 'n' Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:y [ ] Service Started [0s] Elastic Agent successfully installed, starting enrollment. [=== ] Waiting For Enroll... [2s] {"log.level":"info","@timestamp":"2024-04-29T00:55:02.702+0900","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":436},"message":"Generating self-signed certificate for Fleet Server","ecs.version":"1.6.0"} [====] Waiting For Enroll... [3s] {"log.level":"info","@timestamp":"2024-04-29T00:55:03.404+0900","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":482},"message":"Restarting agent daemon, attempt 0","ecs.version":"1.6.0"} [ =] Waiting For Enroll... [5s] {"log.level":"info","@timestamp":"2024-04-29T00:55:05.410+0900","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":812},"message":"Waiting for Elastic Agent to start","ecs.version":"1.6.0"} [ =] Waiting For Enroll... [9s] {"log.level":"info","@timestamp":"2024-04-29T00:55:09.414+0900","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":843},"message":"Fleet Server - Running on policy with Fleet Server integration: fleet-server-policy; missing config fleet.agent.id (expected during bootstrap process)","ecs.version":"1.6.0"} [ ] Waiting For Enroll... [10s] {"log.level":"info","@timestamp":"2024-04-29T00:55:10.147+0900","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":519},"message":"Starting enrollment to URL: https://fleet-server-1:8220/","ecs.version":"1.6.0"} [ ==] Waiting For Enroll... [11s] {"log.level":"info","@timestamp":"2024-04-29T00:55:11.160+0900","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":482},"message":"Restarting agent daemon, attempt 0","ecs.version":"1.6.0"} {"log.level":"info","@timestamp":"2024-04-29T00:55:11.163+0900","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":300},"message":"Successfully triggered restart on running Elastic Agent.","ecs.version":"1.6.0"} Successfully enrolled the Elastic Agent. [ ==] Done [11s] Elastic Agent has been successfully installed. 설치 후 Fleet Server Connected 뜸 FLEET를 이요해서 NGINX 로그 수집
QWER
✍️ SUMMARY * 사내에서 발생한 다양한 보안 로그들을 마음편하게(?) 다루어 볼 수 있는 로그 저장소 구축 * 자유롭게(최소한의 규칙은 존재) 로그를 적재 가공하여 새로운 탐지 방법 모색 * ElasticSearch의 다양한 기능 리서치 📗 CONTENT * 전체 10대 정도의 규모 * “엘라스틱 스택 개발부터 운영까지” 구축에 참고 * http://www.yes24.com/Product/Goods/103030516 * 개별 용도로 사용되던 산재된 Elastic의 통합 ⭐ RESULT * 메인 데이터 저장소가 아닌 곳에서 마음편하게 이것저것 할 수 있음 * 새로운 탐지 시스템 개발 활용 * TI 매니저 용도 활용
QWER
✍️ SUMMARY * 보안 장비에서 발생하는 이벤트의 처리 자동화 * 업무 과정에서 자주 반복되는 작업을 Bot 명령어로 구성 * 완전 대화형 봇은 아님 📗 CONTENT * 보안 이벤트를 처리 하는 과정에서 자산 조회, 보안 장비 접근이 필요하며 생각보다 많은 시간이 소비됨 * cmdb * packet dump * edr * bigdata solution * anti virus * ip, domain, hash 평판 정보 조회 * 프로젝트 진행을 위해 고민 했던점🧐 * 사용은 최대한 간단하게 * 나를 위해 만든게 아닌, 같이 일하는 사람을 위해 * 내가 관리 가능한 수준에서 벗어나지 않도록 * Bot과의 커뮤니케이션부분과 실제 기능 부분은 django App으로 분리 * 백그라운드 작업이 필요한 기능은 celery와 rabbitmq 활용 ⭐ RESULT * 반복 작업이 줄어듬 * 드라마틱하게 업무 효율이 증가하지 않음(일은 계속 추가됨) * 기능은 계속 추가가 필요
QWER
✍️ SUMMARY * SNS와 보안 뉴스, 무료 TI의 IoC 정보들을 활용 * 중요한 IoC는 우선 차단, 나머지는 내부 보안 장비들과 연계 하여 모니터링 수준에서 활용 * ip * hash * domain 📗 CONTENT * TI 운영의 메인은 Elastic 활용 * 저장된 IoC는 Elastic의 Security 기능에서 제공하는 indicator rule로 보안 장비와 연계 하여 Alert 발생 * TI 수집기는 크게 2가지로 나누어서 운영 * Elastic Fleet : Fleet를 이용하여 Elastic Agent의 TI Module 설정 및 데이터 수집 * MISP : 국내 보안 업체와 보안 뉴스 해외 벤더사 blog의 RSS Feed를 Threat ingestor [https://github.com/InQuest/ThreatIngestor] 으로 수집하여 MISP 저장, 최종적으로 MISP 저장된 데이터도 Elastic으로 전송 * 저장된 데이터 중, 보고서와 같은 리포트는 읽어보는 형태로 활용 * 최근 이슈가 되는 IoC는 즉시 차단 * 나머지 데이터는 탐지 되었을 경우 대응 ⭐ RESULT * 외부 이슈가 되는 IoC에 대해 좀 더 빠르고, 체계적으로 대응 가능 * 좋은 결과를 내기 위해서는 꾸준한 관리가 필요(정상인 값이 생각보다 많이 저장된다)
QWER
✍️ SUMMARY * 보안 장비에서 발생하는 이벤트의 처리 자동화 * 장비 운영 과정에서 발생하는 반복 업무의 자동화 📗 CONTENT * 최근 들어 도입이 활발해지는 SOAR는 새로운 개념이 아니라 과거부터 존재해온 Workflow Engine + Security +@의 개념 * Opensource Workflow & SOAR 조사 * Shuffle * Stackstorm * WALKOFF * ✨n8n 사용으로 확정 ✨ * 사내 협업 도구를 War Room 개념으로 활용 * n8n은 SOAR의 Playbook Engine 역할 * 부족한 보안 장비 연동은 Custom Node(App)를 개발 하여 활용 ⭐ RESULT * 사내 클라우드를 활용하여 SOAR 구축 비용 절감 💰💰💰 * 반복 업무의 프로세스화 및 흐름 확인 가능 * 자동화를 이루어 내고 더 많은 일을 하게 됨 😇 * 상용이 부럽지 않은 n8n의 워크플로우 엔진
QWER
✍️ SUMMARY * 윈도우 시스템상에서 사용되는 명령어들을 조사 * 일반적인 경우와 침해가 발생했을때 사용되는 명령어의 종류 빈도를 비교 * 기존에 발생하던 형태와 유사도 차이가 크면 Alert 발생 📗 CONTENT * 공개된 데이터 셋 활용시, 내부 환경과의 차이가 많기에 딥러닝의 방법은 활용하지 않음 * EDR 로그 중 주요 CMD를 필터링하여 저장 : https://github.com/JPCERTCC/DetectLM [https://github.com/JPCERTCC/DetectLM] 데이터 참고 * 저장된 로그의 aggregation * aggregation된 로그의 연산 * Endpoint의 증가를 고려하여 k8s를 이용, pod 증가를 통해 안정적인 운영 가능 ⭐ RESULT * 침해사고 발생 후 확산 과정에서 이벤트 발생