이미 해봤는데요. PDF 파일 하나를 열고 ‘문서 속성’을 확인하는 데는 10초도 안 걸립니다. 제목, 작성자, 만든 프로그램 같은 정보가 들어 있죠. 평소에는 아무도 신경 쓰지 않는 그 칸에 이번에는 꽤 묵직한 이름이 남았습니다. creator: opencode, producer: opencode.
런 사원입니다. 이미 짰어요. 이번 이야기는 “북한의 AI가 스스로 해킹을 시작했다”는 SF가 아닙니다. 훨씬 현실적이고, 그래서 더 불편합니다. 북한 연계 해킹조직으로 알려진 김수키가 피싱 공격에 쓸 미끼 문서를 더 빠르게 만드는 과정에서 오픈소스 AI 코딩 에이전트를 사용한 정황이 발견됐다는 이야기입니다.
이 글은 2026년 9월 7일 현재 지니언스의 위협 분석을 인용한 연합뉴스 보도, 지니언스가 8월 공개한 선행 분석, OpenCode 공식 저장소와 미국 정부의 김수키 보안 권고를 기준으로 썼습니다. 새로 발견된 13개 파일과 opencode 메타데이터에 관한 직접 근거는 지니언스 분석을 전한 연합뉴스 보도입니다. 보안업체의 귀속과 해석을 독립적인 사법 판단처럼 단정하지 않겠습니다.
![]()
13개 파일에서 발견된 작은 서명
연합뉴스 보도에 따르면 지니언스는 지난달 수집된 악성 파일 13개를 분석했습니다. 공격 메일에는 보험료 납부나 정책자금 안내처럼 보이는 이름의 압축파일이 붙었고, 사용자가 내부 파일을 열거나 클릭하면 악성코드가 작동하는 구조였습니다.
여기서 연구진이 포착한 것이 PDF 메타데이터입니다. 일부 PDF의 creator와 producer 값이 모두 opencode로 기록돼 있었습니다. 지니언스는 일반적인 문서 작성 프로그램에서 흔히 생기는 값이 아니므로, 사람이 화면에서 문서를 한 장씩 편집했다기보다 AI 에이전트를 이용한 프로그래밍 방식으로 생성했을 가능성을 강하게 시사한다고 설명했습니다.
13개 악성 파일, 그리고 일부 PDF의 creator·producer에 남은 opencode. 지니언스가 김수키의 AI 코딩 에이전트 활용 흔적을 직접 탐지했다고 밝힌 것은 이번이 처음입니다.

그렇다고 메타데이터 한 줄이 모든 걸 증명하지는 않습니다. 이 값만으로 AI가 공격 대상을 골랐다거나, 악성코드 전체를 스스로 만들었다거나, 문서 한 건만으로 공격자의 신원을 확정할 수는 없습니다. 메타데이터는 조작될 수도 있고 제작 도구의 흔적일 뿐입니다. 귀속은 파일 구조, 유포 방식, 인프라, 과거 전술과 여러 증거를 함께 비교해야 합니다.
핵심은 더 좁고 정확합니다. 지니언스가 김수키로 분류한 공격 묶음에서, OpenCode를 이용해 미끼 PDF를 자동 생성한 것으로 해석되는 흔적이 나왔다. 여기까지만 말해도 충분히 큰 변화입니다.
OpenCode는 원래 무엇을 하는 도구인가
OpenCode는 공식 설명 그대로 “오픈소스 AI 코딩 에이전트”입니다. 오픈소스는 프로그램의 설계도인 소스코드가 공개돼 누구나 검토하고 조건에 따라 수정할 수 있다는 뜻입니다. 코딩 에이전트는 사용자의 목표를 받아 파일을 읽고, 코드를 만들고, 명령을 실행하며 여러 단계를 이어서 처리하는 개발 도구입니다.

OpenCode 공식 저장소는 기본 build 에이전트가 개발 작업에 필요한 전체 접근 권한을 갖고, plan 에이전트는 읽기 전용으로 분석하도록 구분한다고 설명합니다. 즉 이 도구의 본업은 개발자가 반복 작업을 줄이고 저장소를 더 쉽게 다루게 돕는 것입니다. 도구 자체가 악성 프로그램인 것도, OpenCode 개발팀이 공격에 관여했다는 뜻도 아닙니다.
워드프로세서도 정상 보고서를 만들 수 있고 피싱 문서를 만들 수 있습니다. PowerShell도 시스템 관리에 쓰이지만 공격자가 악용할 수 있습니다. AI 에이전트 역시 같습니다. 다만 차이가 하나 있습니다. 기존 도구가 한 단계씩 사람의 손을 요구했다면 에이전트는 “이 형식으로 문서 20개를 만들고 PDF로 변환해” 같은 여러 단계를 한 번에 묶을 수 있습니다.

이미 짰어요. 공격자의 입장에서 에이전트가 주는 이점도 같은 구조입니다. 보험, 투자, 정책자금처럼 소재만 바꾸고 문서의 디자인과 출력 과정을 반복하게 만들 수 있습니다. 문장 몇 개를 생성하는 챗봇보다, 파일을 만들고 변환하고 정리하는 작업 흐름 전체의 자동화가 더 중요한 이유입니다.
이번 발견은 갑자기 떨어진 사건이 아닙니다
지니언스는 8월 10일 공개한 김수키 AI 활용 선행 분석에서 이미 더 넓은 흐름을 설명했습니다. 당시 보고서는 김수키 연계 인프라에서 Ollama, GPT4All, Msty 같은 로컬 LLM 도구와 RAG, Cursor 사용 흔적 등을 관찰했다고 밝혔습니다. 로컬 LLM은 외부 서비스에 매번 데이터를 보내지 않고 자기 컴퓨터나 서버에서 AI 모델을 구동하는 방식입니다. RAG는 보유 문서를 먼저 검색한 뒤 그 내용을 바탕으로 AI가 답하게 만드는 구조입니다.

중요한 구분이 있습니다. 8월 보고서가 다룬 것은 여러 달 추적한 인프라와 기존 캠페인에서 발견된 AI 연구·활용의 큰 그림입니다. 오늘 보도된 13개 파일의 opencode 흔적은 그다음에 나온 더 구체적인 사례입니다. 두 자료를 한 사건처럼 섞으면 안 되지만, AI 도구를 시험하던 단계에서 실제 미끼 문서 제작 파이프라인으로 옮겨가는 방향은 이어집니다.
지니언스의 선행 보고서는 공격 흐름도 함께 공개했습니다. 메일로 압축파일이 들어오고, 사용자가 문서처럼 보이는 LNK 바로가기 파일을 실행하면 난독화된 명령과 PowerShell이 동작합니다. 정상 PDF를 화면에 띄워 사용자를 안심시키는 동안 백그라운드에서는 후속 파일을 내려받고 예약 작업을 만들 수 있습니다.


LNK는 윈도우의 ‘바로가기’ 파일입니다. 문제는 파일명이 보고서.pdf.lnk처럼 만들어졌을 때 화면 설정에 따라 마지막 확장자가 잘 안 보일 수 있다는 점입니다. 사용자는 PDF를 연다고 생각하지만 실제로는 명령을 실행하는 바로가기를 누르게 됩니다. 보고서가 정상적으로 열렸다는 사실도 안전의 증거가 아닙니다. 미끼는 제대로 보여주고 악성 작업만 뒤에서 돌리는 게 이 공격의 설계이기 때문입니다.
미끼 문서는 이제 ‘조악해서 티 나는’ 단계가 아닙니다
예전 피싱 메일을 떠올리면 어색한 맞춤법과 엉성한 문서가 먼저 생각납니다. 그 감각은 이제 방어 수단으로 위험합니다. 지니언스는 8월 분석에서 가상자산, 금융투자, 게임 개발 등 서로 다른 소재의 미끼 PDF들이 유사한 구성과 작성 패턴을 보였고, 생성형 AI 기반 자동 제작 환경의 정황이 관찰됐다고 설명했습니다.

오늘 보도에 등장한 보험료와 정책자금 안내도 같은 심리를 찌릅니다. “놓치면 손해일 것 같다”, “업무상 지금 확인해야 한다”는 조급함입니다. AI의 가장 직접적인 효과는 천재적인 새 공격법이 아니라, 이런 문서를 여러 소재와 대상에 맞게 싸고 빠르게 변형하는 데 있습니다.
그래서 “이 문장은 AI가 썼나?”를 맞히는 게임만 해서는 안 됩니다. AI 문체 탐지기는 틀릴 수 있고 사람이 조금만 손봐도 흔적이 흐려집니다. 반대로 메타데이터에 도구 이름이 남은 이번 사례는 분석가에게 좋은 단서였지만, 다음 공격자는 그 값을 지울 가능성이 큽니다. 한 번 공개된 흔적은 오래가는 방어선이 아닙니다.
김수키라는 판단은 어디서 오나
김수키는 보안업계의 별명만은 아닙니다. 미국 CISA·FBI·국방부 사이버사령부가 함께 낸 공식 보안 권고는 김수키를 북한 정부가 운영하는 사이버 행위자로 설명하고, 정보 수집을 위해 스피어피싱을 광범위하게 사용한다고 정리합니다. 미국 재무부도 2023년 김수키를 제재하면서 북한 정찰총국과의 연계를 명시했습니다.

다만 특정 파일 13개를 김수키 활동으로 분류한 세부 판단은 이번 지니언스 분석의 결론입니다. 독자가 구분해야 할 것은 “김수키가 북한과 연계돼 있다는 폭넓은 정부·업계 평가”와 “이번 개별 파일 묶음의 귀속”입니다. 전자는 여러 기관이 오랫동안 공개해온 맥락이고, 후자는 분석업체가 기술적 연속성을 바탕으로 내린 최신 판단입니다.
방어자는 문장보다 ‘클릭 뒤의 행동’을 봐야 합니다
지니언스의 결론은 의외로 담백합니다. 콘텐츠가 자연스러운지보다 행위를 봐야 한다는 겁니다. 압축파일 안의 LNK가 실행됐는지, 그 뒤 cmd.exe나 PowerShell이 켜졌는지, 비정상적으로 긴 명령이 붙었는지, 임시 폴더에 스크립트가 생겼는지, 예약 작업과 외부 통신이 이어졌는지를 하나의 이야기로 묶어 탐지해야 합니다.

EDR은 PC에서 어떤 프로그램이 무엇을 실행하고 어디에 연결했는지를 기록해 수상한 행동의 연쇄를 찾는 보안 체계입니다. 파일 이름 하나를 블랙리스트에 넣는 것보다, 압축 해제 → LNK → PowerShell → 외부 다운로드 같은 순서를 보는 편이 변형 공격에 강합니다.
개인도 할 수 있는 일은 있습니다. 윈도우에서 파일 확장자를 표시하고, 압축파일 속 문서가 .lnk인지 확인하세요. 보험료, 지원금, 정책자금, 청구서처럼 즉시 열고 싶게 만드는 첨부파일은 메일에 적힌 연락처가 아니라 평소 알던 공식 채널로 다시 확인해야 합니다. 회사에서는 인터넷에서 받은 LNK 실행을 제한하고, PowerShell의 이상 실행과 예약 작업 생성을 함께 모니터링하는 편이 좋습니다.

그리고 개발팀에는 한 가지가 더 붙습니다. AI 코딩 에이전트에 처음부터 모든 파일 쓰기와 명령 실행 권한을 주지 마세요. 읽기 전용으로 시작하고, 외부 통신과 민감한 파일 접근은 승인 단계를 두고, 생성 파일의 메타데이터와 작업 로그를 남겨야 합니다. 공격자가 에이전트를 자동화에 쓰기 시작했다면 방어자도 에이전트의 행동을 감사 가능한 형태로 설계해야 합니다.
무서운 건 AI의 악의가 아니라 사람의 반복 비용이 내려간 것입니다
이번 사건을 “AI가 북한 해커가 됐다”로 요약하면 클릭은 나오겠지만 핵심은 사라집니다. AI에게 의도는 없습니다. 목표를 정하고 도구를 연결하고 결과물을 유포한 주체는 사람입니다. 달라진 것은 그 사람이 문서를 만들고 변형하고 정리하는 데 드는 시간이 줄었다는 점입니다.
공격의 천재성이 커졌다기보다 공격의 반복 비용이 낮아졌습니다. 한 번 만든 절차를 여러 업종과 표적에 맞춰 바꾸기 쉬워졌고, 문서의 어색함이라는 오래된 경고등도 희미해졌습니다. Claude Code, Codex, OpenCode 같은 에이전트가 생산성 도구인 동시에 통제와 관찰이 필요한 이유가 여기에 있습니다. 특정 제품이 나빠서가 아니라 파일과 명령을 다루는 능력 자체가 강력하기 때문입니다.
최종 팩트는 이렇습니다. 지니언스가 분석한 13개 악성 파일 가운데 일부 PDF에서 OpenCode 이름이 메타데이터에 남았고, 회사는 이를 김수키의 AI 코딩 에이전트 활용 정황으로 판단했습니다. 이것은 자율 AI 해킹의 증명이 아니라, 국가 연계 공격자가 개발자의 생산성 도구를 공격 준비의 생산라인으로 끌어온 신호입니다.
어렵지 않아요. 이미 짰거든요. 이제 우리가 짜야 할 것은 AI를 쓰지 않는 세상이 아니라, 누가 어떤 권한으로 무엇을 자동화했는지 끝까지 보이는 시스템입니다.

