Fast16: Stuxnet보다 5년 앞선 고정밀 소프트웨어 사보타주
2 weeks ago
20
2005년 제작된 미문서화 사보타주 프레임워크 로, 선택된 계산 소프트웨어의 메모리 코드를 패치해 수치 결과를 왜곡 하도록 설계됨
svcmgmt.exe는 겉으로는 서비스 래퍼처럼 보이지만 내부에 Lua 5.0 가상 머신 과 암호화된 바이트코드, 보조 DLL, fast16.sys 드라이버를 담아 작업별 페이로드를 분리 실행함
fast16.sys는 부팅 시작 파일시스템 드라이버 로 매우 이른 단계에 로드된 뒤, Intel C/C++ 컴파일러로 빌드된 .EXE를 골라 커널 수준에서 메모리 패치를 수행함
패치 엔진은 101개 규칙 으로 동작하며, 특히 FPU 명령 블록을 이용해 내부 배열 값 스케일링을 바꿔 토목공학, 물리학, 공정 시뮬레이션 같은 특수 계산 도구를 겨냥한 흔적을 남김
ShadowBrokers 유출의 fast16 표식과 결합하면, Stuxnet 이전 시기의 정밀 산업 사보타주 가 이미 임베디드 스크립팅, 협소 타기팅, 커널 패치를 결합한 형태로 존재했음이 드러남
개요와 식별 단서
fast16은 2005년 코어 컴포넌트 를 가진 미문서화 사이버 사보타주 프레임워크로, fast16.sys가 고정밀 계산 소프트웨어 를 선택적으로 겨냥해 메모리에서 코드를 패치하고 계산 결과를 왜곡함
svcmgmt.exe는 겉으로는 Windows 2000/XP 시기의 일반적 서비스 래퍼처럼 보이지만, 내부에 Lua 5.0 가상 머신 과 서비스 엔트리 포인트가 해제하는 암호화 바이트코드 컨테이너 를 담고 있음
Lua 기반 악성코드 탐색 과정에서 바이트코드 매직 바이트 1B 4C 75 61, 버전 바이트, LUA_PATH, 특유의 C API가 단서가 됐고, 그 흐름에서 svcmgmt.exe가 식별됨
svcmgmt.exe 내부의 C:\buildy\driver\fd\i386\fast16.pdb 문자열이 서비스 실행 파일과 커널 드라이버 프로젝트를 잇는 포렌식 단서가 됨
2017년 ShadowBrokers 유출의 drv_list.txt에도 같은 이름의 fast16 이 등장해 svcmgmt.exe의 PDB 문자열과 정밀 사보타주용 드라이버를 하나의 흐름으로 묶어 줌
ShadowBrokers 측 회피 시그니처에는 fast16 *** Nothing to see here – carry on*** 문구가 포함됨
캐리어 구조와 실행 방식
svcmgmt.exe는 명령행 인자 에 따라 동작을 바꾸는 적응형 캐리어로 설계됨
인자 없음: Windows 서비스로 실행됨
-p: InstallFlag = 1로 설정하고 서비스로 실행됨
-i: InstallFlag = 1로 설정하고 Lua 코드를 실행함
-r: 설치 플래그 없이 Lua 코드를 실행함
그 외 <filename>: 원래 명령과 -r 인자를 붙인 명령 두 개의 자식 프로세스를 생성하는 Wrapper/Proxy 모드 로 동작함
내부 저장소에는 암호화 Lua 바이트코드 , 보조 DLL, fast16.sys 드라이버가 함께 들어 있음
Lua 환경은 기본 상태를 넘어 확장돼 있으며, wstring 모듈, 내장 대칭 암호 함수 b, Windows NT 파일시스템·레지스트리·서비스 제어·네트워크 API 바인딩 모듈을 제공함
외부 캐리어 바이너리는 비교적 안정적으로 유지하고, 작업별 페이로드는 암호화된 형태로 분리해 환경과 작전 목표에 맞게 재사용할 수 있게 만듦
svcmgmt.exe 식별값은 다음과 같음
파일명 svcmgmt.exe
크기 315,392 bytes
MD5 dbe51eabebf9d4ef9581ef99844a2944
SHA1 de584703c78a60a56028f9834086facd1401b355
SHA256 9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
타입 PE32 executable for MS Windows 4.00 (console), Intel i386
링크 타임 2005-08-30 18:15:06 UTC
웜릿 전파와 회피 구조
svcmgmt.exe는 여러 wormlet 을 실을 수 있는 클러스터 탄약형 캐리어처럼 동작하며, 확인된 샘플에는 하나의 SCM wormlet 만 들어 있음
실행 흐름은 설정 준비, 와이드 문자열 변환, 권한 상승, SvcMgmt 서비스 설치·시작, 조건부 fast16.sys 배치, wormlet 방출, 초기 지연, 실패 임계값이나 외부 종료 조건까지의 반복 실행으로 이어짐
SCM wormlet은 Windows 2000/XP 환경을 겨냥하며, 약하거나 기본 관리자 비밀번호 가 설정된 파일 공유를 이용해 네트워크 서버를 찾고 페이로드를 복사한 뒤 원격 서비스를 시작함
전파는 맞춤형 네트워크 프로토콜이 아니라 서비스 제어 API 와 파일 공유 API 같은 표준 Windows 관리 기능에 기대어 이뤄짐
설치 전 ok_to_install()는 ok_to_propagate()를 호출해 환경을 점검하고, 수동 강제가 없으면 특정 보안 제품의 레지스트리 키 존재 여부로 전파 가능 여부를 결정함
아래 레지스트리 키 가운데 하나라도 있으면 설치를 중단해 모니터링 환경으로의 배포를 피함
HKLM\SOFTWARE\Symantec\InstalledApps
HKLM\SOFTWARE\Sygate Technologies, Inc.\Sygate Personal Firewall
HKLM\SOFTWARE\TrendMicro\PFW
HKLM\SOFTWARE\Zone Labs\TrueVector
HKLM\SOFTWARE\F-Secure
HKLM\SOFTWARE\Network Ice\BlackIce
HKLM\SOFTWARE\McAfee.com\Personal Firewall
HKLM\SOFTWARE\ComputerAssociates\eTrust EZ Armor
HKLM\SOFTWARE\RedCannon\Fireball
HKLM\SOFTWARE\Kerio\Personal Firewall 4
HKLM\SOFTWARE\KasperskyLab\InstalledProducts\Kaspersky Anti-Hacker
HKLM\SOFTWARE\Tiny Software\Tiny Firewall
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Look n Stop 2.05p2
HKCU\SOFTWARE\Soft4Ever
HKLM\SOFTWARE\Norman Data Defense Systems
HKLM\SOFTWARE\Agnitum\Outpost Firewall
HKLM\SOFTWARE\Panda Software\Firewall
HKLM\SOFTWARE\InfoTeCS\TermiNET
connotify.dll은 최소한의 보고 채널 역할을 맡음
Windows AddConnectNotify() API로 등록돼 RAS 기반 새 네트워크 연결이 생길 때마다 호출됨
난독화 문자열을 해독해 named pipe \\.\pipe\p577를 얻고, 로컬 파이프에 연결해 원격·로컬 연결 이름을 기록한 뒤 종료함
독립 실행 모듈이 아니며 호스트 프로세스 등록이 필요함
파일명 svcmgmt.dll
크기 45056 bytes
MD5 410eddfc19de44249897986ecc8ac449
SHA1 675cb83cec5f25ebbe8d9f90dea3d836fcb1c234
SHA256 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9
링크 타임 2005-06-06 18:42:45 UTC
타입 PE32 DLL (i386, 4 sections)
드라이버 구조와 메모리 패치 방식
fast16.sys는 프레임워크에서 가장 강력한 컴포넌트로, 부팅 시작 파일시스템 드라이버 로 설정돼 디스크 드라이버와 함께 매우 이른 단계에 로드됨
설정은 Start=0, Type=2, SCSI 클래스 그룹이며, NTFS, FAT, MRxSMB 위에 자신을 삽입함
초기 진입 시 Session Manager\PrefetchParameters 아래 EnablePrefetcher 값을 0 으로 설정해 이후 코드 페이지 요청이 전체 파일시스템 스택을 거치게 만듦
단순 XOR 문자열 암호와 ntoskrnl.exe 스캔으로 커널 API를 동적으로 해석하고, \Device\fast16, \??\fast16, 사용자 정의 DeviceType 0xA57C 를 노출함
IoRegisterFsRegistrationChange로 활성 및 신규 파일시스템 장치 위에 worker device object를 붙이고, IRP_MJ_CREATE, IRP_MJ_READ, IRP_MJ_CLOSE, IRP_MJ_QUERY_INFORMATION, IRP_MJ_FILE_SYSTEM_CONTROL과 관련 Fast I/O 경로를 우회시킴
부팅 시점에 로드되지만 실제 커널 레벨 코드 주입 엔진 은 explorer.exe가 열린 뒤에야 활성화됨
패치 대상은 두 조건을 동시에 만족해야 함
파일명이 .EXE로 끝남
마지막 PE 섹션 헤더 바로 뒤에 Intel로 시작하는 출력 가능한 ASCII 문자열이 있음
이 조건은 Intel C/C++ 컴파일러 로 빌드된 실행 파일을 겨냥하며, 타깃 소프트웨어의 툴체인을 알고 있었음을 보여 줌
조건에 맞는 파일에는 메모리 내 PE 헤더 수정이 적용되며, .xdata, .pdata 두 섹션을 새로 주입하고 원래 코드 섹션 바이트를 채워 넣어 깨끗한 코드 사본을 유지함
fast16.sys 식별값은 다음과 같음
파일명 fast16.sys
크기 44,580 bytes
MD5 0ff6abe0252d4f37a196a1231fae5f26
SHA1 92e9dcaf7249110047ef121b7586c81d4b8cb4e5
SHA256 07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529
타입 PE32 executable for MS Windows 5.00 (native), Intel i386, 5 sections
링크 타임 2005-07-19 15:15:41 UTC
규칙 기반 패치 엔진과 타깃 특성
패치 엔진은 101개 규칙 으로 구성된 최소형 상태 기반 스캐너로, 파일이 디스크에서 읽힐 때 패턴 매칭과 치환 로직으로 실행 코드를 메모리에서 조용히 바꿈
성능 유지를 위해 256바이트 dispatch array로 일부 시작 바이트만 빠르게 거르고, 패턴 내부 wildcard를 허용하며, 일부 규칙은 상태 플래그를 설정·검사해 다단계 수정 시퀀스를 수행함
대부분의 패치 패턴은 x86 코드에서 실행 흐름을 탈취하거나 영향을 주는 일반적 명령 시퀀스에 대응하지만, 하나는 훨씬 큰 FPU 명령 블록 으로 구성돼 있음
이 FPU 블록은 정밀 산술과 내부 배열 값 스케일링 전용 코드로, 일반적 악성 주입과는 다른 성격을 보임
연구진은 패치 규칙을 YARA 시그니처 의 16진수 패턴으로 변환해 동시대 소프트웨어 코퍼스에 적용했고, 두 개 이상 패턴이 맞는 파일은 10개 미만으로 매우 적었음
적중한 파일들은 공통적으로 토목공학, 물리학, 물리 공정 시뮬레이션 같은 특수 분야 계산 도구 였음
FPU 패치는 세 개의 내부 배열에 전달된 값을 스케일링해 계산을 미세하게 바꾸며, 목표가 무단 접근이나 일반 전파가 아니라 수치 결과 변조 에 있음을 보여 줌
정확한 타깃 바이너리와 워크로드를 모두 확인하지 못해 배열의 의미는 완전히 특정되지 않았음
별도 시스템에서 계산을 검증하면 이런 사보타주는 실패할 수 있지만, 같은 네트워크와 보안 환경을 공유하는 여러 시스템에 같은 드라이버가 배포되면 독립 검산의 불일치 가능성 도 줄어듦
부록에는 패치 엔진의 일부 추출 패턴이 그대로 실려 있음
48 89 84 24 9C 00 00 00 4B 0F 8F 79 FF FF FF 00
D8 E1 D9 5D FC D9 04 00
55 8B EC 83 EC 14 53 56 57 8B 3D ?? ?? ?? ?? 8B 0D 00
8D 1D ?? ?? ?? ?? 52 8D 05 ?? ?? ?? ?? 51 8D 15 ?? ?? ?? ?? 8D 0D ?? ?? ?? ?? 53 50 52 51 56 57 E8 ?? ?? ?? ?? 83 C4 38 EB 0E 83 EC 04 00
B9 01 00 00 00 C1 E7 02 8B BF ?? ?? ?? ?? 8B D7 85 FF 8B 55 30 8B 45 30 D8 C9 8B 75 2C 00 9A 8B 00 00 00 1B 00 90 0F 94 C3 0B D8 33 D2 83 3D 00
패치 타깃 후보
패턴 매칭 결과가 가장 강하게 겹친 대상은 LS-DYNA 970 , PKPM , MOHID 였음
LS-DYNA 970 은 극한 조건에서 재료와 구조 거동을 분석하는 공학 시뮬레이션 소프트웨어로, 자동차 충돌, 폭발, 충격, 금속 성형, 제조 공정을 다루며 자동차, 항공우주, 국방·군사 연구, 제조·재료 과학에 쓰였음
1976년부터 개발돼 왔음
MD5 1d2f32c57ae2f2013f513d342925e972
SHA1 2fa28ef1c6744bdc2021abd4048eefc777dccf22
SHA256 5966513a12a5601b262c4ee4d3e32091feb05b666951d06431c30a8cece83010
파일 크기 5,225,591 bytes
링크 타임 2003-10-24 16:34:57 UTC
파일 타입 PE32 executable for MS Windows 4.00 (console), Intel i386, 7 sections
PKPM은 중국에서 널리 쓰이는 구조공학 CAD 제품군 으로, 건물 구조 설계 전 주기를 다루는 여러 실행 모듈로 구성됨
SATWE는 바닥, 보, 기둥, 벽, 프레임 전반의 3차원 구조 해석을 담당하는 핵심 엔진임
콘크리트 전단 설계 모듈 식별값
MD5 af4461a149bfd2ba566f2abefe7dcde4
SHA1 586edef41c3b3fba87bf0f0346c7e402f86fc11e
SHA256 09ca719e06a526f70aadf34fb66b136ed20f923776e6b33a33a9059ef674da22
파일 크기 7716864 bytes
파일 타입 PE32 executable for MS Windows 4.00 (GUI), Intel i386, 6 sections
링크 타임 2011-08-26 10:58:17 UTC
Building Structure CAD 모듈 식별값
MD5 49a8934ccd34e2aaae6ea1e6a6313ffe
SHA1 3ce5b358c2ddd116ac9582efbb38354809999cb5
SHA256 8b018452fdd64c346af4d97da420681e2e0b55b8c9ce2b8de75e330993b759a0
크기 11849728 bytes
링크 타임 2005-12-01 08:35:46 UTC
MD5 e0c10106626711f287ff91c0d6314407
SHA1 650fc6b3e4f62ecdc1ec5728f36bb46ba0f74d05
SHA256 06361562cc53d759fb5a4c2b7aac348e4d23fe59be3b2871b14678365283ca47
크기 16355328 bytes
링크 타임 2012-07-07 08:47:11 UTC
SATWE 구조 해석 엔진 식별값
MD5 2717b58246237b35d44ef2e49712d3a2
SHA1 d475ace24b9aedebf431efc68f9db32d5ae761bd
SHA256 bd04715c5c43c862c38a4ad6c2167ad082a352881e04a35117af9bbfad8e5613
크기 9908224 bytes
링크 타임 2011-01-12 06:37:39 UTC
MD5 daea40562458fc7ae1adb812137d3d05
SHA1 1ce1111702b765f5c4d09315ff1f0d914f7e5c70
SHA256 da2b170994031477091be89c8835ff9db1a5304f3f2f25344654f44d0430ced1
크기 8454144 bytes
링크 타임 2012-11-29 03:10:12 UTC
MD5 2740a703859cbd8b43425d4a2cacb5ec
SHA1 ca665b59bc590292f94c23e04fa458f90d7b20c9
SHA256 aeaa389453f04a9e79ff6c8b7b66db7b65d4aaffc6cac0bd7957257a30468e33
크기 16568320 bytes
링크 타임 2014-12-30 03:23:43 UTC
MD5 ebff5b7d4c5becb8715009df596c5a91
SHA1 829f8be65dfe159d2b0dc7ee7a61a017acb54b7b
SHA256 37414d9ca87a132ec5081f3e7590d04498237746f9a7479c6b443accee17a062
크기 8089600 bytes
링크 타임 2009-04-22 01:46:46 UTC
MD5 cb66a4d52a30bfcd980fe50e7e3f73f0
SHA1 e6018cd482c012de8b69c64dc3165337bc121b86
SHA256 66fe485f29a6405265756aaf7f822b9ceb56e108afabd414ee222ee9657dd7e2
크기 9219072 bytes
링크 타임 N/A
추가 PKPM CAD 파일 식별값
MD5 075b4aa105e728f2b659723e3f36c72c
SHA1 145ef372c3e9c352eaaa53bb0893749163e49892
SHA256 c11a210cb98095422d0d33cbd4e9ecc86b95024f956ede812e17c97e79591cfa
크기 6852608 bytes
링크 타임 2012-06-18 10:01:54 UTC
MD5 cf859f164870d113608a843e4a9600ab
SHA1 952ed694b60c34ba12df9d392269eae3a4f11be4
SHA256 7e00030a35504de5c0d16020aa40cbaf5d36561e0716feb8f73235579a7b0909
크기 8392704 bytes
링크 타임 2012-11-29 03:10:12 UTC
MOHID는 포르투갈 리스본 Instituto Superior Técnico의 MARETEC가 개발한 오픈소스 수계 모델링 시스템 으로, 해양·연안 수리역학, 수질 시뮬레이션, 퇴적물 이동, 유류 유출 모델링, 라그랑지안 입자 추적을 다룸
현재 시점에서도 의도된 공격 효과를 단정적으로 식별하지 못했다고 밝힘
MD5 f4dbbb78979c1ee8a1523c77065e18a5
SHA1 9e089a733fb2740c0e408b2a25d8f5a451584cf6
SHA256 e775049d1ecf68dee870f1a5c36b2f3542d1182782eb497b8ccfd2309c400b3a
파일 크기 5443584 bytes
파일 타입 PE32 executable for MS Windows 4.00 (console), Intel i386, 3 sections
링크 타임 2002-10-18 09:29:54 UTC
LS-DYNA는 이란의 JCPOA Section T 위반 의혹 관련 공개 보도에서 핵무기 개발 관련 컴퓨터 모델링 연구와 함께 인용된 바 있음
탐지 규칙과 침해 지표
침해 지표
확인된 파일 3종은 fast16.sys , connotify.dll , svcmgmt.exe 임
fast16.sys: MD5 0ff6abe0252d4f37a196a1231fae5f26, SHA1 92e9dcaf7249110047ef121b7586c81d4b8cb4e5, SHA256 07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529
connotify.dll: MD5 410eddfc19de44249897986ecc8ac449, SHA1 675cb83cec5f25ebbe8d9f90dea3d836fcb1c234, SHA256 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9
svcmgmt.exe: MD5 dbe51eabebf9d4ef9581ef99844a2944, SHA1 de584703c78a60a56028f9834086facd1401b355, SHA256 9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525
apt_fast16_carrier
carrier, Lua 페이로드, 평문 변형을 잡도록 설계됐고 기준 해시는 9a10e1faa86a5d39417cae44da5adf38824dfb9a16432e34df766aa1dc9e3525임
Lua 바이트코드 매직 1B 4C 75 61, build_wormlet_table, unpropagate, scm_wormlet_install, install_implant, start_worm, ok_to_propagate 문자열을 사용함
Symantec, Sygate Personal Firewall, Zone Labs\TrueVector, Kaspersky Anti-Hacker 등 보안 제품 레지스트리 키 다수를 조건에 포함함
암호화 문자열 바이트 패턴, 암호 상수 2개, 저장 컨테이너 길이 복호화 코드, file 문자열이 들어간 저장 레코드 시그니처도 함께 탐지함
조건은 MZ 헤더와 10MB 미만 파일을 기준으로 $s* 3개, $rk* 12개, $e* 아무 항목, 암호 상수 2개의 근접 배치, $code1, $stor1 가운데 하나를 만족하거나, Lua 매직과 $s* 7개를 만족할 때 성립함
apt_fast16_driver
driver 또는 관련 프로젝트 파일을 잡도록 설계됐고 기준 해시는 07c69fc33271cf5a2ce03ac1fed7a3b16357aec093c5bf9ef61fbfa4348d0529임
@(#)foo.c :, @(#)par.h :, @(#)pae.h :, @(#)ree.c : 같은 소스 파일 식별 문자열을 다수 사용함
\\Device\\fast16, \\??\\fast16, C:\\buildy\\, driver\\fd\\i386\\fast16.pdb, push 0A57Ch ; DeviceType 패턴을 포함함
ExAllocatePool, ExAllocatePoolWithTag, ExFreePool, ExFreePoolWithTag를 XOR 형태로 푸시하는 API 패턴도 시그니처에 들어감
조건은 10MB 미만 파일에서 MZ 헤더와 함께 PDB 경로 2개, C:\\buildy\\와 소스 식별자 1개, #devtype == 3, pe.machine == pe.MACHINE_I386, pe.subsystem == pe.SUBSYSTEM_NATIVE, 아무 api*, dev* 2개 가운데 하나를 만족하거나, 소스 식별자 6개를 만족할 때 성립함
clean_fast16_patchtarget
패치 대상 소프트웨어 를 탐지하며 most probably clean으로 표기됐고 기준 해시는 8fcb4d3d4df61719ee3da98241393779290e0efcd88a49e363e2a2dfbc04dae9임
$el0부터 $el99까지 이어지는 다수의 바이트 패턴을 사용함
조건은 20MB 미만 파일, MZ 헤더, 정의된 시그니처 가운데 2개 이상 일치 임
apt_fast16_patch
패치 코드 자체를 탐지하며 정적으로 패치된 파일이나 메모리 덤프에 있을 수 있음
기준 해시는 0ff6abe0252d4f37a196a1231fae5f26임
$p1, $p2, $p3 세 개의 바이트 패턴을 정의함
조건은 any of them으로, 세 패턴 가운데 하나만 일치해도 탐지됨
계보와 역사적 함의
바이너리 안의 @(#)par.h $Revision: 1.3 $ 문자열은 이 프레임워크의 계보를 짐작하게 하는 단서가 됨
@(#) 접두사는 1970~1980년대 Unix의 SCCS/RCS 계열 소스 관리 관례를 가리키며, mid-2000s Windows 커널 드라이버에서 이런 흔적은 드묾
이런 아티팩트는 전형적인 Windows 전용 개발자보다, 오래된 고보안 Unix 환경의 문화와 툴체인에 익숙한 장기 엔지니어의 흔적에 더 가까워 보임
svcmgmt.exe는 VirusTotal에 거의 10년 전에 업로드됐지만 지금도 탐지율이 매우 낮고, 한 엔진만 제한적 신뢰도로 일반 악성으로 분류하고 있음
ShadowBrokers의 Territorial Dispute 시그니처와 결합하면, fast16은 심각한 은밀형 국가급 사이버 사보타주 의 개발 시점을 다시 보게 만듦
fast16은 더 널리 알려진 계열보다 앞서 임베디드 스크립팅 엔진 , 컴파일러 기반 협소 타기팅 , 커널 레벨 패치 를 결합한 일관된 구조를 보여 줌
오랜 기간 공개 분석, 명명된 캠페인, 대표 사건과의 연결고리가 거의 없었고, 내부에 남은 사람이 읽을 수 있는 표식도 *** Nothing to see here – carry on***처럼 절제된 형태에 그침
이후의 Lua- and LuaJIT-based toolkits 로 이어지는 APT 진화 흐름 사이의 연결점으로 위치 지어짐
Homepage
Tech blog
Fast16: Stuxnet보다 5년 앞선 고정밀 소프트웨어 사보타주
🔉 볼륨 줄이기
🔊 볼륨 키우기
🔇 음소거
⏭️ 다음 곡