국내 기업 20여곳 해킹 피해! FRP 오픈소스 도구로 웹 서버 장악 후 공격

페이지 정보

작성자 cfpa 댓글 0건 조회 1,597회 작성일 22-08-23 11:48

본문

출처 : 보안뉴스

https://www.boannews.com/media/view.asp?idx=109163


반도체, 사출기, 리조트, 건설, 소프트웨어 등 20여곳 침해 피해 추정
보안 최신 버전 패치 후 취약점 사전 방지 및 외부인 접근통제 필요


[보안뉴스 김영명 기자] 최근 외부에 노출된 취약한 서버를 경로로 침투한 공격자가 내부 네트워크까지 장악하는 랜섬웨어 침해 사고가 국내 기업들을 대상으로 빈번히 발생하고 있다.

이 같은 사고는 특히 △취약한 Atlassian Confluence 서버를 대상으로 하는 공격 사례 △국내 의료기관의 취약한 서버를 대상으로 유포된 미터프리터(Meterpreter) △취약한 MySQL 서버를 대상으로 유포 중인 AsyncRAT 악성코드 등으로 나타나고 있다. 


안랩 ASEC 분석팀은 이번 사례가 IIS 웹서버나 MS Exchange 서버 침해 사고로 기존에 알려진 유형과 동일하지만, 개인이 아닌 특정 공격 그룹으로 추정되는 사례를 소개했다. 해당 그룹의 가장 큰 특징은 FRP 오픈소스 도구를 사용한다는 점이며, 해당 그룹은 외부에서 접근 가능한 서버를 찾아 공격하며 침투가 이뤄지면 권한 상승을 시도하고 있다.

그 이후 더욱 완벽한 접근제어를 위해 FRP(Fast Reverse Proxy) 또는 LCX(Htran이라고 불림) 도구를 설치하는데, 특히 FRP 도구를 주로 사용했다. 또한, FRP 설치 시 특정 다운로드 주소를 사용하는데, FRP가 업로드된 다운로드 서버는 국내 기업의 웹 서버로 공격자가 이미 장악한 후 악용하고 있는 것으로 보인다. 이외에도 FRP 설치 시 특정 파일명을 사용하거나 또 다른 국내 기업의 서버를 장악해 FRP 사용 시 필요한 중계 서버로 악용했다는 점에서 위험성이 크다는 지적이다.

현재 침해가 발생한 것으로 추정되는 기업은 △반도체 기업 △사출기 기업 △리조트 기업 △건설 기업 △소프트웨어 기업 등 20여 곳으로 공격자는 구체적인 분야를 가리지 않고 공격을 시도한 것으로 보인다. 우리나라는 반도체 강국으로 정부에서도 반도체 산업에 관심을 두고 있는 상황에서 이번 반도체 기업 등에 대한 공격의 피해는 클 수밖에 없다. 특히, 이번 공격은 외부 취약한 서버를 시작으로 최종 단계인 랜섬웨어까지 감염된 사례가 있어 각별한 주의가 필요하다.
 

928910332_5257.jpg

▲AspxSpy 웹쉘 루틴(상)과 AspxSpy 웹쉘을 이용한 원격 제어(하)[이미지=안랩]


1. ASP 웹쉘
취약한 웹 서버를 대상으로 하는 공격에는 대부분 웹쉘(WebShell)이 사용된다. 웹쉘은 웹 서버에 업로드돼 파일 탐색이나 시스템 쉘 명령들을 실행할 수 있게 하는 파일로서 공격 대상 시스템에 설치되면 공격자들은 지속성을 유지하면서 감염 시스템을 제어할 수 있다.

웹 서버에 따라 지원하는 언어, 즉 웹쉘의 언어도 달라진다. 예를 들어 PHP를 지원하는 아파치 웹 서버에서는 PHP 웹쉘이 사용되며, 톰캣과 같은 자바 환경에서는 JSP, IIS 웹 서버는 ASP 및 ASPX로 개발된 웹쉘이 사용된다.

여기에서는 취약한 IIS 웹 서버를 대상으로 공격한 사례를 다루기 때문에 ASPX(ASP) 웹쉘이 공격에 사용됐다. ASPXSpy는 대표적인 ASPX 웹쉘로서 공격자가 다수의 공격에 사용한 이력이 확인된다는 게 안랩 ASEC 분석팀의 설명이다.

ASPXSpy
ASPXSpy는 비밀번호를 필요로 하기 때문에 설치된 경로에 접속한 후 비밀번호 입력 창에서 정확한 비밀번호를 입력해야 다음과 같은 제어 패널을 사용할 수 있다. 참고로 비밀번호는 MD5 해시값을 비교해 검증하는데 위의 웹쉘은 공격자가 비밀번호를 변경한 것으로서 ‘admin’이 아니다. 공격자는 이 패널에서 정보 조회, 파일 생성, 프로세스 실행과 같은 다양한 악성 행위를 수행할 수 있다.

2. 권한 상승
업로드된 웹쉘은 IIS(인터넷 정보 서버) 웹 서버 프로세스(w3wp.exe)에 의해 실행된다. 일반적으로 w3wp.exe 프로세스는 권한이 낮아 정상적인 악성 행위를 수행하기 위해서는 더 높은 권한을 필요로 한다. 이에 따라 공격자들은 다양한 툴들을 이용해 높은 권한을 획득하는 권한 상승 과정이 필요하다.
 

715119052_6907.jpg

▲웹 서비스 계정으로 실행되는 IIS 웹 서버 프로세스(상)와 웹쉘에서 whoami 명령을 이용해 권한 확인(하)[이미지=안랩]


공격자들은 일반적으로 JuicyPotato, SweetPotato와 같은 악성코드들을 이용했다. 또한, 다양한 로컬 권한 상승(LPE, Local Privilege Escalation) 취약점 PoC를 사용한 이력도 확인된다. 여기에서는 권한 상승 단계에서 사용된 각각의 사례에 대해 정리한다.

2.1. 포테이토(Potato)
포테이토(Potato)는 깃허브에 공개된 오픈소스 권한 상승(Privilege Escalation) 도구다. 현재 실행 중인 프로세스 계정의 토큰 중 특정 권한(Privilege)을 악용하는 방식으로서 시스템 권한으로 권한을 상승시켜 주는 기능을 제공한다.

IIS 웹 서버에서는 w3wp.exe 프로세스가 웹 서비스를 담당하며 MS-SQL 서버에서는 sqlservr.exe 프로세스가 MS-SQL 서비스를 담당한다. 실제로 w3wp.exe 프로세스는 IIS Apppool\DefaultAppPool가 주체로 실행되는데, 이 경우에는 일반적인 관리자나 표준 사용자 계정과 달리 프로세스와 파일과 같은 다양한 기능을 수행하기에 제약이 있다.

따라서 공격자들은 웹쉘이나 사전 공격을 통해 해당 프로세스를 제어할 수 있다고 하더라도 적절한 권한이 존재하지 않기 때문에 원하는 악성 행위를 수행할 수 없다. 이를 위해 권한 상승이 필요한데 일반적으로 w3wp.exe 프로세스나 sqlservr.exe 프로세스가 SeAssignPrimaryToken 또는 SeImpersonate 권한이 있다. 포테이토 도구 대부분은 이렇게 SeAssignPrimaryToken 또는 SeImpersonate 권한이 활성화된 프로세스를 악용해 시스템 권한인 NTAUTHORITY\SYSYEM 계정으로 권한을 상승시킨다. 권한이 상승하게 되면 공격자는 해당 시스템 내에서 제약 없이 대부분의 악성 행위를 수행할 수 있다.

포테이토 권한 상승 도구는 여러 종류가 있지만 국내에서 확인된 대부분 사례의 경우 △JuicyPotato △RoguePotato △RottenPotato 등 세 가지 종류의 포테이토 도구가 사용됐다.

2.2. 취약점(익스플로잇)
공격자들은 Potato 유형의 악성코드들 외에도 깃허브에 공개된 다양한 권한 상승 취약점(LPE, Local Privilege Escalation) PoC들을 이용한다. CVE-2021-1732 취약점을 이용해 권한을 상승하는 PoC는 권한 상승 이후, 인자로 전달받은 whoami를 실행하며 그 결과 시스템 계정으로 권한 상승에 성공한 것을 알 수 있다.

또한, CVE-2022-21999 PoC로서 권한 상승 이후 지정한 DLL을 로드해 악성코드를 실행시킬 수 있다. 공격에 사용된 DLL은 PoC와 동일하며, DLL은 admin 계정을 생성하고 비밀번호를 ‘Passw0rd!’로 설정하는 기능을 한다. 공격자는 추후 이렇게 등록된 계정으로 원격 접속해 감염 시스템을 장악할 수 있다.
 

715119052_179.jpg

▲CVE-2021-1732 PoC 악성코드(좌)와 CVE-2022-21999 PoC 악성코드(우)[이미지=안랩]


3. 프록시 & 포트 포워딩
3.1. FRP

FRP(Fast Reverse Proxy)는 주로 직접 통신할 수 없는 인트라넷 PC에 외부에서 접근 가능하도록 중계기를 둬 구성하는 오픈소스 도구다. FRP는 공격 대상 PC 방화벽의 인바운드 규칙을 우회하거나 대상 PC(Victim)에 공격자 주소를 남기지 않는 특징이 있어 공격자들이 자주 사용하고 있다. FRP는 크게 Frps와 Frpc 2가지로 분류할 수 있다.

먼저 Frps는 중간 서버에 설치되는 파일로 공격자와 공격 대상의 연결을 맺어주는 역할을 수행하는데, 설정에는 ‘Frps.ini’를 참조하며 사용자 임의대로 연결 포트와 로깅 방법 등을 결정할 수 있다. 따라서 Frps는 공격자와 공격 대상 PC, 모두가 접근 가능한 중계 서버에 설치돼야 한다.

Frpc는 공격자가 공격하려는 대상 PC에 설치되는 파일로, 설정에는 Frps 설정 방법과 마찬가지로 ‘Frpc.ini’를 통해 TCP나 UDP, HTTP 등 공격자가 사용할 네트워크 통신 방법과 Frps에 사용될 포트 번호(remote_port)와 실제 포트 번호(local_port) 등을 사용자 임의대로 설정할 수 있다. Frpc가 악용되는 경우 보통 외부에서 직접 연결이 어려운 NAT 환경의 기업 PC에 설치된다. FRP 연결 과정은 다음과 같다.
 

715119052_6164.jpg

▲FRP를 이용한 RDP 연결 과정(X, Y, Z는 임의 포트번호)[이미지=안랩]


우선 Frps.exe를 중계기에 설치한다. Frps.exe는 Frps.ini 설정 파일을 참조해 Frpc.exe가 접근할 수 있도록 연결 포트(7000번)를 오픈하고 연결을 기다린다. 그 이후 공격 대상 PC에 설치돼 있는 Frpc.exe를 실행시켜 중계기(Frps.exe)와 연결을 시도하는데, 이 과정에서 공격자와 공격 대상 PC를 간접적으로 연결하기 위해 Reverse Proxy 방식을 사용한다. 중계기와 공격 대상 PC가 연결이 완료되면 공격자는 특정 프로토콜(RDP)로 중계기의 특정 포트(23389번)에 연결을 시도한다.

중계기는 특정 포트(23389번)를 모니터링하다 연결이 확인되면 해당 데이터를 연결 포트(7000번)를 통해 공격 대상 PC에 전달한다. 이후 데이터를 받은 공격 대상 PC에선 해당 프로토콜(RDP)에 맞는 로컬 포트(3389번)에 포워드해 작업을 완료한다.

FRP 도구는 공격자들이 주로 ‘원격 데스크톱 연결’을 위해 사용했다. 원격 데스크톱 연결이란 마이크로소프트 윈도에서도 기본적으로 지원하는 도구로, RDP 통신을 이용해 원격지 서버에 직접 사용하는 것처럼 연결하는 방법을 말한다. 하지만 기업의 경우 네트워크 구성 시 망 분리 또는 방화벽을 사용해 외부에서 직접 접근하기 어렵도록 설계한다. 따라서 공격자들은 직접 접근하기 어려운 기업 환경의 PC에 Frpc를 설치하는데, Frps는 외부에서 접근할 수 있으면서 해당 PC와 연결이 가능한 중계기에 설치해 RDP 통신을 시도한다.

FRP를 사용한 특정 공격 그룹은 △동일한 Frpc 파일 이름 사용 및 파일 경로 △동일한 Frpc 다운로드 URL 주소 △국내 기업의 서버를 중계기(Frps) 서버로 사용 등의 특징이 있다. 국내 침해 기업에서 확인된 Frpc 설치 경로는 다음과 같다.

%ALLUSERSPROFILE%\update.exe
%ALLUSERSPROFILE%\info.zip

%ALLUSERSPROFILE%\f.zip
%ALLUSERSPROFILE%\t.zip
%ALLUSERSPROFILE%\frpc.exe
%SystemDrive%\perflogs\update.exe
%SystemDrive%\temp\update.exe
%SystemDrive%\temp\info.zip

%SystemRoot%\temp\frpc.exe

앞서 리스트한 경로에서 붉은색의 경우 많은 기업이 공통으로 확인된 파일명이며, 특정 그룹의 공격자들은 주로 Frpc 파일을 update.exe(update.zip) 혹은 info.exe(info.zip) 이름으로 설치했다. 또한, 공격자들이 사용한 Frpc 다운로드 URL의 경우 국내 침해 기업의 서버를 악용하는 것으로 확인됐다.

또한, 공격자들은 외부에서 연결 가능한 PC임에도 FRP를 통해 연결하도록 설정했다. FRP에서 사용되는 중계기 서버(Frps) 프로그램을 특정 국내 기업에 설치한 것으로 보아 국내 IP로 의심을 피하면서 연결을 유지하고, 자신의 IP를 은닉하기 위해 사용하는 것으로 추정된다. 따라서 Frps가 설치된 국내 기업의 서버 또한 공격자에 의해 장악된 것으로 보인다.

올해 국내 기업 서버 중 중계기로 사용된 기업은 8월 중순 현재까지 2곳으로 확인된다. 아래의 그림과 같이 Remote IP로 확인되는 서버가 중계기 서버로 Frps가 설치됐으며, 좌측 Local IP가 공격자가 조작하려는 Frpc가 설치된 서버다. 해당 중계기 서버는 아래와 같이 연결 가능하다.
 

715119052_3684.jpg

▲2022년에 국내 기업을 중계기(Frps)로 사용한 사례[이미지=안랩]


715119052_663.jpg

▲중계기 역할(Frps)을 수행하는 연결 가능한 국내 A기업 서버[이미지=안랩]


3.2. HTran(LCX)
포트 포워딩(port forwarding)이랑 특정 포트에서 전달받은 데이터를 다른 포트로 전달하는 기능이다. 이러한 포트 포워딩을 지원하는 도구(툴)로는 대표적으로 과거부터 사용되고 있는 HTran이 있으며, 오픈 소스 코드를 사용해 최근까지도 다양한 공격자들에 의해 사용되고 있다. 여기에서는 해당 툴에 대한 간략한 정보와 함께 공격자가 이를 이용한 실제 공격 사례들을 다룬다. 먼저 HTran은 다음과 같이 3개의 모드가 지원된다.
 

715119052_2886.jpg

▲HTran 사용법[이미지=안랩]


이 중에서 ‘-tran’ 모드는 특정 포트에서 전달받은 데이터를 특정 주소로 전달하는 기능을 제공한다. 다음 커매드 라인은 실제 공격자가 HTran을 rdpclip라는 이름으로 생성한 후 실행한 명령이다. 참고로 rdpclip는 공격자가 소스코드를 변조해 인자 중 옵션을 제거했으며, 그 대신 인자의 개수를 이용해 어떤 기능인지 파악해 동작한다.

특정한 인자를 받아 실행될 경우 110번 포트로 묶어놓고 있다가 외부의 공격자가 110번 포트로 연결할 경우 로컬의 3389번 포트로 포워딩한다. 이에 따라 공격자는 감염 시스템에 RDP를 연결할 때 3389번 포트 대신 110번 포트로 연결해도 정상적으로 원격 데스크톱을 사용할 수 있다.

다음은 공격에 사용된 rdpclip을 이용한 테스트로서, 로컬 시스템의 4444번 포트와 로컬 시스템의 80번 포트를 포워딩해주는 명령을 실행했다. 이 경우 외부에서 ‘192.168.204.131:4444’ 주소로 연결하더라도 ‘192.168.204.131:80’ 포트로 연결한 것과 동일한 결과를 얻을 수 있다.

다음으로 ‘-listen’ 모드가 있는데 인자로 2개의 포트 번호를 전달받아 각각의 포트에 묶어 놓으면서 대기한다. 만약 2개의 인자로 모두 연결이 확립될 경우 둘 중 하나의 포트에서 전달받은 데이터를 다른 포트로 포워딩한다. 일반적으로 ‘-listen’ 모드는 ‘-slave’ 모드와 함께 사용된다. ‘-slave’ 모드는 ‘-tran’ 모드와 유사한데 ‘-tran’ 모드가 로컬 시스템의 특정 포트를 열고 대기하고 있었다면 ‘-slave’는 지정한 주소에 직접 연결한다.

시스템 A:1000에서는 다음과 같이 HTran이 ‘-listen’ 모드로 실행 중으로 볼 수 있다. (예시를 위해 첫 번째 인자를 80으로 사용) 이에 따라 공격자는 A:80 주소로 접근해 공격 대상 시스템에 RDP 접속이 가능해진다. A에서 실행 중이던 HTran이 80번 포트에서 전달받은 데이터를 1000번 포트로 전달하며, 1000번 포트는 공격 대상 시스템에서 실행 중인 HTran과 연결돼 있기 때문이다.

최종적으로 공격 대상 시스템의 HTran은 전달받은 데이터를 로컬 시스템의 3389번 포트로 포워딩한다. 다음은 또 다른 예시다. c.txt가 HTran이며 별다른 수정 사항이 없는 형태로서 ‘-slave’와 같은 인자도 그대로 사용된다. 다음 명령을 통해 실행된 HTran은 B(1**.***.**.*3):443 주소와 C(2**.***.**.6):1433 주소 사이에서 프록시로서 동작한다. 즉, 공격자는 B의 특정 주소에 접근해 C:1433, 즉 C 시스템의 MS-SQL 서버에 접근할 수 있게 된다.
 

715119052_3628.jpg

▲공격자가 사용한 HTran 명령[이미지=안랩]


4. 랜섬웨어 감염 사례(BitLocker)
현재까지 확인된 사례 중 해당 그룹에 의한 랜섬웨어 감염 사례는 아직 그리 많지 않다. 공격 그룹은 랜섬웨어를 새로 만들지 않고 윈도우 정상 암호화 프로그램인 BitLocker를 악용해 디스크 암호화를 수행했다. BitLocker는 윈도우에서 자체적으로 제공하는 디스크 암호화 도구로 원래는 디스크 보안을 위해 사용되는 도구다. 이는 커맨드 라인 방식을 지원하는데, 기본적으로 Manage-bde라는 명령어를 사용해 BitLocker 기능을 사용할 수 있으며 드라이브를 잠그게 되면 접근 시 암호가 필요하다.

공격자는 특정한 명령어를 입력, GUI 창을 통해 암호화를 수행했다. 드라이브 암호화 설정 후 특정한 명령어를 입력해 드라이브에 대한 접근을 불가능하도록 수행한다. 따라서 잠금이 완료되면 사용자는 암호를 알아야만 접근할 수 있다. 공격자가 사용한 랜섬노트는 아래와 같다.
 

715119052_8381.jpg

▲드라이브 잠금 완료 화면(좌)과 공격자의 랜섬노트(우)[이미지=안랩]


이번 사례의 공격 과정을 요약하자면 공격자들은 IIS 웹서버나 MS Exchange 서버와 같이 외부에서 접근 가능한 취약한 기업 PC를 대상으로 스캔하고 공격을 시도한다. 이후 웹쉘 등을 이용해 시스템 일부에 접근하며, 권한 상승(Privilege Escalation)을 지원하는 포테이토 도구나 익스플로잇 도구를 악용해 시스템 권한을 획득한다. 다음에는 해당 시스템을 더욱 쉽게 조작하기 위해 LCX나 FRP 도구를 설치해 외부에서 RDP로 접속 가능하도록 설정하고 내부 전파 및 최종 단계(정보 유출·랜섬웨어)를 수행했다.

이에 안랩 ASEC 분석팀은 “서버 관리자는 서버 구성 환경이 취약할 경우 최신 버전으로 패치해 기존에 알려진 취약점으로부터 사전에 방지해야 한다”며, “또한. 외부에 공개된 서버의 경우 보안 제품을 통해 외부인으로부터 접근을 통제할 필요가 있다”고 당부했다.
[김영명 기자(sw@boannews.com)]