사이버 위협이 계속 진화하고 더욱 정교해짐에 따라 보안 연구원과 전문가가 앞서가는 것이 중요합니다. 이 기사에서는 ChatGPT가 맬웨어, 특히 RAT(원격 액세스 트로이 목마) AsyncRAT 분석을 지원하는 방법을 살펴보고 ChatGPT의 기능을 자세히 살펴보고 네트워크 트래픽을 분석하고 명령 및 제어(C2)를 공개하여 식별을 지원하는 방법에 대해 논의합니다. ) 인프라 위협 지표. 계속하기 전에 ChatGPT에 대한 간략한 소개를 하겠습니다.
ChatGPT는 다음 기관이 소유 및 운영합니다.일체 포함(일체 포함)가 주도하는 2022년 11월에 출시된 프로토타입으로, 길고 복잡한 질문에 답하도록 설계되었으며, 질문의 의미를 학습하도록 훈련되었다는 점에서 혁신적인 기술입니다. 그 결과, 보고된 답변은 사람의 응답과 매우 유사합니다. ChatGPT가 사이버 범죄와의 전쟁에서 도움이 될지 아니면 도전이 될지는 불확실하지만, 지금은 ChatGPT와 그 특징에 집중해 보겠습니다.멀웨어 분석능력.
따라서 숙련된 보안 전문가이든 이제 막 시작하는 보안 전문가이든 이 기사는 악성 코드 분석에서 고급 언어 모델 사용에 대한 귀중한 통찰력을 제공할 것입니다.
시작하자!
ChatGPT의 기능을 이해하기 위해 AsyncRAT 분석을 시작했습니다. 우리는 이 최첨단 AI 기술이 이 악성 코드의 내부 작동 방식을 밝히는 데 어떻게 도움이 될 수 있는지, 그리고 잠재적으로 네트워크 트래픽을 분석하고 명령 및 제어(C2) 인프라를 공개하여 위협 지표를 식별하는 데 도움을 줄 수 있는지 궁금합니다.
연구 결과, 우리는 광범위한 난독화와 base64로 인코딩된 문자열을 포함하는 AsyncRAT의 1단계 로더 역할을 하는 다음 코드 조각을 발견했습니다. 코드는 Python으로 작성되었으며 CLR(공용 언어 런타임) 라이브러리를 활용하여 .NET Framework와 상호 작용하여 base64로 인코딩된 어셈블리를 로드하고 실행합니다.
추가 연구를 통해 ChatGPT는 AsyncRAT과 같은 악성코드를 분석하는 데 매우 유용하지만 일부 영역에서는 여전히 한계가 있음을 발견했습니다. 그럼에도 불구하고 우리는 ChatGPT와 같은 고급 언어 모델을 사용하는 것이 사이버 위협에 맞서는 데 있어서 유망한 발전이라고 믿습니다.
여기서 우리는 이 코드를 ChatGPT에 대한 입력으로 사용하고 자세히 살펴보기로 결정했습니다.
제공된 코드는 문자열 길이 제한 및 수행할 수 있는 작업에 대한 제한으로 인해 ChatGPT가 디코딩할 수 없는 base64로 인코딩된 문자열을 사용합니다. 그러나 ChatGPT는 여전히 코드의 기능과 잠재적인 악의적 의도에 대해 이해하기 쉬운 설명을 제공합니다. ChatGPT는 강력한 언어 모델이지만 다른 방법 및 기술과 함께 사용해야 하며 악성 코드 분석과 관련된 모든 작업에 대한 만병통치약은 아닙니다.
이것이 우리가 Cyberchef를 사용하여 base64 문자열을 디코딩하는 이유이며, 이는 두 번째 단계 로더 Python 스크립트로 밝혀졌습니다.
이 코드를 다시 ChatGPT에 대한 입력으로 사용하고 그것이 무엇을 말하는지 살펴보겠습니다.
다시 말하지만, Cyberchef를 사용하여 디코딩해야 하는 긴 base64 인코딩 문자열이 있습니다.
이 문자열은 PE 파일로 밝혀졌습니다. PE 파일을 ChatGPT로 전달할 수 없으므로 PE 파일 분석 관점에서는 도움이 되지 않습니다. 하지만 우리는 PE 파일의 내용을 계속 살펴보기로 결정했습니다.
우리는 Dnspy를 사용하여 이 바이너리를 디컴파일할 것입니다.
보시다시피, base64 디코딩 기능의 출력은 압축 해제 기능의 입력으로 전달됩니다.
위의 코드는 "gzip"이라는 바이트 배열을 압축 해제하는 것으로 보이는 C# 함수입니다. 이 함수는 GZipStream 클래스를 사용하여 새 스트림을 생성하고 "gzip" 바이트 배열을 사용하여 생성된 MemoryStream 객체를 전달합니다. 그런 다음 GZipStream을 사용하여 4096바이트 청크로 압축된 데이터를 읽고 이를 새 MemoryStream 개체에 씁니다. 그런 다음 함수는 MemoryStream 개체의 ToArray 메서드를 사용하여 압축이 풀린 데이터를 바이트 배열로 반환합니다.
간단히 말해서 이 함수는 압축된 바이트 배열을 가져와서 Gzip 알고리즘을 사용하여 압축을 풀고 압축이 풀린 데이터를 바이트 배열로 반환합니다. 이 기능은 이전에 Gzip 알고리즘을 사용하여 압축된 데이터의 압축을 풀 때 사용할 수 있습니다.
이번에도 우리는 디코딩을 위해 Cyberchef를 사용하기로 결정했습니다.
이것은 분석 당시 .NET 어셈블리인 PE 파일입니다. 우리는 이를 분석하기 위해 Dnspy를 사용합니다.
이 바이너리에는 base64로 인코딩된 문자열이 있지만 마지막 단어를 주의 깊게 살펴보면 디코딩 시 base64 문자열이 powershell 스크립트로 바뀌는 것을 알 수 있습니다.
보시다시피 powershell은 매우 모호하므로 ChatGPT가 이를 디코딩할 수 있는지 확인하기로 결정했습니다. 아래는 출력입니다.
그러한 스크립트의 기능이 무엇인지 물었을 때 수신된 출력은 다음과 같습니다.
.NET 어셈블리에는 추가 base64로 인코딩된 문자열이 있습니다. 먼저 매개변수가 암호의 키인 cipher라는 함수에 전달됩니다.
그래서 우리는 Cipher 함수의 논리가 무엇인지 알아보기로 했습니다.
이제 이 코드를 ChatGPT에 대한 입력으로 사용하고 비밀번호를 인식하도록 요청하기로 결정했습니다.
이 결과는 우리를 놀라게 했습니다.
다음 단계로 넘어가기 위해 동일한 논리를 Python으로 구현했습니다.
이것이 출력입니다. 최종 PE 파일:
이것은 다시 .NET 파일입니다. Dnspy를 체크인하면 이것이 우리가 얻는 것입니다.
기능을 살펴보면 이 파일의 기능, 즉 안티 분석 기술 및 레지스트리 기능 등을 명확하게 이해할 수 있습니다. ChatGPT가 이 코드의 목적을 이해하고 어떤 유형의 악성코드인지 식별할 수 있을지 궁금합니다.
코드의 핵심 기능은 시작 시 지정된 파일을 설치하고 실행하는 역할을 담당하는 것으로 보이는 "Install" 메서드입니다.
"FileInfo" 개체는 코드가 설치하고 실행하려는 파일을 지정하는 데 사용됩니다.
"Process.GetCurrentProcess().MainModule.FileName" 및 "fileInfo.FullName"은 현재 실행 중인 프로세스가 지정된 파일과 동일한지 확인하는 데 사용됩니다.
"Process.GetProcesses()" 메서드는 실행 중인 모든 프로세스의 목록을 가져오는 데 사용되며 코드는 해당 프로세스를 반복하여 지정된 파일과 동일한 파일 경로를 가진 모든 프로세스를 중지합니다.
"Methods.IsAdmin()" 메서드는 사용자에게 관리자 권한이 있는지 확인하는 데 사용됩니다.
"schtasks" 명령은 로그인 시 지정된 파일을 실행하기 위해 예약된 작업을 생성하는 데 사용됩니다(사용자에게 관리자 권한이 있는 경우).
"Registry.CurrentUser.OpenSubKey" 메서드는 HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun 키를 여는 데 사용됩니다. "registryKey.SetValue" 메서드는 키 값을 지정된 파일 경로 파일로 설정하는 데 사용됩니다(사용자에게 관리자 권한이 없는 경우).
"File.Exists" 메서드는 지정한 파일이 이미 존재하는지 확인하는 데 사용되며, "File.Delete" 메서드는 해당 파일이 있으면 삭제하는 데 사용됩니다.
"FileStream" 개체는 지정된 파일 경로 아래에 새 파일을 만들고 현재 실행 중인 프로세스의 파일 내용을 해당 파일에 쓰는 데 사용됩니다.
"Methods.ClientOnExit()" 메서드를 실행합니다.
"Path.GetTempFileName()" 메서드는 임시 .bat 파일을 만드는 데 사용되고 "StreamWriter" 개체는 해당 파일에 일련의 명령을 쓰는 데 사용됩니다.
"Process.Start" 메서드는 .bat 파일을 시작하는 데 사용되고 "Environment.Exit(0)" 메서드는 현재 프로세스를 종료하는 데 사용됩니다.
이 코드를 보면 해당 코드는 시작 시 특정 파일을 설치 및 실행하려고 시도하는 것으로 유추할 수 있으며, 시작 시 지정된 파일이 실행되도록 하고, 관리자 권한으로 실행되도록 설계되어 있는 것으로 보입니다. 또한 이 코드는 원본 파일을 삭제하고 동일한 이름과 내용으로 새 파일을 생성하려고 시도합니다. 이는 원본 파일을 악성 버전으로 바꾸려고 한다는 의미일 수 있습니다. 사용자에게 관리자 권한이 있는지 확인하고, 예약된 작업 생성 및 레지스트리 키 수정과 같은 방법을 사용하면 가능할 때마다 시작 시 파일을 실행하려고 한다는 것을 나타냅니다. 파일 실행을 숨기는 방법도 박쥐 파일을 생성해 숨김 모드로 실행한 뒤 실행 후 해당 박쥐 파일을 삭제하는 등 다양한 방법이 있다.
코드가 악성이라는 것을 이해하고 이를 원격 액세스 도구(RAT)로 올바르게 식별합니다.
이 교육을 통해 우리는 ChatGPT의 암호를 더 잘 해독하고 이것이 맬웨어 분석에 어떻게 도움이 되는지 이해할 수 있었습니다. ChatGPT는 기본 기능을 시연했지만 현재는 보다 포괄적인 인간 지능 기반 악성 코드 분석과 비교할 수 없습니다. 우리는 ChatGPT를 계속 모니터링하고 향후 더 많은 업데이트를 공유하여 기능과 성능을 향상시킬 것입니다.
최고 보안 책임자의 원본 기사, 복제할 경우 출처 표시: https://cncso.com/kr/chatgpt-html을-사용한-비동기-분석