본문으로 건너뛰기

Recent / LNK — 최근 문서와 바로가기 ​

Windows는 열어 본 파일의 바로가기(LNK)와 점프리스트를 자동 생성한다. 원본이 삭제되어도 LNK의 대상 경로가 남는다. LNK는 삭제된 파일을 이름으로 기억한다.

왜 중요한가 ​

치트 파일을 삭제해도 Windows 셸이 만든 LNK에 원본 경로·이름·볼륨 시리얼이 남을 수 있다. 점프리스트도 마찬가지이고, Recent 폴더에는 사용자가 열어 본 파일의 짧은 이력이 자동으로 쌓인다.

Prefetch가 실행을, USN이 파일 변경을 보여 준다면, LNK는 셸이 파일을 인지했다는 사실을 보여 준다. 세 축이 같은 이름을 가리킬 때 증거 강도가 높아진다. 반대로 이 축의 약점도 명확하다 — LNK는 "사용자가 파일을 열었다"는 기록이지 "실행했다"는 기록이 아니다. 실행 주장은 PF·BAM이 담당한다.

무엇인가 ​

항목설명
Recent 경로%AppData%\Microsoft\Windows\Recent\ = C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Recent (Win+R → recent)
점프리스트Recent 하위 AutomaticDestinations\(자동)·CustomDestinations\(고정). 파서는 JLECmd(GUI는 JumpList Explorer)
MRU 레지스트리RecentDocs, ComDlg32\OpenSavePidlMRU 등(버전 의존)
Office MRUNTUSER.DAT의 Software\Microsoft\Office\<버전>\<앱> 아래 File MRU(최근 연 파일)·Place MRU(열기·저장에 쓴 폴더)·User MRU(온라인 Microsoft 계정으로 쓴 항목). 항목마다 마지막으로 연 시각이 있고, 이미 지워졌거나 이동식 드라이브에 있던 파일도 남는다
ShellBags탐색기로 연 폴더의 보기 설정 기록. NTUSER.DAT의 Software\Microsoft\Windows\Shell\BagMRU·Bags와 UsrClass.dat의 Local Settings\Software\Microsoft\Windows\Shell\BagMRU·Bags에 있다. 삭제된 폴더, 이동식 장치와 네트워크 공유의 폴더도 남는다. 파서는 SBECmd(GUI는 ShellBags Explorer)
LNK 내부 필드대상 경로, 대상 생성·수정·접근 시각, 볼륨 시리얼·드라이브 유형, 파일 크기·속성
한계모든 실행이 LNK를 만들지는 않는다. 명령줄·스케줄·서비스 실행은 LNK가 없다

파일이 삭제돼 LNK가 "깨져" 있어도 이 필드들은 그대로 남아, 삭제된 파일의 이름·위치·크기·당시 시각을 복원할 수 있다.

SS에서 어떻게 쓰나 ​

  1. T+22에 Recent 폴더를 날짜순 정렬로 연다.
  2. 스캐너 히트·PF 이름과 LNK 대상 경로를 대조한다.
  3. 의심 LNK가 있으면 파서(LECmd 등)로 상세를 추출한다. 대상 경로, 대상 타임스탬프, 볼륨 시리얼을 읽는다.
  4. 점프리스트를 JLECmd로 파싱해 사용자가 부정하는 도구의 흔적을 확인한다.
  5. ShellBags를 SBECmd로 뽑아 치트 폴더, 삭제된 폴더, USB 같은 이동식 장치의 경로를 탐색기로 연 적이 있는지 본다. 폴더를 연 기록이므로 실행 주장은 PF·BAM으로 교차한다.
  6. Office MRU에서 제보와 관련된 파일을 연 기록을 보조로 확인한다.
  7. .jar.lnk처럼 비-exe 대상을 놓치지 않는다. JAR 계열 고스트 클라이언트는 .exe 중심 검사에서 놓치기 쉽다.
  8. Recent가 와이프된 경우 R3-AF로 넘긴다.

우회 기법과 남는 흔적 ​

기법공격자가 하는 일남는 흔적
Recent·LNK 일괄 삭제최근 항목 비우기 또는 클리너로 Recent를 정리한다다른 활동은 계속됐는데 Recent만 비어 있으면 이상이다. USN에 .lnk FILE_DELETE가 남고, 클리너 자체의 .pf·BAM 기록이 남는다
Recent 상위 폴더 ACL 거부%AppData%\Microsoft\Windows 폴더에 deny ACL을 걸거나 "최근 문서" 정책을 켜 shell:recent 기록 자체를 무력화한다해당 폴더의 비정상 ACL(모든 사용자 접근 차단)과 정책 레지스트리 값이 남는다. 검사자는 Recent 상위 폴더의 보안 탭에서 Deny 항목을 확인하고, 기록이 끊긴 시점을 다른 축과 대조한다
활동 기록 설정 끄기Windows 설정의 개인정보·활동 기록 옵션을 꺼 LNK·최근 항목이 새로 쌓이지 않게 한다꺼진 설정 상태(레지스트리)와 기록이 갑자기 끊긴 시점이 남는다. 검사자는 관련 정책·개인정보 값의 상태를 확인하고, 기록 공백의 시작 시각을 세션 타임라인과 대조한다
파일 교체 후 LNK 방치치트를 지우고 같은 자리에 정상 파일을 두어도 기존 LNK는 그대로다깨진 LNK가 삭제된 대상의 이름·경로·볼륨 시리얼을 그대로 보존한다. LNK의 대상 타임스탬프와 현재 파일의 타임스탬프가 어긋난다
MRU 레지스트리 정리RecentDocs·OpenSavePidlMRU·RunMRU 값을 regedit·reg delete·클리너로 지운다reg.exe·regedit.exe의 실행 기록이 PF·BAM에 남고, Registry Explorer로 삭제 값 복원이 가능하다. 활동은 있었는데 RunMRU·RecentDocs가 비어 있거나 새것만 남은 패턴 자체가 리드다
동기화 폴더 경유OneDrive 같은 동기화 폴더에 두고 다른 기기에서 삭제해 로컬 흔적을 정리한다동기화 폴더의 최근 변경 내역과 USN의 클라이언트 생성·삭제 레코드가 남는다
LNK가 안 생기는 실행Start-Process·wmic·스케줄 작업·서비스로 실행해 셸 기록 자체를 만들지 않는다. wmic는 Windows 11 23H2·24H2에서 기본 비활성(선택 기능, 2024), 25H2로 업그레이드할 때 제거(2025), 2026-08 미리 보기 업데이트부터 지원 중인 Windows 11에서 제거돼 선택 기능으로도 받을 수 없다. 이런 빌드에서 wmic 실행 흔적이 나오면 따로 설치한 경위를 확인한다LNK는 없지만 Prefetch·BAM에는 실행이 남는다. "LNK 없음"은 "안 열었다"일 뿐 "안 실행했다"가 아니다

정상 vs 이상 ​

구분정상이상
LNK 대상문서, 게임, 브라우저 다운로드의심 경로, 치트 이름, 삭제된 대상
점프리스트자주 쓰는 앱사용자가 부정하는 도구
Recent 상태활동 이력에 비례와이프됨(다른 활동은 계속)
대상 파일존재LNK는 있으나 대상이 삭제됨(깨진 LNK)
시각LNK 생성이 대상 사용과 정합LNK는 제보 시간대인데 대상·실행 증거는 그 외

오탐 ​

  • 클라우드 싱크 플레이스홀더: OneDrive 등이 LNK를 생성한다.
  • 게임 런처: Steam 등이 다수의 LNK를 만든다.
  • 공유 계정: 다른 사용자의 활동일 수 있다.
  • 설치·업데이트 과정이 만드는 LNK: 인스톨러가 바로가기를 뿌린다.

교차 검증 ​

교차 카드확인 내용
R3-USN대상 경로의 삭제 기록, .lnk 자체의 삭제 기록
R3-PF대상 exe의 실행 기록
R3-BAM대상의 실행 시각 교차
R3-AFRecent 와이프 여부

브라우저 다운로드 이력은 약한 보조로만 쓰고, 과도하게 의미를 부여하지 않는다.

증거 캡처 ​

  1. Recent 폴더 날짜순 정렬 스크린샷
  2. 의심 LNK의 파서 출력(대상 경로, 대상 타임스탬프, 볼륨 시리얼, 크기)
  3. 점프리스트 관련 엔트리(JLECmd 출력)
  4. 깨진 LNK 목록(대상이 없는 것)과 대응 USN 삭제 레코드
  5. ShellBags 파서 출력(SBECmd CSV)의 의심 폴더·삭제된 폴더·이동식 장치 경로
  6. Office MRU 의심 항목과 마지막으로 연 시각

모두 10-recent-lnk/에 둔다.

흔한 실수 ​

  • LNK 하나로 Confirmed를 내린다. 대상 경로의 실행 증거를 교차해야 한다.
  • 깨진 LNK를 "대상이 없어 무의미"하다고 버린다. 깨진 LNK야말로 삭제된 파일의 이름을 기억한다.
  • 브라우저 다운로드 이력만으로 판정에 넣는다.
  • 공유 계정 가능성을 무시한다.
  • "LNK가 없으니 열지도 실행도 안 했다"로 읽는다. 명령줄 실행은 LNK를 남기지 않는다.

Community. shell:recent를 무력화하려고 상위 폴더에 ACL을 거는 우회와, 개인정보 설정을 꺼 기록을 끊는 우회가 반복 보고된다. 둘 다 기록이 없어지는 대신 "기록이 끊긴 시점"과 비정상 ACL이라는 새 흔적을 남기므로, 검사자는 설정 상태와 폴더 보안 탭을 확인한다.

Sources ​

Next ​