사이버보안 연구원들이 리눅스 시스템에서 사용자 로그인 자격 증명, 기기 정보를 훔치고 임의 명령 실행이 가능한 새로운 백도어 프로그램을 발견했습니다.
[그림 1] Facefish 감염 프로세스(출처: https://blog.netlab.360.com/ssh_stealer_facefish_en/)
멀웨어 드롭퍼는 서로 다른 시간에 서로 다른 루트킷을 제공하는 기능과 Blowfish 해쉬를 사용하여 공격자가 제어하는 서버와의 통신을 암호화 하기 때문에 Qihoo 360 NETLAB 팀에서 “Facefish”라고 이름을 붙였습니다.
“Facefish는 드롭퍼와 루트킷으로 구성되어 있고 주 기능은 루트킷 모듈에 의해 결정됩니다. 해당 모듈은 Ring3 계층에서 동작하고 ssh/sshd 프로그램 관련 기능을 후킹하여 사용자 로그인 자격 증명을 훔치지 위해 LD_PRELOAD 기능을 사용하여 로드되며, 백도어 기능 또한 제공됩니다.” 라고 연구원이 언급하였습니다.
NETLAB은 지난 4월 26일 Juniper Networks에서 발표한 ‘데이터 유출을 위해 SSH 임플란트 인젝션을 통한 CWS(Control Web Panel, CentOS Web Panel) 타겟팅 공격 체인’ 분석을 기반으로 연구합니다.
Facefish는 원격 서버에서 드롭퍼(“sshins”)를 검색하기 위해 CWP에 대한 커맨드 인젝션을 시작하는 다단계 감염 프로세스를 거칩니다. 이후 최종적으로 민감정보를 수집하고 서버로 전송하는 루트킷을 배포합니다. 그리고 C2 서버에서 내리는 명령을 기다립니다.
[그림 2] Dropper 주요 기능(출처: https://blog.netlab.360.com/ssh_stealer_facefish_en/)
공격자가 초기 침투에 악용한 취약점은 아직 확실하지 않습니다. Jupiter는 “CWP는 수십가지의 보안 문제점들을 가지고 있으며, 소스코드의 암호화와 난독화로 인해 어떤 CWP 버전이 취약한지 확인하기 어렵습니다.” 라고 언급했습니다.
이 드롭퍼는 자체 작업 세트와 함께 드롭되며 런타임 환경을 탐지하고 구성 파일을 복호화하여 C2 정보를 가져오고, 루트킷 구성하고 이를 sshd에 주입하여 루트킷을 시작합니다.
Facefish는 0x2XX로 시작하는 명령을 사용하여 공개 키를 교환하고 C2 서버와 통신 데이터를 암호화 하기 위한 BlowFish를 사용하는 복잡한 통신 프로토콜 및 암호화 알고리즘을 사용합니다.
아래는 서버에서 보낸 C2 명령 중 일부입니다.
0x300 - 도난된 자격 증명 정보 보고
0x301 - “uname” 명령의 세부 정보 수집
0x302 - 리버스 쉘 실행
0x310 - 시스템 명령 실행
0x311 - bash 실행 결과 전송
0x312 - 호스트 정보 보고
NETLAB의 이러한 발견은 2021년 2월에 탐지된 ELF 샘플 파일 분석을 통해 이루어졌습니다. 해당 멀웨어에 관련된 추가적인 침해지표는 https://blog.netlab.360.com/ssh_stealer_facefish_en/ 에서 확인하실 수 있습니다.
참고 사이트
https://blog.netlab.360.com/ssh_stealer_facefish_en/
https://blogs.juniper.net/en-us/threat-research/linux-servers-hijacked-to-implant-ssh-backdoor
https://thehackernews.com/2021/05/researchers-warn-of-facefish-backdoor.html
보안관제센터 Team MIR