게시판

필리핀 이트래블 앱 어플 작성방법 종결! 정상 확인까지

페이지 정보

작성자 Luna
작성일25-07-03 01:25 조회1회 댓글0건

본문

샌즈랩 확인된 정상 URL 목록 위협 분석팀은 매월 악성코드를 선정하여 보고서를 작성합니다. 전문 분석을 통해 파악한 악성코드의 특징과 위협 동향, 연관 정보 등을 공유해 안전한 사이버 환경을 만들어 가고자 합니다. 악성코드에 대한 더 상세한 정보는 사이버 위협 인텔리전스 서비스 ;에서 확인하실 수 있습니다. ​​​​​​​​1. 개요AgentTesla는 2014년경 처음 등장한 이후 지속적으로 진화해 온 정보 탈취형 악성코드로, 2024년에도 전 세계에서 가장 많이 탐지된 악성코드 Top 10에 포함되며 여전히 높은 위험 수준을 유지한다. 특히 피싱 이메일을 통해 유포되며, 다양한 정보 수집 기능을 결합해 기업과 개인 사용자 모두에게 광범위한 피해를 초래한다.​분석 대상인 AgentTesla는 AutoIt 스크립트 기반 드로퍼를 사용해 초기 로딩을 수행한다. 드로퍼는 내부에 포함한 쉘코드를 복호화 한 뒤 메모리에 로드하고, 쉘코드는 프로세스 할로잉 기법을 통해 인포스틸러 페이로드를 실행한다. 이 과정은 명시적인 파일 생성을 최소화하고 모든 실행 흐름을 메모리 내에서 처리해 탐지를 회피한다. 또한, 정적 분석을 방해하기 위해 문자열 난독화, CRC32 해시 기반 API 동적 로딩, Export Table 수동 파싱 등 다양한 안티 분석 기법을 적용하며, VBS 스크립트를 시작 프로그램에 등록해 실행 지속성을 확보한다. 시스템 환경 탐지, 자격 증명 수집, 키로깅, SMTP 기반 정보 유출 등 AgentTesla 계열에서 공통적으로 수행하는 기능을 가지며, 특히 웹 브라우저뿐 아니라 이메일 클라이언트, VPN, FTP 클라이언트 등 다양한 애플리케이션에서 사용자 인증 정보를 폭넓게 탈취한다.​본 보고서는 악성코드의 전체 동작을 AutoIt 스크립트 기반 초기 로딩, 쉘코드 복호화 및 실행, 인포스틸러의 정보 수집과 유출이라는 세 단계로 나누어 분석하고, 각 단계에서 사용된 기술적 특징과 우회 기법을 상세히 설명한다. 이를 통해 최신 AgentTesla 계열 악성코드의 고도화된 탐지 회피 기술을 명확히 파악할 수 있다.​​​​​​ 2. 악성코드 정보분석에 사용한 악성코드는 VALVES.bat, Project-Materials-RJ700-P73Q800-Technical-Details-pdf.txt처럼 정상 파일로 위장해 유포되지만, 실제로는 AutoIt 스크립트를 기반으로 Microsoft Visual C++로 컴파일한 PE 실행 파일이다. 이 실행 파일은 내부에 Roca&quotunderbalanced라는 두 개의 바이너리 리소스를 포함하며, 사용자가 유포 파일을 실행하면 AutoIt 스크립트가 두 리소스를 %TEMP%&quot디렉토리에 설치 및 복호화 해 최종 페이로드를 실행한다.​​ ① Roca와 underbalanced&quot바이너리를 %TEMP%&quot디렉토리에 복사한다.② Roca&quot바이너리를 복호화 한 후 메모리에 로드하고 오프셋 9200부터 실행한다.​Roca는 복호화 후 실행되는 x86 기반 쉘코드로, 최종 페이로드인 인포스틸러(underbalanced)를 메모리에 로드하는 중간 로더 역할을 수행한다. 먼저 하드코딩된 XOR 키로 underbalanced&quot페이로드를 복호화하고, 특정 프로세스를 일시 정지 상태로 생성한 뒤 복호화 된 페이로드를 해당 프로세스에 주입하는 프로세스 할로잉 기법으로 실행을 이어간다. 이때 쉘코드는 API 호출 시 함수명을 직접 참조하지 않고, CRC32 해시 기반의 동적 로딩 방식을 사용한다. 이를 위해 PEB 구조에 직접 접근하고, 각 DLL의 Export Table을 수동으로 파싱 해 확인된 정상 URL 목록 필요한 API 주소를 추출하는 고도화된 우회 기법도 적용했다. 또한 디버깅 여부를 탐지하는 로직도 포함되어 있어 분석 환경에서의 실행을 회피할 수 있다. 실행 지속성을 위해 Roca는 초기 유포 파일을 eupolyzoan.exe라는 이름으로 %LOCALAPPDATA%\recomplaint&quot경로에 복사한 뒤, 시작 프로그램 폴더에 “eupolyzoan.exe”를 실행하는 VBS 스크립트를 생성해 시스템 부팅 시 자동 실행되도록 설정한다.​최종 페이로드인 underbalanced는 Microsoft Visual C# 기반의 .NET 실행 파일이며, 인포스틸러 기능을 수행한다. 코드 내부에는 함수명과 변수명을 의미 없는 문자열로 치환하고, 불필요한 분기와 흐름 제어를 삽입해 정적 분석을 방해한다.[그림 2] “underbalanced”의 흐름 제어 및 난독화 예시​​​다음은 보고서에서 기술한 악성코드 구성 파일과 그 역할을 정리한 표이다.파일명설명 및 역할VALVES.bat최초 유포 실행 파일로, AutoIt 스크립트 실행AutoIt 기반 스크립트, Roca 복호화 후 Fileless 로딩Rocax86 쉘코드, underbalanced 복호화 후 프로세스 할로잉 및 시작 프로그램 등록underbalanced인포스틸러, 정보 수집/유출[표 1] 악성코드 구성 파일 및 역할 결론적으로 이 악성코드는 AutoIt 드로퍼, x86 쉘코드 로더, .NET 인포스틸러가 계층적으로 구성된 다단계 감염 구조를 따르며, 파일 위장, 메모리 기반 실행, 안티 분석 기법, 프로세스 할로잉 등 다양한 기술을 정교하게 결합해 탐지를 회피하고 악성 행위를 지속하는 고도화된 사례로 평가할 수 있다.​​​​​​​3. 악성코드 동작 순서​복호화 된 Roca는 초기 유포 파일을 eupolyzoan.exe라는 이름으로 복사하고, 이 복사본을 실행한 다음 현재 프로세스를 종료한다. 이어서 eupolyzoan.exe는 %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup&quot경로에 자신을 실행하는 eupolyzoan.vbs라는 VBS 스크립트를 생성해 자동 실행 항목에 등록하고, 시스템이 재부팅된 이후에도 악성 행위가 지속되도록 만든다.​이후 eupolyzoan.exe는 underbalanced를 메모리에 로드한 뒤, 하드코딩된 키를 활용해 XOR 방식으로 복호화하고, 인젝션 대상이 되는 정상 프로세스(svchost.exe&quot또는 RegSvcs.exe)를 생성한다. 생성한 프로세스에 복호화 한 underbalanced를 주입하는 프로세스 할로잉으로 최종 페이로드를 은밀하게 실행한다.​underbalanced가 실행되면 다음과 같은 정보를 수집한다.- 웹 브라우저, 이메일, FTP, VPN 클라이언트에 저장된 로그인 자격 증명- 사용자 이름 및 컴퓨터 이름, 운영체제 이름, CPU 모델명, 메모리 용량- 키 입력 로그 [그림 3] 악성코드 동작 순서도​​​​​​​​4. 악성코드 분석4.1. AutoIt 스크립트를 이용한 초기 페이로드 로딩​ 스크립트는 Roca&quot파일을 %TEMP%&quot경로에 생성하고, 파일 전체를 읽은 뒤 사용자 정의 복호화 루틴을 실행한다. 이 복호화 과정에서는 문자열을 '&amp'&quot구분자로 나누고, 각 문자열을 숫자로 변환한 다음 -5¹를 연산해 다시 문자열로 되돌리는 방식으로 진행된다. 이 과정을 통해 메모리 상에 존재하는 Roca의 원본 바이너리를 복원한다.¹ 4294967291의 2의 보수는 -5이다[그림 5] 사용자 정의 복호화 함수​ Roca를 복호화 한 뒤, 스크립트는 동일한 방식으로 underbalanced&quot파일도 %TEMP%&quot경로에 생성한다. 이후 복호화 한 Roca&quot바이너리가 위치한 메모리 영역에 읽기/쓰기/실행 권한을 부여하고, 오프셋 9200 지점을 진입점으로 지정해 CallWindowProc API로 메모리 내에서 직접 실행을 시작한다. 이 방식은 Roca를 디스크에 드롭하거나 확인된 정상 URL 목록 독립적인 PE 실행 파일로 실행하는 전통적인 방식과 달리, 전체 코드를 메모리에서 직접 실행한다는 점에서 Fileless 기법의 전형적인 사례다. 이를 통해 보안 제품의 탐지를 우회하며, 실행 흔적을 시스템에 남기지 않는다.[그림 6] VirtualProtect 권한 부여 및 CallWindowProc 호출​​​4.2. Roca 쉘코드를 통한 인포스틸러 로딩 및 실행복호화 된 Roca는 x86 기반의 쉘코드로, 인포스틸러 페이로드인 underbalanced를 메모리에 로드하고 실행하는 중간 로더 역할을 수행한다.[그림 7] 복호화 된 Roca의 진입점 코드​ Roca는 정적 분석을 회피하기 위해 Windows API 함수명을 코드에 직접 명시하지 않고 CRC32 해시 기반의 동적 로딩 기법을 사용한다. 이 기법은 DLL 파일의 PE 구조 내 Export Table을 직접 파싱하고, 각 함수명에 대해 해시값을 계산한 뒤 목표 해시와 일치하는 함수 주소를 찾아낸다.​Roca가 동적으로 로딩하는 대상은 다음과 같다.- kernel32.dll: 37개 API 함수- user32.dll: 1개 API 함수- advapi32.dll: 3개 API 함수- shlwapi.dll: 1개 API 함수- shell32.dll: 2개 API 함수 API 함수 주소를 찾기 위해 Roca는 먼저 PEB(Process Environment Block)에 접근하고, 로드된 DLL 리스트를 순회하며 BaseDllName&quot값을 비교해 각 DLL의 ImageBase 주소를 확보한다.​[그림 8] PEB 구조를 통해 로드된 DLL의 Base 주소 획득​​이후 각 DLL의 Export Table을 파싱 하여 함수 이름 테이블, 함수 주소 테이블, Ordinal 테이블을 기반으로 함수명을 순회하고, CRC32 해시값을 비교해 최종적으로 함수 주소를 찾는다.[그림 9] Export Table 파싱을 통한 API 주소 동적 획득 과정​​Roca는 안티 디버깅 기능도 포함한다. Sleep(500ms)을 호출한 직후 실제 경과 시간을 측정해 0.5초보다 짧을 경우 디버깅 환경으로 판단하고 프로세스를 종료한다.[그림 10] 디버깅 탐지 로직​ 이후 Roca는 현재 실행 중인 프로세스인 “VALVES.bat”를 eupolyzoan.exe라는 이름으로 “%LOCALAPPDATA%\recomplaint” 경로에 복사한 뒤, 해당 복사본을 실행한다.[그림 11] “eupolyzoan.exe” 파일 생성에 사용되는 매개변수 설정[그림 12] 현재 실행 중인 “VALVES.bat” 내용 메모리로 읽기[그림 13] “eupolyzoan.exe” 파일에 “VALVES.bat” 바이너리 쓰기​생성된 eupolyzoan.exe는 VALVES.bat의 복사본으로 동일한 로직을 반복하지만, 내부 조건문을 통해 자신이 복사본임을 인식하고 실행 흐름을 분기한다. 이후 시작 프로그램 경로(%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup)에 자신을 실행하는 eupolyzoan.vbs&quot파일을 작성하여 시스템 부팅 시 자동으로 실행되도록 설정한다.​생성된 VBS 스크립트의 내용은 다음과 같다.Set WshShell ϜreateObject(WScript.Shell)WshShell.Run C:\Users\;\AppData\Local\recomplaint\eupolyzoan.exe , 1Set WshShell =Nothing 이 방식은 레지스트리 대신 VBS 파일을 이용해 실행 지속성을 확보하므로, 일부 보안 솔루션의 탐지를 우회할 수 있다.​이후 eupolyzoan.exe는 underbalanced를 메모리에 로드한 뒤, 내부에 하드코딩된 키 X0OHZLDCON3SG6XP92NOHLNH를 사용해 XOR 방식으로 복호화 한다. 복호화가 완료되면, 악성코드는 다음 중 하나의 정상 프로세스를 일시정지 상태로 생성하고, 복호화 한 underbalanced를 주입해 프로세스 할로잉을 수행한다.- C:\Windows\System32\svchost.exe- C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe- C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegSvcs.exe 생성된 프로세스에서는 원래 로드된 실행 파일을 언매핑하고, 복호화 한 underbalanced를 메모리에 새로 매핑한 확인된 정상 URL 목록 뒤 섹션 정보를 재구성한다. 이후 엔트리 포인트를 변경하고 프로세스를 재개해 악성코드의 실행을 시작한다. 이러한 일련의 과정은 디스크에 별도의 흔적을 남기지 않고 정상 프로세스 내부에 악성코드를 은닉해 실행함으로써 탐지를 회피한다. 결국 Roca는 단순한 쉘코드가 아니라, 인포스틸러 실행을 위한 복호화, 프로세스 할로잉, 실행 지속성 확보 등의 기능을 수행하는 다기능 로더 역할을 한다.​[그림 14] 기존 메모리 언매핑 및 underbalanced 매핑[그림 15] 엔트리 포인트 변경 및 프로세스 재개​​​​4.3. underbalanced 인포스틸러의 정보 수집 및 유출 기능4.3.1. 환경 우회 및 안티 분석 기법“underbalanced”는 정보 수집 및 유출에 앞서 다양한 분석 회피 기법을 먼저 실행한다. 악성코드는 HTTPS 통신 시 인증서 검증을 무력화해 통신 안정성을 확보하고, 디버깅 여부, 가상 환경, 시스템 시간 조작 여부를 확인해 실행 환경을 점검한다. 이러한 탐지 결과에 따라 프로그램이 종료된 것처럼 위장함으로써 분석을 방해한다.​먼저 악성코드는 .NET 통신 과정에서 서버 인증서 유효성을 검사하는 ServerCertificateValidationCallback에 항상 true를 반환하는 콜백 함수를 등록해, HTTPS 인증서를 무조건 신뢰하게 한다. 이를 통해 유효하지 않거나 자체 서명된 인증서도 문제없이 통과시킨다. 또한 SSL3부터 TLS 1.2까지 프로토콜을 사용하도록 설정해 공격자의 C2 서버와 안정적으로 통신할 수 있도록 조치한다. 이러한 구성을 통해 탐지 회피뿐 아니라, 인증 오류에 따른 연결 실패를 예방하기 위한 목적도 확인할 수 있다.[그림 16] 인증서 검증 우회 로직[그림 17] HTTP 통신 시 사용할 보안 프로토콜 설정​이후 악성코드는 다섯 가지 조건을 기준으로 실행 환경을 점검하고, 하나라도 조건에 부합할 경우 Application.Exit()을 호출해 프로그램이 종료된 것처럼 위장한다. 다만, 이 호출은 실제 종료로 이어지지 않으며, Application.Run() 등과 같은 실행 루틴과의 연결도 존재하지 않는다. 즉, 해당 코드는 분석자가 프로그램이 종료된 것으로 오인하게 만들기 위한 장치이며, Application.Exit() 호출 후에도 내부 악성 행위는 중단되지 않고 계속 진행된다. 실행 환경 점검 항목은 다음과 같다.[그림 18] 실행 환경 점검 로직​① 디버깅 환경 탐지CheckRemoteDebuggerPresent API를 호출해 현재 프로세스에 디버거가 연결되어 있는지 확인한다. 연결 상태일 경우 분석 환경으로 간주한다.​​[그림 19] 디버깅 환경 탐지 로직​② 호스팅 환경 탐지[그림 20] 호스팅 환경 탐지 API 호출​③ 시스템 시간 조작 탐지Thread.Sleep(10) 호출 전후로 시스템 Tick 값을 비교한다. 경과 시간이 10L²보다 짧을 경우 Sleep 함수가 후킹 되었거나 시간 조작이 일어난 것으로 판단해 분석 환경으로 간주한다.² 10L ϑ,000ns​[그림 21] 시간 조작 탐지​④ 분석 도구 관련 DLL 탐지다음 DLL 중 하나라도 프로세스에 로드되어 있는 경우 분석 환경으로 간주한다.- SbieDll.dll&quot(Sandboxie)- SxIn.dll&quot(360 SOFTWARE)- Sf2.dll&quot(Avast)- snxhk.dll&quot(Avast)- cmdvrt32.dll&quot(Comodo Container)​⑤ 가상 머신 탐지WMI 쿼리를 통해 시스템 제조사 및 GPU 정보를 확인한다. 아래 조건 중 하나라도 만족하면 가상 환경으로 확인된 정상 URL 목록 간주한다.- Win32_ComputerSystem.Manufacturer가 Microsoft Corporation이고 Win32_ComputerSystem.Model에 VIRTUAL이 포함됨- Win32_ComputerSystem.Manufacturer&quot또는 Win32_ComputerSystem.Model에 vmware&quot또는 VirtualBox&quot포함- Win32_VideoController.Name에 VMware와 VBox가 동시에 존재 (단, 이 조건은 논리 오류 포함) 이러한 탐지 로직은 악성코드가 분석 도구나 가상 환경에 노출되는 것을 인지하고 분석을 회피하기 위한 방어 전략이다. 특히, 실행을 중단한 것처럼 보이게 위장하는 방식은 실제 악성 행위의 분석을 어렵게 만든다. ​4.3.2. 시스템 정보 수집“underbalanced”는 먼저 감염된 시스템의 고유 식별 정보를 수집한다. 가장 우선적으로 하드웨어 기반 식별자인 HWID를 생성하며, 이를 위해 다음 세 가지 값을 추출한다.- 메인보드 일련번호: Win32_BaseBoard.SerialNumber- CPU 고유 ID: Win32_Processor.ProcessorId- MAC 주소: Win32_NetworkAdapterConfiguration.MACAddress&quot(IPEnabled 속성이 true인 첫 번째 어댑터 기준)​악성코드는 이 값을 연결한 뒤 고유한 HWID 값을 생성하며, 이를 피해자 식별 정보로 활용할 수 있다.[그림 22] HWID 생성을 위한 시스템 고유 식별자 수집 및 해싱 처리​ 이와 함께 악성코드는 다음과 같은 실행 관련 정보를 추출해 내부 변수로 저장한다.- 현재 실행 중인 프로세스의 전체 경로- 하드코딩된 디렉토리 및 실행 파일 경로- 로그인된 사용자명 및 컴퓨터 이름 또한 설정값에 따라 외부 API에 요청 후 응답 결과를 추가로 수집할 수도 있다. 해당 기능이 활성화되어 있을 경우, 악성코드는 설정된 외부 API로 HTTP 요청을 전송하고, 응답 내용을 저장한다. 하지만 본 보고서에서 분석한 악성코드에서는 이 설정이 비활성화된 상태여서 실제 요청은 발생하지 않았다.​이처럼 악성코드는 다양한 식별 정보를 수집해 향후 조건부 명령 실행, 시스템 구분, 피해자 추적 등에 활용할 기반을 마련한다.[그림 23] 실행 디렉토리 및 사용자 정보 저장 구조​ 4.3.3. 자격 증명 수집“underbalanced”는 감염된 시스템에서 웹 브라우저, 이메일 클라이언트, FTP 클라이언트, VPN 등 다양한 애플리케이션에 저장된 자격 증명을 수집한다. 먼저 악성코드는 로그인 정보가 저장된 브라우저 사용자 프로필 경로를 확보하기 위해 내부에 하드코딩된 경로들을 기반으로 Chromium 및 Mozilla 계열 브라우저를 등록한다. 등록 대상 브라우저는 다음과 같다.- Chromium 계열Opera Browser, Yandex Browser, Iridium Browser, Chromium, 7Star, Torch Browser, Cool Novo, Kometa, Amigo, Brave, CentBrowser, Chedot, Orbitum, Sputnik, Comodo Dragon, Vivaldi, Citrio, 360 Browser, Uran, Liebao Browser, Elements Browser, Epic Privacy, Coccoc, Sleipnir 6, QIP Surf, Coowon, Chrome, Edge Chromium​- Mozilla 계열Firefox, SeaMonkey, Thunderbird, BlackHawk, CyberFox, K-Meleon, IceCat, PaleMoon, IceDragon, WaterFox, Postbox, Flock​악성코드는 이 경로들을 이후 브라우저 자격 증명 추출의 기준 경로로 활용한다.[그림 24] 브라우저 프로필 경로 등록 로직​이후 악성코드는 자격 증명 수집기 목록에 애플리케이션별 수집기를 등록한다. 수집 대상 애플리케이션은 다음과 같이 분류된다.​- 웹 브라우저Chromium, Mozilla, Internet Explorer/Edge, UC Browser, QQ Browser, Safari, Falkon- 메일 클라이언트Outlook, Windows Mail, The Bat!, Becky!, IncrediMail, 확인된 정상 URL 목록 Eudora, Claws Mail, FoxMail, Opera Mail, Mailbird, eM Client, PocoMail- FTP 클라이언트FileZilla, WinSCP, CoreFTP, FlashFXP, FTP Navigator, SmartFTP, WS_FTP, FTP Commander, FTPGetter- VPN 및 보안 소프트웨어OpenVPN, NordVPN, Private Internet Access- 기타 애플리케이션Windows Credential Store, VNC, Discord, Trillian, Psi, MySQL Workbench, Internet Download Manager(IDM), JDownloader​[그림 25] 자격 증명 수집기 등록 및 실행 흐름​모든 수집기를 등록한 뒤, 악성코드는 각 수집기를 순회하면서 저장된 자격 증명을 추출한다. 수집기는 애플리케이션별 설정 파일, 데이터베이스, 구성 파일 등에서 자격 증명 정보를 찾아내며, 수집한 결과를 리스트에 누적한다.[그림 26] 등록된 수집기 순회 및 Grab() 메서드 실행 수집한 자격 증명 리스트는 HTML 형식 문자열로 변환해, SMTP 전송 방식으로 외부 서버에 전달한다. 전체 루틴에는 예외 처리가 포함되어 있어 일부 수집기에서 오류가 발생하더라도 전체 수집 과정에는 영향을 주지 않는다. 이 구조는 다양한 환경에서도 안정적인 정보 수집을 가능하게 하여, 애플리케이션에서 자격 증명 정보를 효과적으로 추출할 수 있도록 설계되어 있다.​​4.3.4. SMTP 전송을 통한 정보 유출“underbalanced”는 수집한 자격 증명과 시스템 정보를 외부 SMTP 서버로 전송한다. 먼저, 다음과 같은 시스템 정보를 수집한 뒤, 이를 HTML 형식의 문자열로 구성한다.- 현재 시간- 사용자 이름 및 컴퓨터 이름- 운영체제 이름- CPU 모델명- 메모리 용량- (조건부) 공용 IP 주소 이후 수집한 자격 증명 정보와 시스템 정보를 포함한 HTML 내용을 기반으로 .html 확장자의 파일을 생성하고, 이를 첨부파일로 활용한다. 파일명은 PW_사용자명/컴퓨터명_yyyy_MM_dd_HH_mm_ss.html&quot형식으로 지정하며, 이메일 본문 없이 첨부 파일만 포함한 상태로 전송한다.​SMTP 전송 설정은 내부에 하드코딩되어 있으며, 다음과 같은 고정 값이 사용된다. SMTP 전송은 587번 포트를 사용해, TLS 기반 보안 연결(STARTTLS)을 통해 이뤄진다. 이때 시스템에 저장된 인증 정보를 사용하지 않고, 코드에 하드코딩된 계정 정보를 이용해 SMTP 서버에 로그인한다.[그림 27] SMTP 서버와의 통신 및 STARTTLS 명령을 통한 TLS 전환 흐름​이처럼 악성코드는 탈취한 데이터를 외부 공격자의 SMTP 서버로 전송하는 기능까지 수행한다. 전송 과정에서 사용하는 이메일 주소와 SMTP 인증 정보는 모두 하드코딩되어 있었으며, 분석 당시 실제 운영 중인 SMTP 서버와의 통신 흔적도 확인되었다.​​ 4.3.5. 키로깅 및 주기적 정보 전송“underbalanced”는 시스템 전역의 키 입력을 실시간으로 감시하는 키로깅 기능을 수행한다. 악성코드는 사용자의 모든 입력을 기록하며, 이를 주기적으로 외부 서버로 전송한다. 먼저 SetWindowsHookEx API를 호출해 시스템 전체의 키보드 입력을 가로채고, 콜백 함수가 사용한 키 값을 문자열로 변환해 기록한다. 입력값을 처리할 때는 키 종류에 따라 다음과 같은 규칙을 따른다.- 일반키: “a”, “1” 등 (CapsLock, Shift 상태를 반영해 대소문자를 정확히 기록)- 방향키: {KEYUP}, {KEYDOWN}, {KEYLEFT}, {KEYRIGHT}- 기능키: {F1} ~ {F12}- 제어키: {CTRL}, {ALT+TAB}, {ALT+F4}, {Win}- 확인된 정상 URL 목록 편집키: {BACK}, {TAB}, {DEL}, {Insert}- 입력키: {ENTER}, 공백(Space)- 기타: {ESC}, {CAPSLOCK}, {HOME}, {END}, {PageUp}, {PageDown}, {NumLock}- 창이 전환될 경우, 현재 포커스 된 창의 제목도 함께 기록 악성코드는 30분을 주기로 키 입력 로그를 전송하며, 이 주기적 전송 과정은 다음과 같은 순서로 반복된다.​① 먼저 %TEMP%\log.tmp&quot파일의 존재 여부를 확인한다.② 파일이 존재하지 않으면, 현재 수집된 키 입력 로그와 시스템 정보를 HTML 포맷으로 구성한 뒤, KL_사용자명/컴퓨터명_yyyy_MM_dd_HH_mm_ss.html&quot형식의 파일명으로 SMTP 전송을 시도한다.③ 전송에 실패할 경우, 해당 키 입력 데이터를 HTML 형식으로 변환해 log.tmp&quot파일에 저장한다.④ 반대로 log.tmp&quot파일이 존재할 경우, 먼저 그 내용을 시스템 정보와 함께 HTML 파일로 구성한 뒤 동일한 파일명으로 SMTP 전송을 수행한다.⑤ 이때 전송이 성공하면 log.tmp&quot파일을 삭제한다.⑥ 이어서 현재 수집된 키 입력 로그에 대해서도 동일한 제목 형식으로 SMTP 전송을 시도하며, 실패할 경우 log.tmp에 다시 저장한다.[그림 28] 키로깅 정보의 SMTP 전송 흐름​클립보드 감시 기능도 포함하고 있지만, 이는 설정값에 따라 활성화된다. 해당 기능이 켜져 있을 경우, 악성코드는 클립보드 내용이 이전과 달라질 때만 값을 기록하며, HTML 해석 오류를 막기 위해 ;&quot등의 문자를 이스케이프 처리한다. 또한, 스크린샷 캡처 기능은 코드에 설정값만 존재하고 실제 이미지 수집 및 전송 루틴은 구현하지 않았다. 따라서 관련 기능은 비활성화 상태이며, 코드 구조상 존재하더라도 실질적인 행위는 발생하지 않는다.​반면, 키보드 입력 감시 기능은 특수키 구분, 창 전환 감지 등 세부 로직까지 포함된 정교한 구조로 구성돼 있다. 이러한 구성은 공격자가 시각적인 정보보다 사용자가 직접 입력한 정보에 집중하고 있음을 보여준다. 즉, 로그인 시 입력되는 계정 정보(ID/PW), 이메일 작성 내용, 사내 메신저 대화, URL 등 민감한 텍스트 기반 정보를 수집하는 데 목적이 있다.​​​​​​​5. 수집/유출 정보구분세부 정보대상 프로그램/기술웹 브라우저- URL- ID- 비밀번호# ChromiumOpera Browser,Yandex Browser,Iridium Browser,Chromium,7Star,Torch Browser,Cool Novo,Kometa,Amigo,Brave,CentBrowser,Chedot,Orbitum,Sputnik,Comodo Dragon,Vivaldi,Citrio,360 Browser,Uran,Liebao Browser,Elements Browser,Epic Privacy,Coccoc,Sleipnir 6,QIP Surf,Coowon,Chrome,Edge Chromium# MozillaFirefox,SeaMonkey,Thunderbird,BlackHawk,CyberFox,K-Meleon, IceCat,PaleMoon,IceDragon,WaterFox,Postbox,Flock# 기타Internet Explorer Microsoft Edge, UCBrowser, QQBrowser, Safari, Falkon메일 클라이언트- 서버 주소- 사용자 이메일- 비밀번호Outlook, WindowsMail, TheBat, Becky, IncrediMail, Eudora, ClawsMail, FoxMail, OperaMail, PocoMail, EmClient, MailbirdFTP 클라이언트- FTP 서버 주소 + 포트- 사용자명- 비밀번호FileZilla, WinScp, CoreFtp, FlashFxp, FtpNavigator, SmartFtp, WSFtp, FtpCommander, FTPGetterVPN- VPN 식별자- 사용자명- 비밀번호OpenVpn, NordVpn, PrivateInternetAccess기타 프로그램# Windows, Psi, MySqlWorkbench, IDM, JDownloader- 대상 서비스- 사용자계정- 비밀번호# Vnc- 접속 비밀번호- VNC 프로그램 이름# Discord- Discord 인증 토큰# Trillian- 계정 이름- 비밀번호Windows Credential Store, Vnc, Discord, Trillian, Psi, MysqlWorkbench, IDM, JDownloader기본 시스템 정보- 사용자 이름- 컴퓨터 이름- 현재 시간- 운영 체제- CPU 모델- 시스템 메모리 용량.키 입력 정보- 사용자가 입력한 키보드 값키보드 후킹 API​ ​​​​6. 결론본 보고서에서 확인된 정상 URL 목록 분석한 악성코드는 AutoIt 기반 드로퍼, x86 쉘코드 로더, .NET 기반 인포스틸러로 구성된 다단계 구조를 바탕으로 정교하게 설계된 정보 탈취형 악성코드다. 실행 과정에서 실질적인 파일 생성을 최소화하고, 메모리 기반 로딩과 프로세스 할로잉을 통해 악성 페이로드를 은닉한 채 실행함으로써 탐지를 회피한다. 여기에 시작 프로그램 등록 등을 통해 실행 지속성을 확보하며, 자격 증명 수집, 키로깅 등 다양한 정보를 수집해 외부로 유출한다.​분석 결과, 해당 악성코드는 구조 구성과 동작 방식 전반에서 AgentTesla 계열 악성코드와 높은 유사성을 보인다. 구체적인 공통점은 다음과 같다.​✅ 인포스틸러 본체를 다단계 로딩 구조로 실행하며, Fileless 기법을 사용함✅ 인포스틸러가 .NET 언어로 작성됨✅ 웹 브라우저, 이메일 클라이언트, VPN 등 다양한 애플리케이션의 자격 증명을 수집함✅ 수집 정보를 HTML 기반 포맷으로 정리하고, .html 파일로 구성함✅ PW_사용자명/컴퓨터명_yyyy_MM_dd_HH_mm_ss.html&quot형식의 파일명을 사용함✅ 하드코딩된 계정 정보를 활용해 SMTP로 외부 전송을 수행함 이러한 유사성은 단순한 기능 일치 수준을 넘어서, AgentTesla의 변형 또는 커스텀 빌드 샘플로 판단할 수 있는 근거를 제공한다. 따라서 초기 유포 방식도 AgentTesla에서 자주 활용된 피싱 이메일 기반의 공격일 가능성이 높다.​​​Yandex는 러시아에서 가장 널리 사용되는 포털이자 검색엔진으로, 해당 메일 계정의 사용자는 러시아어 기반 환경에 익숙한 인물일 가능성이 높고, 공격자의 국적 또는 활동 권역을 추정할 수 있는 간접적인 정황으로 해석할 수 있다.​[그림 30] 수신자 이메일이 등록된 Yandex 서비스 로그인 화면 결론적으로, 본 악성코드는 단순히 정보를 탈취하는 데 그치지 않고, 탐지 회피, 실행 지속성 확보, 정식 도메인을 활용한 유출 경로 위장까지 포함하는 고도화된 인포스틸러이다. AgentTesla 계열에서 지속적으로 관찰된 전형적인 기술적 특성을 다수 갖추고 있으며, 향후 다양한 변종 형태로 재등장할 가능성도 높다. 특히 정상 기업의 이메일 서버를 유출 경로로 악용한 방식은 보안 솔루션의 탐지를 우회하려는 전략으로 해석되며, 공격자가 정보 수집부터 탈취에 이르기까지 고도화된 기법을 활용한 정황이 뚜렷하게 드러난다. 이에 따라 유사 위협에 대비하기 위해서는 SMTP 전송 이상 행위에 대한 모니터링 강화 등 선제적인 탐지 체계를 마련할 필요가 있다.​수 있다. 확인된 IoC에는 악성 파일 해시, 관련 IP, 통신에 사용된 도메인 등을 포함하고 있으며, 이는 유사 샘플 탐지 및 추적에 활용될 수 있다.​​​​​​​7. IoC 정보7.1. sha 256 해시52AC94D05D81C00FAA5FFB989BA1B631B88790DEB41F8F982C120FBA5754F4D3 VALVES.bat / eupolyzoan.exe2528904D8CF3D26B81573B487BFD63F8DC052CB2A9F4A1B9A643FBD9B6C4BDA5 RocaABC3718AD048C24D81C4C4CDFD42205C9C180EB38C193C98427AD30A5D0B736D underbalanced4C74DEF4B786FD0F26C3D635A0A3A355A8EB40F934 eupolyzoan.vbs 7.2. IPTCP 163.44.198.71:587 7.3. 도메인 7.4. SMTP 7.5. 파일 드롭 경로C:\Users\;\AppData\Loca\Temp\RocaC:\Users\;\AppData\Loca\Temp\underbalancedC:\Users\;\AppData\Loca\recomplaint\eupolyzoan.exeC:\Users\;\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\eupolyzoan.vbs​​ ​​​​ ​​​​​​​

댓글목록

등록된 댓글이 없습니다.

경기도 수원시 영통구 영통로200번길 50 (구 주소 : 경기도 수원시 영통구 망포동 345-1) | TEL : 031-205-8275 | FAX : 031-205-6350 | 법인등록번호 : 135871-00078169 | 이사장 : 안용호 | E-mail : chunjaebu@nate.com

Copyright © 2018 우리부모요양병원. All Rights Reserved.