▼ 아래의 강의를 활용해 학습 및 정리하였습니다. ▼

https://inf.run/zmPL

 

[지금 무료] 기초부터 따라하는 디지털포렌식 | 훈지손 - 인프런

훈지손 | 기초부터 따라하는 디지털포렌식 강의입니다. 강의를 따라하다보면 "물 흐르듯, 자연스럽게" 실력이 늘어가는 강의를 추구합니다., 초보자 눈높이에 딱 맞춘, 원리를 이해하는 디지털

www.inflearn.com


$MFT

$기호는 윈도우 내부의 시스템 파일이라는 의미를 가짐. 

 

MFT(Master File Table)

  • 디렉토리 및 파일의 구조를 알 수 있는 아티팩트
  • 하나의 파일당 하나의 MFT 엔트리를 가짐
  • $MFT: MFT 엔트리들의 집합

MFT 엔트리

  • 파일의 이름, 생성·수정·변경시간, 크기, 속성등을 가지고 있음
  • 파일의 디스크 내부 위치, 파일의 시스템 경로를 알 수 있음

MFT 실습

  • FTK Imager 이용해 [root]\$MFT 추출
  • "MFTExplorer" 이용

 

$LogFlie, $UsnJrnl

저널링 (Jounaling)

  • 데이터 변경을 디스크에 반영하기 전 행위를 기록하여 추후 오류 복구에 활용
    • 데이터 기록하는 동안 시스템에 문제 생기면 데이터가 손실됨
    • 문제가 발생하기 전에 "어떤 데이터를 언제, 어디에 쓰는지" 기록
    • 문제 발생하면 기록을 토대로 작업이 이루어지기 전 상태로 시스템 복원

트랜잭션 (Transaction)

  • 쪼갤 수 없는 업무 처리의 최소 단위
  • 파일이나 디랙토리 생성, 수정, 삭제, MFT 레코드 변경 등
  • $LogFile: 메타데이터의 트랜잭션 저널 정보

 

$UsnJrnl

  • 파일이나 디렉토리에 변경사항 생길 때 이를 기록하는 로그 파일
  • 파일 복원 목적 X, 단순 파일 작업 있었다는 사실 확인 위함
  • 시간 순서대로 엔트리 저장, 기본 크기는 32Mb
    • 하루 8시간 사용한다 치면 4~5일 정도의 데이터 보관

$LogFile, $UsnJrnl 실습

  • FTK Imager 이용해 [root]\$LogFile 추출, [root]\$Extend\$UsnJrnl\$J 추출
  • "NTFS Log Tracker" 이용

 

바로가기(.LNK)

'Windows Shortcut'

.lnk 확장자 (link 파일)

 

생성방법

  • 사용자가 직접 생성
  • 프로그램 설치 시 생성
  • 운영체제가 자동으로 생성

바로가기 파일이 생성되는 경로

  • 바탕화면 << 가장 흔하게 생성됨. 
    • %UserProfile%\Desktop 
  • 시작 메뉴
  • 최근 실행
  • 빠른 실행

바로가기(LNK) 실습

  • FTK Imager 이용해 추출
  • "LECmd" 이용 -> 분석

 

Jumplist

점프리스트 (Jumplist)

  • 최근 사용한 파일/폴더에 빠르게 접근하기 위한 구조
  • 종류(분석함에 있어서 이런 걸 구분하는 게 의미있진 않음)
    • Automatic: 운영체제가 자동으로 남기는 항목(설치하지 않아도 기본으로 있는 응용 프로그램들이 자동으로 남기는 것)
    • Custom: 응용프로그램이 자체적으로 관리하는 항목
  • 경로
    • %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations
    • %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations

Jumplist 실습

  • FTK Imager 이용해 추출
  • "JumpList Explorer" 이용 -> 분석

 

Prefetch 개념 및 실습

응용 프로그램(.exe) 실행과 관련된 아티팩트. 응용 프로그램 실행 시 남는 흔적들? 

일반적으로 악성 프로그램들도 결국 .exe 파일인 경우가 많음

포렌식 위해 존재하는 아티팩트는 아님. 

 

Prefetch

  • 응용프로그램의 빠른 실행 위해 존재하는 파일
  • RAM 영역에 별도의 prefetch 영역 존재?
  • 응용 프로그램 실행할 때에 생성
    • 실행 파일 이름, 경로
    • 실행 파일의 실행 횟수
    • 실행 파일의 최초 실행 시간
    • 실행 파일의 마지막 실행 시간
  • 경로
    • %SystemRoot%\Prefetch

 

Prefetch 실습

  • "WinPrefetchView" 이용해 분석

Q. '$' 기호가 갖는 의미는?

A. '윈도우 내부의 시스템 파일' 이라는 뜻의 기호.

 

Q. Prefetch 실습에서 Winprefetch를 사용하면 무결성이 훼손되지 않는다. (O/X 퀴즈)

A. X

 

Q. $LogFile의 저널링은 언제 활용하는가?

A. 데이터 변경을 디스크에 반영하기 전, 행위를 기록해서 추후 오류 복구에 활용

 

Q. UserAssist 에서 나타내는 내용은?

A. 최근에 실행한 프로그램 목록, 마지막 실행 시간, 실행 횟수 

'SWUFORCE > 디지털 포렌식' 카테고리의 다른 글

디지털 포렌식_07  (0) 2024.07.10
디지털 포렌식_06  (0) 2024.07.03
디지털 포렌식_04  (0) 2024.05.15
디지털 포렌식_03  (0) 2024.05.07
디지털 포렌식_02  (0) 2024.04.02

https://blog.alyac.co.kr/5380

 

더치트를 위장하여 유포중인 스미싱 주의!

안녕하세요? 이스트시큐리티 시큐리티대응센터(이하 ESRC)입니다. 금일 오전부터 더치트를 위장하여 스미싱이 유포중에 있어 사용자들의 각별한 주의가 필요합니다.  더치트란 주로 비대면

blog.alyac.co.kr


더치트란?

  • 비대면 거래 전 상대방의 평판 확인 및 추가 피해자를 막기 위해 사기를 친 사람의 정보(계좌번호, 이름, 전화번호 등)를 공유하는 국내 최초의 사기피해 정보공유 사이트

 

지난 4월 30일, 더치트를 위장한 스미싱이 유포되었다. 

[Web발신]
(광고) 안녕하세요.   
금융사기 피해방지 서비스 더치트 입니다.   
귀하에 대한 피해사례가 1건 등록되었습니다. (3자 사기 등에 연락처가 사용된 경우, 명의자 정보가 다를수 있습니다.)  
2일 이내에 피해사례 삭제요청이 없는 경우, 거래주의 정보로 안내될 수 있습니다.   
본 메세지는 선의의 피해방지를 위한 목적으로, 피해사례의 진위여부 검증을 위해 전송되었습니다.   
오해나 허위로 등록된 피해사례인 경우, 즉시 삭제요청해 주시기 바랍니다.   
환불 등 증빙자료를 첨부해 주시면, 즉시 피해사례가 비공개처리 됩니다.   

1) 등록된 피해사례는 피등록자의 1차 소명 시간이 종료되는 24시간후부터 검색결과에 반영됩니다. 최대 2일의 소명시간이 종료되면 외부채널의 검색결과에도 반영될 수 있습니다.   

소명기간 종료 2일 전.   
귀하의 금융거래와 통화발신이 제한될 수 있습니다.   

▶ 「피해사례 등록」 확인 안내  

홈페이지 :  ***.kr/8**
무료수신거부 08087*****

↑ 유포된 스미싱 내용

 

메시지 내 링크를 클릭하면 공격자가 제작한 피싱 페이지로 연결되어 이동한다. 

 

해당 악성코드 작동 방식

악성 앱 다운로드 페이지

  1. 피싱 페이지에서 'APP 열기' 클릭 시 바로 악성 apk가 다운로드된다.
    • 해당 페이지 내에는 사용자 브라우저 체크 기능 및 개발자 도구 차단 기능이 적용되어 있다.
  2. apk 설치 시, 다양한 권한들을 요구 후 '더치트 예방' 이라는 아이콘으로 사용자 휴대폰에 설치된다. 
    • 요구되는 권한은 다음과 같다. 
      android.permission.SEND_SMS
      android.permission.READ_EXTERNAL_STORAGE
      android.permission.READ_PHONE_STATE
      android.permission.READ_SMS
      android.permission.WRITE_EXTERNAL_STORAGE
      android.permission.READ_CONTACTS
      android.permission.GET_ACCOUNTS
      android.permission.WRITE_CONTACTS
      android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
      android.permission.RECEIVE_BOOT_COMPLETED
      android.permission.INTERNET
      android.permission.AUTHENTICATE_ACCOUNTS
      com.google.android.c2dm.permission.RECEIVE
      android.permission.ACCESS_WIFI_STATE
      android.permission.POST_NOTIFICATIONS
      android.permission.WAKE_LOCK
      android.permission.ACCESS_NETWORK_STATE
      android.permission.FOREGROUND_SERVICE
    • 악성앱 아이콘
  3. 사용자 휴대폰에 어플 형태로 설치가 완료되면 브라우저 창을 띄워 데이터를 로딩하는 듯한 화면을 보여준다.
    • 앱 로딩 위장 페이지
  4. '현재 기기에서는 이용할 수 없습니다', '자동으로 앱이 삭제됩니다' 라는 메시지를 띄우며 자동으로 앱을 삭제하는 것처럼 위장한다. 
    • 앱 자동삭제 위장 페이지
    • 실제로 삭제된 것은 아니며, 아이콘을 없애고 백그라운드에서 동작하며 마치 해당 앱이 삭제된 것처럼 위장해 사용자 휴대폰에서의 생존률을 높인다. 

 

현재 알약M에서 해당 악성앱에 대해 'Trojan.Android.Agent'로 탐지중이며, 유사 변종에 대해서도 지속적 모니터링을 진행중에 있다. 

▼ 아래의 강의를 활용해 학습 및 정리하였습니다. ▼

https://inf.run/zmPL

 

[지금 무료] 기초부터 따라하는 디지털포렌식 | 훈지손 - 인프런

훈지손 | 기초부터 따라하는 디지털포렌식 강의입니다. 강의를 따라하다보면 "물 흐르듯, 자연스럽게" 실력이 늘어가는 강의를 추구합니다., 초보자 눈높이에 딱 맞춘, 원리를 이해하는 디지털

www.inflearn.com


Windows 포렌식 개요&Registry 개요

  1. Windows Artifacts
    • 자료구조?
    • windows가 가지고 있는 특유의 기능들과 기능을 구현하는 데 필요한 요소.
    • windows의 사용자가 수행하는 활동에 대한 정보 보유하고 있는 개체
    • 생성증거: 프로세스, 시스템에서 자동으로 생성한 데이터
    • 보관증거: 사람이 기록하여 작성한 데이터
    • 종류
      • 레지스트리
      • Recycle Bin(휴지통)
      • 등..
    • 중요한 점
      • 사용자의 행위에 따라 어디에 어떤 정보가 저장될까?
      • 컴퓨터는 어떻게 동작하는 걸까?
      • → 사용자는 컴퓨터로 무슨 일을 했을까?
  2. Registry
    • 윈도우 운영체제와 응용 프로그램 운영에 필요한 정보를 담고 있는 계층형 데이터베이스
      • 운영체제 및 응용 프로그램의 설정 정보, 서비스의 중요 데이터 등 기록
      • 부팅 과정부터 로그인, 서비스 실행, 응용 프로그램 실행, 사용자 행위 등 전방위에 걸친 모든 활동에 관여
      • 원래 각각 다른 곳에 보관을 하다가 레지스트리라는 통합된 곳에 저장해두고 있는 것. 
    • 윈도우 시스템의 모든 정보 담겨 있음
      • 윈도우 시스템 분석의 필수 요소
    • 레지스트리에 있는 정보들
      • 시스템 표준 시간
      • 시스템 정보
      • 사용자 계정 정보
      • 환경 변수 정보
      • 자동 실행 프로그램 (컴퓨터 켜질 때 자동으로 동작하는... 악성 코드를 이 자동 실행 프로그램에 등록해 두는 경우가 많음)
      • 응용프로그램 실행 흔적
      • USB 연결 흔적
      • 접근한 폴더 정보
    • 레지스트리 조회
      • regedit(레지스트리 편집기, 윈도우 기본 프로그램임) 이용
      • window+R 눌러 'regedit' 검색하거나 시스템 검색에 'regedit' 검색해 들어가기. 
      • 레지스트리 조회 및 편집 가능
      • 기본으로 보이는 다섯 개의 키가 ROOT Key.
      • 사이드바의 모든 것을 Key라고 부름. 하단의 key들은 서브Key이다.
      •  
      • 키를 클릭하면 우측에 각 키의 이름(Value), 종류(Type), 데이터(Data)가 표시됨.
      • 레지스트리 구조
루트 키 약어 설명
HKEY_CLASSES_ROOT HKCR 파일 확장자 연결 정보, COM 객체 등록 정보
HKEY_CURRENT_USER HKCU 현재 시스템에 로그인된 사용자의 프로파일 정보
HKEY_LOCAL_MACHINE HKLM 시스템의 하드웨어, 소프트웨어 설정 및 기타 환경 정보
HKEY_USERS HKU 시스템의 모든 사용자와 그룹에 관한 프로파일 정보
HKEY_CURRENT_CONFIG HKCC 시스템이 시작할 때 사용되는 하드웨어 프로파일 정보

 

Windows Registry 동작 원리 (1, 2)

Registry-TimeZone

  • Bias를 통해 현재 컴퓨터의 Timezone 알 수 있음.
  • 데이터 값에 16진수로 표시가 됨. 
  • 경로: HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation

Registry-Systeminfo

  • 현재 윈도우 버전, 설치 시간, ProductId 등 시스템과 관련된 정보들 알 수 있음.
  • 파워셸에 systeminfo 입력했을 때와 동일한 정보가 나옴. 
  • Dcode 앱 이용- 레지스트리의 installtime 데이터값을 가져와 입력하고 디코드 누르면 파일타임 확인 가능
  • EpochConverter 이용 - Unix timestamp를 현재 시각으로 변화해줌.
  • 경로: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Registry-Autoruns

  • 시작 프로그램 확인
  • 경로
    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce 
    • HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
    • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
    • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
  • RunOnce - 한 번 실행이 되고 레지스트리 삭제됨
  • RunOnceEx - RunOnce와 실행 타이밍이 다름?

Registry - User Account

  • 사용자의 최종 로그인 시간
  • Dcode로 확인
  • 경로: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\
    • S-1-5-18: systemprofile
    • S-1-5-19: LocalService
    • S-1-5-20: NetworkService
    • S-1-5-21 이후: 사용자가 만든 계정
      • 1000 이상은 user 권한
      • 500은 administrator

Registry - Environment Variables

  • 시스템/사용자 환경변수 확인
  • 경로
    • 사용자 환경변수 - HKU\{SID}\Environment
    • 시스템 환경변수 - HKU\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Registry - Executable

  • 응용프로그램(exe) 실행에 따른 흔적
  • UserAssist: 최근에 실행한 프로그램 목록, 마지막 실행 시간, 실행 횟수
    • 경로: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist
  • OpenSavePidlMRU: 열기 혹은 저장 기능으로 사용된 파일
    • 경로: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpensavePidlMRU
  • LastVisitedPidlMRU: 열기 혹은 저장 기능을 사용한 응용 프로그램
    • 경로: HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU

Registry - USB Connection

  •  USB 등 외부 저장매체 연결 흔적을 추적 가능
    • USB 제품명, 시리얼 넘버, 최초 연결 시각, 마지막 연결 시각
    • VID(벤더 아이디), PID 검색하면 USB 종류 알 수 있음. 
  • 경로
    • 모든 USB: HKLM\SYSTEM\ControlSet001\Enum\USB
      • 시스템에 연결됐던 모든 USB 장치의 정보가 기록됨
    • USB 저장장치: HKLM\SYSTEM\ControlSet001\Enum\USBSTOR
      • 시스템에 연결됐던 모든 USB 저장장치의 정보가 기록됨
    • 마운트 디바이스: HKLM\SYSTEM\MountedDevices
      • 시스템에 마운트되었던 장치의 리스트를 나타냄

Registry - Shellbags

  • 사용자가 접근한 폴더 정보를 기록
  • 삭제된 폴더의 정보도 찾을 수 있음
  • BagMRU: 폴더의 위치를 계층적 구조로 나타냄
  • Bag: 윈도우 사이즈, 위치 등 사용자의 환경설정을 저장
  • 경로
    • HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\Bags
    • HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\BagMRU
    • HKCU\Software\Microsoft\Windows\Shell\Bags
    • HKCU\Software\Microsoft\Windows\Shell\BagMRU

Q. Registry의 다섯 가지 루트 키 약어를 모두 나열하시오.

A. HKCR, HKCU, HKLM, HKU, HKCC

 

Q. Registry에서 Shellbags의 역할은 무엇인가?

A. 사용자가 접근한 폴더 정보 기록, 삭제된 폴더 찾기

 

Q. 각각 어떤 행위를 하는지 알아보려면 어떤 명령어를 사용하여 파일을 추출해야 하는가?

A. strings 명령어

 

Q. registry - user account 에서 끝번호 1000 이상은 유저 권한이다 (O/X) 

A. O

'SWUFORCE > 디지털 포렌식' 카테고리의 다른 글

디지털 포렌식_06  (0) 2024.07.03
디지털 포렌식_05  (0) 2024.05.21
디지털 포렌식_03  (0) 2024.05.07
디지털 포렌식_02  (0) 2024.04.02
디지털 포렌식_01  (1) 2024.03.26

문제 설명


서버 접속 화면. 

여기서 우선 로그인을 해야 하는 모양이다. 

 

문제 파일 역시 다운로드는 했으나, 그걸로 문제를 푸는 게 아닌 것 같았다.

개발자 도구를 열어서 Source에서 'pw'를 키워드로 검색했더니,

여러가지 쓸모 없는 검색 결과와 함께 changePassword라는 게 있어서 클릭해서 들어가 보니 oldPassword를 'admin'이라고 알려주고 있다.

아직 ID는 알지 못하지만 그냥 재미 삼아 ID와 PW 모두 admin을 입력해 봤더니...

진짜 로그인이 돼서 비밀번호를 바꾸라고 하고 있다.

정말 바꿀 건 아니기 때문에 Skip 눌렀다. 

 

 

Grafana라는 사이트에 로그인하게 됐다.

문제 설명에서는 Organization에 플래그를 설정해 놨다고 했다. 

Organization을 찾아야 한다...

 

 

내 정보? 설정? 같은 창에 들어갔다. 보통 이런 곳에 가장 정보가 많다.

 

Users 다음에 Orgs가 있길래 들어갔다.

근데 Edit Organization만 나오고, 별다른 정보가 없다. 

 

플래그와 유사해 보이는 모양조차 없어서 큰 수확 없이 Settings 탭으로 넘어갔다.

기본 설정을 정리해둔 창 같다.

 

아래로 쭉 내려 보니,

org_name과 함께 플래그 형식을 발견했다.

 

DH{default_account_is very dangerous}

조금 긴가민가 했는데 정답이 맞았다.

끝!

'SWUFORCE > 워게임 풀이' 카테고리의 다른 글

[Dreamhack] Exercise: Welcome-Beginners (mics)  (0) 2024.05.28
[Dreamhack] pathtraversal (web)  (0) 2024.05.22
[Dreamhack] devtools-sources (web)  (0) 2024.05.14
[Dreamhack] phpreg (web)  (0) 2024.05.07
[Dreamhack] php7cmp4re (web)  (0) 2024.05.07

문제 설명


문제 파일 압축을 풀었더니 속에 딸린 파일들이 많다. 

개발자 도구에서 Sources 탭 기능을 이용해야 한다고 문제에서 언급했으니, HTML로 접속해 봐야 할 것 같다. 

 

about.html
components.html

 

project.html
index.html

우선 보이는 페이지들을 전부 열었다.

생각보다 그럴듯한 사이트여서 놀랐다... F12를 눌러 개발자 도구를 열고 플래그의 실마리가 될 만한 걸 찾아 봤다.

 

about.html 개발자 도구 열어 Sources 확인

Source 창을 열어 Ctrl+Shift+F를 누르고 검색창에 플래그 형식인 'DH'를 검색했다.  

바로 main.scss 파일에서 해당 검색 키워드를 발견했다는 결과가 뜬다. 확실히 플래그 형태이긴 한데 너무 쉽게 발견한 것 같아서 의심...

 

DH{2ed07940b6fd9b0731ef698a5f0c065be9398f7fa00f03ed9da586c3ed1d54d5}

를 드림핵 문제 플래그 기입란에 넣었는데 이게 정답이 맞다고 한다.

헐...

끝!!

'SWUFORCE > 워게임 풀이' 카테고리의 다른 글

[Dreamhack] pathtraversal (web)  (0) 2024.05.22
[Dreamhack] web-misconf-1 (web)  (0) 2024.05.14
[Dreamhack] phpreg (web)  (0) 2024.05.07
[Dreamhack] php7cmp4re (web)  (0) 2024.05.07
[Dreamhack] Carve Party (web)  (0) 2024.05.01

https://www.igloo.co.kr/security-information/%eb%a1%9d%eb%b9%97lockbit-%ea%b7%b8%eb%a3%b9-%ea%b2%80%ea%b1%b0%eb%a1%9c-%ec%95%8c%ec%95%84%eb%b3%b4%eb%8a%94-%eb%9e%9c%ec%84%ac%ec%9b%a8%ec%96%b4-%ec%83%9d%ed%83%9c%ea%b3%84/

 

‘록빗(LockBit)’ 그룹 검거로 알아보는 랜섬웨어 생태계

사이버 보안 분야에서 가장 악명 높은 조직을 뽑는 설문조사가 이뤄진다면 ‘록빗(LockBit)’ 그룹은 빠지지 않을 것이다. 지난 ’19년 세상에 첫 모습을 드러낸 록빗은 피해자 네트워크가 악성 SW

www.igloo.co.kr


록빗(LockBit)

  • 2019년 처음 등장한 세계 최대 랜섬웨어 그룹
  • 피해자 네트워크가 악성 SW에 감염되면 데이터를 도난하고 시스템을 암호화하는 방식의 공격
  • 서비스형 랜섬웨어(RaaS) 사업을 이끌며 사이버 보안 분야의 혼란 가속화
  • 2024.02.20 작전 '크로노스(Cronos)' 에 의해 무력화
    • 록빗이 공격에 사용하던 소스코드, 랜섬웨어 피해자에 대한 상세 정보, 복호화 키 등이 확보됨
    • 보안 업계 曰, '록빗이 완전히 사라지지 않을 것' → 실제 공격 인프라에 큰 손상 입고 두 명의 관계자 체포 후 나흘 뒤 록빗 부활

올해도 랜섬웨어는 위협적일 것인가?

랜섬웨어(Ransomware)

  • 컴퓨터(피해자)에 침투해 파일 등을 암호화해 사용하지 못하게 하는 악성 프로그램
    • 피해자가 돈을 지불하면 잠긴 파일을 제공하는 방식으로 수익을 창출. 
랜섬웨어로 인한 피해는 나날이 증가할 것으로 예상
  • 2022년 잠시 '랜섬웨어는 점차 줄어들 것'이라는 전망이 있었으나, 다시 일 년만에 공격의 빈도·범위·규모 증가
  • 글로벌 사이버 보안 기업 체이널리시스(Chainalysis)의 '2024년 가상자산 범죄 보고서'
    • 2023년 랜섬웨어로 인한 글로벌 피해: 11억 달러(11조 5,000억 원)로 집계 → 전년 대비 약 2배 증가
    • 2022년을 제외한 모든 해에 피해 꾸준히 증가중인 것을 확인할 수 있음
  • 국내외 사이버 보안 기업들은 공통적으로 '올해 역시 랜섬웨어로 인한 피해가 지속될 것'이라고 발표
    1. 이글루코퍼레이션
      • 올 한 해 발생할 사이버 위협: 이중 공격, 랜섬웨어 공격기법의 고도화
      • 전문화된 조직과 지능화된 공격 기술을 바탕으로 서비스형 랜섬웨어 시장 성황 예상
    2. 안랩
      • 서비스형 랜섬웨어 조직의 변화가 가속화될 것
      • 최근 랜섬웨어 조직들에 대한 법 집행기관의 대응 강화에 따라, RaaS 조직들은 생태계 유지를 위해 다양한 변화 시도할 것
      • 다중 랜섬웨어(Multiple Ransomware) 전략 펼칠 것으로 예상 ▶ 다크웹 내 포럼과 마켓 이동하며 이름 바꾸는 '리 브랜드' 전략, 수사 기관의 추적 어렵게 만들고 공격 실패 시 대체 수단으로 사용하기 위해 다른 RaaS 조직이 사용하는 랜섬웨어의 변형 활용 등.
      • 가상화 플랫폼을 노리는 랜섬웨어 증가 전망 ▶ 최근 가상화 플랫폼 도입 기업 증가하는 추세, 기업의 주요 문서·내부 인프라·기밀자료 등 탈취 위함.
    3. SK쉴더스
      • 제로데이(Zero Day)를 악용한 랜섬웨어 공격 전략이 고도화될 것
      • 최근 기업들이 유지 관리 비용 절감 및 시스템 문제 해결 위한 액세스 용도로 '시스템 원격 액세스 및 제어를 위한 모니터링 관리 도구(RMM)'를 다수 활용 중 → RMM은 내부에서 쉽게 탐지되지 않는 정상적 활동으로 분류되어 많은 랜섬웨어 그룹들이 이를 악용.
      • AI 기술 발전에 따라 랜섬웨어 유포 방식도 지능적으로 변화 중
      • 최근 랜섬웨어 그룹들이 특정 조직 대상으로 하는 지능형 지속 공격(Advanced Persistent Threat, APT)에 주력하는 것이 아닌 'MOVEit', 'GoAnywhere' 등 상용 솔루션들의 제로데이 취약점 악용해 대규모 공격 수행하는 흐름으로 변화함에 주목해야 함

제로데이 - 온라인 게시판에서 새로운 소프트웨어가 공개적으로 배포된 날을 의미하던 단어에서 유래.

개발자가 결함 해결할 기회 갖기 전에 해커가 결함 악용할 때 발생. 

해킹 공격 시점에 보안의 구멍을 막을 방법이 없기에 위험. 

 

정리- 국내외 사이버 보안 기업들이 바라본 사이버 위협 전망

1 이중 공격(Double Attack), 랜섬웨어 공격기법의 고도화
2 RaaS(서비스형 랜섬웨어 조직의 변화 가속
3 가상화 플랫폼을 노리는 랜섬웨어 활개
4 제로데이 악용한 랜섬웨어 공격 전략 고도화

 


국제 수사 기관의 공조로 무력화된 '록빗(LockBit)'

록빗의 검거 소식에 많은 관심이 집중된 이유

  • 록빗은 수많은 랜섬웨어 조직들 중 가장 활발하게 활동하고 수익성이 높은 조직으로 평가.
  • 지난 4년간 록빗은 약 2,000명의 피해자를 낳고, 1억 2,000만 달러(한화 약 1,600억 원) 가량 탈취.
  • 지난해 전 세계에서 이뤄진 전체 랜섬웨어 공격 4천여 건 중 23%에 달하는 공격이 록빗의 소행
  • 서비스형 랜섬웨어 사업을 이끈 대표 집단, 랜섬웨어 확산에 가장 많은 영향을 미침

록빗의 소행

  • 영국 우편 회사인 로열 메일(Royal Mail)과 국가보건서비스(Nation Health Service) 등을 공격해 시스템 마비시킨 혐의
  • 미국 항공기 제조 회사 보잉(Boeing) 공격해 확보한 내부 자료 온라인에 공개
  • 중국공상은행(Industrial and Commercial Bank of China)의 미국 지사로부터 돈을 받고 랜섬웨어 공격을 끝냈다고 밝힘
  • 록빗의 우두머리 '록빗수프(LockBitSoup)'는 자신들을 처음 찾아내 신원 밝히는 사람에게 1천만 달러를 주겠다고 현상금을 걸음"ㅈ

크로노스(Cronos)

  • 록빗을 무력화시킨 작전
  • 영국 국가범죄청(NCA), 미국 법무부(DoJ), 연방수사국(FBI) 포함한 10여 개국의 수사 기관이 참여
  • 해당 작전으로 확보한 것들
    • 록빗이 공격에 사용하던 소스코드
    • 랜섬웨어 피해자들에 대한 상세 정보
    • 록빗이 탈취한 데이터
    • 복호화 키
    • 랜섬웨어 공격을 수행하는 1만 4,000개의 계정
    • 록빗과 록빗의 협력자들이 가져간 돈과 관련된 정보

랜섬웨어 생태계가 가진 특성 '부활(Resurrect)'

크로노스 작전 이후 록빗 사이트 폐쇄되어 록빗은 새로운 웹사이트를 마련해 부활한 모습을 보여줌

“저의 개인적인 해이와 무책임으로 PHP 취약점(CVE-2023-3824로 CVSS 기준 9.8점으로 평가)을 제때 패치하지 못했습니다. 그 결과 외부에서 록빗 공격 인프라에 침투하도록 허용하게 됐고, 두 개의 주요 서버들이 실제 공격에 당하게 됐습니다.”

"탈취되지 않은 서버들에는 백업 블로그가 있었고, 취약한 PHP가 설치되어 있지 않았다."

▲ 업데이트만 했더라도 수사 기관에게 뚫릴 일은 벌어지지 않았을 것이라는 자만심의 표현

▲ 이전 훔친 데이터는 계속 보관할 수 있었으며 해당 데이터 바탕으로 다시 조직 운영하는 것이 가능했다고 전함

 

 

부활

  • 록빗 외에도 랜섬웨어 조직들의 부활은 빈번한 일
  • 지난 수년간 여러 수사 기관들은 각종 랜섬웨어 조직들을 추적하고 무력화하는 데 많은 노력 기울였으나, 국제 공조의 직접적 표적 되고서도 살아남은 랜섬웨어 조직이 다수.
  • 블랙캣(BlackCat), 클롭(CLOP) 등은 부활해 현재까지 활발하게 활동 중
  • 랜섬웨어 조직이 부활하더라도, 무력화로 인한 해당 조직의 피해는 확실하게 존재
    • 신뢰도 하락(랜섬웨어 조직의 파트너들에게 신뢰도를 잃음) → 수익 창출에 영향?

결론

  • 랜섬웨어 조직들로 인한 피해는 앞으로도 지속될 것
  • 빠른 시간 내에 록빗은 부활했지만, 록빗의 공격 수법 및 복호화 키 등 정보 확보에 따라 피해자들에게는 긍정적인 영향
  • 록빗은 부활 이후에도 빠르게 공격 인프라를 복구 중 
  • 랜섬웨어 피해의 지속적 증가 실정에 따라, 랜섬웨어 조직 무력화를 위해 더욱 강력한 조치와 정책 필요할 것으로 전망됨

추가 참고 자료

[보안뉴스] - 세계 최대 랜섬웨어 그룹 '록빗', 국제공조로 드디어 잡혔다!

http://www.boannews.com/media/view.asp?idx=126891

 

세계 최대 랜섬웨어 그룹 ‘록빗’, 국제공조로 드디어 잡혔다!

세계 최대 랜섬웨어‘록빗(Lockbit)’ 그룹 장악에 성공했다는 반가운 소식이 들려왔다. 영국 현지 시간 2월 20일, 영국 국가범죄청(NCA), 미국 법무부·FBI, 유로폴(EU 경찰 조직)은 영국과 미국 등 수

www.boannews.com

 

https://www.samsungsds.com/kr/insights/artificial_general_intelligence_20240417.html

 

인공 일반 지능(AGI)이란? 개념, 적용 기술, 그리고 인간 삶에 미칠 영향 | 인사이트리포트 | 삼성S

복잡한 문제 해결부터 창의적 작업에 이르기까지 인간과 유사한 수준의 이해와 처리 능력을 발휘할 수 있는 시스템을 지향하고 있는 AGI. AGI의 이론적 정의와 목표, 핵심 기술 및 응용 분야, 향후

www.samsungsds.com


엔비디아 CEO 젠슨 황 曰, "인공 일반 지능의 시대가 5년 남았다"

 

 

인공 일반 지능 (AGI) Vs 특정 목적 인공지능 (Narrow AI)

  • 특정 목적 인공지능
    • 주어진 특정 분아냐 한정된 작업에 대해 인간 수준 혹은 그 이상의 성능을 보여주는 인공지능
    • 인간의 역량으로 수행하기 어려운 방대한 양의 데이터 분석, 반복적이고 복잡한 수학적 연산 등을 컴퓨터에게 맡겨 에러가 적은 우수 인공지능 모델을 만들어내는 것이 목표
  • 인공 일반 지능
    • Full AI, Strong AI라고도 불림. 
    • 다양한 분야에서 인간과 유사한 학습, 이해, 추론 능력을 지닌 지능의 형태를 지향
    • 인간의 일반적 지능을 컴퓨터에서 재현해, 궁극적으로 컴퓨터가 인간과 동등한 수준의 창의적 사고와 문제 해결 능력을 유연하게 가지는 것을 목표로 함

 

AGI 구현을 위한 주요 기술 및 응용 분야

  • 딥러닝(Deep Learning)과 머신러닝(Machine Learning)
    • 데이터로부터 복잡한 패턴을 학습해 낮은 에러의 의사 결정을 내리는 인공지능 시스템의 기반을 형성
    • 인간의 생각 방식, 행동 원리 등을 구현할 수 있는 핵심 기술
  • 자연어 처리
    • 기계가 인간의 언어를 이해하고 생성하는 능력을 개발하는 데 중요한 기술
    • AGI가 인간과 자연스럽게 소통하고, 복잡한 언어 기반 작업을 수행할 수 있게 만드는 핵심 요소 중 하나
  • 컴퓨터 비전
    • 기계가 시각적 데이터를 이해하고 해석하는 능력을 개발하는 기술
    • 컴퓨터가 사진, 비디오, 실시간 환경을 보고 이해할 수 있게 함으로써 인간과 유사한 방식으로 시각적 정보 처리할 수 있도록 함
  • 로보틱스
    • AGI를 물리적 세계와 상호 작용하게 하는 데 필수적인 기술
    • 로봇은 AGI가 실제 환경에서 작업을 수행, 사람과 같은 방식으로 객체를 조작, 이동할 수 있게 해줌
  • 기호적 추론 vs. 확률적 추론
    • 기호적 추론: 규칙을 명확한 기호로 표현하고, 기호들 간의 관계를 바탕으로 결론을 도출하는 접근 방법
    • 확률적 추론: 불확실성을 다루는 데 쓰임. 가능한 여러 결과에 대한 확률을 기반으로 추론을 수행해, 불확실한 정보를 가지고 결정을 내리는 접근 방법
  • 심리 인식과 사회적 지능
    • 인간의 감정에 공감하고 사회적으로 상호 소통할 수 있는 기능 필요. 

 

AGI가 초래할 갈등

  • 메디컬 분야
    • 진단과 치료 방법에 있어 보다 혁신적인 개선이 예상됨과 동시에, 일자리 대체와 같은 사회·경제·정치적 문제 야기될 수 있음
  • 법률, 언론 등의 분야
    • 기존 데이터를 기반으로 결정의 권위 혹은 해석의 권위가 중요한 분야이기 때문에 인간이 아닌 AGI에게도 비슷한 수준의 권위를 주어야 한다는 필요성 제기될 수 있음
  • 윤리적 분야
    • AGI가 사고의 가해자가 된다면 사법 기관의 판단이 제대로 된 법적 효용성을 가질 수 있을지에 대한 논의가 필요
    • AGI를 이용한 자율 주행 기술 도입 시, 차도를 건너는 사람 피하기 위해 운전자를 위험에 빠뜨릴 수도 있다는 딜레마가 대표적 예시
  • 그 외 생활 방식, 사회 작동 기본 구조에 영향을 미치게 될 것

 

향후 규제 방향

  • UC 버클리 대학의 Center for Human-Compatible Artificial Intelligence의 Micheal Cohen과 동료들이 최근 제안한 프레임워크에 따르면, 인공지능(특히 장기 계획을 세울 줄 아는 능력을 가진 강화학습 시스템, LTPA)의 위협이 클 것이라 예측
    • LTPA에게 보상 극대화하는 목표를 주고 어느 시점에서부터 인간이 그 보상 제한한다면, LTPA가 보상을 극대화하기 위해 인간 개입을 제한하려는 강한 동기 생길 수 있기 때문
  • LTPA 개발 단계에서부터 규제, 의무적인 보고가 필요

문제 설명


사이트에 들어가 보면

이렇게 Step 1과 Step 2를 해결해야만 flag를 찾을 수 있는 형식인 것 같다. 

 

 

문제 파일을 다운로드해 봤다. 

<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<title>PHPreg</title>
</head>
<body>
  <!-- Fixed navbar -->
  <nav class="navbar navbar-default navbar-fixed-top">
    <div class="container">
      <div class="navbar-header">
        <a class="navbar-brand" href="/">PHPreg</a>
      </div>
      <div id="navbar">
        <ul class="nav navbar-nav">
          <li><a href="/">Step 1</a></li>
          <li><a href="/step2.php">Step 2</a></li>
        </ul>
      </div><!--/.nav-collapse -->
    </div>
  </nav><br/><br/><br/>
  <div class="container">
    <div class="box">
      <!-- PHP code -->
      <?php
          // POST request
          if ($_SERVER["REQUEST_METHOD"] == "POST") {
            $input_name = $_POST["input1"] ? $_POST["input1"] : "";
            $input_pw = $_POST["input2"] ? $_POST["input2"] : "";

            // pw filtering
            if (preg_match("/[a-zA-Z]/", $input_pw)) {
              echo "alphabet in the pw :(";
            }
            else{
              $name = preg_replace("/nyang/i", "", $input_name);
              $pw = preg_replace("/\d*\@\d{2,3}(31)+[^0-8\"]\!/", "d4y0r50ng", $input_pw);
              
              if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13") {
                echo '<h4>Step 2 : Almost done...</h4><div class="door_box"><div class="door_black"></div><div class="door"><div class="door_cir"></div></div></div>';

                $cmd = $_POST["cmd"] ? $_POST["cmd"] : "";

                if ($cmd === "") {
                  echo '
                        <p><form method="post" action="/step2.php">
                            <input type="hidden" name="input1" value="'.$input_name.'">
                            <input type="hidden" name="input2" value="'.$input_pw.'">
                            <input type="text" placeholder="Command" name="cmd">
                            <input type="submit" value="제출"><br/><br/>
                        </form></p>
                  ';
                }
                // cmd filtering
                else if (preg_match("/flag/i", $cmd)) {
                  echo "<pre>Error!</pre>";
                }
                else{
                  echo "<pre>--Output--\n";
                  system($cmd);
                  echo "</pre>";
                }
              }
              else{
                echo "Wrong nickname or pw";
              }
            }
          }
          // GET request
          else{
            echo "Not GET request";
          }
      ?>
    </div>
  </div>

  <style type="text/css">
    h4 {
      color: rgb(84, 84, 84);
    }
    .box{
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }
    pre {
      width: 80%;
    }
    .door_box {
      position: relative;
      width: 240px;
      height: 180px;
      margin: 20px 0px;
    }
    .door_black {
      position: absolute;
      width: 140px;
      height: 180px;
      background-color: black;
      border-radius: 10px;
      right:0px;
    }
    .door {
      z-index: 2;
      position: absolute;
      width: 140px;
      height: 180px;
      background-color: #b9abf7;
      border-radius: 10px;
      right: 100px;
    }
    .door_cir{
      z-index: 3;
      position: absolute;
      border-radius: 50%;
      width: 20px;
      height: 20px;
      border: 2px solid rgba(255, 222, 113, 0.873);
      background-color: #ffea98;
      top: calc( 180px / 2 - 10px );
      right: 10px;
    }
  </style>
</body>
</html>

step2.php

 

<html>
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<title>PHPreg</title>
</head>
<body>
    <!-- Fixed navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <a class="navbar-brand" href="/">PHPreg</a>
        </div>
        <div id="navbar">
          <ul class="nav navbar-nav">
            <li><a href="/">Step 1</a></li>
            <li><a href="/step2.php">Step 2</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav><br/><br/><br/>
    <div class="container">
      <div class="box">
        <h4>Step 1 : Open the door & Go to Step 2 !!</h4>
        <div class="door"><div class="door_cir"></div></div>
        <p>
          <form method="post" action="/step2.php">
              <input type="text" placeholder="Nickname" name="input1">
              <input type="text" placeholder="Password" name="input2">
              <input type="submit" value="제출">
          </form>
        </p>
      </div>
    </div> 

    <style type="text/css">
      h4 {
        color: rgb(84, 84, 84);
      }
      .box{
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
      }
      .door { 
        position: relative;
        margin: 20px 0px;
        width: 140px;
        height: 180px;
        background-color: #b9abf7;
        border-radius: 10px;
      }
      .door_cir{
        position: absolute;
        border-radius: 50%;
        width: 20px;
        height: 20px;
        border: 2px solid rgba(255, 222, 113, 0.873);
        background-color: #ffea98;
        top: calc( 180px / 2 - 10px );
        right: 10px;
      }
    </style>
</body>
</html>

index.php

 

step1.php는 왜 없는 건지 의문이긴 하지만.. 우선 대부분의 경우 그랬듯이 index.php 파일에는 유용한 정보가 없는 것 같다. 

step2.php를 살펴 보니, 각각 Nickname과 Password에 들어가야 하는 값을 직접적으로 보여주고 있는 것을 확인했다.

else{
              $name = preg_replace("/nyang/i", "", $input_name);
              $pw = preg_replace("/\d*\@\d{2,3}(31)+[^0-8\"]\!/", "d4y0r50ng", $input_pw);
              
              if ($name === "dnyang0310" && $pw === "d4y0r50ng+1+13") {
                echo '<h4>Step 2 : Almost done...</h4><div class="door_box"><div class="door_black"></div><div class="door"><div class="door_cir"></div></div></div>';

                $cmd = $_POST["cmd"] ? $_POST["cmd"] : "";

name이 "dnyang0310", pw가 "d4y0r50ng+1+13"이면 step2로 넘어갈 수 있다.

 

그러나, 입력값에 필터링이 걸려있는 것 역시 코드에서 찾아볼 수 있다.

위 코드를 보면 사용자가 입력한 name값에서 nyang을 빈 문자열로 필터링한다.

그렇기 때문에 name값에 dnyangnyang0310을 입력해 nyang이 정상적으로 들어가도록 해야 한다. 

            // pw filtering
            if (preg_match("/[a-zA-Z]/", $input_pw)) {
              echo "alphabet in the pw :(";

알파벳 대소문자 모두 입력 시 오류 메시지가 뜬다는 것이다. 

그렇기 때문에 문제 이름대로 php 정규식을 이용하여 해결해야 되는 것 같다.

pw의 정규 표현식을 하나씩 해체해 보면, 

 

\d* : 0~9 사이 숫자가 0개 이상 나타나야 함

\@ : @

\d{2, 3}(31) : 0~9 사이의 숫자 2~3회 후에 31을 씀

+ : 지금까지의 표현을 1회 이상 반복

[^0-8] : 0~8 이외의 문자가 있으면 패턴이 매칭

! : !

 

모든 요소를 조합해 보면 1@12319!라는 문자열을 만들 수 있다.

비밀번호는 d4y0r50ng+1+13이 되어야 해서 1@12319!+1+13을 비밀번호에 입력해 보자. 

 

Step2로 넘어가는 것에 성공했다. 

 

이 역시 step2.php 코드에서 입력값에 대한 필터링이 적용되는 것을 확인할 수 있다. 

// cmd filtering
                else if (preg_match("/flag/i", $cmd)) {
                  echo "<pre>Error!</pre>";
                }
                else{
                  echo "<pre>--Output--\n";
                  system($cmd);
                  echo "</pre>";
                }
              }
              else{
                echo "Wrong nickname or pw";
              }
            }

이를 유의해서 명령어를 작성해 보면,

cat ../dream/f?ag.txt

를 넣을 수 있다. 해당 command를 입력해 봤더니,

플래그 획득에 성공했다!

'SWUFORCE > 워게임 풀이' 카테고리의 다른 글

[Dreamhack] web-misconf-1 (web)  (0) 2024.05.14
[Dreamhack] devtools-sources (web)  (0) 2024.05.14
[Dreamhack] php7cmp4re (web)  (0) 2024.05.07
[Dreamhack] Carve Party (web)  (0) 2024.05.01
[Dreamhack] simple-web-request (web)  (0) 2024.05.01

+ Recent posts