APT34는 이란의 APT 조직으로, 2014년부터 중동 및 아시아에서 주로 정부, 금융, 에너지, 통신 등을 대상으로 APT 공격을 계속해 왔습니다. 공격 무기의 무기고는 지속적으로 업그레이드되고 있으며 공격 방법은 지속적으로 소개되고 있습니다. 그러나 공격자는 노출되었다고 해서 공격을 멈추지 않습니다.
4월 17일 외신은 'Lab Dookhtegan'이라는 사용자가 텔레그램에서 APT34 조직의 공격 툴킷을 노출했다고 보도했습니다. 이번 사건은 이전의 소스코드 유출과 마찬가지로 폭발적인 사건이었습니다. APT34 조직은 적어도 2014년부터 중동 및 아시아의 특정 국가에 대해 정부, 금융, 에너지, 통신 및 기타 산업을 표적으로 하는 여러 공격을 계속해 왔습니다. 이 조직의 타깃은 일반적으로 이란에 반대하는 국가들이기 때문에 이 조직이 이란의 보안부서이거나 이란 정부와 장기적으로 협력하고 있는 보안업체일 것이라는 추측도 있다. 이 조직은 소셜 미디어를 잘 활용하고, 다양한 신원을 가진 인터넷 계정을 위조하며, 사회 공학 기법을 통해 공격 대상에 접근하는 데 능숙합니다. 이와 동시에 조직의 공격 무기고는 지속적으로 업그레이드되고 있으며 공격 방법은 점점 더 정교해지고 있습니다. 이들은 스피어 피싱과 같은 공격 방법을 새로운 공격 기술과 통합하여 기존 대상의 침투 범위를 지속적으로 확장하고 있습니다.
APT34 조직 구성원 노출
유출된 웹셸 목록에 따르면 해당 조직이 최근 중국을 대상으로 대규모 공격을 감행한 것이 분명합니다. 이 차트에는 "중국"이라는 레이블이 붙은 손상된 웹사이트가 10개 이상 나열되어 있으며, 이는 국내 공격 주장을 뒷받침하는 증거로 사용될 수 있습니다.
Lab Dookhtegan은 한때 조직 구성원의 개인 정보를 며칠에 한 번씩 노출한다고 주장했지만 현재 텔레그램과 트위터 계정이 차단되었습니다.
이 소스 코드 유출에는 Webshells_and_Panel, posionfrog, Webmask 및 Glimpse와 같이 APT34 조직에서 일반적으로 사용하는 다수의 중요한 공격 무기가 포함되어 있습니다. Dongxun Technology 2046Lab은 "Iron Dome 지능형 지속 위협 경고 시스템"을 사용하여 이러한 공격 무기에 대한 위협 탐지를 수행하고 기술 수준에서 심층 분석을 수행했습니다.
Webshells_and_Panel 디렉터리에는 주로 C#으로 작성된 다양한 Webshell 도구가 포함되어 있습니다. Webshell 디렉터리에는 두 가지가 포함되어 있습니다. 기본 폴더, 즉 HighShell 및 HyperShell.
1.1 HighShell
Windows 서버용 WebShell인 HighShell 디렉터리에는 HighShell.aspx만 있습니다. 개봉 후 기본 인터페이스는 아래와 같습니다.
위 그림에서 볼 수 있듯이 이 버전은 버전 5.0으로 인증, 파일 업로드, 명령 실행, 데이터베이스 작업 등과 같은 많은 기능이 있습니다.
이 Webshell을 사용하려면 "로그인" 라벨 뒤의 빨간색 입력 상자에 연결 비밀번호(Th!sN0tF0rFAN)를 입력하고 "Do it" 버튼을 클릭해야 합니다. 입력 상자가 녹색으로 바뀌면 관련 작업을 수행할 수 있습니다. Webshell을 통해 서버에서 작업합니다. 다음 그림은 "command" 명령을 실행하고 서버 정보를 얻는 작업 다이어그램을 보여줍니다.
1.2 HyperShell
HyperShell은 여러 WebShell 소스 코드 파일을 포함하여 여러 소스 코드 파일을 포함하는 프로젝트입니다. 다음은 사용할 수 있는 몇 가지 웹쉘 기능입니다.
simple.aspx
인증, 명령 실행, 파일 업로드 기능을 포함하는 간단한 웹셸은 simple.aspx입니다. 개봉 후 사진에 표시된 대로:
비밀번호 입력 상자에 연결 비밀번호(MkRg5dm8MOk)를 입력하고 "로그인" 버튼을 클릭하면 서버를 제어하고 파일을 업로드할 수 있습니다. 비밀번호 연결은 아래와 같습니다.
다음 그림은 "command" 명령을 작동하고 서버 정보를 얻기 위한 작업 다이어그램입니다.
simpleDownload.aspx
simpleDownload.aspx에는 업로드 기능이 하나만 있습니다.
HighShelllocal.aspx
HighShelllocal.aspx는 HighShell의 업그레이드 버전입니다. 버전 번호는 8.6.2입니다. 이 버전의 기능은 독립 버전 5.0과 거의 동일합니다. 인터페이스 및 기능이 최적화되었습니다. 인터페이스 다이어그램은 다음과 같습니다.
2.1 Agent
2.1.1 Poisonfrog.ps1
Poisonfrog.ps1은 Agent의 유일한 파일입니다. 손상된 호스트에 백도어 프로그램을 심는 데 사용됩니다. 이 파일이 실행되면 dUpdater.ps1, hUpdater.ps1 및 UpdateTask.vbs라는 세 개의 파일이 손상된 호스트의 C:UsersPublicPublic 디렉터리에 남게 됩니다.
호스트에 남겨진 백도어는 10분마다 예약된 작업을 통해 자동으로 실행되는 UpdateTask.vbs 스크립트입니다. 그것이 하는 일은 dUpdater.ps1과 hUpdater.ps1이라는 두 개의 스크립트를 실행하는 것입니다.
2.1.2 dUpdater.ps1
이 스크립트는 원격 제어 스크립트로 DNS 도메인 이름을 생성하고 제어 서버에 연결하여 원격 명령을 받고 파일을 보내고 받습니다. DGA.Changer 알고리즘은 서버 도메인 이름을 동적으로 계산하기 위해 DNS 도메인 이름을 생성할 때 사용됩니다. 2046Lab은 이 DGA.Changer 알고리즘을 복원했습니다.
receive 함수:
EEA 함수를 실행하여 VVA 도메인 이름을 가져옵니다. JJA 매개변수는 r로 설정됩니다.
VVA 도메인 이름 확인을 시도합니다. 실패하면 예외를 발생시키고 새 도메인 이름을 다시 생성한 후 도메인 이름 확인이 성공할 때까지 작업을 반복합니다. 성공하면 성공적으로 해결된 첫 번째 IP를 가져와 추가합니다. IP의 각 세그먼트를 별도로 가져옵니다.
IP가 1.2.3.*인 경우 NNA를 false로 설정하고 RRA 값을 PPA 파일에 쓴 다음 기본을 종료합니다.
NNA가 true인 경우 RRA를 수정합니다. 값은 IP의 처음 세 세그먼트이고 기본 기능을 계속 반복합니다.
IP가 24.125.*.*인 경우 세 번째와 네 번째 세그먼트를 연결합니다. IP를 C:UsersPublicPublic$DDAreceivebox(PPA)의 하위 폴더 이름으로 설정하고 GGA를 1로 설정하고 NNA를 true로 설정한 다음 기본 기능을 계속 반복합니다.
IP가 11.24.237.110인 경우 구문 분석을 중지하고 종료합니다. 이 IP는 OilRig가 한때 사용했던 IP입니다.
보내기 기능:
Slaber를 실행하여 전송된 파일을 확인하고, EEA 함수를 실행하여 VVA 도메인 이름을 얻은 다음 JJA 매개변수를 s로 설정합니다.
VVA 도메인 이름을 확인하는 데 실패하면 예외가 발생합니다. 새 도메인 이름이 재생성되고 확인을 시도합니다. 새 도메인 이름의 경우 도메인 이름 확인이 성공할 때까지 작업을 반복하고, 성공적으로 확인된 첫 번째 IP를 가져와서 각 세그먼트를 제거합니다.
IP가 1.2.3.*인 경우 IP의 네 번째 세그먼트를 가져옵니다. 세그먼트 값을 가져오고 기본 기능을 반복합니다.
IP가 11.24.237.110인 경우 구문 분석을 중지하고 종료합니다. 기능을 삭제하고 전송할 파일을 삭제하세요.
Slaber 기능:
전송된 파일의 크기를 확인하세요. 600kb를 초과하면 오류가 보고됩니다. 그렇지 않으면 리졸버 기능을 실행하세요.
리졸버 기능:
전송된 파일을 각 그룹별로 30자로 해결합니다.
프로세서 기능:
수신된 파일을 처리합니다. MMB는 "sendbox" 폴더에 있는 파일입니다.
수신된 파일 이름이 "0"으로 끝나면 수신된 파일을 "sendbox" 폴더에 쓰고 UTF를 사용합니다. -8 인코딩 후 이전에 받은 파일을 제거합니다.
수신된 파일 이름이 "1"로 끝나는 경우 수신된 파일 내용에 경로가 있으면 해당 경로가 전송 경로로 사용됩니다. 존재하지 않으면 "파일 없음" 문자열이 MMB 파일에 기록되고 이전에 받은 파일이 제거됩니다. "완료" 폴더로 이동하여 파일 내용을 MMB 파일에 쓴 다음 제거합니다. 이전에 받은 파일입니다.
2.1.3 hUpdater.ps1"myleftheart.com"의 IP를 확인하고 연결을 시도하세요.
C:UsersPublicPublicfiles cfg.ini 파일이 존재하는 경우 srv, usr, pas, prt 및 dom과 같은 해당 매개변수 필드를 가져옵니다. srv와 prt의 값을 ":"을 통해 새로운 문자열로 연결하고, 해당 문자열을 http를 사용하여 프록시 서버로 설정하고, usr, pas, dom의 값을 의 자격 증명으로 사용합니다. 프록시 서버가 없으면 기본 프록시 서버를 얻습니다.
OOA: 0에서 9까지의 여러 정수를 무작위로 선택하고, 1에서 9까지의 숫자를 무작위로 선택하고, 추출된 숫자를 연결합니다.
DDA: dUpdater.ps1 스크립트의 DDA
PPA: DDA의 다섯 번째 숫자는 OOA를 삽입하여 얻습니다.
"http://myleftheart.com/co/$PPA"에서 파일을 다운로드합니다. 다운로드한 파일은 QQA이며 ""로 QQA를 구분하면 배열이 SSA로 설정됩니다.
p는 C:UsersPublicPublicfiles$SSA[0] 경로입니다.
SSA[2]의 길이가 0보다 크고 SSA[2]에 "not" 문자열이 없으면 http://myleftheart.com/fil/SSA[3]에서 C:UsersPublicPublicfiles로 파일을 다운로드하세요. $SSA[2] , 그리고 내용을 경로 p에 씁니다.
SSA[1]의 길이가 0보다 크고 SSA[1]에 "not" 문자열이 없으면 경로의 파일을 업로드합니다. p에서 http://myleftheart.com/res /$PPA$SSA[0];
SSA[4]의 길이가 0보다 크고 SSA[4]에 "not" 문자열이 없는 경우 파일은 업로드 경로에서 SSA[4]d는 http://myleftheart.com/res/$PPA$SSA[0]에 업로드됩니다.
SSA의 마지막 데이터 값이 "1"이면 주요 기능
SSA[0]의 길이가 0보다 크고 SSA[1]에 "not" 문자열이 없으면 경로가 p인 파일을 http://myleftheart.com/res에 업로드하세요. /$PPA$SSA[0], 경로가 p인 파일을 삭제합니다.
서버 측은 손상된 호스트를 관리하기 위해 APT34가 사용하는 주요 제어 측입니다. 손상된 호스트에서 파일을 다운로드하고 손상된 호스트에 파일을 업로드할 수 있습니다.
이 서버는 간단한 로그인 인터페이스를 제공합니다.
JSON 구성 파일을 통해 사용자와 비밀번호를 관리하는 것은 매우 간단합니다. 유출된 문서에는 추측하기 쉬운 사용자 이름(blacktusk)과 비밀번호(fireinthehole)가 사용되었습니다.
아래 그림의 GUID(/7345SDFHSALKJDFHNASLFSDA3423423SAD22)는 브라우저를 로그인 페이지로 안내하는 데 사용됩니다. 이 GUID는 매우 중요하다고 할 수 있습니다.
HTTP 에이전트와 DNS 에이전트의 호스트 목록은 서버 측에서도 사용할 수 있습니다. 이 목록에서 현재 제어되는 호스트를 쉽게 확인할 수 있습니다.
각 HTTP 에이전트와 DNS 에이전트에는 자세한 정보 페이지가 있습니다. 여기서는 손상된 호스트에 C&C 명령을 실행하고 파일을 업로드하거나 다운로드할 수 있습니다. 여기의 DNS 에이전트는 Glimpse의 일부 기능을 통합했을 수 있습니다. 아래에 자세히 소개되어 있습니다.
감염된 호스트의 경우 APT34는 기본 BAT 원격 제어 스크립트를 사용하여 시스템, 사용자, 그룹, 도메인, 특정 레지스트리, 예약된 작업, 바이러스 백신 소프트웨어 등을 포함하여 매우 상세한 정보를 얻습니다. .
이 도구는 주로 공격자의 서버에 배포되어 DNS 프록시를 구현하고, 특정 DNS 도메인 이름을 하이재킹하고, 기본적으로 도메인 이름을 로컬 서버로 가리키며, 이를 통해 HTTP/HTTPS 프록시를 구현합니다. Squid3+ICAP , 피해자의 계정 비밀번호 등 민감한 정보를 훔칩니다.
dns-redir 디렉터리:
dnsd.py: DNS 프록시 전달 스크립트
config.json: 구성 파일
dnsd.js: JS 유형 DNS 프록시 스크립트 및 dnsd.py 기능은 a와 유사합니다.
로컬 시뮬레이션된 DNS 프록시 기능 스크린샷은 다음과 같습니다.
icap 디렉터리:
icap.py: http/https 프록시를 구축하고 프록시에 민감한 데이터를 기록하려면 Squid3와 함께 사용해야 합니다. 장소 상에서.
squid.conf 구성 파일:
Squid3+ICAP는 투명한 프록시 서버를 구현합니다. icap.py 스크립트는 비밀번호와 같은 민감한 데이터를 추출하여 로컬 로그 파일에 기록합니다.
하이재킹 코드는 icap 스크립트 파일의 response_body 부분에 추가되어 피해자의 브라우저에 지정된 이미지 요소를 로드합니다.
Glimpse는 에이전트, 패널, 서버의 세 부분으로 구성됩니다. DNS 원격 제어 도구입니다. Glimpse Server의 일부 코드로 판단하면 명령을 내리는 방식 등 일부 기능이 독개구리와 중복될 수 있습니다.
일반적으로 Glimpse는 위에서 소개한 독개구리와 매우 유사합니다. 유출된 정보는 Glimpse 사용 방법도 알려줍니다.
4.1 Agent
마찬가지로 Glimpse의 Agent는 손상된 호스트에서 실행되는 백도어 프로그램입니다. 주요 기능은 명령을 수락하고 파일을 업로드하고 다운로드하는 것입니다.
에이전트는 호스트의 C:UsersPublicLibraries 디렉터리를 작업 디렉터리로 사용합니다. 파일 보내기 및 파일 받기는 이 디렉터리 아래의 하위 디렉터리에서 완료됩니다.
에이전트는 두 가지 모드로 작동할 수 있습니다. 하나는 핑 모드이고 다른 하나는 텍스트 모드입니다.
ping 모드는 주로 호스트 정보를 교환하는 데 사용됩니다. 텍스트 모드는 내부 명령을 수용할 수 있는 에이전트와 서버 간의 내부 프로토콜 모드와 유사합니다.
4.2 패널
패널은 마스터 제어 상태를 보는 데 사용됩니다. 얼마나 많은 침해된 호스트가 제어되는지 확인할 수 있으며, 여기에서 침해된 호스트에 명령을 보낼 수 있습니다.
패널을 통해 손상된 호스트에 명령이 전송되고 결과가 반환된 것을 확인할 수 있습니다.
4.3 서버
서버는 DNS 터널 프로토콜을 통해 통신하며 에이전트가 보내는 ping 모드 메시지 또는 TXT 모드 명령에 응답할 수 있습니다. 또한 TXT 모드로 에이전트에 명령을 보냅니다. 코딩 스타일로 볼 때 Glimpse와 Poison Frog는 동일한 팀에서 제작해야 합니다.
서버는 더 많은 TXT 모드 프로토콜 명령을 지원합니다. 이러한 명령의 의미를 간략하게 확인할 수 있습니다.
if (action == 'M') { // in this place we check the request for type of connection ping or text type if (action == 'W') { // in this place we check the request type if its text we response it else if (action == 'D') { else if (action == '0') { // ctrl[0] => action, if 0 = is there any file else if (action == '1') { // ctrl[0] => action, if 1 = sending the file else if (action == '2') {// ctrl[0] => action, if 2 = receiveing the file
cd0bbff03ce7946cd7c9dc339726d90a9d3d8fe14927172ca5546bdb95d947625e17061bf2dce87d402ddd8531abb49f
myleftheart.com
11.24.237.110
1 이메일, 의심스러운 링크, 의심스러운 문서 등 의심스러운 파일을 쉽게 열지 마세요.
2. 제때에 시스템 패치를 설치하고 최신 버전의 소프트웨어를 사용하세요.
3. 적시에 바이러스 백신 소프트웨어를 설치하고 바이러스 데이터베이스를 업데이트하세요.
위 내용은 APT34 유출 무기 보고서 분석 구현 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!