SecurityHeroblog

어제 107곳이던 게 오늘 8곳 — 네 숫자가 같이 내려왔다

8월 31일, 어제 107곳·107곳·106곳·116회였던 네 숫자가 나란히 8이 됐습니다. 같이 올랐다가 같이 내려왔다는 건 그것들이 한 덩어리였다는 쪽을 강하게 가리키지만, 데이터가 넷을 묶어 준 적은 여전히 없습니다. 대신 문을 두드린 출발지는 324곳으로 16일 중 네 번째로 많았고, 한 곳당 세션은 2.40회로 최저였습니다.

버스 정류장에 서 있다고 해 봅시다.

방금 전까지 아무도 없던 정류장에 갑자기 사람이 백 명 넘게 서 있습니다. 그런데 안내판을 봐도 어떤 버스가 왔다 갔는지는 안 나옵니다. 여러분이 볼 수 있는 건 지금 눈앞에 서 있는 사람들뿐입니다.

그래서 이렇게 세어 봅니다. 우산 든 사람 107명. 배낭 멘 사람 107명. 같은 회사 신발 신은 사람 106명. 그리고 종이 지도를 펴 든 사람 116명.

한 버스에서 내린 것 같죠. 그런데 여러분은 그 버스를 보지 못했습니다. 숫자가 비슷하다는 것만 봤을 뿐입니다.

여기서 하루가 지납니다. 다음 날 같은 정류장에 다시 가 보니 우산 8명, 배낭 8명, 같은 신발 8명, 지도 8명입니다. 같이 올랐던 것들이 같이 내려왔습니다.

이제 “한 버스였다”는 짐작은 훨씬 그럴듯해집니다. 그래도 여전히, 여러분은 버스를 본 적이 없습니다.

2026년 8월 31일 하루, 우리 서버에 남은 기록이 정확히 그 모양입니다.

먼저 낯선 말 하나만 풀고 가겠습니다. 허니팟은 일부러 허술하게 만들어 인터넷에 내놓은 미끼 서버입니다. 진짜 업무는 하지 않습니다. 누가 들어와서 무엇을 하는지 통째로 기록하려고 열어 둔 기계입니다. 아래 숫자는 전부 거기에 찍힌 것입니다.

네 숫자가 같이 내려왔습니다

사실 어제(8월 30일) 글에서 우리는 숫자 세 개가 겹친 것을 주제로 삼았습니다. 이날은 그 숫자들이 어떻게 됐는지를 적습니다.

무엇 8월 30일 8월 31일
아이디·비밀번호가 같은 문자열 345gs5662d34 / 345gs5662d34 를 던진 출발지 107곳 (112회) 8곳 (8회)
389바이트 똑같은 열쇠 파일(a8460f44…)을 남긴 출처 107곳 (112회) 8곳 (8회)
접속 프로그램 지문 f555226df…(SSH-2.0-libssh_0.9.6)가 찍힌 출발지 106곳 8곳
‘지속성 — SSH 키 심기’ 로 분류된 명령 116회 8회

사실 네 값이 나란히 8 입니다. 107에서 8이면 13분의 1 이고, 116에서 8이면 14분의 1 입니다.

추정 어제 우리는 이 값들을 “하나의 흩어진 무리”로 읽으면서, 그건 우리가 나란히 놓고 본 것이지 데이터가 묶어 준 게 아니다 라고 단서를 달았습니다. 이날 넷이 같이 내려온 것은 그 읽기를 강화합니다. 크기가 우연히 비슷한 서로 다른 네 무리였다면, 다음 날 넷이 똑같이 8로 떨어질 이유가 없기 때문입니다.

사실 그래도 선은 그대로 긋습니다. 원자료 안에는 여전히 이 넷을 서로 연결해 주는 칸이 없습니다. 강화된 추정이지 확정된 사실이 아닙니다. 정류장 이야기로 돌아가면, 우리는 버스를 본 게 아니라 두 번의 인원수를 센 것입니다.

추정 그리고 같이 내려왔다는 건 다른 뜻도 함께 가집니다. 그 파동은 하루짜리였습니다. 없어졌다기보다, 오늘은 다른 정류장에 섰다고 보는 편이 자연스럽습니다. 어제가 “규모와 흩어짐이 감시를 무력화한다”는 이야기였다면, 이날은 “그 규모가 하루만 머물렀다” 는 이야기입니다.

사실 근거를 하나 더 답니다. 이날 공개키를 남기고 간 8곳의 별칭(ATK-F52F12 · ATK-ECACA6 · ATK-81D609 · ATK-E5EB34 · ATK-4F20AC · ATK-7B8ADA · ATK-21F6A0 · ATK-3E7375)은 어제 글에 적은 열 곳과 하나도 겹치지 않습니다. 같은 파일이 매일 다른 출발지에서 심깁니다.

그런데 찾아온 곳의 수는 오히려 많았습니다

사실 이날 우리 허니팟 01에 남은 세션은 779건입니다. 우리가 확인할 수 있는 8월 16일~31일 열엿새 중 두 번째로 적습니다(최소는 8월 29일 634건). 명령 760개도 두 번째로 적고(최소는 8월 24일 612개), 로그인 시도 440회는 세 번째로 적습니다.

사실 그런데 서로 다른 출발지는 324곳으로, 같은 열엿새 중 네 번째로 많습니다(8월 27일 442곳, 8월 26일 373곳, 8월 25일 361곳 다음).

추정 둘을 나누면 이렇게 됩니다. 출발지 한 곳당 세션 2.40회. 이 값은 열엿새 중 가장 낮습니다. 다음으로 낮은 8월 29일이 3.46회이고, 가장 높았던 8월 22일은 17.33회였습니다. 로그인 시도로 나눠도 곳당 1.36회로 최저입니다.

추정 정류장에 선 사람은 많은데, 한 사람이 머문 시간은 이날이 가장 짧았습니다. 찾아온 곳은 늘고, 각자 한 일은 줄었습니다.

하루를 시간 순서로

시간 순서로 늘어놓으면 이렇게 됩니다. 줄이 많은데, 전부 읽지 않으셔도 됩니다. 아래쪽에 실제 시각이 찍힌 다섯 줄만 보시면 됩니다 — 걸린 시간과 명령 개수가 서로 얼마나 닮았는지가 이날의 핵심입니다.

  1. 사실 허니팟 01(Cowrie, 고상호작용): 세션 779건 · 고유 출발지 324곳 · 로그인 시도 440회 · 명령 760개 · TTY 녹화 195건. 포트 2222(SSH) 556 / 2223(텔넷) 223
  2. 사실 열엿새(8/16~8/31) 대비 위치: 세션 779건은 두 번째로 적고(8/29 634건이 최소), 명령 760개도 두 번째로 적으며(8/24 612개가 최소), 로그인 시도 440회는 세 번째로 적다(8/29 251회, 8/24 410회). 반대로 고유 출발지 324곳은 네 번째로 많다(8/27 442곳, 8/26 373곳, 8/25 361곳 다음)
  3. 추정 출발지 한 곳당 세션은 779÷324=2.40회로 열엿새 최저다(다음이 8/29의 3.46회, 최대는 8/22의 17.33회). 곳당 로그인 시도 440÷324=1.36회도 최저지만 8/29의 1.37회와 사실상 같다
  4. 사실 어제 브리프의 네 값이 이날 전부 8이다 — 자격증명 345gs5662d34/345gs5662d34 서로 다른 출발지 8곳·8회(어제 107곳·112회), 389바이트 OpenSSH RSA 공개키 a8460f44… 출처 8곳·8회(어제 107곳·112회), SSH 접속 프로그램 지문 f555226df1963d1d3c09daf865abdc9a(SSH-2.0-libssh_0.9.6) 이날 8곳(어제 106곳), 명령 의도 '지속성 — SSH 키 심기' 8회(어제 116회)
  5. 추정 네 값이 오를 때(어제)도 내릴 때(이날)도 함께 움직였다. 어제 붙여 둔 '수치 일치이지 데이터가 묶어 준 사실이 아니다'라는 단서는 그대로 유지한다 — 강화된 추정이지 확정된 사실이 아니다
  6. 사실 공개키 a8460f44… 는 8/16부터 열엿새 연속 같은 해시다. 하루 출처 수 추이: 8/18 16곳 → 8/19 12곳 → 8/23 6곳 → 8/25 21곳 → 8/27 26곳 → 8/29 9곳 → 8/30 107곳 → 이날 8곳
  7. 사실 이날 이 공개키를 남긴 8개 별칭(ATK-F52F12 · ATK-ECACA6 · ATK-81D609 · ATK-E5EB34 · ATK-4F20AC · ATK-7B8ADA · ATK-21F6A0 · ATK-3E7375)은 어제 노출된 10개 별칭과 하나도 겹치지 않는다. 같은 파일이 매일 다른 출발지에서 심긴다
  8. 사실 명령 의도 분류: 실행 권한 부여 195 / 정찰(시스템) 119 / 다운로드 후 실행 30 / 파일 다운로드 30 / 흔적 삭제 9 / 지속성(SSH 키 심기) 8 / 정찰(네트워크) 1. 분류 합계 392건은 전체 명령 760개의 51.6%다
  9. 추정 '실행 권한 부여'(195회)가 '정찰(시스템)'(119회)을 앞질렀다. 열엿새 중 이 역전은 8/29(161회 대 75회)에 이어 두 번째다 — 나머지 열나흘은 모두 정찰이 1위였고, 8/27에는 정찰이 전체 명령의 78.3%였다. 정찰을 건너뛰고 곧장 파일에 실행 권한을 주는 형태가 늘어난 것으로 읽히지만, 명령 원문이 없어 단정하지 않는다
  10. 사실 '파일 다운로드' 30회와 '다운로드 후 실행' 30회가 정확히 같다. 어제도 42회·42회로 같았다 — 내려받은 것은 사실상 예외 없이 실행 단계로 이어진다
  11. 사실 '흔적 삭제'는 9회로 어제 114회에서 크게 줄었다. 확인 범위 최고치는 8/25의 70회와 8/30의 114회다
  12. 사실 이날 자격증명 1위는 admin/admin(서로 다른 출발지 15곳·35회)이다. 어제 1위였던 345gs5662d34/345gs5662d34는 8곳으로 내려가고 평범한 기본값 사전이 다시 맨 위로 올라왔다. 인용 기준(서로 다른 IP 3곳 이상)을 넘긴 조합은 17종이다
  13. 사실 인용 기준을 넘지 못해 값을 싣지 않은 자격증명 조합이 269종 있다. 확인 범위에서 적은 편이다(최대 8/18 1,388종, 최소 8/29 142종)
  14. 사실 ATK-90AD90(125.229.x.x, 텔넷) 로그인 성공. 명령 31개, 의도 3종(다운로드 후 실행 · 실행 권한 부여 · 파일 다운로드), 다운로드 1건, TTY 녹화됨, 완결성 16
  15. 사실 ATK-5BDF54(114.35.x.x, 텔넷) 로그인 성공. 명령 31개, 의도 3종, 다운로드 1건, TTY 녹화됨, 완결성 16
  16. 사실 ATK-827EAF(114.38.x.x, 텔넷) 로그인 성공. 명령 31개, 의도 3종, 다운로드 1건, TTY 녹화됨, 완결성 16
  17. 사실 ATK-14EBCD(187.109.x.x, 텔넷) 로그인 성공. 명령 31개, 의도 3종, 다운로드 1건, TTY 녹화됨, 완결성 16
  18. 사실 ATK-ED706F(123.139.x.x, 텔넷) 로그인 성공. 명령 31개, 의도 3종, 다운로드 1건, TTY 녹화됨, 완결성 16. 이날 완결 세션 중 마지막이며, 이후 브리프 생성 시각(15:05Z)까지 약 여섯 시간 동안 추가된 완결 세션이 없다
  19. 추정 완결 세션 다섯 건이 명령 수(31개)·의도 조합·다운로드 수·완결성(16)까지 전부 같고 걸린 시간도 66.9~79.9초 안에 들어온다. 다섯 건 모두 306바이트 셸 스크립트를 남긴 열 곳 안에 있다. 서로 다른 출발지가 같은 스크립트를 실행한 자동화로 읽히나, 텔넷에는 접속 프로그램 지문이 존재하지 않아 '같은 도구'를 지문으로 확인할 수단이 이날 완결 세션에는 없다
  20. 사실 이날 01이 확보한 검체는 3종이고 크기 합계는 704바이트다(306 + 389 + 9). 어제는 6종·1,158바이트였다. 실행 바이너리는 이날도 0종이다 — 306바이트 POSIX 셸 스크립트, 389바이트 OpenSSH 공개키, 9바이트 ASCII 텍스트가 전부다
  21. 사실 SSH 접속 프로그램 지문 11종이 기록됐다. 이날 출발지 1위는 acaa53e0a7d7ac7d1255103f37901306(SSH-2.0-OpenSSH_7.4)로 이날 113곳·누적 589곳이며, 01 전체 고유 출발지 324곳의 34.9%다. 2위가 f555226df…(libssh_0.9.6) 8곳이다. 11종 중 '검체를 넣고 갔다'로 표시된 것은 16443846184eafde36765c9bab2f4397(SSH-2.0-Go, 이날 3곳)과 98ddc5604ef6a1006a2b49a58759fbe6(SSH-2.0-Go, 이날 2곳) 둘이다
  22. 사실 허니팟 02(Beelzebub+adbhoney, 저상호작용): 접촉 57,058건 · 고유 출발지 293곳. VNC(5900) 53,310건이 전체의 93.4%인데 출처는 46곳뿐이다(곳당 평균 1,159회). RDP(3389)는 3,410건에 출처 164곳으로 곳당 20.8회다. 나머지는 SMB(445) 137건·47곳, LDAP(389) 92건·12곳, MSSQL(1433) 57건·15곳, ADB 세션 52건이다. 다섯 서비스와 ADB 합계가 57,058로 총계와 정확히 맞는다
  23. 추정 02의 RDP 접촉 3,410건·출처 164곳은 02를 브리프에 넣은 8/26 이후 엿새 중 둘 다 최대다(직전 최대는 8/30의 2,139건, 8/26의 139곳). 같은 기간 VNC는 8/27 29,111건에서 이날 53,310건 사이를 오갔고 출처는 36~50곳을 벗어난 적이 없다. VNC는 소수가 만드는 고정된 배경이고, 이날 실제로 변한 것은 RDP 쪽 출처 폭이다
  24. 추정 02의 상위 출발지 9곳(각 5,093~7,525건) 합계는 53,240건으로 VNC 접촉 53,310건의 99.9%에 해당한다. 다만 데이터가 출발지와 서비스를 연결해 주지 않으므로 수치 근접일 뿐이다
  25. 사실 02의 VNC 협상에서 상대가 제안한 버전은 003.003이 53,262회, 003.008이 34회다 — 제안된 값의 99.94%가 더 낮은 쪽이다. SMB 방언 제안 8종 중 SMB 2.???는 2회뿐이고 나머지 407회는 NT LM 0.12 이하의 구버전이다
  26. 사실 02의 RDP 쿠키 값은 hello 2,709회(RDP 접촉 3,410건의 79.4%) · <ip> 467회 · 빈 값 5회 · administrator 2회 · zgrab 1회 · BqDARFPuX 1회다. 쿠키가 기록된 합계 3,185건은 RDP 접촉 3,410건보다 225건 적다
  27. 추정 RDP 쿠키 'zgrab' 1회는 이날 유일하게 상대가 스스로 도구 이름을 적어 넣은 접촉이다. 같은 날 01의 SSH 접속 프로그램 지문에도 dd9bcf093c355da7000132131cb36fd0(SSH-2.0-ZGrab ZGrab SSH Survey, 이날 2곳·누적 50곳)가 있다. 공개된 인터넷 전수 스캐너의 이름이지만, 연구·측정 목적인지 공격 준비인지 이 데이터로 구분할 수 없고 두 센서의 관측이 같은 주체인지도 확인할 수 없다
  28. 추정 02의 ADB 세션은 52건인데 확보한 검체는 0건이다. 어제는 ADB 세션 25건에 검체 4건·합계 773,937바이트였다. 세션 수는 2.1배가 됐는데 투입 내용은 하나도 남지 않았다. ADB는 02에서 유일하게 투입 내용이 남을 수 있는 통로이므로, 이날 02 관측면에서 '무엇이 들어왔는가'를 말할 재료가 없다
  29. 사실 두 센서 합산 고유 출발지는 617곳이 상한이다(01 324곳 + 02 293곳). 센서 간 겹침을 알 수 없어 정확한 값이 아니다. 어제 상한은 532곳이었다

사실 아래쪽 다섯 줄을 다시 보십시오. 66.9초 · 67.6초 · 67.0초 · 73.6초 · 79.9초. 다섯 건 모두 명령 31개, 의도 3종, 다운로드 1건, 완결성 16으로 완전히 같습니다. 시각은 00시, 02시, 05시, 06시, 09시로 흩어져 있고 출발지도 다섯 군데가 다 다릅니다.

추정 사람이 앉아서 하는 일이 아닙니다. 다섯 사람이 각각 우연히 똑같은 명령을 똑같은 개수로, 비슷한 시간 안에 칠 확률은 사실상 없습니다. 미리 짜 둔 같은 스크립트가 다섯 번 재생된 것으로 읽습니다.

사실 다만 여기에 붙는 한계가 있습니다. 다섯 건 다 텔넷입니다. 텔넷은 아주 오래된 원격 접속 방식인데, 비밀번호가 암호화되지 않고 그대로 흘러가고 접속 프로그램 지문 자체가 존재하지 않습니다. 그래서 “같은 도구였다”를 지문으로 확인할 방법이 이날 완결 세션에는 없습니다. 8월 20일 글에서 겪은 것과 같은 제약입니다.

이 비밀번호 쓰고 계십니까

사실 이날 로그인 시도는 440회입니다. 하루를 꽉 채워 나누면 약 3분 16초에 한 번, 누군가 아이디와 비밀번호를 넣어 봤습니다.

사실 아래는 그중 서로 다른 IP 3곳 이상에서 관측된 조합만 추린 17종입니다. 한 곳에서만 나온 조합은 실제로 어딘가에서 유출된 진짜 계정일 수 있어서 값을 싣지 않습니다.

아이디 비밀번호 시도한 출발지 수
admin admin 15곳 (35회)
345gs5662d34 345gs5662d34 8곳
root 3245gs5662d34 7곳
root admin 7곳
root root 5곳
root 123456 4곳
root vizxv 3곳
admin password 3곳
admin adminadmin 3곳
root 1234 3곳
root default 3곳
root 12345 3곳
root 12345678 3곳
root 123456789 3곳
root P@ssw0rd 3곳
root password 3곳
root root123 3곳

사실 이 17종 말고, 단일·소수 출처에서만 나온 조합이 269종 더 있습니다. 개수만 적고 값은 쓰지 않습니다. 참고로 269종은 확인 범위에서 적은 편입니다(최대 8월 18일 1,388종, 최소 8월 29일 142종).

추정 표의 맨 윗줄이 바뀐 것이 이날의 조용한 변화입니다. 어제 107곳으로 압도적 1위였던 345gs5662d34 는 8곳으로 내려앉고, 그 자리를 admin/admin 이 15곳으로 되찾았습니다. 특별한 목록을 들고 온 무리가 빠져나가자, 늘 있던 평범한 기본값 사전이 다시 맨 위로 올라온 모양입니다. 정류장으로 치면, 어제 몰려왔던 사람들이 빠지고 원래 그 시간에 늘 서 있던 사람들만 남은 셈입니다.

사실 그리고 표의 나머지 줄은 전부 root/admin 에 흔한 비밀번호를 붙인 것들입니다. 123456, 1234, password, P@ssw0rd. 이 사전은 특정 조직을 겨냥해 만든 게 아니라 어디에나 통하는 기본값 모음입니다. 표적이 되기 위해 눈에 띌 필요가 없다는 뜻입니다.

정찰을 건너뛴 하루

사실 로그인에 성공한 다음 무엇을 했는지는 명령의 ’의도’로 분류해 셉니다. 이날 순서는 이렇습니다.

의도 횟수
실행 권한 부여 195회
정찰 — 시스템 119회
다운로드 후 실행 30회
파일 다운로드 30회
흔적 삭제 9회
지속성 — SSH 키 심기 8회
정찰 — 네트워크 1회

사실 1위가 바뀌었습니다. 열엿새 중 열나흘은 ’정찰 — 시스템’이 1위였습니다. 8월 27일에는 정찰이 전체 명령의 78.3%였습니다. 이 순서가 뒤집힌 것은 8월 29일(161회 대 75회)에 이어 이날이 두 번째입니다.

여기서 말을 하나 풀고 가겠습니다. ‘실행 권한 부여’ 는 내려받은 파일에 “이건 실행해도 되는 프로그램이다”라는 표시를 붙이는 작업입니다. 리눅스에서는 파일을 받아만 놓으면 실행되지 않습니다. 표시를 따로 붙여야 돌아갑니다. ‘정찰’ 은 그 전 단계로, “여기가 어떤 기계인가”를 둘러보는 작업입니다.

추정 그러니까 이날은 둘러보는 시간을 줄이고 곧장 실행 준비로 넘어간 형태로 읽힙니다. 다만 명령 원문이 우리에게 없어서, 이게 실제 행동 순서가 바뀐 것인지 분류하는 쪽의 동작 차이인지는 구분할 수 없습니다.

사실 그리고 ‘파일 다운로드’ 30회와 ‘다운로드 후 실행’ 30회가 정확히 같습니다. 어제도 42회·42회로 같았습니다. 내려받은 것은 사실상 예외 없이 실행 단계로 이어졌다는 뜻입니다.

사실 한 가지 더. 분류된 명령 합계 392건은 전체 명령 760개의 51.6% 입니다. 나머지 48.4%는 어떤 의도에도 분류되지 않았습니다. 그래서 위 표의 비율은 전부 ‘분류된 것 안에서의 비율’ 입니다.

놓고 간 것은 704바이트가 전부입니다

사실 이날 서버에 실제로 남은 파일은 3종, 합계 704바이트입니다. 짧은 문자 메시지 몇 줄 정도 되는 양입니다. 어제는 6종·1,158바이트였습니다. 실행 바이너리, 그러니까 진짜 악성 프로그램 파일은 이날도 0종입니다.

받아 적을 값들입니다. 값을 누르면 복사됩니다 — 읽으라고 있는 게 아니라 차단 목록에 넣으라고 있는 값입니다. 주소는 일부러 망가뜨려 적었습니다(hxxp://, [.]). 그대로 복사해 붙여 넣어도 접속되지 않습니다.

sha256
a6296a79f44e21b76604d2d2bbf795d2cf380f70e39d45fbf166707ff3b4a6a4306바이트 POSIX 셸 스크립트. 문자 메시지 두 줄 정도 되는 크기다. 서로 다른 열 곳(ATK-9C3568 · ATK-46EEE7 · ATK-5BDF54 · ATK-827EAF · ATK-36ADDA · ATK-357B6C · ATK-ED706F · ATK-2A42D2 · ATK-90AD90 · ATK-14EBCD)이 같은 파일을 끌어갔다. 이날 완결 세션 다섯 건이 전부 이 열 곳 안에 있다. 8/30을 포함해 아카이브에 반복 등장한다
url
hxxp://185[.]93[.]89[.]72/wget위 셸 스크립트가 놓여 있던 자리
sha256
a8460f446be540410004b1a8db4083773fa46f7fe76fa84219c93daa1669f8f2389바이트 OpenSSH RSA 공개키. 받아 온 주소 미기록. 이날 출처 8곳·8회(어제 107곳·112회). 8/16부터 열엿새 연속 같은 해시다. 주소 칸이 비어 있어 밖에서 내려받은 것이 아니라 세션 안에서 만들어진 파일로 본다(8/17 브리프와 같은 판단). 별칭 여덟 곳 — ATK-F52F12 · ATK-ECACA6 · ATK-81D609 · ATK-E5EB34 · ATK-4F20AC · ATK-7B8ADA · ATK-21F6A0 · ATK-3E7375
sha256
4af5a5c98ad132095c6fbe7b02c242153a190a01cc321e50a916a0ca46fbaa629바이트 ASCII 텍스트. 글자 아홉 개 분량이다. 받아 온 주소 미기록. 출처 1곳·9회(ATK-BECAD3). 8/30에도 같은 해시가 1곳·8회로 있었다. 내용이 브리프에 없어 무엇인지 판단하지 않는다

사실 세 줄 중 주소가 적힌 줄은 하나뿐입니다. 나머지 둘은 ’받아 온 주소 미기록’입니다.

여기서 두 가지를 풀고 가겠습니다.

지문(sha256) 은 파일 전체를 계산해서 뽑은 64자리 값입니다. 파일 안의 글자 하나만 달라져도 값이 통째로 바뀝니다. 그래서 두 파일이 같은지 다른지를 이 값으로 판정합니다.

공개키는 이렇습니다. 리눅스 서버에는 authorized_keys(허용된 열쇠 목록)라는 파일이 있습니다. 여기에 공개키 한 줄을 적어 두면, 그 짝을 가진 사람은 비밀번호를 아예 묻지 않고 그냥 들어옵니다. 쉽게 말해 비밀번호 없이 들어올 수 있는 열쇠를 현관에 하나 걸어 두는 겁니다. 그리고 중요한 건, 비밀번호를 바꿔도 그 열쇠는 그대로 걸려 있습니다.

추정 이 공개키는 방어하는 쪽에 성가신 물건입니다. 받아 온 주소가 없으니 차단 목록에 올릴 주소가 없습니다. 서버에서 밖으로 나가는 통신을 다 막아도 이건 안 막힙니다. 문을 여는 데 성공한 그 순간에, 서버 안에서 완결되는 일이기 때문입니다. 이날은 규모가 8회로 작았을 뿐, 방식은 그대로입니다.

국제 분류표에 대응시키면

공격자가 쓴 수법에는 전 세계가 같이 쓰는 번호가 붙어 있습니다. MITRE ATT&CK라는 목록입니다. 아래에서 ID를 누르면 원문 설명으로 갑니다 — 우리 말을 믿지 말고 직접 확인해 보시라고 붙여 둡니다.

  • T1110Brute Force — 로그인 시도 440회. 다만 출발지당 1.36회로 확인 범위 최저 수준이라 전통적 무차별 대입과 형태가 다르다추정
  • T1078Valid Accounts — 완결 세션 5건 전부 로그인 성공추정
  • T1222.002File and Directory Permissions Modification: Linux and Mac — '실행 권한 부여' 195회. 이날 1위 의도다추정
  • T1082System Information Discovery — '정찰 — 시스템' 119회추정
  • T1105Ingress Tool Transfer — '파일 다운로드' 30회, hxxp://185[.]93[.]89[.]72/wget 열 곳추정
  • T1059.004Command and Scripting Interpreter: Unix Shell — '다운로드 후 실행' 30회, 306바이트 POSIX 셸 스크립트 검체추정
  • T1098.004Account Manipulation: SSH Authorized Keys — '지속성 — SSH 키 심기' 8회 + 389바이트 공개키 8곳·8회추정
  • T1070Indicator Removal — '흔적 삭제' 9회. 어제 114회에서 크게 줄었다추정
  • T1046Network Service Discovery — '정찰 — 네트워크' 1회. 별개로 허니팟 02의 다섯 개 서비스 접촉도 이 범주로 읽히지만 출발지와 서비스가 데이터에서 연결되지 않아 단정하지 않는다추정
  • T1595Active Scanning — RDP 쿠키 'zgrab' 1회, 01의 SSH-2.0-ZGrab 지문 2곳. 상대가 스스로 이름을 밝힌 접촉이며 목적은 확인 불가추정
  • T1021.005Remote Services: VNC — 02의 5900 포트 접촉 53,310건·46곳. 접촉·협상 단계이며 인증 성공은 존재하지 않는다추정
  • T1021.001Remote Services: Remote Desktop Protocol — 02의 3389 포트 접촉 3,410건·164곳. 엿새 중 최대이나 동일하게 접촉 단계다추정
  • T1021.002Remote Services: SMB/Windows Admin Shares — 02의 445 포트 접촉 137건·47곳. 제안된 방언 407회 중 405회가 SMB1 계열 구버전이다추정

사실 열세 줄 중 가장 큰 숫자는 세 번째, 실행 권한 부여 195회입니다. 어제 이 자리에 있던 정찰(769회)이 이날은 119회로 내려왔습니다.

추정 그리고 열세 줄이 전부 ‘추정’ 배지입니다. 우리가 본 것은 명령의 의도 분류와 개수이지, 공격자가 스스로 밝힌 목적이 아니기 때문입니다.

어제 하루 전체

사실 센서 01(고상호작용 허니팟) 기준입니다.

항목 2026-08-31 견줄 것
세션 779건 하루로 나누면 약 1분 51초에 한 건. 열엿새 중 두 번째로 적다
고유 출발지 324곳 열엿새 중 네 번째로 많다
곳당 세션 2.40회 열엿새 최저. 다음이 8/29의 3.46회, 최대는 8/22의 17.33회
로그인 시도 440회 약 3분 16초에 한 번씩 문고리를 돌려 봤다
곳당 로그인 시도 1.36회 역시 최저. 8/29의 1.37회와 사실상 같다
명령 760개 약 1분 54초에 하나
포트 2222 (SSH) 556세션 전체의 71.4%
포트 2223 (텔넷) 223세션 전체의 28.6%
프로토콜 SSH 556 / 텔넷 223 위 포트 수치와 정확히 일치한다
TTY 녹화 195건 —
명령 의도 합계 392회 전체 명령 760개의 51.6%. 나머지는 분류되지 않았다
확보 검체 3종 · 704바이트 어제 6종·1,158바이트. 실행 바이너리 0종

추정 숫자 하나가 어긋나 보입니다. 세션의 71.4%가 SSH인데, 로그인에 성공해 실제로 일을 한 세션 5건은 전부 텔넷입니다. 이날 SSH 쪽에서 완결된 세션은 하나도 없습니다. 두드리는 건 SSH 쪽이 훨씬 많은데, 안까지 들어와 뭔가를 한 쪽은 텔넷뿐이었습니다.

사실 옆에 세워 둔 두 번째 서버(센서 02)의 숫자도 옮겨 둡니다. 이쪽은 저상호작용이라 로그인 성공·명령·자격증명이 애초에 존재하지 않습니다. 세는 것은 ’어느 문을 몇 번 두드렸는가’뿐입니다. 들어온 기록이 아닙니다.

서비스 포트 접촉 고유 출발지 한 곳당 평균
VNC 5900 53,310건 46곳 1,159회
RDP 3389 3,410건 164곳 20.8회
SMB 445 137건 47곳 2.9회
LDAP 389 92건 12곳 7.7회
MSSQL 1433 57건 15곳 3.8회
ADB — 세션 52건 — 확보 검체 0건

사실 전체로는 접촉 57,058건, 고유 출발지 293곳입니다. 하루로 나누면 약 1.5초에 한 번 뭔가가 이 서버를 두드렸습니다.

추정 같은 서버인데 두 문 앞의 그림이 정반대입니다. VNC 쪽은 46곳이 곳당 1,159회씩 붙어 있었습니다. 한 곳이 75초마다 한 번씩, 하루 종일 같은 문만 붙잡고 있었다는 뜻입니다. 어제(53,360건·45곳)와 차이가 50건뿐입니다 — 이틀 연속 거의 같은 값입니다. 이쪽은 움직이지 않는 배경 소음입니다.

사실 이날 실제로 변한 것은 RDP 쪽입니다. 접촉 3,410건, 출처 164곳. 우리가 이 서버를 브리프에 넣은 8월 26일 이후 엿새 중 접촉도 출처도 둘 다 최대입니다(8/26 1,221건·139곳 / 8/27 1,425건·116곳 / 8/28 2,114건·120곳 / 8/29 1,064건·132곳 / 8/30 2,139건·127곳).

추정 정류장으로 돌아가면 이렇습니다. 한쪽 정류장에는 46명이 하루 종일 같은 자리를 지키고 있고, 다른 쪽 정류장에는 164명이 잠깐 섰다 갑니다. 소수가 집요하게 두드리는 쪽과 다수가 얕게 훑는 쪽이 같은 서버에 동시에 옵니다. 그리고 이날 늘어난 건 뒤쪽, ’서로 다른 곳의 수’입니다.

사실 프로토콜이 말해 준 것도 있습니다. VNC 접촉에서 상대가 제안한 버전은 003.003이 53,262회, 최신 쪽인 003.008은 34회뿐입니다. 제안된 값의 99.94% 가 낮은 쪽입니다. SMB 방언 제안 8종 중 SMB 2.??? 는 2회뿐이고 나머지 407회는 NT LM 0.12 이하의 구버전입니다. RDP 접속 쿠키에는 hello 2,709회(RDP 접촉의 79.4%), <ip> 467회, 빈 값 5회, administrator 2회, zgrab 1회, BqDARFPuX 1회가 찍혔습니다.

추정 zgrab 한 번이 눈에 걸립니다. 이날 유일하게 상대가 자기 도구 이름을 그대로 적어 넣은 접촉입니다. 같은 날 01 쪽 SSH 지문에도 SSH-2.0-ZGrab(이날 2곳·누적 50곳)이 있습니다. 공개된 인터넷 전수 스캐너의 이름인데, 연구·측정 목적인지 공격 준비인지 이 데이터로는 구분되지 않습니다. 두 센서의 관측이 같은 주체인지도 확인할 수 없습니다. 이름을 적어 넣는 건 누구나 할 수 있어서, 이름 자체가 신원의 근거가 되지 못합니다.

사실 그리고 02에서 이날 가장 큰 공백이 하나 있습니다. ADB 세션은 52건인데 확보한 검체는 0건입니다. 어제는 세션 25건에 검체 4건·합계 773,937바이트였습니다. 세션 수는 2.1배가 됐는데 남은 파일은 하나도 없습니다.

추정 ADB는 02에서 파일 내용이 남을 수 있는 유일한 통로입니다. 그게 비었다는 건, 이날 02 관측면 전체에서 ’무엇이 들어왔는가’를 말할 재료가 하나도 없다는 뜻입니다. 남은 건 두드린 횟수와 프로토콜이 정해 둔 어휘뿐입니다.

113곳이 같은 지문이지만, 같은 무리는 아닙니다

사실 SSH로 들어오는 접속은 프로그램마다 첫 인사말이 조금씩 다릅니다. 그 인사말을 요약한 값을 클라이언트 지문이라고 부릅니다. 어떤 프로그램으로 접속했는지를 가리키는 값입니다.

사실 이날 지문 군집은 41개였고, 그중 11종이 목록에 실렸습니다. 1위는 acaa53e0a7d7ac7d1255103f37901306(SSH-2.0-OpenSSH_7.4)로 이날 113곳, 누적 589곳입니다. 이날 01 전체 출발지 324곳의 34.9% 입니다. 2위가 어제의 1위였던 f555226df…(libssh_0.9.6) 8곳입니다.

추정 숫자만 보면 “113곳이 한 무리”라고 쓰고 싶어집니다. 이날은 평소보다 단서를 세게 답니다. 이 값은 널리 쓰이는 리눅스 배포판에 그냥 들어 있는 기본 OpenSSH 7.4 클라이언트 문자열입니다. 서로 아무 상관 없는 사람들이 같은 값을 갖는 게 정상입니다.

사실 그래서 우리가 말할 수 있는 건 “113곳이 같은 도구를 쓴다” 까지입니다. “113곳이 한 조직이다” 는 이 데이터로 성립하지 않습니다. 어제 libssh 군집에 대해 ’같은 도구’라고만 쓴 것과 같은 기준인데, 이날 대상은 훨씬 흔한 값이라 묶어 읽는 것의 설명력 자체가 더 낮습니다.

추정 한 가지 더 걸리는 게 있습니다. 군집 총수는 8월 29일 45개 → 8월 30일 43개 → 이날 41개로 사흘 연속 줄었는데, 같은 기간 1위 군집의 출발지 수는 9곳 → 106곳 → 113곳으로 늘었습니다. 도구 다양성이 줄고 한쪽으로 쏠린 것으로 보이지만, 집계 기준이 바뀐 것일 가능성을 배제할 수 없습니다.

그래서 뭘 해야 하나

추정 브리프가 정리한 ‘이 통제가 없었다면’ 여섯 가지를, 이날 데이터가 가장 세게 받쳐 주는 순서로 놓습니다.

1. 관리 포트를 인터넷에 그대로 열어 두지 않는다 — 이날의 1순위입니다. 아무 홍보도 하지 않은 서버에 하루 동안 324곳이 접촉했고, 옆 서버에는 RDP 164곳·SMB 47곳·VNC 46곳·MSSQL 15곳·LDAP 12곳이 붙었습니다. 두 서버를 합치면 최대 617곳입니다(겹침을 알 수 없어 상한입니다). 원격 접속 창구를 VPN이나 점프호스트 뒤로 옮기거나 접속할 수 있는 출발지를 제한하면, 이날 관측된 접촉 대부분이 인증 단계에 닿기도 전에 사라집니다. 특히 이날 늘어난 건 RDP 쪽 ‘서로 다른 곳의 수’ 라서, 나쁜 주소를 모아 두는 차단 목록으로는 따라잡기 어려운 형태입니다.

2. 기본 계정과 흔한 비밀번호를 없앤다 — 위 표의 17종은 서로 다른 IP 3곳 이상이 실제로 두드린 조합입니다. 여기에 값을 싣지 않은 269종이 더 있습니다. 이날 관측된 명령 760개는 전부 로그인에 성공한 뒤에 실행됐습니다. 실제 운영 서버였다면 하루에도 여러 차례 관리자 권한 명령창이 넘어갔다는 뜻입니다.

3. 서버에서 밖으로 나가는 연결을 제한한다 — 파일 다운로드 30회와 다운로드 후 실행 30회가 정확히 같은 숫자입니다. 나가는 통신을 기본으로 막고 필요한 목적지만 허용했다면, 로그인이 뚫려도 다운로드 단계에서 끊깁니다. 이날 완결 세션 5건은 전부 이 단계를 통과했습니다.

4. 비밀번호로 여는 문을 열쇠로 여는 문으로 바꾼다 — 이날 세션의 71.4%가 SSH입니다. SSH는 비밀번호 대신 열쇠로만 열게 잠글 수 있는 방식입니다. 다만 이날은 이 항목의 순위를 낮춥니다. 로그인이 성공한 세션 5건이 전부 텔넷이기 때문입니다. 텔넷에는 열쇠 인증이라는 개념 자체가 없어서, 그쪽의 원인은 ’열쇠를 안 썼다’가 아니라 ‘그 서비스를 열어 둔 것’ 입니다. 자격증명이 어느 쪽에서 시도됐는지 데이터가 구분해 주지 않아, SSH 쪽 성공 여부는 이날 데이터로 확정할 수 없습니다.

5. ’몇 번 틀리면 잠금’에만 기대지 않는다 — 이날 곳당 로그인 시도는 1.36회입니다. ’IP 하나가 N번 실패하면 차단’이라는 방식은 이 분포에서 발동 조건에 거의 도달하지 않습니다. 그런데 반대 근거도 같은 날 안에 있습니다. 1위인 admin/admin 은 15곳이 35회로 곳당 2.3회이고, 02의 VNC는 46곳이 곳당 1,159회입니다 — 여기서는 빈도 제한이 명백히 효과가 있었을 구간입니다. 그래서 이 항목은 ’버려라’가 아니라 ’이것만으로는 안 된다’입니다. 두 방어는 서로 대체하는 게 아니라 서로 다른 패턴을 맡습니다.

6. 로그를 서버 밖에 따로 남긴다 — 흔적을 지우려는 의도가 이날도 9회 관측됐습니다. 어제 114회에서 크게 줄었지만 사라진 건 아닙니다. 우리가 위 타임라인을 적을 수 있는 것도, TTY 녹화 195건과 대조할 수 있는 것도 기록이 서버 바깥에 남아 있기 때문입니다. 로그가 그 기계 안에만 있으면, 지워진 뒤에는 지워졌다는 사실조차 안 남습니다.

사실 그리고 3번에 단서를 답니다. SSH 키 심기는 밖으로 나가는 연결이 필요 없습니다. 나가는 통신을 다 막아도 이건 안 막힙니다. 서버를 쓰신다면 ~/.ssh/authorized_keys 파일을 한 번 열어 보십시오. 내가 넣은 기억이 없는 줄이 있으면 그게 남의 열쇠입니다. 비밀번호를 바꾸는 것으로는 지워지지 않습니다.

전에도 있었던 일

추정 Mirai 봇넷(2016년). 텔넷 기본 자격증명 사전 하나로 다수 기기를 장악하고, CPU 종류별로 따로 만든 실행파일을 내려받게 한 사례입니다. 이날 완결 세션 5건이 전부 텔넷이라는 점, 그리고 압축을 풀어야만 드러나는 지표들의 CPU별 파일명 패턴(parm5·parm6·parm7·pm68k·pmips·pmpsl·pppc·psh4·pspc·x86_64)이 형태상 같은 계열입니다. 다만 우리 관측분이 Mirai 계열이라고 단정할 근거는 없습니다 — 검체에 계열 이름을 붙일 수단(VirusTotal)이 없고, 이날 확보한 검체 3종에는 실행 바이너리가 없습니다. (근거: 미국 US-CERT/CISA 경보 TA16-288A, 공개된 소스코드)

추정 FritzFrog P2P SSH 봇넷(2020년). SSH 자격증명 대입으로 들어간 뒤 authorized_keys 에 자기 공개키를 추가해 계속 들어올 길을 확보한 사례입니다. 이날 관측된 ‘지속성 — SSH 키 심기’ 8회, 그리고 열엿새 연속 같은 389바이트 공개키가 8곳에서 심긴 패턴이 이 기법과 겹칩니다. 기법의 유사성이며 같은 캠페인이라는 근거는 없습니다. 이날은 규모가 8회로 작아, 어제(116회)보다 이 항목의 무게가 가볍다는 점도 함께 밝힙니다. (근거: 보안업체 공개 보고서 — Guardicore/Akamai)

우리가 모르는 것

이 글에서 가장 중요한 부분입니다. 위에서 적은 것보다 적지 못한 것이 더 많습니다.

  • [핵심] 8·8·8·8 이 같은 집단이라는 확인이 없습니다. 자격증명 출발지 수, 공개키 출처 수, 지문 출발지 수, 키 심기 횟수 — 우리가 네 값을 나란히 놓고 관찰한 것이지 데이터가 묶어 준 사실이 아닙니다. 어제 107·107·106·116과 이날 8·8·8·8이 함께 움직인 것은 ’하나의 무리’라는 읽기를 강화하지만 증명하지는 않습니다.
  • 어제 106곳이던 지문 f555226df… 가 이날 8곳으로 내려온 이유를 데이터로 설명할 수 없습니다. 캠페인이 끝난 것인지, 대상을 옮긴 것인지, 우리 수집 범위가 바뀐 것인지 구분할 근거가 없습니다. 마찬가지로 어제 107곳으로 튄 이유도 설명하지 못했습니다.
  • 이 지문의 누적값이 어제 366곳에서 이날 365곳으로 1 줄었습니다. 누적값이 감소하는 것은 정의상 설명되지 않습니다. 집계 기준이 바뀐 것인지 다시 계산한 것인지 알 수 없어, 이 지문의 누적값에 기댄 서술은 이날 하지 않았습니다.
  • TTY 녹화 수가 195건과 208건 두 값으로 다르게 적혀 있습니다. 어제는 982건과 205건으로 대소 관계가 반대였습니다. 두 값이 서로 다른 것을 세는지, 어느 쪽이 실제 열람 가능한 수인지 설명이 없습니다.
  • ‘실행 권한 부여’ 195회와 TTY 녹화 195건이 정확히 같은 수입니다. 데이터가 둘을 연결해 주지 않으므로 수치 일치일 뿐이며, 여기에 의미를 붙이지 않았습니다.
  • 명령 의도 분류 합계는 392건인데 전체 명령은 760개입니다. 명령의 48.4%가 어떤 의도에도 분류되지 않았고, 그 이유나 성격에 대한 설명이 없습니다. 따라서 의도별 비율은 전부 ’분류된 것 안에서의 비율’입니다.
  • ’실행 권한 부여’가 ’정찰’을 앞선 것을 ’정찰을 건너뛰는 형태’로 읽었지만, 명령 원문이 없어 실제 행동 순서의 변화인지 분류하는 쪽의 동작 차이인지 구분할 수 없습니다.
  • 지문 군집은 41개인데 목록에는 11종만 실려 있습니다. 목록의 출발지 합은 146곳으로 01 전체 324곳의 45%입니다. 나머지 178곳의 분포는 알 수 없고, 이날 세션의 28.6%인 텔넷에는 지문 자체가 존재하지 않습니다.
  • 1위 지문 acaa53e0…(SSH-2.0-OpenSSH_7.4)의 113곳을 하나의 집단으로 읽어서는 안 됩니다. 널리 쓰이는 배포판의 기본 클라이언트 문자열이라 서로 무관한 다수가 같은 값을 갖는 것이 정상입니다. 이날 이 값은 ’검체를 넣고 갔다’가 아니라고 표시돼 있습니다.
  • 완결 세션 5건이 명령 31개·완결성 16으로 동일한 것을 ’같은 자동화’로 읽었지만, 텔넷이라 지문이 비어 있어 도구 동일성을 확인할 수단이 없습니다. 8월 20일 글에서도 같은 제약이 있었습니다.
  • 센서 02에서 한 출발지가 여러 서비스를 함께 훑었는지 계산할 수 없습니다. 서비스별 고유 출발지 합(46+164+47+12+15=284)이 전체 고유 출발지 293보다 작아 겹침을 역산할 수 없습니다. 엿새 연속 같은 제약입니다.
  • 02의 ADB 세션이 52건인데 검체가 0건인 이유를 알 수 없습니다. 투입 시도 자체가 없었는지, 시도했으나 저장에 실패했는지, 협상 단계에서 끊겼는지 데이터가 구분해 주지 않습니다.
  • RDP 쿠키 hello 2,709회가 무엇을 뜻하는지 판단하지 않습니다. 접속하는 쪽이 임의로 채워 넣는 문자열이며, 특정 도구로 귀속할 근거가 없습니다. administrator 2회, 아홉 자리 문자열 BqDARFPuX 1회도 마찬가지입니다.
  • RDP 쿠키 zgrab 1회와 01의 SSH-2.0-ZGrab 지문 2곳이 같은 주체인지 확인할 수 없습니다. 공개된 스캐너 이름을 그대로 넣는 것은 누구나 할 수 있어, 이름 자체가 신원의 근거가 아닙니다. 연구·측정 목적인지 공격 준비인지도 구분되지 않습니다.
  • VNC 협상 버전 003.003이 99.94%라는 것은 ’상대가 제안한 값’의 분포입니다. 우리 허니팟이 무엇을 먼저 제시했는지에 따라 이 분포가 정해질 수 있으므로, 상대 도구의 성격을 이 값으로 단정하지 않습니다. 003.003과 003.008 합계 53,296이 VNC 접촉 53,310보다 14 적은 이유도 설명되지 않습니다.
  • 공개키의 해시가 같다는 것은 ’같은 파일’이라는 뜻이지 ’같은 운영자’라는 뜻이 아닙니다. 이 열쇠에 짝이 되는 개인키를 누가, 몇 명이 쥐고 있는지는 데이터에 없습니다.
  • 9바이트 텍스트 검체(4af5a5c9…)의 내용이 없어 무엇인지 판단하지 않습니다. 8월 30일에도 같은 해시가 1곳에서 관측됐습니다.
  • 별도로 확보된 Discord 웹훅 주소가 이날 세션·검체 중 무엇과 연결되는지 알 수 없습니다. 이날 어떤 다운로드의 주소 칸에도 나타나지 않아, 이날 사건과 연결해 서술하지 않았습니다.
  • 압축을 풀어야 드러나는 유포 주소 12건은 이날 관측된 hxxp://185[.]93[.]89[.]72 와 호스트가 다릅니다(hxxp://31[.]77[.]227[.]121). 같은 캠페인인지 확인할 수단이 없어 배경 재료로만 두었습니다.
  • 배경 통계로 들고 있는 CVE 6,607건·CISA KEV 390건·랜섬웨어 확인 98건은 KISA 보안공지 기반 배경 맥락입니다. 이날 허니팟 관측과 연결된 것이 아닙니다. SSH·텔넷 경로에서 CVE를 참조한 흔적은 관측되지 않았고, 02도 프로토콜 협상 단계라 마찬가지입니다.
  • C-TAS 신고는 전송 계층에서 성공했다는 것까지만 확인됩니다. KISA 쪽에 실제로 적재됐는지는 별도 확인이 필요합니다.
  • 별칭(ATK-XXXXXX)은 글 사이에서 같은 마스킹 출발지를 가리키는 표식일 뿐 신원이 아닙니다. 다시 나타나는 별칭도, 그 사이 그 주소를 쓰는 주체가 바뀌었을 가능성을 배제할 수 없습니다.
  • 두 센서를 합친 고유 출발지 617곳은 상한입니다. 같은 IP가 양쪽에 나타났는지 알 수 없습니다.
  • 마지막으로, 허니팟은 문을 열어 주도록 만들어진 서버입니다. 로그인 성공은 ’이 자격증명이 실제 운영 서버에서도 통한다’는 뜻이 아니라 ‘이 자격증명이 시도되고 있다’ 는 뜻입니다.

그리고 아래는 애초에 확인할 수단이 없는 것들입니다. 추정하지 않습니다.

  • ASN·ISP — 관련 데이터베이스가 없습니다. 어느 통신사·어느 호스팅 대역인지 확인할 수 없습니다. 02의 상위 출발지들이 각각 수천 건씩 만들어 냈지만, 그 주소들이 어떤 종류의 인프라인지 이 글은 말할 수 없습니다.
  • 지리정보 — 동일하게 없습니다. 그리고 IP 지리정보는 애초에 귀속 근거가 되지 않습니다. 어떤 국가·기업·개인도 이날의 공격자로 지목하지 않습니다. 마스킹된 자리에서 어떤 것도 추론하지 않습니다.
  • VPN·Tor·클라우드 여부 — 판별 수단이 없습니다. 02의 상위 9곳이 5,093~7,525건으로 고르게 나뉘어 있는 것도 ’같은 종류의 인프라’라는 근거가 되지 못합니다.
  • VirusTotal — 연동돼 있지 않습니다. 이날 확보한 검체 3종(306바이트 셸 스크립트 · 389바이트 공개키 · 9바이트 텍스트)에 악성코드 계열 이름을 붙일 수 없습니다. 검체 분류는 MalwareBazaar 태그를 씁니다.
  • User-Agent — 두 관측면 다 HTTP가 아닙니다. 01은 SSH·텔넷, 02는 SMB·RDP·VNC·MSSQL·LDAP·ADB입니다. 위에서 인용한 RDP 쿠키·SMB 방언·VNC 버전은 User-Agent의 대체물이 아니라 프로토콜이 정해 둔 협상 어휘입니다.
  • CVE 연결 — SSH·텔넷 공격은 대부분 특정 취약점을 참조하지 않고 자격증명을 씁니다. 02도 프로토콜 협상 단계라 마찬가지입니다. 이날 어떤 CVE도 이 관측과 연결되지 않습니다.

추정 정리하면 이날은 이렇습니다. 세션 779건, 로그인 시도 440회, 명령 760개. 어제 107·107·106·116이던 네 숫자가 나란히 8 이 됐고, 어제 114회였던 흔적 삭제는 9회가 됐습니다. 대신 찾아온 곳은 324곳으로 열엿새 중 네 번째로 많았고, 한 곳당 머문 정도는 2.40회로 가장 낮았습니다.

넷이 같이 올랐다가 같이 내려왔습니다. 그래서 우리는 “한 버스에서 내린 사람들”이라는 짐작을 어제보다 조금 더 세게 말할 수 있게 됐습니다. 그래도 버스는 여전히 보지 못했습니다. 우리가 한 일은 이틀에 걸쳐 두 번 인원수를 센 것뿐입니다. 이 차이를 지우면 관측 기록이 아니라 이야기가 됩니다.

그리고 하나 더. 그 무리가 사라진 게 아니라는 점입니다. 어제 107곳이었고 오늘 8곳이라면, 오늘은 다른 정류장에 섰다고 보는 편이 자연스럽습니다. 그러니 이날 데이터가 가리키는 건 어제 몰려온 곳들을 목록에 적어 두라는 쪽이 아닙니다. 그 목록은 하루 만에 낡습니다. 서버가 한 대라도 있으시면 오늘 두 가지만 해 보시면 됩니다. 원격 접속 창구가 인터넷에 그대로 열려 있는지 확인하는 것, 그리고 ~/.ssh/authorized_keys 를 한 번 열어 보는 것. 뒤의 것은 몇 초 걸립니다.

관측일은 2026년 8월 31일(UTC) 하루입니다. 출발지 IP는 브리프의 마스킹 형태(125.229.x.x, 114.35.x.x, 114.38.x.x, 187.109.x.x, 123.139.x.x)를 그대로 옮겼고 복원하지 않았습니다. 유포 주소는 접속되지 않도록 변형해 적었습니다(hxxp://, [.]). 자격증명은 서로 다른 IP 3곳 이상에서 관측된 조합 17종만 인용했고, 그 기준을 넘지 못한 조합 269종은 개수만 밝히고 값을 싣지 않았습니다. ASN·국적·행위자 귀속은 확인 수단이 없어 추정하지 않습니다.