FBI와 CISA는 사이버 보안 권고(CSA)를 통해 Androxgh0st 악성코드를 배포하는 위협 행위자들과 관련된 알려진 침해 지표(IOCs)와 전술 기법 및 절차(TTPs)를 전파합니다. 다양한 신뢰할 수 있는 제 3자 보고를 통해 이러한 IOC와 TTP가 수집되었으며, 이는 Androxgh0st 악성코드가 취약한 네트워크를 식별하고 침해할 수 있는 봇넷을 구축할 수 있음을 보여줍니다.
1. Androxgh0st 악성코드 :
Androxgh0st 악성코드는 파이썬으로 작성되었는데 이는 봇넷(T1583.005)를 통해 표적 네트워크에서 피해자를 식별하고 착취합니다.
.env파일을 타겟으로 잡고 민감한 정보(AWS, Microsoft Office 365 등)을 포함하는 .env 파일을 대상으로 작동합니다.
PHPUnit을 통해 웹사이트에서 PHP코드를 원격으로 실행할 수 있게 하는 CVE-2017-9841 취약점을 악용하는 것으로 관찰되었습니다. 이 PHPUnit 모듈을 사용하는 웹사이트(/vendor 폴더가 존재해야함) /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php Uniform Resource Identifier (URI)로악의적인 HTTP POST 요청을받게됩니다.
이 PHP 페이지는 POST 요청을 통해 제출된 PHP코드를 실행하며, 이 위협 행위자는 웹사이트에서 코드를 원격으로 실행할 수 있습니다.
2. Androxgh0st 악성코드의 타겟
- PHPUnit 모듈의 CVE-2017-9841 취약점을 이용해 원격 실행
- 라라벨(Laravel) 프레임워크를 타겟으로 잡아서 .env파일이 노출되었는지 여부 확인 및 추가 서비스 접근하기 위한 자격 증명이 포함되어 있는지 확인
- Apache 웹 서버 타겟을 잡는데 CVE-2021-41773과 관련하여, Apache HTTP서버 버전이 2.4.49, 2.4.50을 실행하는 취약한 웹서버를 스캔합니다.
위 타겟 들 방법을 사용해서 어떤 서비스의 자격 증명을 획득한 경우, 예로 위협 행위자들이 취약한 웹 사이트에서 AWS 자격 증명을 성공적으로 식별하고 침해하는 경우, 새로운 사용자 및 사용자 정책을 만드는 시도가 관찰되었습니다. 또 추가 스캔을 위해 새로운 AWS 인스턴스를 만드는 것이 관찰되었습니다.
최근 IT 기술이 고도화됨에 따라 악성코드 제작자들은 난독화, 패킹 등 다양한 기법을 활용하여 기존의 시그니처 및 패턴 기반 정적 분석을 우회하고 있습니다. 이에 난독화나 패킹 여부와 관계없이 중간언어 형태로 코드를 표현해주는 LLVM IR 로 악성코드 탐지 모델을 제안합니다.
다음은 간단한 사전 지식입니다.
LLVM란
어셈블리와 유사한 낮은 수준의 프로그래밍 언어인 IR 코드를 생성해주는 컴파일러입니다.
다음 사진은 LLVM 컴파일 기반입니다.
IR 코드는 다음 사진과 같습니다.
이러한 LLVM IR을 활용한 이미지 기반의 CNN 모델을 제안한 것입니다.
2. 핵심 아이디어
핵심 아이디어는 특정 바이너리 파일을 LLVM IR로 변환한 뒤, 이를 다시 이미지로 변환해서 CNN모델에 적합한 형태로 바꿔주고 이를 학습시키는 것입니다. LLVM IR은 아키텍처에 종속되지 않은 중간 언어로, 난독화나 패킹이 적용되어도 코드의 패턴을 일관되게 분석할 수 있다는 장점으로 이를 이용해 악성코드 탐지를 한다는 것입니다.
다음 사진은 탐지 모델 일련의 과정입니다.
3. 방법
먼저 LLVM IR 코드를 얻기 위해서 리프팅 방식을 사용합니다.
리프팅이란
이미 컴파일된 바이너리 파일을 역으로 컴파일하여 IR 코드 생성되는 부분으로 다시 올라가는 방법입니다.
RetDec 디컴파일러를 사용하여 바이너리 파일을 LLVM IR로 리프팅합니다.
이후 추출된 ".ll" 파일을 LLVM IR을 이미지로 변환하는데 numpy 리스트 형식으로 불러와서 unit8 형식으로 128x128 픽셀 크기의 배열을 생성하고 회색조 변환 기법 전처리를 진행합니다. 이후 이미지를 어두운색과 밝은색으로 이진적 구분하여 CNN 모델을 향상시킵니다.
CNN 모델로는 전이학습이 가능한 텐서플로의 케라스에 있는 ResNet50V2를 사용하고, Adam Optimizer를 활용해 학습을 진행하였습니다.
다음 사진은ResNet50V2를 사용한 모델과 CNN 소스코드입니다.
모델의 코드 구현으로는
CNN을 전이학습 모델로 설정하고 input shape는 데이터셋 이미지 사이즈인 128로 지정하고, Optimizer는 adam으로 지정하였습니다. 그리고 adam으로 지정한 이유는 구현이 간단하고 그 안의 연산이 타 optimizer에 비해 효율적이기에 사용하였다고 합니다. 이후 batch size는 4, epochs는 10, verbose는 1로 지정하여 학습을 진행하였습니다.
4. 결과
이 모델은 악성코드 1,920개와 정상 파일 1,920개로 구성된 데이터셋에서 최대 64%, 평균63.4%의 탐지 성능을 보였습니다. 다른 오픈소스 탐지 모델인 CyberMachine, DeepMalwareDetector와 비교했을 때 비교적 정상적인 탐지가 가능한 모델이라고 평가할 수 있습니다.
5. 결론
본 모델의 알고리즘은 악성코드 탐지 한계가 존재합니다. 악성코드가 시스템 메모리(RAM)에서 바로 실행되어 별도의 실행 파일을 남기지 않는 파일리스, 위조 데이터를 만들어서 기계학습 모델을 공격하는 적대적 공격의 단점이 존재합니다.
향후 지속적인 연구를 통해 패킹된 파일의 특성에맞는 feature vector와 탐지 기법 추가 적 용을 통해 탐지 성능을높이는 시스템구축이 가능할 것이라고 기대 효과를 언급하였습니다.
논문을 읽고 난 후
악성코드를 탐지하는 방식이 기존 연구들과 차별화가 되어 굉장히 신선했고 재미있게 논문을 읽었습니다. 악성코드의 탐지율이 오로지 높은 것만이 좋을 수도 있지만 다양한 관점에서 문제를 바라보는 것이 더 중요하다라고 생각하게 되었습니다. 그렇기 때문에 후속 연구를 통해 제안된 모델이 더욱 개선되고 실용화 되면 정말 좋을것 같다고 생각했습니다.
인용, 출처 :
박경빈, 윤요섭, 또 올 가, 임강빈. (2024). LLVM IR 대상 악성코드 탐지를 위한 이미지 기반 머신러닝 모델. 정보보호학회논문지, 34(1), 31-40.
목차 1. Amcache.hve 파일 소개 2. Amcache.hve 파일 위치 및 구조 3. Amcache.hve 파일 분석(방법) 4. Amcache.hve SHA-1 값 5. 결론
1. Amcache.hve 파일 소개
Amcache.hve 파일은 본래 윈도우 7에서 사용하던 'RecentFileCache.bcf' 아티팩트를 윈도우 8이상의 운영 체제에서 사용되는 아티팩트로 계승되었습니다. 이 파일은 Application Compatibility Cache의 줄임말입니다. 시스템에서 실행된 프로그램과 관련된 정보를 저장합니다. 레지스트리 일부는 아니지만, 하이브 구조를 가지고 있어 하이브 형식으로 저장되며, 프로그램 실행 기록, 파일 경로, 타임스탬프 등 다양한 정보를 가지고 있습니다.
2. Amcache.hve 파일 위치 및 구조
Amcache.hve 경로 : C:\Windows\AppCompat\Programs\Amache.hve (%systemroot%/appcompat/Programs/Amcache.hve) 이 파일은 하이브 형식으로 저장되며 주요키로는 다음과 같습니다.
- Root\File : 실행된 프로그램의 파일 경로, 크기, 타임스탬프 등의 정보를 저장 - Root\Programs : 실행된 프로그램의 이름, 버전, 언어 등의 정보를 저장합니다. - Root\InventoryApplicationFile : 설치된 프로그램의 파일 정보를 저장합니다. - Root\InventoryApplication : 설치된 프로그램의 이름, 버전, 언어 등의 정보를 저장합니다.
3. Amcache.hve 파일 분석
파일을 분석하는데 Registry Explorer 를 사용하였습니다. 이 도구를 이용해 Amcache.hve 파일에 접근합니다(관리자 권한 실행)
Reg Explorer로 확인한 결과 사진
위 사진 처럼 내 디바이스의 OS가 언제 설치 되었는지 그 OS의 언어 Pro인지와 같은 정보들도 확인 가능합니다.
4월1일에 Dism++ 을 설치한 사진
위 사진처럼 인벤토리 응용파일 폴더 안에서 확인 해본 결고 언제 내가 Dism 파일을 설치 했는지와 경로까지 다 나오는 것 또한 확인이 가능했습니다. 맨 오른쪽에 있는 값은 SHA-1 해시를 나타내는데 SHA-1은 해시값이 이미 알려진 악성프로그램과 비교해서 악성프로그램의 여부도 확인 가능합니다.
4. Amcache.hve SHA-1 값
Amcache.hve 파일에는 실행된 프로그램의 SHA-1 해시값이 저장될 수 있는데 이는 프로그램의 "무결성" 을 확인하고 변조 여부를 판단하는데 큰 역할을 합니다. 하지만 이러한 해시값에 제한 사항이 존재하는데 그 사항은 다음과 같습니다. - 프로그램의 크기가 일정 크기(약1MB)이상인 경우, SHA-1 해시값이 부정확하게 기록될 수 있습니다. - SHA-1해시는 Windows 성능상의 이유로 전체 파일을 해시하지 않고 파일의 처음 31,457,280Byte만 저장됩니다. 따라서 파일이 해당 바이트를 넘어버리면 처음 바이트만 해시값에 사용됨으로 그 이후의 값은 무결성은 체크가 되지않는다는 것을 알 수 있습니다.
5. 결론
Amcache.hve 파일은 윈도우 8 이상의 시스템에서 실행된 프로그램과 관련된 중요한 정보를 저장하는 아티팩트입니다. 이러한 아티팩트는 포렌식 조사에 필수적인 정보를 얻을 수 있기에 포렌식을 하면 반드시 알아야하는 아티팩트입니다. 물론 만능은 아니기에 4번에서 말한 제한 사항 SHA-1해시 값의 부정확성, 사용자가 수정할 수도 있다는 점을 사전에 알고 있어야 한다는 것입니다.
라즈베리파이(raspberrypi)를 시작해보려고 구매를 했다. 택배가 오기 만을 기다려지게 되는데 재밌게 할 수 있을 것 같아서 기분이 좋았다. 그리고 라즈베리파이 가 와서 오자마자 바로 세팅을 해봤지만 내 생각대로 잘 되지 않아서 여러가지를 찾아보고 인터넷에도 내가 원하는 답을 쉽게 찾을 수 없었다. 하지만 처음부터 천천히 해보고 뭐가 잘못됐는지 피드백을 해서 결국은 잘되었다. 내가 실수했던 점은 바로 OS를 SD카드에 설치를 잘못 했기 때문이다. 내가 직접 압축을 풀어서 넣었기에 당연히 인식이 안되고 생각처럼 되질 않았던 것 같다.
++ 현재는 라즈베리파이 전용 imager 가 존재하기 때문에 해당 이미저를 이용해 설정해서 sd 카드에 os 를 설치해주면 간단하게 해결된다