ZoomEye를 활용한 APT 공격 탐지 사례 분석
ZoomEye의 온라인 데이터는 덮어쓰기 및 업데이트 모드입니다. 즉, 두 번째 스캔에서 데이터가 스캔되지 않으면 업데이트된 데이터가 덮어쓰여지지 않습니다. ZoomEye의 데이터는 첫 번째 스캔에서 얻은 배너 데이터를 유지합니다. 이러한 메커니즘은 실제로 이러한 종류의 악성 공격 추적 기능이 현장에 적합합니다. Botnet, APT 및 기타 공격과 같은 악성 공격에 사용되는 다운로드 서버는 일반적으로 발견된 후 직접 비활성화되고 폐기됩니다. 물론 일부는 해킹된 대상이기도 합니다. 그들은 또한 오프라인에서도 매우 폭력적입니다! 따라서 많은 공격 사이트가 ZoomEye에 의해 온라인으로 캐시될 가능성이 높습니다.
물론, ZoomEye 히스토리 API에서 제공되는 데이터는 커버 여부에 관계없이 각 스캔에서 얻은 배너 데이터에 대해 쿼리할 수 있습니다. 그러나 현재 제공되는 ZoomEye 히스토리 API는 IP를 통해서만 쿼리할 수 있으며, 확인할 수 없습니다. 키워드 매칭을 통해 검색되므로 위에서 언급한 ZoomEye 온라인 캐시 데이터 검색 및 포지셔닝과 함께 사용해야 합니다.
사례 1: Darkhotel APT
사실 며칠 전 "Black Technology" Knowledge Planet에서 언급한 바 있는데 "버그"만 수정하면 됩니다. 이번에 Darkhotel에서 사용하는 IE 0day는 CVE여야 합니다. -2019-1367 대신 CVE-2020-0674(勋肉丁@奇安信에게 감사드립니다). 물론 이 "버그"는 이 기사의 주제에 영향을 미치지 않습니다.
위 사진에서 볼 수 있듯이 ZoomEye 온라인 데이터를 사용하여 당시 Darkhotel 퍼들 공격 사이트의 IP 주소를 찾았습니다. ZoomEye SDK를 사용하여 이 IP의 기록을 쿼리했습니다.
╭─heige@404Team ~╰─$python Python 2.7.16 (default, Mar 15 2019, 21:13:51)[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.11.45.5)] on darwinType "help", "copyright", "credits" or "license" for more information. import zoomeye zm = zoomeye.ZoomEye(username="xxxxx", password="xxxx") zm.login() u'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX...' data = zm.history_ip("202.x.x.x") 22
List. ZoomEye 과거 데이터에 포함된 IP 데이터의 시간 노드와 해당 포트 서비스
... >>>for i in data['data']: ... print(i['timestamp'],i['portinfo']['port']) ... (u'2020-01-28T10:58:02', 80) (u'2020-01-05T18:33:17', 80) (u'2019-11-25T05:27:58', 80) (u'2019-11-02T16:10:40', 80) (u'2019-10-31T11:39:02', 80) (u'2019-10-06T05:24:44', 80) (u'2019-08-02T09:52:27', 80) (u'2019-07-27T19:22:11', 80) (u'2019-05-18T10:38:59', 8181) (u'2019-05-02T19:37:20', 8181) (u'2019-05-01T00:48:05', 8009) (u'2019-04-09T16:29:58', 8181) (u'2019-03-24T20:46:31', 8181) (u'2018-05-18T18:22:21', 137) (u'2018-02-22T20:50:01', 8181) (u'2017-03-13T03:11:39', 8181) (u'2017-03-12T16:43:54', 8181) (u'2017-02-25T09:56:28', 137) (u'2016-11-01T00:22:30', 137) (u'2015-12-30T22:53:17', 8181) (u'2015-03-13T20:17:45', 8080) (u'2015-03-13T19:33:15', 21)
IE 0day에 심어진 워터링 홀 공격의 시간 노드와 포트를 살펴보겠습니다:
>>> for i in data['data']: ... if "164.js" in i['raw_data']: ... print(i['timestamp'],i['portinfo']['port']) ... (u'2020-01-28T10:58:02', 80) (u'2020-01-05T18:33:17', 80) (u'2019-11-25T05:27:58', 80) (u'2019-11-02T16:10:40', 80) (u'2019-10-31T11:39:02', 80) (u'2019-10-06T05:24:44', 80)
분명히 대략적인 시간 범위는 또한, 이 워터링 홀 공격은 2019-10-06 05:24:44부터 2020-01-28 10:58:02까지입니다. 또한, 이 IP는 공격자가 구매한 VPS가 아니며, 다음과 같이 특정 웹사이트를 직접 공격합니다. 공격을 위한 "워터링 홀"입니다. 이 IP 웹사이트는 이르면 2019-10-06에 침입한 것이 확실합니다! 이 웅덩이의 웹사이트 특성으로 볼 때 기본적으로 Darkhotel의 주요 공격 대상은 이 웹사이트를 방문하는 사용자임을 유추할 수 있습니다!
우리는 가능한 침입 지점을 분석하는 데 도움이 되도록 2019년에 이 IP로 어떤 포트 서비스가 열렸는지 계속 나열합니다.
>>> for i in data['data']: ... if "2019" in i['timestamp']: ... print(i['timestamp'],i['portinfo']['port'],i['portinfo']['service'],i['portinfo']['product']) ... (u'2019-11-25T05:27:58', 80, u'http', u'nginx') (u'2019-11-02T16:10:40', 80, u'http', u'nginx') (u'2019-10-31T11:39:02', 80, u'http', u'nginx') (u'2019-10-06T05:24:44', 80, u'http', u'nginx') (u'2019-08-02T09:52:27', 80, u'http', u'nginx') (u'2019-07-27T19:22:11', 80, u'http', u'nginx') (u'2019-05-18T10:38:59', 8181, u'http', u'Apache Tomcat/Coyote JSP engine') (u'2019-05-02T19:37:20', 8181, u'http', u'Apache Tomcat/Coyote JSP engine') (u'2019-05-01T00:48:05', 8009, u'ajp13', u'Apache Jserv') (u'2019-04-09T16:29:58', 8181, u'http', u'Apache httpd') (u'2019-03-24T20:46:31', 8181, u'http', u'Apache Tomcat/Coyote JSP engine')
매우 일반적인 JSP 운영 환경인 포트 8009는 2019년 5월에 열렸고 Tomcat 배경과 같은 문제 관리 취약한 비밀번호는 늘 흔한 침투수단이었죠~~
그런데 사실 이번 공격은 또 다른 IP도 포함됐는데요, 업데이트로 인해 IP 관련 포트 배너가 덮어씌워져서 ZoomEye를 통해 직접 온라인으로 검색을 할 수가 없습니다. 하지만 이 IP를 알고 있다면 ZoomEye 기록 데이터 API를 사용하여 이 IP의 기록 데이터를 쿼리할 수도 있습니다. 여기서는 자세히 설명하지 않겠습니다.
사례 2: 포이즌 아이비(APT-C-01)
포이즌 아이비(APT-C-01)에 대한 자세한 보고서를 참조하세요. https://ti.qianxin.com/uploads/2018/09/20/6f8ad451646c9eda1f75c5d31f39f668.pdf 우리는
"포이즌 아이비 조직이 공격 페이로드를 제어하고 배포하기 위해 사용하는 제어 도메인 이름"에 직접적으로 초점을 맞췄습니다. http://updateinfo.servegame.org"
"그런 다음
hxxp://updateinfo.servegame.org/tiny1detvghrt.tmp
"
URL에서 페이로드를 다운로드합니다. 먼저 이 도메인 이름에 해당하는 IP를 찾으려고 합니다. 분명히 현재로서는 많은 것을 얻지 못했습니다. :
╭─heige@404Team ~╰─$ping updateinfo.servegame.orgping: cannot resolve updateinfo.servegame.org: Unknown host
Qi Anxin의 보고서에서 사용된 다운로드 서버 WEB 서비스 디렉터리를 탐색할 수 있음을 알 수 있습니다
그래서 "tiny1detvghrt.tmp"라는 파일 이름을 직접 검색할 수 있어야 하며, 확실히 찾았습니다
여기서 기본적으로 updateinfo.servegame.org에 해당하는 IP가 165.227.220.223임을 확인할 수 있습니다. 그런 다음 과거 데이터를 쿼리하는 이전 루틴을 시작합니다.
>>> data = zm.history_ip("165.227.220.223") >>> 9 >>> for i in data['data']: ... print(i['timestamp'],i['portinfo']['port']) ... (u'2019-06-18T19:02:22', 22) (u'2018-09-02T08:13:58', 22) (u'2018-07-31T05:58:44', 22) (u'2018-05-20T00:55:48', 80) (u'2018-05-16T20:42:35', 22) (u'2018-04-08T07:53:00', 80) (u'2018-02-22T19:04:29', 22) (u'2017-11-21T19:09:14', 80) (u'2017-10-04T05:17:38', 80)
계속해서 시간을 살펴보세요. 이tiny1detvghrt.tmp 배포 간격:
>>> for i in data['data']: ... if "tiny1detvghrt.tmp" in i['raw_data']: ... print(i['timestamp'],i['portinfo']['port']) ... (u'2018-05-20T00:55:48', 80) (u'2018-04-08T07:53:00', 80) (u'2017-11-21T19:09:14', 80)
적어도 괜찮습니다. 공격이 2017년 11월 말부터 배포된 것으로 확인되었습니다. 그런 다음 이 시간 노드 2017-10-04 05:17 앞에 또 다른 시간 노드가 있습니다. 38. 그의 배너 데이터를 살펴보겠습니다.
>>> for i in data['data']: ... if "2017-10-04" in i['timestamp']: ... print(i['raw_data']) ... HTTP/1.1 200 OK Date: Tue, 03 Oct 2017 21:17:37 GMT Server: Apache Vary: Accept-Encoding Content-Length: 1757 Connection: close Content-Type: text/html;charset=UTF-8nbsp;HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <title>Index of /</title> <h2 id="Index-of">Index of /</h2>
Name a> | Last modified a> | Size a> | Description a> | |
---|---|---|---|---|
doajksdlfsadk.tmp a> | 2017-09-15 08:21 | 4.9K | ||
doajksdlfsadk.tmp.1 a> | 2017-09-15 08:21 | 4.9K | ||
doajksdlrfadk.tmp a> | 2017-09-27 06:36 | 4.9K | ||
dvhrksdlfsadk.tmp a> | 2017-09-27 06:38 | 4.9K | ||
vfajksdlfsadk.tmp a> | 2017-09-27 06:37 | 4.9K | ||
wget-log a> | 2017-09-20 07:24 | 572 | ||
이 배너 데이터에서 이는 첫 번째 경우 잘 타겟팅된 침입 후 임플란트 퍼들과 다르다는 결론을 내릴 수 있습니다. 이것은 독립적으로 제어할 수 있는 서버여야 합니다. doajksdlfsadk.tmp의 명명 방법과 파일 크기로 볼 때(둘 다 4.9k) 기본적으로 이 시점은 공격자가 공격을 시작하기 전의 실습이어야 함을 유추할 수 있습니다. APT공격은 처음부터 발견되자마자 포기
!위 내용은 ZoomEye를 활용한 APT 공격 탐지 사례 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











ZoomEye의 온라인 데이터는 덮어쓰기 및 업데이트 모드입니다. 즉, 두 번째 스캔에서 데이터가 스캔되지 않으면 ZoomEye의 데이터는 첫 번째 스캔에서 얻은 배너 데이터를 유지합니다. 실제로 이런 종류의 악성 공격을 추적할 수 있는 좋은 장면이 있습니다. Botnet, APT 및 기타 공격과 같은 악성 공격에 사용되는 다운로드 서버는 일반적으로 발견된 후 직접 비활성화되고 폐기됩니다. 물론 일부는 해킹됩니다. 그리고 그들은 또한 매우 폭력적입니다. 직접 오프라인으로 전환하세요! 따라서 많은 공격 사이트가 ZoomEye에 의해 온라인으로 캐시될 가능성이 높습니다. 물론 ZoomEye 히스토리 API에서 제공되는 데이터를 사용하면 커버 여부에 관계없이 각 스캔에서 얻은 배너 수를 쿼리할 수 있습니다.

일반적으로 유명한 Linux 시스템은 기본적으로 RedHat 시리즈: Redhat, Centos, Fedora 등 Debian 시리즈: Debian, Ubuntu 등 두 가지 범주로 나뉩니다. yum(YellowdogUpdater, Modified)은 Fedora, RedHat 및 SUSE의 Shell 프런트엔드 패키지 관리자입니다. apt(AdvancedPackagingTool)는 Debian 및 Ubuntu의 쉘 프런트엔드 패키지 관리자입니다. 개요 일반적으로 유명한 Linux 시스템은 기본적으로 RedHat 시리즈: Redhat, Cento의 두 가지 범주로 나뉩니다.

위협 정보 처리 주기 모델에 대하여 F3EAD(위협 정보 처리 주기)라는 용어는 군대에서 유래되었습니다. 이는 미 육군의 주요 전투 무기의 모든 수준에서 지휘관이 설계한 자원을 조직하고 병력을 배치하는 방법입니다. 네트워크 비상대응센터는 이 방법을 활용해 위협 인텔리전스 정보를 다음 6단계로 처리한다. 위협 인텔리전스 처리 주기 F3EAD 위협 인텔리전스 처리 주기 모델 적용 1단계: 특정 월의 날짜를 찾아 파트너 공개에 배포한다. 클라우드 서버 '어니언' 시스템 알람으로 의심되는 트로이목마 프로그램이 발견되자 비상대응팀은 신속히 비상대응 프로세스를 시작했다. 클릭 한 번으로 이해관계자 등이 그룹을 모아 호출했다. 피해자 시스템은 조사를 위해 격리되었습니다. 추적성 분석을 위해 보안 시스템과 감사 로그를 내보냅니다. 침입사고 및 피해자 분석을 위한 비즈니스 시스템 아키텍처 및 코드 관련 정보 준비

Deepin 시스템에 PHP8을 설치하려면 아래 단계를 따르십시오. 시스템 업데이트: 터미널을 열고 다음 명령을 실행하여 시스템 패키지를 업데이트하십시오. sudoaptupdatesudoaptupgrade Ondřej SurýPPA 소스 추가: PHP8은 Ondřej SurýPPA 소스를 통해 설치할 수 있습니다. 다음 명령을 실행하여 소스를 추가합니다: sudoaptinstallsoftware-properties-commonsudoadd-apt-repositoryppa:ondrej/php 패키지 목록 업데이트: 다음 명령을 실행하여 패키지 목록을 업데이트하여 PPA 소스에서 PHP를 가져옵니다.

Ubuntu의 apt-get 소스를 수동으로 수정합니다. 1. ssh 도구를 사용하여 Ubuntu에 연결합니다(저는 xshell을 사용합니다). 2. 명령줄에 cd/etc/apt/3을 입력하고 이 디렉터리에 source.list 파일을 백업합니다(필자는 4. source.list 파일 내용을 지웁니다(참고: 지운 후에는 복원할 수 없으므로 파일을 백업하려면 이전 단계를 수행해야 합니다). 5. vim을 사용하여 source.list를 열고 i 키를 눌러 편집 모드로 들어가서 소스를 붙여넣습니다. 수정할 주소를 누른 다음

MySQL 5.7은 공식 MySQL APT 저장소를 사용하여 설치할 수 있습니다. 다음은 Ubuntu20.04 시스템의 공식 APT 저장소를 통해 MySQL5.7을 설치하는 단계입니다. MySQLAPT 저장소를 추가합니다: wgethttps://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.debsudodpkg- imysql -apt-config_0.8.17-1_all.deb 설치 과정에서 구성 인터페이스가 표시됩니다. MySQLServer 버전을 5.7로 선택한 후 구성을 완료합니다. 업데이트 패키지 목록: sud

다음은 Ubuntu18.04 시스템에서 Docker를 컴파일하고 설치하기 위한 자습서입니다. 이전 버전의 Docker 제거(이미 설치된 경우): sudoaptremovedockerdocker-enginedocker.iocontainerdrunc 시스템 패키지 업데이트: sudoaptupdatesudoaptupgrade Docker 종속성 설치: sudoaptinstallapt-transport-httpsca-certificatescurlsoftware- 속성-공통Docker 공식 GPG 키 추가: 컬-

yum은 RedHat 시리즈 배포판(예: RHEL 및 CentOS)의 패키지 관리자인 반면 Ubuntu는 apt(AdvancedPackageTool)라는 또 다른 패키지 관리자를 사용합니다. Ubuntu 시스템에서는 apt 명령을 사용하여 소프트웨어 패키지를 관리할 수 있습니다. 다음은 Ubuntu 시스템에 패키지를 설치하는 기본 단계입니다. 패키지 색인 업데이트 설치 작업을 수행하기 전에 먼저 다음 명령을 실행하여 패키지 색인을 업데이트하십시오. sudoaptupdate 패키지 설치 특정 패키지를 설치하려면 다음 명령을 사용하십시오. sudoaptinstallpackage_name은 "package_name&"입니다. #822
