Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
sift — 파일 공유에 대한 자격 증명 및 민감 데이터 노출 트리아지 | Kitploit
도구/GitHubGitHub/hotstartlabs/sift
Defensive ToolsDigital ForensicsSecret DetectionIncident Response
GitHubhotstartlabs/sift

sift

파일 공유에 대한 자격 증명 및 민감 데이터 노출 트리아지

저장소 보기
16221개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Sift Secrets

tests

파일 공유에서의 자격 증명 및 민감 데이터 노출 트리아지.

공개 공유(open share)가 발견되면, 질문은 절대 "이 저장소에 유출된 키가 있나요"가 아니다. 진짜 질문은 "방금 무엇이 노출되었고, 오늘 업무 종료 전에 무엇을 교체해야 하나?" 이다. sift는 바로 그 질문을 위해 만들어졌다: 높은 재현율, 빠른 검토 대기열, 그리고 눈으로 발견한 모든 것이 나머지 200개 복사본을 찾아내는 규칙이 되는 피드백 루프.

트리아지 대기열: 왼쪽에는 발견 항목, 오른쪽에는 주변 줄에서 강조 표시된 매치

Python 3.11+, 표준 라이브러리만 사용. pip 설치, 인터넷, 빌드 단계 없음. 잠금된 IR 노트북에서 실행되며, 바로 그런 환경이 필요한 곳입니다.```bash sift survey \fileserver\openshare # how big is this thing sift copy \fileserver\openshare C:\IR\case-4471 # take a throttled copy sift scan C:\IR\case-4471 # scan it, opens the triage UI

제자리 스캔도 작동합니다. 먼저 가짜 자격 증명 공유에서 시도해 보세요:```bash
sift demo C:\temp\demoshare

sift.cmd는 어떤 디렉터리에서도 작동하는 런처입니다. 전체 경로 대신 sift를 입력하려면 PATH에 C:\Dev\sift를 추가하세요:```bash setx PATH "%PATH%;C:\Dev\sift"

Python이 전혀 없는 머신의 경우, `python build_portable.py`는 `dist/sift-secrets-<version>-portable-win64.zip`을 빌드합니다. 공식 python.org 임베디드 런타임과 이 소스 트리를 포함하며, 번들된 `sift.cmd`를 통해 압축 해제 후 실행됩니다. 약 11MB, 설치 불필요, 관리자 권한 불필요, 그리고 그 안에 컴파일되거나 다시 패킹된 것은 없습니다 — 잠긴 IR 노트북에서 frozen .exe보다 이것이 더 나은 이유는 `build_portable.py`의 docstring을 참조하세요.

---

## gitleaks나 trufflehog만 쓰지 않는 이유

둘 다 다른 문제를 해결하는 좋은 도구입니다.

이들은 CI를 위해 만들어진 **정밀** 도구로, 오탐(false positive)이 개발자의 오후를 낭비하게 만들 수 있기 때문에 주로 알려진 벤더 API 키 모양을 한 것들에만 반응합니다. trufflehog는 한 걸음 더 나아가 벤더 API를 호출해 *검증*할 수 있는 시크릿을 선호하는데, 이는 정규식으로는 재현할 수 없는 정말 훌륭한 신호입니다.

공유 폴더 트리아지는 경제성이 반전됩니다. 사람이 이미 모든 히트를 읽고 있으므로 오탐은 3초를 소비할 뿐입니다. 실제로 비용이 드는 것은 **놓침**입니다.

벤더 API 키도 공유 폴더에서 분명히 유출됩니다. 웹 루트 백업, 배포 스크립트, 누군가의 프로젝트 폴더를 부서 드라이브에 복사한 경우, 그 안에 실제 Stripe 키가 들어 있는 `.env` 파일이 있을 수 있습니다. 그런 것들은 잡아낼 가치가 있으며 sift도 잡아냅니다. 하지만 그것들은 gitleaks와 trufflehog가 이미 잘 처리하는 부분이기도 합니다. 그 틈새는 그 외의 모든 것이며, 파일 공유에서는 대부분이 그것입니다:

| CI 스캐너가 놓치는 것 | 그것을 지나치는 이유 |
|---|---|
| `web.config` with a SQL connection string | 알려진 키 형식이 아니며, 검증할 벤더도 없음 |
| `Map-Drives.ps1` with `net use ... /user:` | 뒤에 단어가 붙은 셸 명령일 뿐임 |
| `New Hire Setup Guide.docx` | Office 파일, 바이너리로 읽혀서 완전히 건너뜀 |
| `unattend.xml`, GPP `Groups.xml` | 아무도 탐지기를 작성하지 않은 Windows 배포 아티팩트 |
| `confCons.xml`, `.rdg`, WinSCP.ini | 되돌릴 수 있는 저장된 비밀번호지만, "시크릿 형식"은 아님 |
| `passwords.xlsx` | ZIP 파일입니다. 일반 텍스트 스캐너는 바이너리로 보고 지나칩니다. |
| `.kdbx`, `.pfx`, `id_rsa` | 불투명한 바이트 - *파일 이름*이 발견 사실입니다. |
| A `.bak` with a connection string inside | 바이너리라서 결코 읽히지 않음 |

sift는 이러한 것들을 다루고, 자체 벤더 키 규칙을 포함하며, **다른 도구의 규칙 팩과 발견 결과를 가져옵니다** - gitleaks TOML, Kingfisher/Titus YAML, trufflehog JSON - 따라서 도구 중 하나를 선택할 필요가 없습니다.

가장 유사한 선행 기술은 [Snaffler](https://github.com/SnaffCon/Snaffler)입니다. 파일 이름 및 분류 부분에서 탁월하며 파일 이름 규칙의 직접적인 영감을 주었습니다. 하지만 이 도구에는 없는 것 - 400개의 히트가 발생하면 실제 병목으로 밝혀지는 것 - 은 검토 루프입니다.

---

## 루프

1. **공유 폴더를 스캔합니다.**
2. **대기열을 처리합니다.** 각 발견 항목은 일치 부분이 강조된 주변 줄을 표시합니다.
   화살표 키로 컨텍스트를 넓히고, 한 번 클릭하면 전체 파일이 해당 줄의 VS Code
   또는 메모장에서 열립니다.
3. **놓친 항목을 찾습니다.** 분명히 발견하게 될 것입니다. 미리보기에서 강조 표시하고 `r`을 누르세요.
4. **sift가 패턴을 제안하고** 이미 읽은 모든 항목에서 각 패턴이 몇 번 일치하는지 실시간으로 알려줍니다.
5. **저장합니다.** 캐시된 재스캔은 약 1초가 걸리며, 기존 트리아지 결정은 그대로 둔 채 새 히트가 대기열에 나타납니다.

5단계가 나머지를 할 가치가 있게 만드는 부분입니다. 발견 항목은 `(path, rule, line, value-hash)`를 키로 하므로 재스캔 시 동일한 행이 다시 삽입되고 상태, 메모, 담당자가 함께 유지됩니다. 이것이 없다면 매 반복마다 같은 300개의 히트를 다시 검토해야 하고 세 번째쯤 포기하게 될 것입니다.

---

## 명령어```bash
# size it up first: file count, total bytes, biggest folders, transfer estimates
sift survey \\fileserver\share

# take a rate-limited local copy (resumable; gentle = 5 MB/s by default)
sift copy \\fileserver\share C:\IR\case-4471 --speed gentle

# scan a share and open the triage UI
sift scan \\fileserver\share

# maximum recall: more noise, but a human is reading anyway
sift scan D:\dfs\dept --tier 3

# re-open the UI over the most recent scan
sift ui

# build a share of fabricated credentials, scan it, open the UI
sift demo C:\temp\demoshare

# inherit other tools' vendor-key rules, then use them in the live rescan loop
sift import-rules gitleaks.toml                    # gitleaks TOML
sift import-rules path/to/kingfisher/data/rules    # a directory of YAML

# pull in what the other scanners found, into the same queue
trufflehog filesystem \\fileserver\share --json > th.json
sift import-findings th.json

# hand off to the incident record (redacted unless you say otherwise)
sift export --fmt pdf --status confirmed --out ir-4471.pdf
sift export --fmt csv --out ir-4471.csv
sift export --fmt pdf --no-redact       # plaintext; handle as evidence

sift rules                              # what is loaded
sift selftest                           # detection tests against a synthetic share

# ask vendors whether confirmed findings are still live. NETWORK. Opt-in.
sift validate --status confirmed

sift가 나타나는 곳마다 C:\Dev\sift 디렉터리에서 python -m sift를 대신 사용할 수 있습니다.

알아 두면 좋은 옵션

플래그효과
--tier 1|2|3재현율 다이얼. 1 = 높은 신호, 2 = 기본값, 3 = 놓치는 것 없음
--redact저장소 및 내보내기에서 값을 마스킹. DB가 인시던트 경계를 벗어나는 경우 사용
--no-ui저장소를 채우고 종료. 스크립트 실행용
--no-browserUI 서버는 시작하되 브라우저는 열지 않음(RDP에서 유용)
--include/--exclude GLOB탐색 범위 좁히기
--no-archivesdocx/xlsx/zip 컨테이너를 열지 않음
--no-strings바이너리에서 strings 패스를 실행하지 않음
--no-large--max-size 초과 파일을 블록 단위로 읽지 않고 건너뜀
--jobs N작업자 프로세스 수(기본값: 자동)
--max-size MB이 크기 이상의 파일은 건너뜀(기본 25)
--port NUI 포트(기본 8973)

상태가 저장되는 위치

발견 항목은 %LOCALAPPDATA%\sift\ 아래의 대상별 폴더에 저장되며, 작업 디렉터리에는 절대 저장되지 않습니다. 데이터베이스에는 평문 자격 증명이 들어 있으므로, 홈 디렉터리에서 도구를 실행한다고 해서 그곳에 조용히 떨어뜨려서는 안 됩니다. 각 공유는 고유한 저장소를 가지므로 두 건의 업무가 트리아지 큐를 공유하지 않습니다. 인자 없이 sift ui를 실행하면 가장 최근 항목을 다시 열고, --data DIR로 재정의할 수 있습니다.

사용자 정의 규칙은 전역이며 %LOCALAPPDATA%\sift\user-rules.json에 있습니다. 따라서 한 업무 중에 작성한 패턴은 다음에 살펴볼 공유에서도 도움이 됩니다.


스캔 전: 사전 조사와 수집

둘 다 UI 헤더의 경로 상자 옆과 CLI에 있습니다.

크기 확인(Check size) 은 stat 전용 탐색입니다. 아무것도 열지 않으므로 SMB를 통해서도 저렴하며, 파일 수, 총 바이트, 가장 큰 폴더, 확장자별 분포, sift가 실제로 읽을 양, 각 속도로 복사하는 데 걸리는 시간을 알려줍니다. 알 수 없는 DFS 루트에 스캐너를 돌려놓고 기다리는 것은 오후를 날려버리는 방법입니다.

로컬 복사(Copy locally) 는 먼저 공유를 로컬 폴더로 가져옵니다. 이렇게 하는 이유는:

  • 로컬 복사본을 스캔하는 것이 수천 번의 SMB 왕복보다 훨씬 빠릅니다;
  • 반복 가능하므로 규칙을 추가하고 다시 스캔해도 파일 서버를 다시 때리지 않습니다;
  • 원본은 그대로 두므로, 인시던트가 법적 문제가 될 때 "우리가 봤다"와 "우리가 보존했다"의 차이가 됩니다.

전송은 속도 제한이 있으며 기본값은 5MB/s입니다. 오후 2시에 운영 중인 파일 서버로의 링크를 포화시키면 조사가 두 번째 인시던트가 됩니다. 경로가 유휴 상태임을 알면 속도를 올리십시오.

속도비율
gentle(기본값)5 MB/s
normal25 MB/s
fast100 MB/s
unlimited링크가 주는 대로

전송은 이어서 진행됩니다. 대상 파일의 크기와 mtime이 같으면 건너뛰므로, 80%에서 중단된 수집은 중단된 지점부터 이어집니다. 잠겨 있거나 거부된 파일은 기록되고 건너뛰며 실행이 중단되지 않습니다.


보고서

UI 헤더 또는 sift export --fmt에서 PDF, CSV, MD, JSON을 생성합니다.

PDF는 인시던트 기록에 넘길 문서입니다. 대상이 표시된 표지 페이지, 심각도 및 트리아지 상태별 합계, 가장 빈번한 규칙, 파일 간에 재사용된 값, 그리고 심각도별로 그룹화된 발견 항목이 포함됩니다. PDF 라이브러리 없이 직접 생성되므로 pip를 한 번도 실행한 적 없는 머신에서도 작동합니다.

내보내기는 기본적으로 수정(redact)됩니다. 값은 마스킹되고 모든 페이지에 배너 표시가 붙으며, 엔드포인트는 명시적인 redact=0에서만 마스킹을 해제합니다. 잘리거나 잘못된 요청으로는 유출이 불가능합니다. UI에서 수정을 끄려면 경고 대화상자를 확인해야 하며, 결과 파일의 모든 페이지에는 UNREDACTED - CONTAINS PLAINTEXT CREDENTIALS 배너가 표시됩니다.

발견 항목 데이터베이스에는 실제 값이 여전히 남아 있습니다. 분석가는 어떤 비밀번호가 유출되었는지 알아야 무엇을 교체할지 알 수 있기 때문입니다. 경계는 도구 밖으로 나가는 것입니다.


큐 작업

모든 것이 클릭 가능합니다. 결과 목록 상단의 정렬 컨트롤은 심각도, 파일 경로, 규칙, 트리아지 상태 또는 최근 순으로 정렬하며, 순서를 뒤집는 버튼이 있습니다. 사이드바 패싯은 심각도, 범주, 규칙 및 재사용된 값으로 필터링합니다. 트리아지, 컨텍스트 확장, 파일 열기, 규칙 생성은 모두 버튼입니다.

아래의 키보드 단축키는 긴 큐를 위한 가속기이며, 유일한 조작 방법은 아닙니다.

키동작
j / k다음 / 이전 발견 항목
↑ / ↓컨텍스트 위 / 아래로 확장
c / f확인 / 오탐(false positive)으로 표시
x대량 트리아지를 위해 선택 토글
o / n해당 줄의 VS Code에서 열기 / Notepad에서 파일 열기
r강조 표시된 텍스트에서 규칙 생성
y값 복사
/검색

스냅샷 버튼은 강조 표시된 스니펫을 PNG로 렌더링해 인시던트 티켓에 붙여넣을 수 있게 하며, 스니펫 복사는 마크다운으로 동일한 작업을 수행합니다.


보안

UI는 브라우저 창에서 평문 자격 증명을 실시간으로 렌더링하므로:

도구 다운로드