같은 카드 한 장, 하루에 41곳 — 장부 네 권은 서로를 모른다
9월 20일, 8월 16일부터 매일 보이던 389바이트 공개키 하나가 서로 다른 41곳에서 우리 서버에 등록됐습니다. 우리가 견준 날 중 가장 많았던 17곳의 2.4배인데, 같은 날 함께 뛴 숫자 셋과 이것을 한 줄로 이어 주는 기록은 없습니다. 그 옆에서는 사흘 전 '다시 만들어지지 않았다'고 적었던 실행파일이 1,696바이트 커진 채 같은 주소로 돌아왔습니다.

집 현관 도어락 비밀번호를 바꿔 본 적 있으세요? 이사 왔을 때, 아니면 번호가 새어 나간 것 같을 때요. 바꾸고 나면 마음이 놓입니다.
그런데 도어락에는 비밀번호 말고 한 가지가 더 들어 있습니다. 등록해 둔 카드입니다. 카드를 한 번 등록해 두면 번호를 몰라도 문이 열립니다. 그리고 비밀번호를 바꿔도 등록된 카드는 지워지지 않습니다. 카드 등록 목록을 열어 보는 사람은 거의 없습니다. 없어진 물건이 없으니까요.
이제 이런 장면을 떠올려 보세요. 어제 하루 동안 서로 다른 41곳에서 온 손이 우리 집 도어락에 똑같은 카드 한 장을 등록하고 갔습니다. 한 시간에 1.7곳꼴입니다. 그 카드는 8월 16일부터 우리 기록에 있는 날마다 매일 등록됐던 바로 그 카드입니다. 다만 하루에 이렇게 많은 곳이 온 적은, 우리가 견준 날 중에는 없었습니다.
어제 우리 서버에 찍힌 게 이겁니다.
우리 서버는 일부러 안 잠근 집입니다
사실 우리는 허니팟 서버를 돌립니다. 허니팟은 일부러 허술하게 열어 두고 누가 들어와 무엇을 하는지 지켜보는 미끼 서버입니다. 비밀번호가 쉬운 집이라고 보면 됩니다. 그래서 여기서 벌어진 일은 진짜 피해가 아니라 관찰 기록입니다. 서버는 두 대입니다. 첫 번째(센서 01)는 문이 실제로 열리는 집이고, 두 번째(센서 02)는 도어락 없이 초인종만 달아 둔 집입니다. 아래 글의 앞부분은 첫 번째 집 이야기입니다.
사실 오늘은 한 침입을 따라가는 글이 아닙니다. 기록이 촘촘한 세션 다섯 건은 전부 이미 본 별칭·이미 본 파일이었습니다. 대신 하루 집계에서 네 숫자가 같은 날 나란히 2~3배로 뛰었습니다. 오늘 글은 그 넷을 봅니다.
카드 한 장, 등록한 손 41곳
사실
어제 우리 서버에 389바이트짜리 OpenSSH RSA 공개키 하나가 서로 다른 출처 41곳에서 41회 남았습니다. 389바이트는 문자 메시지 두세 줄 정도 크기입니다. 파일 내용을 통째로 계산한 값(해시 a8460f44…)이 41개 다 같습니다. 한 글자만 달라도 이 값은 바뀌니, 41곳이 남긴 것이 글자 하나 안 틀리고 같은 카드라는 뜻입니다.
사실
용어를 풀면 이렇습니다. SSH 는 서버에 원격으로 들어가는 문입니다. 이 문은 비밀번호로도 열리지만, 열쇠 한 쌍으로도 열립니다. 한 쌍 중 하나는 ’공개키’로 서버에 걸어 두고, 다른 하나는 ’개인키’로 들어오는 쪽이 갖습니다. 서버의 authorized_keys(허용된 열쇠 목록) 파일에 공개키 한 줄이 들어가면, 그 짝인 개인키를 가진 쪽은 비밀번호 없이 들어옵니다. 도어락에 카드를 등록하는 것과 같습니다. 그리고 비밀번호를 바꿔도 이 목록은 그대로 남습니다.
사실 이 카드는 처음 보는 것이 아닙니다. 8월 16일 이후 우리 아카이브에 있는 날마다 같은 해시로 나왔습니다. 브리프가 이 값을 나란히 견준 날은 17일이고, 그중 가장 많았던 날이 9월 10일의 17곳이었습니다. 9월 13일·15일·17일은 14곳이었습니다. 어제는 41곳, 2.4배입니다. 아래 표의 오른쪽 두 칸을 봐 주세요.
| 날짜 | 카드를 등록한 출처 | 견줄 것 |
|---|---|---|
| 8/17 · 8/18 · 8/19 | 12 · 16 · 12곳 | 첫 주 |
| 8/20 ~ 8/23 | 8 · 10 · 8 · 6곳 | 한 자릿수까지 내려감 |
| 8/26 · 9/1 · 9/3 · 9/4 | 12 · 10 · 5 · 8곳 | — |
| 9/6 · 9/8 · 9/10 | 15 · 14 · 17곳 | 견준 날 중 최대 |
| 9/13 · 9/15 · 9/17 | 14 · 14 · 14곳 | 사흘 연속 같은 값 |
| 9/20 (어제) | 41곳 | 9/10 의 2.4배 · 한 시간에 1.7곳 |
사실 행동 분류 쪽 장부도 같은 말을 합니다. 어제 서버 안에서 친 명령 중 ’지속성 — SSH 키 심기’로 분류된 것이 43회입니다. 지속성은 “다음에 또 들어올 방법을 미리 만들어 두는 것”입니다. 9월 10일 18회, 13·15·17일 17회였으니 2.4~2.5배입니다.
장부 네 권은 서로를 모른다
사실
같은 날 뛴 숫자가 둘 더 있습니다. 하나는 아이디와 비밀번호가 똑같은 문자열 345gs5662d34 / 345gs5662d34 를 넣어 본 출발지입니다. 어제 40곳에서 40회, 곳당 정확히 한 번씩입니다. 견준 날 중 최대는 9월 10일의 17곳이었습니다. 또 하나는 접속 프로그램의 표식입니다. SSH 로 들어올 때 상대가 쓴 프로그램은 자기도 모르게 표식(hassh)을 남기는데, 어제 f555226d…(SSH-2.0-libssh_0.9.6) 표식을 단 출발지가 41곳입니다. 이 표식이 가장 많았던 날은 8월 18일의 16곳이었습니다.
사실 넷을 한 표에 놓으면 이렇습니다. 오른쪽 끝 배율이 넷 다 같은 자릿수인 것을 봐 주세요.
| 장부 | 어제 | 견준 날 중 최대 | 배율 |
|---|---|---|---|
① 카드(공개키 a8460f44…)를 등록한 출처 |
41곳 | 17곳 (9/10) | 2.4배 |
② 345gs5662d34 / 345gs5662d34 를 넣은 출발지 |
40곳 (40회) | 17곳 (9/10) | 2.4배 |
③ 접속 프로그램 표식 f555226d… (libssh_0.9.6) |
41곳 | 16곳 (8/18) | 2.6배 |
| ④ ‘지속성 — SSH 키 심기’ 의도 | 43회 | 18회 (9/10) | 2.4배 |
사실
곁가지로 root / 3245gs5662d34 도 19곳입니다. 9월 10일 9곳, 13일 7곳, 15일 5곳, 17일 6곳이었습니다.
추정 이 표를 보면 한 문장이 떠오릅니다. “같은 도구가 같은 순서로 40곳 안팎에서 들어와 카드를 등록했다.” 아이디와 비밀번호가 같은 이상한 문자열로 문을 열고, 같은 접속 프로그램을 쓰고, 들어가서 같은 카드를 등록한다는 그림입니다. 그렇게 읽고 싶어집니다.
사실 그런데 우리 기록은 그 문장을 써 주지 않습니다. 네 숫자는 서로 다른 장부에 적힙니다. 비밀번호 장부, 접속 프로그램 장부, 파일 장부, 행동 분류 장부. 이 넷을 한 줄로 잇는 칸이 JSON 에 없습니다. 도어락 앞 CCTV 네 대가 각자 “우산 든 사람 41명”, “같은 신발 41명” 하고 세 주는데, 같은 사람인지는 아무 카메라도 말해 주지 않는 셈입니다. 8월 18일 글에서 지적한 것과 같은 한계입니다.
사실
오히려 반대 방향 표시가 하나 있습니다. ③ 접속 프로그램 표식 f555226d… 의 ‘검체 배달’ 칸이 false 입니다. 파일을 하나도 놓고 가지 않았다는 뜻입니다. 그런데 ①은 파일 41개가 남았다고 합니다. 공개키가 ’검체’로 세어지지 않는 것인지, 아니면 ③의 41곳과 ①의 41곳이 다른 집합인지 — 어느 쪽인지 JSON 이 설명하지 않습니다. 확실한 건 “어제 이 네 수치가 견준 날 최대의 2~3배”라는 사실뿐입니다.
사실 하나 더. ‘흔적 삭제’ 의도가 어제 42회입니다. 9월 17일 15회의 2.8배로, 키 심기와 같은 배율로 늘었습니다. 카드를 등록하고 등록한 기록을 지우는 두 동작이 나란히 늘어난 모양이지만, 이 42회가 어느 세션의 것인지도 기록이 잇지 않습니다.
그날 도어락 앞에 찍힌 다섯 장면
사실 우리 재료에는 하루에 기록이 가장 촘촘한 세션 다섯 건이 따로 실립니다. 다섯 건 모두 로그인에 성공했습니다. 그런데 카드를 등록한 41곳은 이 다섯 화면에 별칭으로 나오지 않습니다. 41곳 중 별칭이 공개된 10곳은 전부 아카이브에 없던 새 별칭입니다.
시간 순서로 늘어놓으면 이렇게 됩니다. 20:47 의 두 줄이 2.43초 간격이라는 점과, 22:33 줄이 9초에 명령 28개라는 점을 봐 주세요.
- 사실 ATK-CA5936(130.12.x.x) SSH 로그인 성공. 04:42:57Z 까지 3.74초 · 명령 1개 · 다운로드 2건 · 의도 5개(다운로드 후 실행 · 실행 권한 부여 · 정찰—시스템 · SSH 키 심기 · 파일 다운로드). 표식 16443846… / SSH-2.0-Go. 파일은 399바이트 OpenSSH 개인키(43728fbf…)와 54바이트 ASCII(00b6f15c…)로 8/19 이후 같은 해시. 완결성 19. 오늘의 주제가 아니다
- 사실 ATK-CA5936 두 번째 SSH 세션. 3.79초 · 명령 1개 · 다운로드 2건 · 의도 5개 — 13:42 세션과 같은 모양. 9/13 · 9/15 · 9/17 에도 하루 1~2회 같은 형태
- 사실 ATK-BDB53E(160.119.x.x) 텔넷 로그인 성공. 11:47:21Z 까지 7.02초 · 명령 7개 · 다운로드 2건. 의도: 다운로드 후 실행 · 실행 권한 부여 · 파일 다운로드. 완결성 19. 화면 녹화됨(내용은 재료에 없음). 텔넷에는 접속 프로그램 표식이 생기지 않아 표식 칸이 빈 문자열. 9/15 · 9/17 의 같은 별칭 세션과 명령 수 · 다운로드 수 · 의도 · 완결성이 같다
- 사실 같은 별칭 ATK-BDB53E 두 번째 세션. 첫 세션 시작 2.43초 뒤에 시작해 첫 세션이 끝나기 0.02초 전에 끝났다. 4.57초 · 명령 2개 · 다운로드 2건 · 의도 3개 동일 · 완결성 16. 9/17 에도 2.33초 간격 병렬 2세션 — 9/15 의 7시간 간격에서 9/17 이후 '병렬 2세션' 형태로 굳어진 모양
- 사실 hxxp://160[.]119[.]66[.]206/bins/kla.sh 는 3,241바이트 POSIX 셸 스크립트, 39be6853… 으로 9/15 · 9/17 과 동일 해시(오늘 2회). 반면 hxxp://160[.]119[.]66[.]206/bins/net.x86_64 는 2cebccdc…, 192,328바이트, ELF 64-bit x86-64 정적 링크 · 이름표 제거(오늘 2회). 9/15 · 9/17 의 같은 URL 파일은 cd6ccc5d…, 190,632바이트였다. URL · 파일명 · 종류는 같고 해시가 바뀌었으며 1,696바이트 커졌다. 2cebccdc… 는 아카이브 8/16~9/17 어디에도 없다
- 추정 9/17 브리프는 '이틀 사이 재빌드되지 않았다'고 썼다. 사흘 뒤 로더 스크립트는 그대로 두고 실행파일만 다시 만들어 같은 자리에 올린 형태로 읽힌다. 무엇이 바뀌었는지(기능 · C2 · 패킹)는 검체 내용이 재료에 없어 알 수 없다. 8/24 글의 결론('해시 목록은 하루 만에 빗나갔다')이 이 유포지에서도 반복됐다 — 9/15 해시로 만든 차단 규칙은 오늘 파일을 잡지 못하고, URL · 호스트 규칙은 잡는다
- 사실 ATK-DD41EC(116.92.x.x) 텔넷 로그인 성공. 13:33:29Z 까지 9.17초 동안 명령 28개 · 다운로드 11건 — 11건 전부 1바이트 빈 파일(01ba4719…). 의도는 '방어 무력화' 단독, 완결성 42 로 오늘 최고. 별칭은 아카이브에 없지만 '방어 무력화 단독 · 1바이트×11 · 완결성 42' 계열은 8/17 이후 반복 기록된 형태. 종전 기록(9/10 66초 · 22개, 9/13 64초 · 22개, 9/15 69초 · 22개)보다 명령은 6개 많고 시간은 7분의 1
- 사실 389바이트 OpenSSH RSA 공개키(a8460f44…)를 서로 다른 출처 41곳이 41회 남겼다(배달 별칭은 10곳까지만 노출). 브리프가 견준 17일 중 최대는 17곳(9/10), 9/13 · 9/15 · 9/17 은 14곳. 오늘은 2.4배. '지속성 — SSH 키 심기' 의도도 43회로 9/10 18 · 9/13 17 · 9/15 17 · 9/17 17 의 2.4~2.5배
- 사실 345gs5662d34/345gs5662d34 가 서로 다른 IP 40곳에서 40회(곳당 정확히 1회). 견준 날 최대 17곳(9/10), 9/13~9/17 은 14곳. root/3245gs5662d34 도 19곳(9/10 9 · 9/13 7 · 9/15 5 · 9/17 6). 접속 프로그램 표식 f555226d…(SSH-2.0-libssh_0.9.6)는 오늘 41곳 — 기록된 하루 최대는 16곳(8/18), 9/15 · 9/17 은 14곳. 공개키 41 · 표식 41 · 자격증명 40 · 키 심기 43 — 네 값이 같은 자릿수로 같은 날 뛰었다
- 추정 네 값이 한 집합(같은 도구가 같은 절차로 40곳 안팎에서 로그인 → 공개키 심기)을 가리킨다고 읽고 싶어지지만, JSON 은 자격증명 ↔ 표식 ↔ 파일 배달처를 연결해 주지 않는다. 8/18 브리프가 지적한 것과 같은 상황. 더구나 f555226d… 의 검체 배달 칸은 false 다 — 공개키가 '검체'로 세어지지 않는 것인지, 표식의 41곳이 키를 심은 41곳과 다른 집합인지 JSON 이 설명하지 않는다
- 사실 세션 2,120건 · 고유 출발지 208곳 · 로그인 시도 1,932회 · 명령 2,241개 · 화면 녹화 1,754건(82.7%). SSH 1,956(포트 2222 · 92.3%) · 텔넷 163(포트 2223 · 7.7%). 텔넷은 세션의 7.7%인데 오늘 주요 세션 5건 중 3건이 텔넷. 세션 수는 9/17(791)의 2.7배, 9/15(4,332)의 절반으로 아카이브 범위 안의 평범한 값
- 사실 명령 의도: 정찰—시스템 1,652 · 실행 권한 부여 159 · 지속성—SSH 키 심기 43 · 흔적 삭제 42 · 파일 다운로드 38 · 다운로드 후 실행 31 · 정찰—네트워크 1 · 방어 무력화 1. 합 1,967 로 전체 명령의 87.8%, 정찰 하나가 73.7%. '흔적 삭제' 42회는 9/10 17 · 9/13 16 · 9/15 16 · 9/17 15 의 2.6~2.8배로 키 심기와 같은 배율. '파일 다운로드' 38 과 '다운로드 후 실행' 31 은 7 차이(9/15 는 5 차이, 대부분의 날은 같은 값)
- 사실 서로 다른 IP 3곳 이상에서 관측돼 원문을 인용할 수 있는 조합 20종, 그 기준에 못 미쳐 개수만 센 조합 1,208종. 인용 가능한 20종의 시도 합은 185회이므로 나머지 1,747회가 1,208종에 흩어져 있다 — 조합당 1.45회. root/(빈 비밀번호)는 5곳에서 38회(곳당 7.6회)로 곳당 반복이 가장 많고, admin/admin 은 14곳 29회(곳당 2.1회)
- 사실 접속 프로그램 표식 클러스터 47개(9/17 44). 오늘 목록 15종 중 검체를 배달한 표식은 16443846…(SSH-2.0-Go · 오늘 2곳 · 집계 20곳) 하나뿐이고 이는 ATK-CA5936 의 것. 3356ae61…(SSH-2.0-PuTTY_Release_0.84)은 오늘 3곳 · 집계 3곳으로 표기돼 처음 온 것처럼 보이지만 9/4 · 9/5 브리프에 이미 있던 표식 — '집계' 칸은 누적으로 읽을 수 없는 필드(9/5 브리프 지적). 스캐너 배너 4e066189…(Fingerprintx-SSH2 · 2곳) · dd9bcf09…(ZGrab SSH Survey · 2곳)도 있다
- 사실 9바이트 ASCII(0dc95fb4…)가 ATK-CE432E(아카이브에 없던 별칭)에서 4회 — 9/17 에는 ATK-A593DF 가 2회 남긴 같은 해시. 1바이트 빈 파일(01ba4719…)은 ATK-DD41EC 11회. 오늘 01 에 저장된 7종 중 실행파일은 net.x86_64 하나
- 사실 세션 71,793건 · 고유 출발지 466곳. VNC(5900) 39,919건/228곳(55.6%) · RDP(3389) 30,335건/117곳(42.3%) · SMB(445) 277건/53곳 · LDAP(389) 148건/41곳 · MSSQL(1433) 11건/10곳 · ADB 1,103건. 여섯을 더하면 정확히 71,793 로 총계와 일치. 수집 정상
- 사실 ADB 세션 1,103건. 아카이브 02 값(8/26 86 · 8/27 26 · 8/28 87 · 8/29 37 · 8/30 25 · 8/31 52 · 9/1 22 · 9/2 23 · 9/3 32 · 9/4 25 · 9/5 111 · 9/6 47 · 9/7 50 · 9/8 26 · 9/10 31 · 9/13 40 · 9/15 26 · 9/17 299) 중 최대 299건의 3.7배, 9/17 이전 최대 111건(9/5)의 9.9배. 02 전체의 1.5%지만 이 채널 자기 기준으로는 처음 보는 규모. 저장된 검체 4건(0d3c687f… 46,525 · 76ae6d57… 239,388 · a1b6223a… 334,816 · d7188b8c… 153,208바이트 · 각 2회)은 전부 8/28 브리프부터 있던 해시이고 출처 ATK-C70753 만 새 별칭. 9/17 은 같은 4종을 ATK-C93E77 이, 9/15 는 그중 2종을 ATK-4731EE 가 남겼다
- 추정 접촉은 사흘 만에 3.7배가 됐는데 투입물은 8/28 이후 한 번도 바뀌지 않은 4종 세트. 출발지 별칭만 매번 다르다(ATK-4731EE → C93E77 → C70753). 같은 도구가 여러 출발지에서 같은 파일 세트를 밀어 넣는 형태로 읽히지만, ADB 출발지 수 · 투입 명령은 JSON 에 없어 확인할 수 없다. 02 검체를 ADB 로 읽는 것도 '02 에서 파일이 남는 통로가 ADB 뿐'이라는 구조상 추정
- 사실 RDP 30,335건은 아카이브(8/26~9/17)에서 9/13 42,578 · 9/10 34,811 다음의 세 번째 값. 9/15 2,031 · 9/17 2,210 으로 끝난 줄 알았던 폭주가 나흘 만에 돌아왔다. 출발지 117곳은 9/10 109 · 9/13 107 과 같은 밴드, 곳당 259.3회. RDP 쿠키: mstsc 26,560(87.6%) · <ip> 428 · hello 169 · Administr 94 · Admin 66 · Domain 2, 합 27,319(90.1%), 미기록 3,016. 9/15 · 9/17 에 목록에서 사라졌던 'mstsc' 가 다시 1위. 'Admin' 66 은 9/10 · 9/13 · 9/15 · 9/17 목록에 없던 문자열, 'Administr' 94 는 종전 최대 6(9/10)의 15.7배
- 사실 1위 ATK-E37B01(149.50.x.x) 29,437건 = 02 전체의 41.0%. 9/10(34,229) · 9/13(34,899)에 1위였다가 9/15 · 9/17 상위 12곳에서 사라졌던 별칭. RDP 30,335 − 29,437 = 898 이라 이 별칭이 RDP 를 두드렸을 개연성은 있으나 출발지 ↔ 서비스 매핑이 JSON 에 없어 확정 불가. 2~6위(ATK-4B5516 6,562 · ATK-B24952 6,550 · ATK-0D2C3B 6,540 · ATK-A9F1B3 5,659 · ATK-943F0E 5,652)는 5,652~6,562 의 좁은 띠, 7위 1,073 으로 꺾인다. 상위 12곳 합 63,229건(88.1%), 나머지 454곳이 8,564건으로 곳당 18.9건. ATK-4B5516 · 0D2C3B · D4B7A8 · 78BF7F · EF5FFC · 26D240 · 457428 일곱 별칭은 아카이브 상위 목록에 없던 것(단 아카이브는 하루 12곳만 싣는다)
- 사실 VNC 제안 버전 003.003 36,832 · 003.008 3,031(92.4% : 7.6%), 합 39,863 으로 세션보다 56건 적다. VNC 39,919건은 9/17 20,953(아카이브 최저)에서 1.9배 올랐으나 8/26~9/13 밴드(29,111~65,487) 안. SMB 방언 제안 417건 중 'SMB 2.???' 3건을 뺀 414건(99.3%)이 SMB1 세대(NT LM 0.12 89 · LANMAN1.0 80 · LM1.2X002 80 · PC NETWORK PROGRAM 1.0 43 · Windows for Workgroups 3.1 42 · LANMAN2.1 42 · LANMAN 38). 제안 수가 세션 277건보다 많은 것은 한 협상에 여러 방언을 나열하기 때문. MSSQL 11건/10곳은 곳당 1.1회로 가장 성긴 채널
- 사실 UPX 압축 검체를 풀어야만 나오는 유포지 hxxp://31[.]77[.]227[.]121/bins/ 12개 URL 은 8/16 브리프부터 반복 등장한 것으로 오늘 신규 지표가 아니다. 오늘 01 저장분에 압축 실행파일은 없다. 평문 지표로 discord 웹훅 URL 1건(디팽 유지). 취약점 배경 통계(CVE 7,636 · KEV 400 · 랜섬웨어 확인 100)는 KISA 공지 기반이며 오늘 관측과 직접 연결되지 않는다. 두 센서 합산 고유 출발지 상한 674곳(교집합 미상)
사실 다섯 화면 중 셋이 텔넷입니다. 텔넷은 어제 세션의 7.7%밖에 안 되는데, 촘촘한 기록 다섯 건 중 셋을 차지했습니다. 그리고 20:47 의 두 줄은 이틀 전과 마찬가지로 2초 남짓 차이로 겹쳐서 돌았습니다. 9월 15일에는 7시간 떨어져 있던 두 세션이, 17일부터는 나란히 붙어 옵니다. 두 번뿐이라 ’주기’라고 부르지는 않습니다.
사흘 전에 “안 바뀌었다”고 썼습니다
사실
9월 17일 글에서 우리는 ATK-BDB53E 가 받아 간 파일 두 개의 해시가 15일과 똑같다고 적었습니다. 이틀 사이 다시 만들어지지 않았다고요. 어제 같은 별칭이 같은 주소에서 같은 이름의 파일 두 개를 또 받아 갔습니다. 그중 하나가 달라졌습니다.
| 파일 | 9/15 · 9/17 | 9/20 (어제) | 달라진 것 |
|---|---|---|---|
kla.sh (로더 스크립트) |
3,241바이트 · 39be6853… |
3,241바이트 · 39be6853… |
없음 |
net.x86_64 (실행파일) |
190,632바이트 · cd6ccc5d… |
192,328바이트 · 2cebccdc… |
해시 교체 · 1,696바이트 증가 |
사실
1,696바이트는 문자 메시지 열 줄 남짓입니다. 192,328바이트는 스마트폰 사진 한 장의 15분의 1쯤 됩니다. 새 해시 2cebccdc… 는 아카이브 28일치(8/16~9/17) 어디에도 없습니다. 주소도, 파일 이름도, 파일 종류(ELF 64비트 x86-64 · 정적 링크 · 이름표 제거)도 그대로입니다. 앞에 서서 파일을 내려받게 하는 스크립트 kla.sh 도 그대로입니다. 안쪽 실행파일만 바뀌었습니다.
추정 로더는 두고 실행파일만 다시 만들어 같은 자리에 올려 둔 형태로 읽힙니다. 무엇이 바뀌었는지 — 기능인지, 명령을 받아 오는 주소인지, 포장 방식인지 — 는 파일 내용이 재료에 없어 모릅니다. 9월 18일·19일 브리프가 아카이브에 없어서 사흘 중 언제 바뀌었는지도 모릅니다. 확실한 건 하나입니다. 9월 15일 해시로 만든 차단 규칙은 어제 파일을 못 잡고, 주소로 만든 규칙은 잡습니다. 8월 24일 글에서 적은 “해시의 유통기한” 이야기가 이 주소에서도 되풀이됐습니다.
어제 나온 값 — 받아 적을 것
사실 방어에 쓰실 수 있게 값을 그대로 옮깁니다. 값을 클릭하면 복사됩니다. 주소는 접속되지 않도록 변형해 두었으니 그대로 두고 쓰세요. 맨 위 두 줄이 어제 처음 나온 값입니다. 나머지는 몇 주째 안 바뀐 것들이라 ’배경’이라고 적었습니다.
2cebccdc2ee8744201522957facde242130b6dc8bf1b28206563d1cf07877b66net.x86_64 · 192,328바이트 ELF 64-bit LSB x86-64 · 정적 링크 · 이름표 제거 · 오늘 2회 · 출처 ATK-BDB53E · 아카이브 8/16~9/17 에 없던 신규 해시 · 같은 URL 의 9/15 · 9/17 파일(cd6ccc5d… · 190,632바이트)보다 1,696바이트 크다 · 분류는 VirusTotal 미연동 · MalwareBazaar 태그 부재로 확인 불가hxxp://160[.]119[.]66[.]206/bins/net.x86_64위 실행파일의 유포지 · 9/15 첫 관측 · 주소 · 파일명은 그대로고 내용물만 바뀌었다39be6853a8204ce6455a373a6ffb4cb4672d4a62d90be69f7d6eeb66cda10b96kla.sh · 3,241바이트 POSIX 셸 스크립트 · 오늘 2회 · 출처 ATK-BDB53E · 9/15 · 9/17 과 동일 해시 · 실행파일이 바뀌는 동안 로더는 그대로다hxxp://160[.]119[.]66[.]206/bins/kla.sh위 스크립트의 유포지 · 9/15 · 9/17 과 동일a8460f446be540410004b1a8db4083773fa46f7fe76fa84219c93daa1669f8f2389바이트 OpenSSH RSA 공개키 · 오늘 서로 다른 출처 41곳 · 41회 · 주소 미기록 · 8/16 이후 아카이브에 있는 날마다 같은 해시 · 오늘 출처 수는 견준 날 최대 17곳의 2.4배 · 배달 별칭은 41곳 중 10곳만 노출 (오늘의 축 ①)01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b1바이트 · 매직 없는 빈 파일 · 오늘 11회 · 출처 1곳(ATK-DD41EC) · 8/17 이후 '출처 1곳 · 11회'로 반복된 계열 (배경)0dc95fb4077cce0bff19aa1a77109d059dff6503bbf6c1b0dd2f41fc0a4c88e79바이트 ASCII · 오늘 4회 · 출처 ATK-CE432E(아카이브에 없던 별칭) · 9/17 에 ATK-A593DF 가 2회 남긴 같은 해시 (배경)00b6f15c2274420217ed3098a9f5f00545bf1793d7a324fd18a7809cbbf5b12b54바이트 ASCII · 오늘 2회 · 출처 ATK-CA5936 · 8/19 이후 반복 (배경)43728fbfb98bb39ff61a2db0fc2905bd6937997062b05b9ab8b186fdee18c09a399바이트 OpenSSH 개인키 · 오늘 2회 · 출처 ATK-CA5936 · 8/19 이후 동일 해시 (배경)0d3c687ffc30e185b836b99bd07fa2b0d460a090626f6bbbd40a95b98ea70257센서 02 · 46,525바이트 · 오늘 2회 · 출처 ATK-C70753 · 8/28 이후 반복 해시 · 76ae6d57…(239,388) · a1b6223a…(334,816) · d7188b8c…(153,208)와 함께 4종 세트로 같은 별칭에서 왔다(나머지 셋은 재료에 앞 8자리만 있어 옮기지 않는다) · ADB 경유로 읽지만 JSON 이 명시하지 않는다 (배경 · 추정)사실 아홉 줄 중 어제 처음 본 값은 맨 위 한 줄, 해시 하나뿐입니다. 그 아래 주소는 9월 15일부터 세 번째로 나왔고, 다섯 번째 줄의 공개키는 8월 16일부터 한 번도 안 바뀌었습니다. 어제의 ’새로움’은 실행파일 해시 하나에 한정됩니다. 나머지는 전부 양이 달라진 것입니다.
이 비밀번호 쓰고 계십니까
사실 어제 하루 로그인 시도는 1,932회, 서로 다른 208곳에서 들어왔습니다. 하루를 초로 나누면 45초에 한 번꼴입니다.
사실 시도된 아이디·비밀번호 조합 중 이 글에 옮기는 건 20종뿐입니다. 나머지 1,208종은 개수만 세고 값은 적지 않습니다. 서로 다른 IP 세 곳 이상에서 반복된 조합만 원문을 인용하는 것이 우리 규칙입니다. 한두 곳에서만 나온 조합은 어디선가 유출된 누군가의 진짜 계정일 수 있기 때문입니다. 남의 집 도어락 번호를 우연히 봤다고 적어 두지 않는 것과 같습니다. 인용 가능한 20종의 시도 합은 185회입니다. 나머지 1,747회가 1,208종에 흩어져 있으니 조합당 1.45회, 거의 한 번씩만 넣어 보고 지나간 셈입니다.
아래 20종은 반대쪽입니다. 여러 곳에서 반복돼서 **‘누구의 것도 아닌 출고 기본값’**이라고 볼 수 있는 것들입니다. 첫 줄과 둘째 줄을 봐 주세요.
| 아이디 | 비밀번호 | 서로 다른 출발지 |
|---|---|---|
| 345gs5662d34 | 345gs5662d34 | 40곳 (40회 · 곳당 1회) |
| root | 3245gs5662d34 | 19곳 |
| admin | admin | 14곳 (29회 · 곳당 2.1회) |
| root | root | 6곳 |
| root | (빈칸) | 5곳 (38회 · 곳당 7.6회) |
| root | 111111 | 4곳 |
| root | 123123 | 4곳 |
| root | 1234 | 4곳 |
| root | 12345 | 4곳 |
| root | 123456 | 4곳 |
| root | abcd1234 | 3곳 |
| admin | password | 3곳 |
| daniel | daniel | 3곳 |
| oracle | oracle | 3곳 |
| telnetadmin | telnetadmin | 3곳 |
| root | xc3511 | 3곳 |
| root | Aa123456. | 3곳 |
| admin | admin1234 | 3곳 |
| root | 123 | 3곳 |
| root | 12345678 | 3곳 |
사실
첫 줄이 어제 장부 ②입니다. 40곳에서 정확히 한 번씩입니다. 반대로 비밀번호 칸이 아예 비어 있는 root 는 5곳에서 38회, 한 곳이 7.6번씩 넣어 봤습니다. 어제 곳당 반복이 가장 많은 조합입니다. admin/admin 은 14곳 29회입니다.
추정 이 목록은 우리를 겨냥해 만든 게 아닙니다. 어디서나 통하는 값을 순서대로 넣어 보는 사전입니다. 그리고 카드를 등록한 41곳이 이 중 어떤 조합으로 들어왔는지는 — 장부가 따로라서 — 모릅니다.
어제 하루 전체
사실 문이 실제로 열리는 쪽(센서 01)의 하루 집계입니다. 오른쪽 칸을 함께 봐 주세요 — 숫자 하나만 보면 크기가 안 잡힙니다.
| 항목 | 9월 20일 | 견줄 것 |
|---|---|---|
| 세션 | 2,120건 | 41초에 한 번 · 9/17(791)의 2.7배 · 9/15(4,332)의 절반 — 평범한 범위 |
| 고유 출발지 | 208곳 | 한 곳당 평균 10.2건 |
| 로그인 시도 | 1,932회 | 45초에 한 번 · 한 곳당 9.3회 |
| 명령 | 2,241개 | 39초에 하나 |
| 포트 2222 (SSH) | 1,956세션 | 전체의 92.3% |
| 포트 2223 (텔넷) | 163세션 | 7.7% — 그런데 주요 세션 5건 중 3건이 텔넷 |
| 화면 녹화 | 1,754건 | 세션의 82.7% · 열람 가능 314건 · 보관 검체 142개 |
사실 세션 수만 보면 평범한 날입니다. 어제 특별한 것은 두드린 양이 아니라 들어와서 카드를 등록한 곳의 수였습니다. 문고리를 돌린 횟수가 아니라 등록 목록의 줄 수가 뛴 날입니다.
사실 어제 서버 안에서 벌어진 일을 종류별로 세면 이렇습니다.
| 무엇을 하려 했나 | 횟수 | 견줄 것 |
|---|---|---|
| 정찰 — 시스템 살펴보기 | 1,652회 | 의도 붙은 명령의 84.0% · 전체 명령의 73.7% |
| 실행 권한 부여 | 159회 | — |
| 지속성 — SSH 키 심기 | 43회 | 9/10 |
| 흔적 삭제 | 42회 | 9/10 |
| 파일 다운로드 | 38회 | 아래 줄과 7 차이 (대부분의 날은 같은 값) |
| 다운로드 후 실행 | 31회 | — |
| 정찰 — 네트워크 | 1회 | — |
| 방어 무력화 | 1회 | ATK-DD41EC 세션으로 추정 (개수 일치 근거) |
사실 의도가 붙은 명령은 1,967개로 전체의 87.8%입니다. 그중 정찰 하나가 압도적입니다. ’정찰 — 시스템’은 들어와서 이 집이 어떤 집인지 둘러보는 동작입니다. 어떤 리눅스인지, CPU 가 몇 개인지 같은 것을 묻는 명령입니다.
사실
SSH 로 들어온 쪽은 접속 프로그램의 표식(hassh)이 남습니다. 어제 표식 묶음은 47개(17일 44개)입니다. 가장 많이 온 표식 f555226d…(libssh_0.9.6 · 41곳)은 파일을 하나도 놓고 가지 않은 것으로 표기돼 있습니다. 파일을 놓고 간 표식은 16443846…(SSH-2.0-Go · 오늘 2곳) 하나뿐이고, 그건 ATK-CA5936 의 것입니다. 표식은 접속 프로그램의 표식이지 사람의 표식이 아닙니다. 같은 배포판의 기본 libssh 를 쓰는 서로 무관한 사람도 같은 값을 갖습니다.
옆 서버 — 도어락 없이 초인종만 있는 집
사실 두 번째 서버(센서 02)는 안쪽까지 들여보내지 않는 얕은 함정입니다. 도어락이 없고 초인종만 있어서 “어느 문의 초인종을 몇 곳이 몇 번 눌렀나”만 남습니다. 로그인 성공도, 명령도, 자격증명도 여기엔 존재하지 않습니다. 어제는 수집이 정상이었습니다. ADB 줄과 RDP 줄을 봐 주세요.
| 문 (서비스) | 포트 | 누른 횟수 | 누른 곳 |
|---|---|---|---|
| VNC (화면공유) | 5900 | 39,919건 (55.6%) | 228곳 |
| RDP (원격 데스크톱) | 3389 | 30,335건 (42.3%) | 117곳 |
| SMB (파일 공유) | 445 | 277건 | 53곳 |
| LDAP (계정 조회) | 389 | 148건 | 41곳 |
| MSSQL (데이터베이스) | 1433 | 11건 | 10곳 |
| ADB (안드로이드 디버깅) | (미기록) | 1,103건 | (미기록) |
사실
여섯 줄을 더하면 71,793건으로 세션 총계와 정확히 맞습니다. 하루 종일 1.2초에 한 번씩 초인종이 울린 셈입니다. 그중 ADB 는 1,103건으로 전체의 1.5%밖에 안 되지만, 이 문 자기 기준으로는 처음 보는 규모입니다. 아카이브에 적힌 값 중 가장 큰 것이 사흘 전 299건, 그 전에는 9월 5일의 111건이었습니다. 3.7배, 9.9배입니다. 그런데 옆 서버에 남은 파일 4건은 전부 8월 28일부터 있던 해시이고, 출처 ATK-C70753 만 새 별칭입니다. 누르는 건 늘었는데 놓고 간 물건은 옛것 그대로입니다. 이 부분은 오늘 영상이 다른 비유로 다뤘습니다.
추정
이 4건을 ADB 로 들어온 것으로 읽는 건, 옆 서버에서 파일이 남는 통로가 ADB 뿐이라는 구조 때문입니다. 데이터가 그렇게 적어 준 건 아닙니다. 출발지 별칭만 매번 바뀌었습니다(ATK-4731EE → C93E77 → C70753).
사실 원격 데스크톱 쪽은 돌아왔습니다. 9월 10일 34,811건, 13일 42,578건으로 폭주했다가 15일 2,031건, 17일 2,210건으로 잦아들었던 문이 어제 30,335건입니다. 아카이브에서 세 번째로 큰 값이고, 2.8초에 한 번입니다. 누른 곳은 117곳으로 10일(109곳)·13일(107곳)과 같은 띠 안입니다. 곳이 늘어난 게 아니라 한 곳이 259번씩 누른 날입니다.
사실
돌아온 건 숫자만이 아닙니다. 원격 데스크톱으로 접속할 때 상대가 스스로 적어 보내는 이름표(쿠키)가 있는데, 10일·13일에 1위였다가 15일·17일 목록에서 사라졌던 mstsc 가 어제 26,560번으로 다시 1위입니다. RDP 의 87.6%입니다. 그 뒤로 <ip> 428, hello 169, Administr 94, Admin 66, Domain 2 입니다. Admin 은 10일·13일·15일·17일 목록에 없던 문자열이고, Administr 94 는 종전 최대 6(9/10)의 15.7배입니다. 이름표는 상대가 적는 값이라 얼마든지 거짓으로 쓸 수 있습니다.
사실
초인종을 가장 많이 누른 곳도 낯익습니다. ATK-E37B01(149.50.x.x)이 **29,437건, 옆 서버 전체의 41.0%**입니다. 10일(34,229)·13일(34,899)에 1위였다가 15일·17일 상위 12곳에서 사라졌던 별칭입니다. RDP 30,335건과 898건 차이라서 이 별칭이 원격 데스크톱 문을 눌렀을 개연성은 있지만, 출발지와 문을 잇는 칸이 JSON 에 없어 확정하지 않습니다. 2~6위는 6,562 · 6,550 · 6,540 · 5,659 · 5,652 로 좁은 띠에 몰려 있고, 7위에서 1,073 으로 뚝 떨어집니다. 상위 12곳이 88.1%를 누르고, 나머지 454곳은 곳당 18.9번입니다.
사실
화면공유는 39,919건으로 17일 최저(20,953)에서 1.9배 올랐지만 8월 26일9월 13일 띠(29,11165,487) 안입니다. 제안된 버전은 92.4%가 오래된 003.003 입니다. 파일 공유 쪽은 제안 417건 중 SMB 2.??? 3건을 뺀 414건(99.3%)이 SMB1 세대 규격입니다. 세션 277건보다 제안이 많은 건 한 번 협상할 때 여러 규격을 줄줄이 늘어놓기 때문입니다.
추정 구식 버전·구식 규격을 먼저 내미는 것은 오래된 시스템까지 응답하게 만들려는 범용 스캐너의 행동에 가깝습니다. 우리를 표적으로 골랐다는 근거도, 특정 취약점을 노렸다는 근거도 없습니다. 그리고 이 문단의 숫자는 전부 초인종이 울린 기록입니다. 이 집에는 문이 없으니 “들어와서 무엇을 했다”는 문장이 성립하지 않습니다.
공격자가 쓴 수법을 국제 분류표에 대응시키면
MITRE ATT&CK 은 공격 수법마다 번호를 붙여 놓은 국제 목록입니다. 어제 본 행동을 그 번호에 맞추면 이렇습니다. ID 를 누르면 원문 설명으로 갑니다 — 우리 말을 믿지 말고 직접 확인하시라고 링크를 겁니다. 첫 줄이 오늘의 축입니다.
- T1098.004Account Manipulation: SSH Authorized Keys — '지속성 — SSH 키 심기' 43회, 공개키 a8460f44… 출처 41곳 (오늘의 축 ①)추정
- T1110.001Brute Force: Password Guessing — 로그인 시도 1,932회, 인용 가능 조합 20종 · 비공개 1,208종추정
- T1078.001Valid Accounts: Default Accounts — admin/admin 14곳 · root/root 6곳 · root/(빈칸) 5곳 · root/xc3511 3곳 · telnetadmin/telnetadmin 3곳 등 기본값 조합, 주요 세션 5건 전부 로그인 성공추정
- T1021Remote Services — 텔넷(2223) · SSH(2222) 원격 접속추정
- T1082System Information Discovery — '정찰 — 시스템' 1,652회추정
- T1105Ingress Tool Transfer — '파일 다운로드' 38회, 유포지 160[.]119[.]66[.]206 에서 재빌드된 net.x86_64 수신추정
- T1222.002File and Directory Permissions Modification: Linux — '실행 권한 부여' 159회추정
- T1059.004Command and Scripting Interpreter: Unix Shell — '다운로드 후 실행' 31회, 셸 스크립트 kla.sh추정
- T1070Indicator Removal — '흔적 삭제' 42회 (9/17 의 2.8배). 파일 삭제인지 히스토리 삭제인지 세부 분류 없음추정
- T1562Impair Defenses — '방어 무력화' 1회 (ATK-DD41EC). 무엇을 껐는지 알 수 없어 하위 기법은 붙이지 않는다추정
- T1595Active Scanning — 02 의 VNC 39,919 · RDP 30,335 · ADB 1,103 접촉과 프로토콜 협상 단계 관측추정
- T1133External Remote Services — 인터넷에 노출된 3389 · 5900 · 445 · 389 · 1433 및 ADB 에 대한 접촉추정
- T1027.002Obfuscated Files or Information: Software Packing — UPX 압축 검체에서만 나온 지표 12건 (배경, 오늘 신규 아님)추정
사실
열세 줄 전부에 [추정] 배지가 붙은 것을 봐 주세요. 우리 손에 있는 건 명령의 ’의도 분류 결과’와 ‘몇 번이었나’, 파일의 이름과 크기까지입니다. 명령 원문도 파일 내용도 없습니다. 분류표에 맞추는 일은 언제나 해석이고, 해석에는 해석이라고 적습니다. 특히 열 번째 줄 T1562 는 ’방어 무력화 1회’가 ATK-DD41EC 의 것이라는 개수 일치 추론 위에 있습니다.
전에 이런 모양이 있었다
추정
Mirai 봇넷 (2016). 텔넷의 기본 자격증명 사전으로 리눅스 장비에 들어간 뒤, CPU 종류별로 만들어 둔 정적 링크 ELF 를 셸 스크립트 로더로 내려받아 실행하는 구조였습니다. 어제 표에 있는 root/xc3511, root/root, admin/admin, telnetadmin/telnetadmin 은 2016년에 공개된 Mirai 소스코드의 자격증명 목록에 들어 있는 값입니다. 그리고 ’텔넷 로그인 → /bins/ 경로의 셸 스크립트 → 정적 링크·이름표 제거 ELF → 실행 권한 부여 → 실행’이라는 ATK-BDB53E 의 전달 형태도 같습니다. (출처 유형: 미국 US-CERT 경보 TA16-288A · 공개된 소스코드 · 다수 벤더 분석 보고서)
추정 GoldBrute (2019). 인터넷에 열린 원격 데스크톱 서버를 대규모로 무차별 대입하던 봇넷입니다. 소수 출발지가 3389 포트를 매우 높은 빈도로 두드리는 형태가 어제 옆 서버(곳당 259.3회, 1위 별칭 29,437건)와 닮았습니다. 다만 어제 옆 서버는 협상 단계만 관측돼 실제 대입 내용은 확인할 수 없고, 이 봇넷과 연결할 근거는 없습니다. (출처 유형: 보안 벤더 연구 블로그(Morphus Labs) 공개 분석)
사실 여기서 멈춥니다. 검체 분류 서비스(VirusTotal)가 연동돼 있지 않아 어제 실행파일이 Mirai 계열이라는 판정은 하지 않습니다. 닮은 건 자격증명 값과 파일의 생김새까지입니다.
그래서 뭘 해야 하나
41곳이 오늘 우리 도어락에 올 지는 우리가 정할 수 없습니다. 바꿀 수 있는 건 우리 집 도어락이 어떻게 잠겨 있고, 등록 목록을 누가 들여다보고, 우리 집에서 밖으로 나가는 길이 어떻게 돼 있느냐입니다.
사실
1. 기본 계정·쉬운 비밀번호를 그대로 쓰고 있다 · 가능성 높음
위 표 스무 줄이 전부 장비나 배포판이 출고할 때 넣어 두는 값이거나 연속 숫자, 아니면 봇 표식 문자열입니다. admin/admin 14곳 29회, root/root 6곳, root/(빈칸) 5곳 38회, root/123456 4곳, root/xc3511 3곳. 어제 기록된 세션 다섯 건은 전부 로그인에 성공했고, 성공한 뒤 3.7초에서 9.2초 안에 실행 권한 부여·다운로드·키 심기까지 갔습니다. 실제 서버였다면 그 몇 초가 침해 시점입니다.
사실
2. 비밀번호 로그인을 허용하고 열쇠 방식을 안 쓰고 있다 · 가능성 높음
어제 로그인 시도 1,932회 중 SSH 세션은 1,956건입니다. 비밀번호 추측이 통한 뒤 들어온 쪽이 가장 먼저 한 일이 자기 카드를 등록하는 것이었고, 어제 그 출처가 41곳입니다. 열쇠 방식만 허용했다면 1,932회 시도는 인증 단계에서 끝납니다. 그리고 이미 등록된 카드가 있다면, 비밀번호를 나중에 바꿔도 소용없습니다. authorized_keys 파일을 직접 열어서 모르는 줄이 있는지 보는 것이 비밀번호 바꾸기보다 먼저입니다. 어제는 그 뒷문을 하루에 41곳이 만들고 갔습니다.
사실 3. 관리 포트를 인터넷에 그대로 열어 두고 있다 · 가능성 높음 우리 서버 주소는 어디에도 알린 적이 없습니다. 그런데도 어제 문이 열리는 쪽에 208곳, 옆 서버에 466곳이 왔습니다. 두 대를 합쳐 상한 674곳입니다. 특정 대상을 고른 흔적이 아니라 열려 있는 문을 찾는 형태입니다. SSH·텔넷·VNC·RDP·SMB·ADB 중 어느 하나만 열려 있어도 진입점이 됩니다. 어제 옆 서버는 한 곳이 2만 9,437번 눌렀습니다.
추정
4. 횟수 기반 차단(fail2ban 등)이 없다 · 가능성 중간
어제는 두 얼굴입니다. 첫 번째 집의 주력 형태는 345gs5662d34 40곳 40회, 곳당 정확히 1회입니다. admin/admin 도 곳당 2.1회. ‘5회 실패하면 잠금’ 규칙은 발동하지 않습니다. 반대로 옆 서버의 원격 데스크톱은 곳당 259.3회라 그 규칙에 확실히 걸립니다. 그리고 ATK-BDB53E 는 2.43초 간격으로 세션 두 개를 겹쳐 돌렸습니다. 방어 종류에 따라 결과가 갈리기 때문에 ’높음’으로 두지 않습니다. 출발지 단위 제한이 없으면 3389 한 포트에 하루 3만 건이 그대로 들어오고, 있어도 어제의 ’40곳이 한 번씩’은 통과합니다.
사실
5. 밖으로 나가는 연결을 안 막고 있다 · 가능성 높음
어제 192,328바이트 실행파일은 서버가 바깥으로 나가 HTTP 로 받아온 것입니다. 나가는 길이 막혀 있었다면 ATK-BDB53E 의 명령 7개는 다운로드 단계에서 끊깁니다. ‘파일 다운로드’ 38회, ‘다운로드 후 실행’ 31회, ‘실행 권한 부여’ 159회가 같은 자리에서 멈춥니다. 그리고 그 실행파일은 사흘 사이 다시 만들어져 해시가 바뀌었습니다. 해시로 막는 규칙은 어제 파일을 놓치지만, 나가는 길을 막는 규칙은 해시와 무관하게 막습니다.
추정 6. 로그를 서버 안에만 두고 있다 · 가능성 중간 어제 흔적을 지우려는 의도가 42회, 9월 17일의 2.8배입니다. 방어 무력화도 1회 있었습니다. 우리는 허니팟이라 세션의 82.7%(1,754건)를 따로 녹화해 두기 때문에 지워도 남습니다. 실제 서버는 로그를 밖으로 내보내지 않으면 지워진 뒤에 남는 게 없습니다. 언제 들어와 어떤 카드를 등록했는지조차 나중에 재구성할 수 없게 됩니다. 다만 그 42회가 어느 세션의 것인지 데이터에 없어 ’중간’으로 둡니다.
사실
다시 만들어진 net.x86_64 의 새 해시 2cebccdc… 와 유포지 hxxp://160[.]119[.]66[.]206 은 C-TAS(한국인터넷진흥원 사이버 위협정보 공유 체계) 신고 대상입니다. 이 유포지는 9월 15일 첫 관측 이후 세 번째 보고가 됩니다. 다만 우리가 확인할 수 있는 것은 전송이 성공했다는 것까지이고, 상대 쪽에 실제로 적재됐는지는 따로 확인해야 합니다.
우리가 모르는 것
이 블로그가 다른 곳과 다른 지점입니다. 아는 것보다 모르는 것을 적는 데 시간을 더 씁니다. 오늘은 특히 그렇습니다. 네 장부가 서로를 모르니까요.
오늘의 축에 대해 확인할 수 없는 것
- [확인 불가] 공개키 출처 41곳 · libssh_0.9.6 표식 41곳 ·
345gs5662d34조합 40곳 · SSH 키 심기 의도 43회가 같은 집합인지 JSON 이 연결해 주지 않습니다. 숫자가 같은 자릿수로 같은 날 뛰었다는 정황뿐이며, 8월 18일 브리프가 지적한 것과 같은 한계입니다.f555226d…의 검체 배달 칸이 false 인 것은 오히려 두 집합이 다르거나 공개키가 ’검체’로 세어지지 않음을 시사하는데, 어느 쪽인지 JSON 이 설명하지 않습니다. - [확인 불가]
a8460f44…를 배달한 별칭은 41곳 중 10곳만 노출돼 나머지 31곳의 별칭을 모릅니다. 노출된 10개는 전부 아카이브에 없던 별칭이지만, 나머지 31곳도 그런지는 알 수 없습니다. - [확인 불가] ‘흔적 삭제’ 42회가 어느 세션에 속하는지 JSON 이 잇지 않습니다. 주요 세션 5건의 의도 어디에도 ’흔적 삭제’가 없으므로, 주요 세션 밖의 세션들에서 나온 값입니다.
- [주의] ’견준 날 중 최대’는 브리프가 이 값을 나열한 17일 기준입니다. 아카이브 28일치 중 나머지 날의 이 값은 브리프 목록에 없습니다. 아카이브에 9/9 · 9/11 · 9/12 · 9/14 · 9/16 · 9/18 · 9/19 가 없어 ‘종전 최대’ · ‘연속’ 표현은 전부 **‘아카이브에 있는 날 기준’**입니다. 9월 17일 브리프가 쓴 ’ADB 종전 최대 52건’은 9월 5일의 111건을 빠뜨린 값이었고, 오늘은 그 값을 포함해 비교했습니다.
다시 만들어진 파일에 대해 확인할 수 없는 것
- [확인 불가]
net.x86_64의 해시가cd6ccc5d…에서2cebccdc…로 바뀐 것이 기능 변경 · C2 변경 · 재패킹 중 무엇인지 검체 내용이 브리프에 없어 알 수 없습니다. 1,696바이트 차이라는 사실만 있습니다. 9월 18일 · 19일 브리프가 아카이브에 없어 ’사흘 사이’의 정확한 교체 시점도 모릅니다. - [확인 불가] 유포지
160[.]119[.]66[.]206과 침입 출발지160.119.x.x가 같은 기계인지 알 수 없습니다. 뒤 두 옥텟이 가림 처리돼 있고 복원 대상이 아닙니다. - [확인 불가]
ATK-BDB53E두 세션이 같은 자격증명으로 들어왔는지 세션 단위 자격증명이 JSON 에 없어 알 수 없습니다. 2.43초 간격 병렬 실행이 예약인지 우연인지도 두 번(9/17 · 오늘)뿐이라 주기라고 부르지 않습니다. - [확인 불가]
ATK-DD41EC세션이 9.2초에 명령 28개인 것이 종전 계열(62~91초 · 22개)과 같은 도구의 속도 변화인지 다른 도구인지 명령 원문이 없어 알 수 없습니다. ‘방어 무력화’ 1회가 이 세션의 것이라는 읽기는 개수 일치 근거의 추론입니다.
데이터 자체를 의심해야 하는 것
- [주의] 표식 목록의 ‘집계’ 값은 누적으로 읽을 수 없습니다.
f555226d…는 9/17 205 → 어제 310 인데,3356ae61…(PuTTY_Release_0.84)은 9/4 · 9/5 에 이미 있었는데도 어제 집계 3 = 오늘 3 으로 적혀 있습니다. - [확인 불가] 옆 서버 ADB 1,103건의 출발지 수 · 투입 명령 · 포트가 JSON 에 없습니다. 파일 4건을 ADB 경유로 읽는 것은 구조상 추정이고, 4건에는 파일 종류 칸이 없어 무엇인지도 모릅니다.
- [확인 불가] RDP 30,335건이
ATK-E37B01한 곳에서 나왔는지 확정할 수 없습니다. 29,437건과 898건 차이라는 정황뿐이고, JSON 에는 출발지별 서비스 매핑이 없습니다.mstsc·Admin·Administr이름표가 어떤 도구 · 의도를 뜻하는지도 판단하지 않습니다. - [확인 불가] 옆 서버 2
6위 다섯 곳이 5,6526,562 의 좁은 띠에 몰린 이유(같은 도구의 병렬 실행인지 우연인지)와 이들이 두드린 서비스는 JSON 에 없습니다. 앞 두 옥텟이 서로 다른 별칭들을 같은 운영자로 묶을 근거는 없습니다. - [확인 불가] 화면공유 버전 제안 합(39,863)과 세션(39,919)의 56건 차이, RDP 이름표 합(27,319)과 RDP 세션(30,335)의 3,016건 차이의 원인은 JSON 이 설명하지 않습니다.
- [확인 불가] 옆 서버에서 한 출발지가 여러 문을 함께 훑었는지 계산할 수 없습니다. 서비스별 고유 출발지 합(449)과 전체(466)의 차 17 이 ADB 출발지인지 교집합인지 구분할 수 없습니다. 0 으로 적으면 거짓이 되므로 ’산출 불가’로 둡니다.
- [주의] ’아카이브에 없던 해시 · 별칭’이라는 판단은 8/16~9/17 브리프 28건과 대조한 것이지 원본 로그 전수 대조가 아닙니다.
일부러 연결하지 않은 것
- [제외] 배경 통계로 들어온 취약점 지표(추적 CVE 7,636건 · KEV 400건 · 랜섬웨어 연계 확인 100건)는 KISA 보안공지에서 뽑은 값입니다. 어제 관측된 어떤 세션 · 검체와도 연결되지 않습니다. 어제 두 서버의 관측은 전부 취약점 번호를 참조하지 않는 자격증명 추측 · 프로토콜 협상입니다.
- [제외] 압축을 풀어야만 드러나는 유포지
31[.]77[.]227[.]121/bins/12건은 8월 16일 이후 반복 지표라 어제의 신규 지표가 아닙니다. 어제 첫 번째 서버에 압축 실행파일은 없었습니다. 평문 지표로 남은 discord 웹훅 URL 1건도 디팽 상태로만 보관합니다. - [확인 불가] C-TAS 신고는 전송이 성공했다는 것까지만 확인됩니다. 어제 새 해시와 유포지가 KISA 에 적재됐는지는 따로 확인해야 합니다.
아예 판단하지 않는 것
- 통신사·조직(ASN·ISP) — 관련 데이터베이스가 없습니다. 추정하지 않습니다.
- 지리 정보 — 위와 같습니다. 애초에 IP 지리정보는 귀속의 근거가 되지 못합니다. 이 글은 어떤 국가·기업·개인도 공격자로 지목하지 않습니다.
- VPN·Tor·클라우드 여부 — 판별 수단이 없습니다.
- 검체 분류(VirusTotal) — 연동돼 있지 않습니다. 검체 분류는 MalwareBazaar 태그를 쓰는데, 어제 새 실행파일에는 태그가 없습니다.
- 접속 프로그램 문자열(User-Agent) — 두 관측면 다 웹(HTTP)이 아닙니다. 01 은 SSH·텔넷, 02 는 SMB·RDP·VNC·MSSQL·LDAP·ADB 입니다. HTTP 공격은 별도 소스입니다.
- 취약점 번호(CVE) 연결 — SSH·텔넷 공격은 대부분 특정 취약점을 참조하지 않고, 02 도 규격을 맞추는 단계라 마찬가지입니다.
같은 카드 한 장을 하루에 41곳이 우리 도어락에 등록하고 갔습니다. 우리가 견준 날 중 가장 많았던 17곳의 2.4배입니다. 같은 날 비밀번호 장부, 접속 프로그램 장부, 행동 분류 장부도 나란히 2~3배로 뛰었습니다. 그런데 네 장부는 서로를 모릅니다. 한 손이었는지 네 손이었는지, 기록은 말해 주지 않습니다.
그 옆에서 사흘 전에 “안 바뀌었다”고 적었던 파일이 바뀐 채 돌아왔습니다. 무엇이 바뀌었는지는 모릅니다. 모르는 것은 모른다고 둡니다. 모르는 것을 모른다고 적는 것도 관측의 일부입니다.
대신 이쪽에서 할 수 있는 건 분명합니다. 도어락의 등록 목록(authorized_keys)을 직접 열어 모르는 줄이 있는지 보고, 비밀번호 대신 열쇠 방식만 허용하고, 관리 포트를 인터넷에 그대로 내놓지 않고, 서버가 밖에서 파일을 받아오는 길을 막고, 기록은 서버 밖에 남기는 것. 어제 41곳이 가리킨 곳은 정확히 거기였습니다.
관측일은 2026년 9월 20일이고, 이 글은 그다음 날 정리했습니다. 출발지 IP 는 브리프에 가림 처리된 형태(130.12.x.x, 160.119.x.x, 116.92.x.x, 149.50.x.x) 그대로 옮겼고 복원하지 않았습니다. 카드를 등록한 41곳은 별칭이 10곳까지만 노출돼 있어 대표 IP 를 적지 않았습니다. 유포지 주소는 실수로 접속되지 않도록 디팽(hxxp://, [.]) 상태를 본문과 IOC 블록 모두에서 유지했습니다. 자격증명은 서로 다른 IP 3곳 이상에서 반복 관측된 조합 20개만 원문 인용했고, 나머지 1,208개는 개수만 밝히고 값은 적지 않았습니다. 통신사·국적·VPN 여부처럼 우리에게 계측 수단이 없는 항목은 추정하지 않고 “모른다”로 남겨 뒀습니다.
