ZINO
HomeResearchBlogTagsPlaygroundStackPortfolio
⌘K

레드팀 · AI 자동화 · 시스템 엔지니어링

직접 만들고, 실험하고, 기록한다

개인정보처리방침·이용약관

© 2026 ZINO LAB

← 태그 목록

Tag Archive

#forensics

이 태그가 포함된 글을 최신순으로 모아봤어요.

16
posts
BLOG2026-07-27
[🥇 Gold 4] RC4인 줄 알았던 암호와, 파일 하나에 숨어 있던 세 조각 — DreamHack Enc-JPG 풀이
blog

[🥇 Gold 4] RC4인 줄 알았던 암호와, 파일 하나에 숨어 있던 세 조각 — DreamHack Enc-JPG 풀이

배포물은 윈도우 실행파일 Enc 와 깨진 flag.jpg 둘뿐이다. Enc 를 뜯어보면 RC4 처럼 생긴 루틴이 나오는데 표준과 세 군데가 다르다 — 키 확장이 나머지가 아니라 AND, 키스트림이 S 박스를 한 번 더 타고, 무엇보다 0x400 청크마다 S 박스를 새로 만든다. 마지막 하나를 놓치면 JPEG 헤더만 살아나고 나머지가 전부 깨진다. 제대로 복호하면 파일 한 개 안에 JPEG 둘과 평문과 PNG 가 이어붙어 있고, 플래그는 그 셋에 나뉘어 들어 있다. 마지막 조각은 PNG 의 IDAT 길이 필드 자리에 덮여 있어서 그림으로는 영영 안 보인다.
#dreamhack#ctf#reversing+7
 
BLOG2026-07-25
[🥈 Silver 2] 해킹당한 VM 이미지에서 채굴기가 삼킨 플래그 되찾기 — DreamHack Infested Terran 풀이
blog

[🥈 Silver 2] 해킹당한 VM 이미지에서 채굴기가 삼킨 플래그 되찾기 — DreamHack Infested Terran 풀이

bzImage + rootfs.ext2 두 파일만 주는 문제. 이미지를 마운트하지 않고 열어보면 buildroot 바이너리들 사이에 glibc로 빌드된 두 개가 섞여 있다. /home/ubuntu/.helper는 표준입력으로 받은 값을 argv[0]="[kworker]"로 위장해 /usr/bin/sl에 넘기고, sl은 입력 36글자를 힙에 흩뿌린 뒤 누적합을 하드코딩된 값과 비교한다. 검증식이 삼각행렬이라 이웃한 두 항을 빼는 것만으로 한 글자씩 그대로 복원된다.
#dreamhack#ctf#reversing+7
BLOG2026-07-24
[🥉 Bronze 2] 6523개 CAN 프레임 중 튀는 하나 — DreamHack Read My Car 풀이
blog

[🥉 Bronze 2] 6523개 CAN 프레임 중 튀는 하나 — DreamHack Read My Car 풀이

정비소에서 받아온 차량 주행 로그라며 candump 파일 하나만 준다. 열어 보면 1953가지 CAN ID가 뒤섞인 난수 덩어리인데, 등장 횟수를 세면 딱 하나만 다른 ID들보다 4배 넘게 튄다. 그 ID의 페이로드를 ASCII로 읽으면 flag가 나온다.
#dreamhack#ctf#misc+5
 
BLOG2026-07-20
[🥉 Bronze 1] LSB엔 없다, 주파수에 있다 — DreamHack Audio Steganography 풀이
blog

[🥉 Bronze 1] LSB엔 없다, 주파수에 있다 — DreamHack Audio Steganography 풀이

6초짜리 WAV 파일 하나가 전부인 포렌식 문제. 오디오 스테가노그래피라고 하면 반사적으로 LSB(최하위 비트)부터 뽑아보게 되는데, 그렇게 나온 결과는 그냥 잡음이다. "이상한 소리가 나요"라는 문제 설명을 다시 읽고 스펙트로그램을 찍어보면, 주파수 영역에 flag 문자열이 글자 모양 그대로 그려져 있다. 데이터를 비트에 숨긴 게 아니라 진폭을 붓 삼아 그림을 그린, Aphex Twin류 스펙트로그램 아트다.
#dreamhack#ctf#forensics+4
BLOG2026-07-20
[🥉 Bronze 1] .img라 쓰고 gzip이라 읽는다 — DreamHack smart_device 풀이
blog

[🥉 Bronze 1] .img라 쓰고 gzip이라 읽는다 — DreamHack smart_device 풀이

IoT 기기의 펌웨어 파일 하나만 던져주고 "API 키를 뽑아내라"는 문제. 확장자는 .img지만 첫 세 바이트(1f 8b 08)를 보면 실제로는 gzip이다. binwalk를 돌려보려 했더니 환경의 capstone 버전 충돌로 죽어버려서, gunzip과 tar로 같은 과정을 수동으로 재현했다. 풀린 tar 안 임베디드 루트 파일시스템의 설정 파일에 API 키가 평문으로 그대로 박혀 있었다.
#dreamhack#ctf#misc+3
BLOG2026-07-20
[🥉 Bronze 1] 위성이 보낸 오디오 속 flag를 힐베르트 변환으로 복조한다 — DreamHack 산타 할아버지도 힘들어요 풀이
blog

[🥉 Bronze 1] 위성이 보낸 오디오 속 flag를 힐베르트 변환으로 복조한다 — DreamHack 산타 할아버지도 힘들어요 풀이

제공되는 건 이상한 8비트 WAV 파일 두 개뿐이다. 스펙트로그램을 찍어봐도 단조로운 톤 하나만 보일 뿐 아무 정보도 없어 보인다. 문제 설명 속 "NOAA 15"라는 이름이 결정적인 힌트였다 — 기상위성이 실시간으로 지구 사진을 내려보내는 아날로그 방송 규격 APT(Automatic Picture Transmission)의 오디오였다. 2400Hz 서브캐리어를 힐베르트 변환으로 AM 복조하고 4160word/line 픽셀 클럭에 맞춰 리샘플링하면, 한반도와 일본 해안선이 그대로 찍힌 위성사진 위에 flag가 그려져 있다.
#dreamhack#ctf#misc+5
BLOG2026-07-16
[🥉 Bronze 2] IV를 파일명에 흩뿌린 AES-CBC — DreamHack 씨뿌리기 풀이
blog

[🥉 Bronze 2] IV를 파일명에 흩뿌린 AES-CBC — DreamHack 씨뿌리기 풀이

AES-128-CBC의 ciphertext와 key만 주고 IV는 안 준다. 대신 씨앗·곡물 사진 6장을 hint로 던진다. 사진 속을 아무리 뒤져도 안 나오는데, IV는 여섯 파일'명'에 hex 조각으로 잘려 있었다. 번호순으로 이어 붙여 복호하면 flag가 나오는 crypto+forensics 문제다.
#dreamhack#ctf#crypto+4
BLOG2026-07-15
[🥉 Bronze 1] 밀려버린 BMP 헤더 되살리기 — DreamHack BMP Recovery 풀이
blog

[🥉 Bronze 1] 밀려버린 BMP 헤더 되살리기 — DreamHack BMP Recovery 풀이

헤더가 0으로 밀린 BMP 파일 하나를 준다. 살아남은 biBitCount(24) 하나로 픽셀 크기를 잡고, 행과 다음 행의 픽셀 차이가 최소인 지점으로 진짜 폭을 찾아 헤더를 재구성하면 그림 속 flag가 드러난다. "폭이 조금만 틀려도 이미지가 대각선으로 밀려 노이즈가 된다"는 성질을 역으로 이용한 포렌식 문제다.
#dreamhack#ctf#forensics+4
BLOG2026-07-15
[🥉 Bronze 2] FAT32 부트섹터를 읽어 플래그를 계산하다 — DreamHack VBR 풀이
blog

[🥉 Bronze 2] FAT32 부트섹터를 읽어 플래그를 계산하다 — DreamHack VBR 풀이

512바이트짜리 VBR(볼륨 부트 레코드) 하나가 전부인 포렌식 문제. 플래그는 파일에 박혀 있지 않고, 부트섹터 필드에서 계산해야 한다. 파일시스템 종류(FAT32→1), 볼륨 크기(총 섹터×섹터당 바이트), 볼륨 시리얼 번호를 각 오프셋에서 읽어 더하면 플래그가 나온다.
#dreamhack#ctf#forensics+3
 
BLOG2026-07-20
[🥉 Bronze 4] JPEG 뒤에 붙은 ZIP 꺼내기 — DreamHack Hefty Image 풀이
blog

[🥉 Bronze 4] JPEG 뒤에 붙은 ZIP 꺼내기 — DreamHack Hefty Image 풀이

이미지 파일 하나를 주는 포렌식 문제. JPEG 끝(FF D9) 뒤에 ZIP이 통째로 이어 붙어 있어, 뷰어로는 그냥 그림이지만 unzip으로 열면 flag.txt가 나온다. ZIP은 파일 끝부터 읽는 구조라 앞에 무엇이 붙어도 그대로 열린다는 성질을 이용한 전형적인 연결(concatenation) 스테가노그래피다. flag.txt가 무압축(Stored)으로 저장돼 있어 헥스덤프만으로도 내용이 그대로 읽힌다.
#dreamhack#ctf#forensics+2
BLOG2026-07-13
[🥉 브론즈 1] CAN 버스 로그에서 훔친 차의 정체 — DreamHack Grand Theft Auto 풀이
blog

[🥉 브론즈 1] CAN 버스 로그에서 훔친 차의 정체 — DreamHack Grand Theft Auto 풀이

자동차 CAN 버스 캡쳐 candump.txt 한 개가 주어진다. 로그는 UDS 진단 세션으로, 진단기가 ReadDataByIdentifier(0x22)로 DID 0xF190(VIN)을 요청하고 ECU가 ISO-TP 멀티프레임으로 응답한다. 프레임을 재조립해 VIN을 얻고, 그 VIN을 연도·제조사·모델로 디코드해 플래그를 완성했다.
#dreamhack#ctf#forensics+4
BLOG2026-07-13
[🥉 브론즈 2] 응답 크기로 되감은 blind SQLi — DreamHack access-log 풀이
blog

[🥉 브론즈 2] 응답 크기로 되감은 blind SQLi — DreamHack access-log 풀이

access.log 하나만 주어진 포렌식 문제. 로그는 sqlmap이 DVWA에 던진 time-based blind SQLi로 가득하다. time-based의 원래 신호인 '지연'은 nginx 기본 로그에 없지만, 주입된 IF가 WHERE의 행 유무를 바꾸는 덕에 응답 바이트(1664 = 조건 참)가 오라클이 된다. 4977개 추출 쿼리의 ORD(MID()) 비교를 되감아 dvwa.flag.value = DH{...}를 복원했다.
#dreamhack#ctf#forensics+4
BLOG2026-07-12
[🥉 Bronze 3] IHDR 높이를 줄여 숨긴 flag — DreamHack broken-png 풀이
blog

[🥉 Bronze 3] IHDR 높이를 줄여 숨긴 flag — DreamHack broken-png 풀이

PNG 의 IHDR 청크만 CRC 가 어긋나 있다. 이미지 높이를 512에서 256으로 줄여 아래 절반에 있던 flag 를 잘라 숨긴 것이다. IDAT 를 압축 해제하면 실제로 512행이 나오고, 저장된 CRC 로 원래 높이를 역산할 수도 있다. IHDR 의 height 4바이트를 원래 값으로 되돌리면 숨겨졌던 flag 가 드러난다.
#dreamhack#ctf#misc+4
BLOG2026-07-08
[🥈 Silver 4] 줄 끝 공백에 숨은 플래그 — SNOW 스테가노그래피 (DreamHack Snowing! 풀이)
blog

[🥈 Silver 4] 줄 끝 공백에 숨은 플래그 — SNOW 스테가노그래피 (DreamHack Snowing! 풀이)

flag.txt 에는 미끼 DH{fake_snow} 뒤로 눈에 안 보이는 공백과 탭이 잔뜩 붙어 있다. 문제명 "Snowing!" 이 가리키는 SNOW 화이트스페이스 스테가노그래피다. 바이트/패턴을 시각화해 정체를 확인하고, 곁들여진 Snow.jpeg 가 함정임을 포렌식으로 배제한 뒤, stegsnow -C 로 복호해 Snow 반복 사이의 진짜 플래그를 꺼낸다.
#dreamhack#ctf#forensics+5
BLOG2026-03-25
Windows 이벤트 로그 기반 공격 흐름 분석 — Event ID 4624 중심
blog

Windows 이벤트 로그 기반 공격 흐름 분석 — Event ID 4624 중심

Event ID 4624를 출발점으로, 로그온 세션의 문맥을 따라가며 공격 흐름을 읽는 방법을 정리합니다. Logon Type 해석, 권한 상승·프로세스 실행 연계, 실무 탐지 기준까지 포함합니다.
#forensics#windows#log-analysis+2
 
BLOG2026-03-24
Windows 이벤트 로그 기반 포렌식 분석 흐름 정리
blog

Windows 이벤트 로그 기반 포렌식 분석 흐름 정리

Windows Security 로그를 기준으로 로그인, 권한, 프로세스, 후속 행위를 연결해서 보는 흐름을 정리합니다.
#forensics#windows#log-analysis+1