SecurityHeroblog

사흘 만에 다시 넘친 우편함 — 보낸 곳도, 이름도 낯익었다

9월 13일, 원격 데스크톱 포트에 꽂힌 접촉이 하루 42,578건으로 사흘 전 최고치 34,811건을 다시 넘었습니다. 가장 많이 보낸 곳은 그때와 같은 별칭이었고, 사흘 전 16번까지 줄었던 이름표 'hello'는 7,039번이 됐어요. 옆 서버가 받은 파일 네 종류는 전부 전에 본 해시였습니다.

아파트 1층 우편함을 떠올려 보세요. 하루에 한 번 열어 봅니다. 보통은 광고지 두세 장이 들어 있어요.

사흘 전, 우편함이 터질 듯이 차 있었습니다. 처음 보는 양이었어요. 그래서 그날 일지에 “처음 본다”고 적었습니다.

오늘 열어 보니 더 많이 꽂혀 있었습니다. 봉투 뒷면의 보낸 곳을 봤더니 사흘 전 그곳이었어요. 그리고 한동안 안 보이던 이름 하나가 봉투 앞면에 다시 적혀 있었습니다. 그것도 7,039장에요.

우리 서버 두 대에 어제 벌어진 일이 이것입니다. 새로운 건 하나도 없었는데, 양만 새 기록이었어요.


우편함 두 개

사실 우리는 허니팟 서버 두 대를 돌립니다. 허니팟은 일부러 열어 두고 누가 뭘 하는지 지켜보는 미끼 서버예요. 이 글에서는 두 대를 우편함 두 개로 부르겠습니다.

사실 하나(센서 02)는 봉투를 뜯지 않는 우편함입니다. 몇 장이 왔는지, 어디서 왔는지, 봉투 겉에 뭐라고 적혔는지까지만 셉니다. 안에 뭐가 들었는지는 모릅니다. 이런 방식을 ’저상호작용’이라고 불러요. 상대와 대화를 시작하는 단계까지만 받아 주고 끊는다는 뜻입니다.

사실 다른 하나(센서 01)는 봉투를 열어 보는 우편함입니다. 상대가 로그인까지 하게 두고, 그 뒤에 어떤 명령을 치는지, 어떤 파일을 놓고 가는지 전부 남깁니다.

사실 어제 두 우편함은 정반대였습니다. 뜯지 않는 쪽은 기록을 갈아치웠고, 열어 보는 쪽은 새로운 게 하나도 없었어요.

사흘 전 그 우편함이 오늘 더 넘쳤다

사실 뜯지 않는 우편함에는 칸이 여섯 개 있습니다. 그중 ‘원격 데스크톱’ 칸에 어제 42,578장이 꽂혔어요. 원격 데스크톱은 집에서 회사 컴퓨터 화면을 그대로 불러오는 기능입니다. 영어로 RDP라고 하고, 문 번호(포트)는 3389번이에요.

사실 42,578장이면 2초에 한 장꼴입니다. 자정부터 자정까지, 한 번도 쉬지 않고요.

사실 사흘 전인 9월 10일에 이 칸은 34,811장이었습니다. 그날까지 우리 기록(8월 26일~9월 10일, 15일치) 중 가장 큰 값이었어요. 어제는 그보다 7,767장 많고, 1.22배입니다. 최고 기록이 사흘 만에 다시 바뀌었습니다.

사실 그런데 보낸 곳의 수는 그대로였습니다. 어제 이 칸에 봉투를 넣은 곳은 107곳, 사흘 전에는 109곳이었어요. 보낸 곳은 두 곳 줄었는데 봉투는 7,767장 늘었습니다.

사실 나눠 보면 이렇습니다.

9월 10일 9월 13일
꽂힌 봉투 34,811장 42,578장 (+7,767 · 1.22배)
보낸 곳 109곳 107곳
한 곳당 319.4장 397.9장
한 곳 기준 간격 4분 30초에 한 장 3분 37초에 한 장

추정 한 곳이 하루에 397.9장을 넣었다는 건, 평균으로 치면 같은 곳이 3분 37초마다 한 장씩 넣고 갔다는 뜻입니다. 사흘 전보다 간격이 53초 짧아졌어요. 찾아오는 곳이 늘어난 게 아니라, 한 곳이 하는 일이 두꺼워졌습니다.

사실 여기서 하나 밝혀 둘 게 있습니다. 9월 11일과 12일 기록이 우리 아카이브에 없습니다. 그래서 이 글의 ’사흘 전과 비교’는 두 날짜를 나란히 놓은 것이지, 사흘 내내 이어졌다는 뜻이 아니에요. 그 사이에 잠잠했다가 다시 왔는지, 계속 넘쳤는지는 이 글이 답할 수 없습니다.

보낸 곳도 같았다

사실 이 우편함 전체(여섯 칸 합계)에 어제 가장 많이 봉투를 넣은 곳은 별칭 ATK-E37B01(149.50.x.x)입니다. 34,899장이고, 어제 이 우편함에 꽂힌 전체 103,298장의 **33.8%**예요. 별칭은 우리가 같은 출발지를 알아보려고 붙인 이름표일 뿐, 신원이 아닙니다.

사실 사흘 전 1위도 같은 별칭이었습니다. 그날은 34,229장, 34.0%였어요. 한 곳이 이 우편함의 3분의 1을 채우는 모양이 사흘 만에 그대로 다시 나타났습니다.

사실 2위부터 8위까지 일곱 곳은 4,720장에서 5,808장 사이에 몰려 있습니다. ATK-A9F1B3 5,808 · ATK-943F0E 5,807 · ATK-593C0D 5,472 · ATK-992AD3 5,292 · ATK-28B422 4,751 · ATK-B954FC 4,749 · ATK-AE6CC0 4,720이에요. 9위가 3,252, 10위가 1,563으로 거기서 꺾입니다.

사실 상위 12곳이 넣은 게 **78,222장(75.7%)**입니다. 나머지 605곳이 넣은 건 다 합쳐 25,076장, 한 곳당 평균 41.4장이에요. 1위 한 곳이 나머지 605곳을 다 합친 것보다 많이 넣었습니다.

사실 상위 12곳 중 8곳은 전에도 상위 목록에 올랐던 별칭입니다. ATK-E37B01 · 992AD3 · 943F0E · A9F1B3 · B24952는 9월 10일에, ATK-28B422 · B954FC · AE6CC0는 8월 27~29일에요. 나머지 4곳(ATK-593C0D · 0E3BBB · A00F1F · AE264D)은 상위 목록에 처음 나옵니다. 다만 우리 아카이브는 하루에 12곳만 적어 두기 때문에, 그동안 13위 밖에 있었을 가능성은 남습니다.

추정 1위의 34,899장과 원격 데스크톱 칸의 42,578장을 나란히 놓으면 이렇게 읽고 싶어집니다. “저 한 곳이 원격 데스크톱 칸을 채웠구나.” 42,578에서 34,899를 빼면 7,679인데, 뒤에 나올 봉투 이름 중 mstsc를 뺀 나머지를 다 더하면 7,456이에요. 숫자가 가깝습니다.

사실 그런데 말할 수 없습니다. 우리 기록에는 “어느 별칭이 어느 칸에 넣었나”가 적혀 있지 않아요. 별칭 순위는 여섯 칸을 합친 값이고, 칸별 집계는 별칭을 알려주지 않습니다. 숫자가 가깝다는 정황까지입니다.

봉투 앞면의 이름 — 사라졌던 ‘hello’ 가 7,039장

사실 원격 데스크톱은 연결을 시작할 때 짧은 문자열 하나를 같이 보냅니다. 기술 용어로 ’쿠키’라고 부르는 칸인데, 보내는 쪽이 자기 손으로 적는 값이에요. 봉투 앞면에 보낸 사람이 직접 쓴 이름과 같습니다. 우리는 그 이름을 읽을 뿐, 그게 진짜인지는 알 수 없습니다.

사실 어제 그 칸에 적혀 온 값입니다.

적혀 온 이름 장수 원격 데스크톱 칸 안 비율
mstsc 32,855 77.2%
hello 7,039 16.5%
<ip> 400 0.9%
rdpaudit 14 —
Administr 2 —
무작위 9글자 1 —
(적히지 않음) 2,267 5.3%

사실 이름이 적힌 봉투는 합쳐 40,311장, 원격 데스크톱 칸의 94.7%입니다.

사실 mstsc는 윈도우에 원래 들어 있는 원격 데스크톱 프로그램의 파일 이름과 같은 글자입니다. 32,855장이면 2.6초에 한 장이에요.

사실 그리고 hello. 이 이름은 우리 기록에서 이렇게 오르내렸습니다.

날짜 8/26 8/31 9/03 9/07 9/10 9/13
hello 장수 604 2,709 3 1,391 16 7,039

사실 종전 최대가 8월 31일의 2,709장이었어요. 어제는 그 2.6배입니다. 7,039장이면 12초에 한 장이고요.

사실 사흘 전에는 mstsc가 올라오면서 hello가 16장으로 내려갔습니다. 하나가 다른 하나를 밀어낸 것처럼 보였어요. 그런데 어제는 둘이 같은 날 같이 있습니다. 32,855장과 7,039장이 나란히요.

추정 mstsc · hello · <ip>는 사람이 손으로 친 아이디로 보이지는 않습니다. 도구가 자동으로 채운 값에 가까워요. 다만 어떤 도구인지, 왜 이 단어인지는 판단하지 않습니다. 봉투에 그렇게 적혀 왔다는 사실만 있습니다. 이름이 hello라고 해서 인사를 하러 온 것도 아니고, mstsc라고 해서 그 프로그램을 쓴 것도 아닙니다. 봉투에 ’택배’라고 적혀 있어도 택배가 아닐 수 있는 것과 같아요.

옆 칸들은 어땠나

사실 이 우편함의 여섯 칸을 다 펼치면 이렇습니다. 어제 전체 103,298장, 보낸 곳 617곳이에요. 0.84초에 한 장입니다.

칸 (서비스) 문 번호 꽂힌 봉투 보낸 곳 한 곳당
VNC (화면 공유) 5900 60,286장 (58.4%) 407곳 148.1장
RDP (원격 데스크톱) 3389 42,578장 (41.2%) 107곳 397.9장
SMB (파일 공유) 445 253장 38곳 6.7장
LDAP (계정 조회) 389 92장 7곳 13.1장
MSSQL (데이터베이스) 1433 49장 35곳 1.4장
ADB (안드로이드 디버깅) (기록 없음) 40세션 (기록 없음) —

사실 아래 네 칸을 다 합쳐도 434장, 0.4%입니다. 어제 이 우편함은 사실상 화면 공유와 원격 데스크톱 두 칸이었어요.

사실 전체 103,298장은 우리 기록 최대입니다. 종전 최대는 사흘 전 100,752장이었어요.

사실 화면 공유(VNC) 칸은 기록을 깨지 않았습니다. 60,286장은 우리 기록에서 3위예요(9월 10일 65,487 · 9월 8일 65,322). 보낸 곳 407곳은 2위입니다(9월 8일 416곳). 어제 뛴 건 화면 공유가 아니라 원격 데스크톱입니다.

사실 봉투 겉면에는 이름 말고도 적히는 게 있습니다. 화면 공유는 연결 전에 “나는 몇 번 버전으로 말할게” 하고 버전을 제안해요. 어제 제안된 버전은 003.003이 54,573장(90.5%), 003.008이 5,616장(9.3%)이고 97장은 적히지 않았습니다.

사실 파일 공유(SMB)는 ’방언’을 제안합니다. 어떤 말투로 대화할지 고르는 거예요. 어제 제안 259장에서 8종이 나왔는데, 새 계열인 SMB 2.???는 3장뿐입니다. 나머지 256장은 NT LM 0.12 · LANMAN1.0 · LM1.2X002 · LANMAN · PC NETWORK PROGRAM 1.0 · Windows for Workgroups 3.1 · LANMAN2.1이었어요. 전부 오래된 말투입니다.

사실 이 우편함이 어제 저장한 파일은 0개입니다. 안드로이드 디버깅 쪽은 40세션이라는 숫자만 있고, 문 번호·보낸 곳 수·내용은 어제 기록에 없습니다.


열어 보는 우편함 — 새 것이 하나도 없었다

사실 이제 봉투를 열어 보는 쪽(센서 01)입니다. 어제 이쪽에는 세션 2,016건이 들어왔습니다. 세션은 ’한 번 접속해서 끊을 때까지’를 한 건으로 센 것이에요. 보낸 곳은 322곳, 로그인 시도는 1,759회, 명령은 1,660개였습니다.

사실 로그인 시도 1,759회는 49초에 한 번, 명령 1,660개는 52초에 한 번입니다. 세션 2,016건과 출발지 322곳은 우리 기록 25일치 범위(6345,488건 · 131457곳) 안쪽이에요. 평범한 날이었습니다.

사실 어제 이 우편함에 저장된 파일은 네 종류입니다. 네 개 모두 전에 본 적 있는 해시였어요. 해시는 파일 내용을 한 줄로 요약한 값입니다. 내용이 한 글자라도 다르면 해시가 달라져요. 그러니 해시가 같다는 건 완전히 같은 파일이라는 뜻입니다.

파일 크기 어제 우리 기록
OpenSSH RSA 공개키 (a8460f…) 389바이트 14곳에서 15회 8월 16일 첫 관측, 29일째 매일
빈 파일 (01ba47…) 1바이트 1곳에서 11회 8월 17일 · 8월 22일에도 ‘11개 × 1바이트’
텍스트 (00b6f1…) 54바이트 1곳에서 1회 8월 19일 이후 반복
OpenSSH 개인키 (43728f…) 399바이트 1곳에서 1회 8월 19일 이후 반복

사실 크기 감을 붙이면, 389바이트와 399바이트는 문자 메시지 두세 줄, 54바이트는 한 문장, 1바이트는 글자 하나입니다. 네 종류를 다 더해도 843바이트예요.

사실 첫 줄의 389바이트짜리는 SSH 공개키입니다. 쉽게 말해 비밀번호 없이 들어올 수 있는 여벌 열쇠예요. 서버의 authorized_keys(허용된 열쇠 목록)라는 파일에 이 값을 한 줄 적어 넣으면, 그 열쇠를 가진 쪽은 이후 비밀번호를 묻지 않아도 들어옵니다. 이 열쇠는 우리 기록이 있는 모든 날에 왔습니다. 어제는 서로 다른 14곳에서 15번이요.

사실 넷째 줄의 399바이트짜리는 개인키입니다. 공개키가 현관에 걸어 두는 자물쇠 쪽이라면, 개인키는 그 자물쇠를 여는 열쇠 쪽이에요. 어제 이걸 놓고 간 건 별칭 ATK-CA5936(130.12.x.x) 하나였습니다. 위 공개키와 한 쌍인지는 우리 기록이 말해 주지 않습니다.

다섯 봉투를 열어 보니

사실 어제 눈에 띈 세션은 다섯 건입니다. 다섯 건 모두 로그인에 성공했고, 다섯 건 모두 전에 본 모양이었어요. 그래서 이 우편함은 어제 ’새 것 없음’으로 정리했습니다.

사실 3시 41분 46초, ATK-168132(82.157.x.x)가 텔넷으로 들어왔습니다. 텔넷은 SSH보다 오래된 원격 접속 방식이고, 오가는 내용이 암호화되지 않아요. 62.8초 동안 명령 17개를 쳤고, 의도가 다섯 가지(정찰 · 파일 다운로드 · 다운로드 후 실행 · 실행 권한 부여 · SSH 키 심기) 붙었습니다. 저장된 파일은 0개예요. 화면 녹화는 남았습니다.

사실 7시 26분 11초, ATK-CA5936(130.12.x.x)가 SSH로 들어왔습니다. 3.6초 동안 명령 1개를 쳤는데 거기에 의도 다섯 가지가 다 들어 있었어요. 파일 두 개(54바이트 텍스트, 399바이트 개인키)를 놓고 갔습니다. 접속 프로그램은 SSH-2.0-Go였고요. 이 모양은 8월 19일 이후 우리 기록에 11번째 등장입니다(8/19 · 8/24 · 8/25 · 8/26 · 8/28 · 8/30 · 9/01 · 9/03 · 9/05 · 9/06 · 어제).

사실 8시 25분 56초, ATK-C6FE9B(125.229.x.x)가 텔넷으로 83.8초. 명령 31개, 의도 세 가지(파일 다운로드 · 다운로드 후 실행 · 실행 권한 부여). 저장된 파일 0개.

사실 9시 56분 09초, ATK-86979F(212.132.x.x)가 텔넷으로 64.1초. 명령 22개인데 의도로 분류된 건 ‘방어 무력화’ 하나입니다. 어제 이 우편함 전체의 방어 무력화 1건이 이것이에요. 그리고 1바이트 빈 파일을 11번 받아 갔습니다. 가장 많이 받아 갔는데 손에 쥔 건 빈 파일이라는 이 모양은 8월 17일 · 8월 22일 · 9월 3일에도 있었습니다.

사실 13시 10분 03초, ATK-D3389B(111.34.x.x)가 텔넷으로 91.2초. 명령 31개, 의도 세 가지. 8시 25분의 세션과 명령 수도 의도 조합도 똑같습니다. 저장된 파일 0개. 텔넷 31개 명령짜리 이 모양은 8월 20일 · 9월 2일에도 있었어요.

사실 다섯 건 중 네 건이 텔넷입니다. 그런데 어제 텔넷 세션은 전체의 8.4%(169건)뿐이었어요. 세션 수로는 SSH가 91.6%인데, 눈에 띈 건 대부분 텔넷 쪽이었습니다.

사실 어제 이 우편함에서 쳐진 명령 1,660개를 종류별로 세면 이렇습니다.

무엇을 했나 횟수 견줄 것
정찰 — 시스템 살펴보기 1,442회 전체 명령의 86.9%
실행 권한 부여 64회 정찰의 약 22분의 1
지속성 — SSH 키 심기 17회 공개키 배달 15회와 비슷한 크기
흔적 삭제 16회 —
다운로드 후 실행 8회 파일 다운로드와 같은 수
파일 다운로드 8회 —
방어 무력화 1회 ATK-86979F 세션

사실 ’실행 권한 부여’는 파일에 “이건 실행해도 되는 파일이야”라는 표시를 붙이는 동작입니다. 리눅스에서는 이 표시가 없으면 프로그램이라도 안 돌아갑니다. ’흔적 삭제’는 자기가 다녀간 기록을 지우는 것, ’방어 무력화’는 서버의 보안 기능을 끄는 것이에요.

같은 봉투를 쓴다고 같은 사람은 아니다

사실 SSH로 접속해 오는 프로그램마다 지문이 하나 남습니다. 상대 프로그램이 “나는 이런 방식으로 대화한다”고 먼저 알려주는 값들을 한 줄로 요약한 거예요. 봉투로 치면 봉투의 규격과 종이 재질입니다.

사실 어제 이 우편함에 온 322곳 중 **150곳(46.6%)**이 같은 지문(acaa53e0…, SSH-2.0-OpenSSH_7.4)을 달고 왔습니다. 이 지문을 지금까지 달고 온 곳을 다 세면 1,058곳이에요. 어제 목록의 13개 지문 중 압도적 1위입니다.

사실 그런데 이 150곳은 파일을 하나도 놓고 가지 않았습니다. 어제 목록에 오른 13개 지문 전부가 그렇습니다.

사실 반대로 어제 개인키를 놓고 간 ATK-CA5936의 지문(16443846…)은 이 상위 목록에 없습니다. 목록의 최저선이 ’어제 2곳’이라서, 이 지문이 어제 몇 곳에서 왔는지는 알 수 없어요.

추정 여기서 멈춰야 합니다. 이 지문은 프로그램 빌드의 지문이지 사람의 지문이 아닙니다. 같은 문구점에서 파는 같은 봉투를 쓴다고 같은 사람이 아닌 것과 같아요. 같은 배포판이 기본으로 넣어 주는 SSH를 쓰면 서로 아무 관계가 없어도 같은 값이 나옵니다. 150곳을 한 조직으로 읽으면 안 됩니다.

어떤 비밀번호로 열려고 했나

사실 어제 시도된 아이디·비밀번호 조합은 1,146종입니다. 그중 여기 싣는 건 20종이고, 나머지 1,126종은 개수만 셉니다.

이유는 하나입니다. 서로 다른 출발지 3곳 미만에서만 보인 조합은 어딘가에서 실제로 유출된 진짜 계정일 수 있습니다. 그런 값은 우리 글에 옮기지 않아요. 아래 20종은 반대쪽입니다. 4곳 이상에서 반복돼서 ’누구의 것도 아닌 기본값·사전값’이라고 볼 수 있는 것들이에요.

아이디 비밀번호 서로 다른 출발지
345gs5662d34 345gs5662d34 14곳
admin admin 8곳
root 3245gs5662d34 7곳
root admin 6곳
root 1qazxsw2 5곳
admin Huawei12#$ 5곳
root 0000 5곳
username password 4곳
root 12345 4곳
root 123456789 4곳
support support 4곳
root 111111 4곳
root 1234 4곳
root 123456 4곳
nobody nobody2020 4곳
nobody nobody99 4곳
sshd 123456 4곳
ftpuser 123456 4곳
admin 654321 4곳
test test0 4곳

사실 첫 줄 345gs5662d34는 14곳에서 16번 왔습니다. 한 곳당 1.14번이에요. 한 곳이 여러 번 두드린 게 아니라 여러 곳이 한 번씩 두드렸습니다.

사실 위에서 본 공개키를 배달한 곳도 14곳이었습니다. 같은 14곳인지는 데이터가 이어 주지 않습니다. 숫자가 같다는 것까지예요.


어제 하루 전체

사실 열어 보는 우편함(센서 01)의 하루 집계입니다.

항목 어제 견줄 것
세션 2,016건 43초에 한 건 · 한 곳당 6.3건
고유 출발지 322곳 25일치 범위(131~457곳) 안쪽
로그인 시도 1,759회 49초에 한 번 · 조합 1,146종
명령 1,660개 52초에 한 번 · 정찰이 86.9%
포트 2222 (SSH) 1,846세션 전체의 91.6%
포트 2223 (텔넷) 169세션 8.4% — 그런데 눈에 띈 5건 중 4건이 이쪽
화면 녹화 1,496건 열람 가능한 건 269건
보관된 검체 118개 어제 새로 저장된 건 4종 · 전부 기존 해시

사실 포트별 합은 2,015건으로 총계 2,016건과 1건 차이가 납니다. 그 1건이 무엇인지는 기록이 말해 주지 않습니다.

사실 뜯지 않는 우편함(센서 02)의 103,298장은 세는 단위가 달라서 더하지 않습니다. 이쪽은 ’세션’이고 저쪽은 ’접촉’이에요.

사실 두 우편함에 봉투를 넣은 곳을 합치면 최대 939곳입니다. 두 우편함에 같은 곳이 겹쳐 왔는지 데이터가 알려주지 않아서 그냥 더한 ’상한’이에요. 실제 값은 그 이하입니다. 종전 최대가 사흘 전 907곳이었으니 이것도 새 최대값입니다.

사실 그리고 이 우편함 두 개는 어디에도 주소를 알린 적이 없습니다. 광고한 적도, 링크를 걸어 둔 적도 없어요. 그런데 하루에 10만 장이 옵니다.

추정 우편함 번호를 처음부터 끝까지 차례로 도는 쪽에게는 주소를 알렸는지가 중요하지 않습니다. 열려 있으면 꽂고 갑니다.

시간 순서로 늘어놓으면 이렇게 됩니다. 앞쪽 일곱 줄은 뜯지 않는 우편함의 하루 집계이고, 뒤쪽 여섯 줄이 열어 본 봉투들이에요. ’아카이브 대조’라고 적힌 줄을 눈여겨보세요 — 어제 하루만 봐서는 안 보이고, 지난 기록과 나란히 놓아야 보이는 것들입니다.

  1. 사실 접촉 103,298건 · 출발지 617곳. VNC(5900) 60,286건/407곳 · RDP(3389) 42,578건/107곳 · SMB(445) 253건/38곳 · LDAP(389) 92건/7곳 · MSSQL(1433) 49건/35곳 · ADB 40세션. 캡처된 검체 0개. 02 는 세션 시각을 내보내지 않아 일 단위다
  2. 사실 RDP 42,578건은 아카이브 15일치(8/26~9/10) 최대였던 9/10 의 34,811건보다 7,767건 많다(1.22배). 출발지는 107곳으로 9/10 의 109곳과 거의 같아, 한 곳당 접촉이 319.4회에서 397.9회로 올랐다
  3. 사실 mstsc 32,855 · hello 7,039 · <ip> 400 · rdpaudit 14 · Administr 2 · 무작위 9자 1. 합 40,311건(RDP 의 94.7%), 쿠키 미기록 2,267건(5.3%). mstsc 는 RDP 의 77.2%, hello 는 16.5%
  4. 사실 'hello' 7,039건은 아카이브 종전 최대 2,709건(8/31)의 2.6배. 추이: 8/26 604 → 8/31 2,709 → 9/03 3 → 9/07 1,391 → 9/10 16 → 오늘 7,039. 9/10 에는 mstsc 가 hello 를 대체하는 모양이었는데 오늘은 둘이 같은 날 같이 있다
  5. 사실 최다 접촉 별칭 ATK-E37B01(149.50.x.x) 34,899건 = 02 전체의 33.8%. 9/10 에도 같은 별칭이 1위였고 그날 34,229건(34.0%). 2~8위 일곱 곳은 4,720~5,808건의 좁은 띠(ATK-A9F1B3 5,808 · ATK-943F0E 5,807 · ATK-593C0D 5,472 · ATK-992AD3 5,292 · ATK-28B422 4,751 · ATK-B954FC 4,749 · ATK-AE6CC0 4,720), 9위 3,252 → 10위 1,563 으로 꺾인다. 상위 12곳 합 78,222건(75.7%), 나머지 605곳 25,076건으로 한 곳당 평균 41.4건
  6. 사실 상위 12개 별칭 중 8개는 아카이브 상위 목록에 전례가 있다(ATK-E37B01 · 992AD3 · 943F0E · A9F1B3 · B24952 는 9/10, ATK-28B422 · B954FC · AE6CC0 는 8/27~8/29). ATK-593C0D · 0E3BBB · A00F1F · AE264D 4개는 상위 목록에 처음 나온다 — 단 아카이브는 하루 12곳만 싣는다
  7. 사실 VNC 60,286건/407곳은 접촉 수로 아카이브 3위(9/10 65,487 · 9/08 65,322), 출발지 수로 2위(9/08 416). 제안된 VNC 버전은 003.003 54,573(90.5%) · 003.008 5,616(9.3%), 미기록 97. SMB 는 8종 방언 제안 259건 중 'SMB 2.???' 가 3건뿐이고 나머지 256건은 NT LM 0.12 · LANMAN1.0 · LM1.2X002 · LANMAN · PC NETWORK PROGRAM 1.0 · Windows for Workgroups 3.1 · LANMAN2.1 이다
  8. 사실 ATK-168132(82.157.x.x) 텔넷 로그인 성공. 명령 17개, 의도 5종(정찰 · 파일 다운로드 · 다운로드 후 실행 · 실행 권한 부여 · SSH 키 심기). 저장된 파일 0개. TTY 녹화 있음
  9. 사실 ATK-CA5936(130.12.x.x) SSH 로그인 성공. 명령 1개에 의도 5종, 파일 2개 배달 — 54바이트 ASCII 텍스트(00b6f1…)와 399바이트 OpenSSH 개인키(43728f…). 클라이언트 SSH-2.0-Go, 지문 16443846184eafde36765c9bab2f4397. 두 해시 모두 8/19 첫 관측 이후 아카이브에 반복 등장한 것과 같다
  10. 사실 ATK-C6FE9B(125.229.x.x) 텔넷 로그인 성공. 명령 31개, 의도 3종(파일 다운로드 · 다운로드 후 실행 · 실행 권한 부여). 저장된 파일 0개
  11. 사실 ATK-86979F(212.132.x.x) 텔넷 로그인 성공. 명령 22개 중 의도로 분류된 것은 '방어 무력화' 1건(오늘 01 전체의 방어 무력화 1건이 이것). 1바이트 파일(01ba47…) 11개 수신
  12. 사실 ATK-D3389B(111.34.x.x) 텔넷 로그인 성공. 명령 31개, 의도 3종 — 08:25 의 ATK-C6FE9B 와 명령 수·의도 조합이 같다. 저장된 파일 0개
  13. 사실 389바이트 OpenSSH RSA 공개키(a8460f…)가 서로 다른 출발지 14곳에서 15회 배달됐다(별칭 10개만 목록화). 아카이브 기준 8/16 첫 관측 이후 29일째 되는 날이며, 아카이브에 있는 모든 날에 등장했다

붙여 읽어야 하는 건 두 번째 줄과 다섯 번째 줄입니다. 하나는 “보낸 곳은 107곳으로 그대로”이고, 다른 하나는 “한 곳이 전체의 33.8%“예요. 사흘 전 글에서도 같은 두 줄을 이어 읽으려 했는데, 어제도 우리 데이터는 그 둘을 이어 주지 않습니다.


우편함에 놓여 있던 것

사실 방어에 쓰실 수 있게 값을 그대로 옮깁니다. 값을 클릭하면 복사됩니다. 어제 네 개는 전부 주소 칸이 비어 있어요. 어디서 내려받은 게 아니라 세션 안에서 직접 놓고 간 것으로 보이지만 확정은 못 합니다. 네 줄 모두 ’아카이브’라는 말이 붙어 있는 것을 봐 주세요 — 어제 처음 온 건 하나도 없습니다.

sha256
a8460f446be540410004b1a8db4083773fa46f7fe76fa84219c93daa1669f8f2389바이트 OpenSSH RSA 공개키 · 센서 01 · 어제 14곳에서 15회(목록화된 별칭 10개: ATK-8CCE4F · 642E95 · 06F25C · 47BDCD · 6D5681 · AA7FC7 · 657755 · 9C4D36 · 01C6CD · B0A313) · 주소 칸 비어 있음 · 아카이브 8/16 첫 관측, 29일째 매일 등장
sha256
01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b1바이트 · 매직 없음 · 센서 01 · ATK-86979F 가 11회 · 아카이브 8/17 · 8/22 에도 같은 '11개 × 1바이트' 형태
sha256
00b6f15c2274420217ed3098a9f5f00545bf1793d7a324fd18a7809cbbf5b12b54바이트 ASCII 텍스트 · 센서 01 · ATK-CA5936 이 1회 · 아카이브 8/19 이후 반복
sha256
43728fbfb98bb39ff61a2db0fc2905bd6937997062b05b9ab8b186fdee18c09a399바이트 OpenSSH 개인키 · 센서 01 · ATK-CA5936 이 1회 · 아카이브 8/19 이후 반복

사실 유포 주소(URL)가 한 줄도 없는 걸 보셨을 거예요. 어제 저장된 네 파일은 전부 주소 없이 들어왔습니다. 실행파일도 한 개도 없어요. 그래서 이 카드에는 해시만 있습니다.

공격자가 쓴 수법을 국제 분류표에 대응시키면

MITRE ATT&CK은 공격 수법마다 번호를 붙여 놓은 국제 목록입니다. 어제 본 행동을 그 번호에 맞추면 이렇게 됩니다. ID를 누르면 원문 설명으로 갑니다 — 우리 말을 믿지 말고 직접 확인하시라고 링크를 겁니다.

  • T1046Network Service Discovery — 02 의 VNC · RDP · SMB · LDAP · MSSQL 5개 서비스 접촉, 프로토콜 협상 단계까지만 관측추정
  • T1110Brute Force — RDP 한 곳당 397.9회 · VNC 한 곳당 148.1회의 반복 접촉. 02 는 자격증명을 꺼내지 않으므로 '시도 내용'은 확인 불가추정
  • T1133External Remote Services — 인터넷에 열린 RDP · VNC 포트에 대한 접근 시도추정
  • T1110.001Password Guessing — 01 로그인 시도 1,759회, 3개 IP 이상에서 반복된 조합 20종추정
  • T1078.001Default Accounts — admin/admin(8곳) · root/admin(6곳) · admin/Huawei12#$(5곳) · support/support(4곳)추정
  • T1082System Information Discovery — '정찰 — 시스템' 1,442건추정
  • T1105Ingress Tool Transfer — '파일 다운로드' 8건 · '다운로드 후 실행' 8건추정
  • T1222File and Directory Permissions Modification — '실행 권한 부여' 64건추정
  • T1098.004Account Manipulation: SSH Authorized Keys — '지속성 — SSH 키 심기' 17건, 공개키 파일 14곳에서 배달추정
  • T1070Indicator Removal — '흔적 삭제' 16건추정
  • T1562Impair Defenses — '방어 무력화' 1건(ATK-86979F)추정

열한 줄 전부 [추정] 배지가 붙은 걸 봐 주세요. 우리 손에 있는 건 명령의 ’의도 분류 결과’와 ’몇 번이었나’까지입니다. 명령 원문은 없어요. 특히 위 세 줄은 봉투를 뜯지 않는 우편함 쪽이라, “몇 장 왔나”에서 “무차별 대입이었다”로 건너뛴 것이 곧 추정입니다.


전에 이런 일이 있었다

추정 GoldBrute(2019). 인터넷에 열린 원격 데스크톱 서버를 골라 무차별 대입을 하던 봇넷입니다. 소수의 출발지가 3389번 문을 매우 높은 빈도로 두드리는 형태였어요. 어제 우리 우편함의 모양 — 107곳이 한 곳당 397.9장, 1위 한 곳이 3만 장 이상 — 이 같은 계열입니다. 다만 우리는 협상 단계까지만 받기 때문에, 실제로 어떤 비밀번호를 넣었는지는 확인할 수 없습니다. (출처 유형: 보안 벤더 연구 블로그 Morphus Labs 공개 분석)

추정 BlueKeep 공개 직후의 3389 스캔 급증(2019). 원격 데스크톱에 심각한 결함(CVE-2019-0708)이 공개되자 인터넷 전역에서 이 포트를 두드리는 횟수가 뛰었던 일이 있습니다. 원격 데스크톱 포트가 대량 스캔의 표적이 된 공개 전례로 배경 맥락에만 둡니다. 어제 데이터는 어떤 CVE와도 연결되지 않습니다. (출처 유형: CVE · Microsoft 보안 어드바이저리 · CISA KEV 등재)

추정 Mirai 봇넷(2016). 텔넷 기본 계정 사전으로 들어간 뒤 CPU 종류별로 나뉜 실행파일을 내려받게 하던 방식입니다. 어제 열어 보는 우편함의 텔넷 기본 계정 로그인 성공 4건, 그리고 별도 경로로 확보된 배경 지표에 /bins/ 아래 parm · pmips · psh4 · x86_64처럼 아키텍처별로 나뉜 파일 이름이 있는 것이 같은 계열이에요. 검체가 어느 계열인지는 판단하지 않습니다. VirusTotal을 연동하지 않았어요. (출처 유형: 공개된 소스코드(2016 유출) 및 다수 벤더·연구기관 분석 보고서)


그래서 뭘 해야 하나

우편함 이야기로 돌아가겠습니다. 어제 봉투는 기록적으로 많이 꽂혔지만, 실제로 갈리는 지점은 “우편함이 길가에 있었느냐”입니다. 아래 항목은 전부 그 얘기예요.

1. 관리 포트를 인터넷에 그대로 열어 두고 있다 · 가능성 높음 열어 보는 우편함에는 322곳에서 2,016세션(2222 · 2223번), 뜯지 않는 우편함에는 617곳에서 103,298장(5900 · 3389 · 445 · 389 · 1433번)이 사전 접촉 없이 곧바로 닿았습니다. 둘을 합친 출발지 상한이 939곳이에요. 이 서버 두 대는 어디에도 주소를 알린 적이 없습니다. 원격 데스크톱 한 칸에만 하루 42,578장이 왔고, 그중 한 곳이 34,899장을 넣었어요. VPN이나 점프호스트(중간 경유 서버) 뒤에 있었다면 103,298장은 전부 도달 자체가 불가능합니다. 우편함을 건물 안으로 들여놓는 것과 같아요.

2. 기본 계정·취약 비밀번호를 그대로 쓰고 있다 · 가능성 높음 위 표 20줄이 전부 장비나 배포판이 출고할 때 넣어 두는 값이거나 어디서나 통하는 사전값입니다. admin/admin이 8곳, root/admin이 6곳, root/0000이 5곳, admin/Huawei12#$가 5곳, support/support가 4곳에서 왔어요. 어제 시도된 조합은 모두 1,146종입니다. 어제 눈에 띈 세션 5건이 전부 로그인에 성공한 세션이에요. 이 조합 중 하나만 실제 서버에 남아 있어도 문이 열립니다. 열린 뒤에는 어제 관측된 순서대로 갑니다 — 정찰(1,442) → 실행 권한 부여(64) → 키 심기(17). 텔넷 4건은 63~91초 안에 끝났습니다.

3. 비밀번호 로그인을 허용하고 열쇠 방식을 안 쓰고 있다 · 가능성 높음 어제 로그인 시도가 1,759회였습니다. 비밀번호 문이 열려 있는 한 이 사전은 매일 다시 옵니다. 그런데 들어온 쪽은 열쇠 방식의 효용을 이미 알고 있어요. 어제 ’SSH 키 심기’가 17회, 389바이트 공개키가 서로 다른 14곳에서 15번 들어왔습니다. authorized_keys(허용된 열쇠 목록)에 남의 열쇠가 한 줄 들어가면 비밀번호를 나중에 바꿔도 그 열쇠로 계속 들어옵니다. 반대로 열쇠 방식만 허용했다면, 어제 1,759회 시도는 인증 단계에 도달하지 못합니다.

4. 횟수 기반 차단(fail2ban 등)이 없다 · 가능성 중간 fail2ban은 한 곳에서 너무 자주 두드리면 그 곳을 잠시 막는 도구예요. 어제 데이터가 여기서 둘로 갈립니다. 뜯지 않는 우편함의 1위는 한 곳이 34,899장, 원격 데스크톱은 한 곳당 397.9장이었으니 출발지 단위 제한이 있었다면 초반에 끊깁니다. 그런데 열어 보는 우편함의 345gs5662d34 조합은 14곳에서 16회, 한 곳당 1.14회예요. 이런 분산형은 임계치에 걸리지 않습니다. 그래서 ’높음’이 아니라 ’중간’입니다. 속도 제한은 02형 폭주에는 효과가 크고, 01형 살포에는 약합니다.

5. 밖으로 나가는 연결을 막지 않고 있다 · 가능성 중간 ‘파일 다운로드’ 8회와 ‘다운로드 후 실행’ 8회가 같았고, 눈에 띈 세션 5건 중 4건에 다운로드 의도가 붙었습니다. 어제 실제로 저장된 건 열쇠 · 텍스트 · 빈 파일뿐이었지만, 의도 단계는 매 세션 관측됐어요. 배경 지표에는 한 호스트(31[.]77[.]227[.]121)의 /bins/ 경로 12개가 CPU 종류별로 나뉘어 있습니다. 서버가 밖으로 나가는 연결을 허용하면, 그런 유포지에서 실행파일을 받아 오는 단계가 성립합니다. 막혀 있으면 그 단계에서 끝나요.

6. 로그를 서버 안에만 두고 있다 · 가능성 중간 ‘흔적 삭제’ 의도가 어제 16회, ’방어 무력화’가 1회 분류됐습니다. ATK-86979F 세션은 붙은 의도가 방어 무력화 하나뿐이었어요. 지우려는 의도가 실제로 관측됐습니다. 우리가 그걸 볼 수 있었던 건 화면 1,496건이 서버 밖에서 따로 녹화됐기 때문이에요. 서버 안의 로그만 있었다면, 흔적 삭제 뒤에는 침해 사실 자체를 모르게 됩니다. EDR(서버 안에서 이상 행동을 실시간으로 잡는 도구)이나 외부 로그 수집이 없으면 어제 63초 · 64초 · 84초 · 91초짜리 세션은 사람 눈으로는 못 봅니다.


우리가 모르는 것

이 블로그가 다른 곳과 다른 점은 여기입니다. 모르는 것을 모른다고 적습니다.

어제 주제 자체에 대한 의심

  • [확인 불가] 9월 11일과 12일 브리프가 아카이브에 없습니다. 9월 10일의 원격 데스크톱 폭주가 어제까지 ‘이어진’ 것인지, 끊겼다가 다시 온 것인지 알 수 없어요. 이 글의 “사흘 만에 다시”는 두 시점을 나란히 놓은 비교이지, 연속성 주장이 아닙니다.
  • [확인 불가] 원격 데스크톱 42,578장이 ATK-E37B01 한 곳에서 나왔는지 확정할 수 없습니다. 34,899장과 mstsc 32,855장의 크기가 비슷하다는 정황뿐이에요. 42,578 − 34,899 = 7,679와 hello + <ip> + 기타 = 7,456이 비슷한 것도 정황일 뿐입니다. 우리 기록에는 출발지별 서비스 짝이 없습니다.
  • [확인 불가] 한 출발지가 여러 칸을 함께 두드렸는지 계산할 수 없습니다. 칸별 출발지 합(407+107+38+7+35 = 594)과 전체 617곳의 차이 23이 안드로이드 디버깅 쪽 출발지인지, 겹친 곳인지 구분할 수 없어요. 이 값을 0으로 쓰면 거짓이 되므로 ’산출 불가’로 둡니다.
  • [확인 불가] hello · mstsc · <ip>가 어떤 도구, 어떤 의도를 뜻하는지 판단하지 않습니다. 프로토콜 칸에 적힌 문자열이라는 사실만 있습니다.
  • [확인 불가] 뜯지 않는 우편함에서 시도된 비밀번호는 꺼내지 않았습니다. 바이너리 프레임 안에 있어요. ’무차별 대입’은 접촉 빈도에서 나온 추정입니다.
  • [확인 불가] 상위 출발지의 68.183.x.x 두 별칭(ATK-A9F1B3 · ATK-992AD3)은 앞 두 자리가 같지만 ASN · 소유자 정보가 없어 같은 운영자인지 알 수 없습니다.
  • [확인 불가] 상위 별칭 4개(ATK-593C0D · 0E3BBB · A00F1F · AE264D)가 ’처음’이라는 건 아카이브 상위 12곳 목록 기준입니다. 그동안 13위 밖에 있었을 수 있습니다.
  • [확인 불가] 안드로이드 디버깅(ADB) 40세션의 출발지 수 · 투입 내용 · 문 번호가 어제 기록에 없습니다. 검체 0개라는 것만 압니다.

어제 데이터에서 설명이 안 되는 것

  • [확인 불가] ATK-C6FE9B와 ATK-D3389B는 ‘다운로드 후 실행’ 의도가 붙었는데 다운로드 건수가 0입니다. 파일이 오지 않은 건지, 저장되지 않은 건지 구분할 수 없어요.
  • [확인 불가] 공개키 a8460f…를 배달한 14곳 중 별칭은 10개만 목록에 있습니다. 나머지 4곳은 알 수 없습니다.
  • [확인 불가] ATK-CA5936의 지문(16443846…)이 어제 상위 지문 목록에 없어서 이 지문이 어제 몇 곳에서 왔는지 알 수 없습니다. 목록이 완전한지도 기록이 말해 주지 않아요.
  • [확인 불가] 열어 보는 우편함의 화면 녹화 1,496건과 열람 가능한 269건의 차이가 무엇을 뜻하는지 기록이 설명하지 않습니다.
  • [확인 불가] 포트별 세션 합(1,846 + 169 = 2,015)과 세션 총계 2,016의 1건 차이가 무엇인지 기록이 말해 주지 않습니다.
  • [확인 불가] 어제 열어 보는 우편함의 어떤 세션도 배경 지표의 12개 URL과 연결되지 않습니다. 저장된 네 파일 모두 주소 칸이 비어 있어요. 그 목록은 배경 지표입니다.

일부러 싣지 않은 것 · 연결하지 않은 것

  • [제외] 압축을 풀어야만 드러나는 유포 주소 12건(한 호스트 31[.]77[.]227[.]121의 /bins/ 경로)은 어제 저장분에서 나온 것이 아닙니다. 어제 네 파일은 모두 주소가 비어 있고 실행파일이 아니에요. 배경 재료로만 두고 어제 세션과 연결해 쓰지 않았습니다.
  • [확인 불가] 관측한 유포지 · C2는 C-TAS(KISA의 위협정보 공유 체계)로 신고하지만, 확인되는 건 전송이 성공했다는 것까지입니다. 실제 적재 여부는 별도 확인이 필요합니다.
  • [제외] 어제 시도된 조합 1,126종은 값을 싣지 않았습니다. 서로 다른 출발지 3곳 미만에서만 보인 조합은 실제 유출 계정일 수 있어서 개수만 셉니다.

아예 판단하지 않는 것

  • ASN · ISP — 관련 데이터베이스가 없습니다. 추정하지 않습니다.
  • 지리정보 — 위와 같습니다. IP 지리정보는 애초에 귀속의 근거가 되지도 않아요. 어제 등장한 마스킹 IP 어느 것에도 국가 · 지역을 붙이지 않습니다.
  • VPN · Tor · 클라우드 여부 — 판별 수단이 없습니다.
  • 검체의 악성 여부 — VirusTotal을 연동하지 않았습니다. 검체 분류는 MalwareBazaar 태그를 쓰는데 어제 네 파일에는 그 태그가 없습니다.
  • User-Agent — 두 우편함 다 HTTP가 아닙니다. 센서 01은 SSH · 텔넷, 센서 02는 SMB · RDP · VNC · MSSQL · LDAP · ADB예요. HTTP 공격은 별도 소스입니다.
  • CVE 연결 — SSH · 텔넷 공격은 대개 CVE를 참조하지 않고, 센서 02도 협상 단계라 마찬가지입니다. 어제 원격 데스크톱 42,578장을 어떤 취약점과도 연결하지 않습니다.
  • 접속 프로그램 지문 — 지문은 빌드의 지문이지 사람의 지문이 아닙니다. 150곳짜리 묶음을 한 주체로 읽으면 안 됩니다.
  • 출발지 신원 — 별칭(ATK-XXXXXX)은 글과 글 사이에서 같은 출발지를 알아보는 이름표일 뿐 신원이 아닙니다. 마스킹된 자리는 복원하지 않고, 어떤 국가 · 기업 · 개인도 공격자로 지목하지 않습니다.

우편함을 다시 열어 봅니다. 사흘 전보다 7,767장이 더 꽂혀 있었습니다. 보낸 곳의 수는 그대로였고, 가장 많이 보낸 곳도 그대로였어요. 한동안 안 보이던 이름 hello는 7,039장으로 돌아와서, 이번에는 mstsc 옆에 나란히 있었습니다.

옆 우편함은 봉투를 뜯어 봤는데, 네 개 다 전에 본 파일이었습니다. 열쇠 한 장은 29일째 하루도 빠지지 않고 왔어요.

그러니 어제 기록은 **“새 것이 왔다”가 아니라 “아는 것이 더 많이 왔다”**입니다. 이 둘은 다른 문장이에요. 새 것은 목록에 넣으면 되지만, 아는 것이 더 많이 오는 날은 우편함이 길가에 있다는 것 자체가 문제입니다. 우리가 셀 수 있었던 건 몇 장이 왔나, 겉에 뭐라고 적혔나까지예요. 누가 왜 보냈는지는 봉투가 말해 주지 않습니다.

관측일은 2026-09-13이며, 센서 02는 하루 집계, 센서 01은 세션 시각 기준입니다. 출발지 IP는 뒤 두 자리를 가려서 적었고 복원하지 않습니다. 유포 주소는 접속되지 않도록 변형(defang)했습니다. 자격증명은 서로 다른 IP 3곳 이상에서 반복 관측된 20종만 인용했으며, 3곳 미만에서만 보인 1,126종은 개수만 세고 값은 적지 않았습니다.