264곳이 한 번씩 스쳤다 — 문 앞이 얇아진 날
9월 6일, 화면공유 문을 두드린 곳이 하루 만에 100곳에서 264곳이 됐습니다. 그런데 두드린 횟수는 1.4배 늘었을 뿐이라, 한 곳이 두드린 횟수는 오히려 절반이 됐습니다. 세게 때리던 소수 위에 얇게 스치는 다수가 얹힌 날의 기록입니다.

아파트 현관문을 아침에 열면 전단지가 붙어 있습니다. 어제도 서른 장, 오늘도 서른 장이라고 해 봅시다.
같은 서른 장일까요?
어제는 세 사람이 열 장씩 붙이고 갔습니다. 오늘은 서른 사람이 한 장씩 붙이고 갔어요. 문 앞에 쌓인 종이는 똑같이 서른 장인데, 그 앞을 지나간 사람 수는 열 배가 됐습니다.
종이만 세면 두 날은 같은 날입니다. 사람을 세야 다른 날이 됩니다.
어제 우리 서버에서 벌어진 일이 정확히 이겁니다. 붙은 종이는 1.4배 늘었는데, 붙이고 간 곳은 2.6배가 됐습니다.
먼저, 숫자부터 보겠습니다
사실 우리는 허니팟 서버 두 대를 돌립니다. 허니팟은 일부러 열어 두고 누가 뭘 하는지 지켜보는 미끼 서버입니다. 어제 그중 한 대(센서 02)의 화면공유 포트를 두드린 곳은 264곳이었습니다. 그제는 100곳이었어요.
사실 이 264곳은 관측 12일치(8/26~9/6) 중 최고입니다. 12일치를 순서대로 늘어놓으면 40 · 38 · 50 · 36 · 45 · 46 · 78 · 62 · 135 · 69 · 100 · 264입니다. 직전 최고치였던 9월 3일의 135곳과 견주면 1.96배, 그제 100곳과 견주면 2.64배입니다.
사실 그런데 두드린 횟수는 33,975건에서 48,605건이 됐습니다. 1.4배입니다.
추정 늘어난 방향이 서로 다릅니다. 종이는 1.4배 늘었는데 사람은 2.6배가 됐어요. 나눠 보면 답이 나옵니다.
| 날짜 | 두드린 횟수 | 두드린 곳 | 한 곳당 |
|---|---|---|---|
| 8월 29일 | 40,525건 | 36곳 | 1,125.7회 |
| 9월 5일 | 33,975건 | 100곳 | 339.8회 |
| 9월 6일 | 48,605건 | 264곳 | 184.1회 |
사실 한 곳이 두드린 횟수가 어제 하루 만에 절반이 됐습니다. 하루를 분으로 나눠 보면 감이 잡힙니다. 8월 29일에는 한 곳이 1분 20초마다 한 번씩 하루 종일 문고리를 돌렸습니다. 그제는 4분에 한 번, 어제는 8분에 한 번입니다.
추정 세게 때리는 쪽이 약해진 게 아니라, 얇게 스치는 쪽이 새로 얹힌 모양으로 읽습니다. 전단지를 백 장씩 붙이던 사람은 그대로 있는데, 한 장만 붙이고 지나가는 사람이 훨씬 많아진 겁니다.
그 얇은 층이 실제로 보입니다
사실 어제 센서 02에 접촉한 곳 483곳 중, 상위 12곳이 만든 이벤트가 44,439건이었습니다. 하루 전체 50,417건의 **88.1%**입니다.
사실 그 12곳 안에서도 층이 갈립니다. 상위 9곳이 각각 3,499~5,379건씩, 합쳐서 42,990건(85.3%)을 만들었어요. 10위부터는 700건 · 514건 · 235건으로 뚝 떨어집니다.
사실 상위 12곳을 뺀 나머지 471곳이 만든 건 다 합쳐서 5,978건입니다. 한 곳당 평균 12.7건이에요.
추정 전단지로 옮기면 이렇습니다. 매일 오는 아홉 사람은 한 사람당 4천 장씩 붙이고 갑니다. 나머지 471명은 한 사람당 열두 장씩 붙이고 지나갔어요. 같은 문 앞에 성격이 완전히 다른 두 무리가 겹쳐 있고, 어제 늘어난 건 뒤쪽입니다.
문 앞에 다녀간 최대 897곳
사실 서버 두 대를 합치면 어제 접촉한 고유 출발지는 최대 897곳입니다. 아카이브 22일 중 가장 큰 값이고, 직전 최대는 9월 3일의 777곳이었습니다.
사실 ’최대’라고 쓰는 이유가 있습니다. 두 서버에 같은 곳이 겹쳐서 왔는지를 우리 데이터가 알려주지 않아요. 그래서 두 값을 그냥 더한 상한입니다. 겹친 만큼 실제 숫자는 더 작습니다.
사실 이 서버 두 대는 어디에도 주소를 알린 적이 없습니다. 광고한 적도, 링크를 걸어 둔 적도 없어요.
추정 그러니 이건 우리를 골라서 찾아온 게 아닙니다. 주소를 처음부터 끝까지 훑다가 걸린 겁니다. 포트를 열어 두는 것만으로 하루 안에 목록에 오릅니다.
같은 날, 문마다 성격이 딴판이었다
사실 센서 02는 문을 여섯 개 열어 뒀습니다. 어제 하루 접촉은 50,417건, 고유 출발지는 483곳이었어요. 여섯 서비스 접촉을 더하면 정확히 50,417로 총계와 맞습니다.
| 문 (서비스) | 포트 | 두드린 횟수 | 두드린 곳 | 한 곳당 |
|---|---|---|---|---|
| VNC (화면공유) | 5900 | 48,605건 (96.4%) | 264곳 | 184.1회 |
| RDP (원격 데스크톱) | 3389 | 1,474건 | 111곳 | 13.3회 |
| SMB (파일 공유) | 445 | 200건 | 38곳 | 5.3회 |
| MSSQL (데이터베이스) | 1433 | 77건 | 46곳 | 1.67회 |
| LDAP (계정 조회) | 389 | 14건 | 8곳 | 1.75회 |
| ADB (안드로이드 디버깅) | (미기록) | 47건 | (미기록) | — |
사실 같은 날 같은 서버인데 분포가 정반대입니다. 화면공유 문은 264곳이 4만 8천 번을 두드렸고, 데이터베이스 문은 46곳이 딱 77번 두드렸습니다. 한 곳이 1.67번씩만 건드리고 간 거예요.
사실 LDAP 문의 14건은 관측 12일 중 최저입니다. 직전 최저가 9월 3일의 36건이었어요.
추정 문마다 붙이고 간 종이 수가 다른 게 아니라, 찾아온 목적이 다른 것으로 읽힙니다. 어떤 문은 하루 종일 두드려 보는 대상이고, 어떤 문은 “여기 이 문이 있네” 하고 한 번 적어 두고 지나가는 대상입니다.
상대가 스스로 말한 것들
사실
화면공유는 접속하기 전에 서로 “나는 몇 번 버전으로 대화할게” 하고 합을 맞춥니다. 어제 상대가 제안한 버전은 003.003이 47,446번, 003.008이 889번이었어요. 버전이 기록된 48,335건의 **98.2%**가 옛 버전입니다.
사실
파일 공유 쪽도 비슷합니다. 상대가 제안한 방언(대화 방식) 243건 중 최신 계열인 SMB 2.???는 **2건(0.8%)**뿐이고, 나머지 241건은 NT LM 0.12 · LANMAN1.0 · Windows for Workgroups 3.1 같은 옛 어휘였습니다.
사실
원격 데스크톱 쪽에는 접속할 때 딸려 오는 ’쿠키’라는 짧은 문자열이 있습니다. 어제 값은 hello 897 · <ip> 427 · Administr 3 · 빈 값 3 · nmap 1 · eltons 1이었어요. 공개 스캐너 이름을 그대로 적어 보낸 접촉이 한 건 있었습니다.
사실 다만 쿠키 값이 무엇을 뜻하는지는 판단하지 않습니다. 클라이언트가 아무 문자열이나 채워 넣을 수 있는 칸이라, 특정 도구가 왔다고 말할 근거가 되지 않습니다.
사실 그리고 센서 02에는 로그인 성공도, 명령도, 자격증명도 존재하지 않습니다. 이 서버는 저상호작용 방식이라 문을 실제로 열어 주지 않거든요. 여기서 말할 수 있는 건 “어느 문을 몇 곳이 몇 번 두드렸나”까지입니다. 전단지가 몇 장 붙었는지는 세지만, 누가 들어와서 뭘 했는지는 애초에 기록될 수 없습니다.
사실 그래서 어제 이 서버가 4만 8천 번 두드림을 받고도 건진 파일은 0개입니다. 안드로이드 디버깅 통로에 47세션이 들어왔는데도 남은 검체는 0건이었어요. 이 통로는 9월 2일 23세션에 검체 1건, 9월 3일 32세션에 검체 4건, 8월 28일 87세션에 검체 4건을 남긴 적이 있는 채널인데, 어제는 아무것도 없었습니다.
문이 실제로 열리는 쪽 — 센서 01
전단지는 문에 붙기만 합니다. 문을 여는 건 다른 이야기예요. 옆에 있는 서버 한 대는 문이 실제로 열립니다.
사실 어제 센서 01에는 세션 2,207건이 들어왔습니다. 고유 출발지 414곳, 로그인 시도 1,889회, 명령 2,711개, 화면 녹화 1,536건입니다.
사실 로그인 시도 1,889회는 하루로 나누면 46초에 한 번꼴입니다. 명령 2,711개는 32초에 한 번이에요. 급하지도, 쉬지도 않는 속도입니다.
사실 어제 서버 안에서 벌어진 일을 종류별로 세면 이렇습니다.
| 무엇을 했나 | 횟수 | 견줄 것 |
|---|---|---|
| 정찰 — 시스템 살펴보기 | 1,374회 | 전체 명령 2,711개의 50.7% |
| 실행 권한 부여 | 192회 | 다운로드 34회의 5.6배 |
| 다운로드 후 실행 | 34회 | — |
| 파일 다운로드 | 34회 | 위와 정확히 같다 |
| 지속성 — SSH 키 심기 | 18회 | — |
| 흔적 삭제 | 15회 | — |
사실 ‘정찰’ 1,374회는 그제 770회의 1.78배이고, 8월 28일(995회) 이후 9일 만의 최고치입니다.
사실 ’실행 권한 부여’는 파일에 “이건 실행해도 되는 파일이야”라는 표시를 붙이는 동작입니다. 리눅스에서는 이 표시가 없으면 프로그램이어도 그냥 안 돌아갑니다.
사실 ‘파일 다운로드’ 34회와 ‘다운로드 후 실행’ 34회가 정확히 같습니다. 내려받은 것은 예외 없이 실행 단계로 갔다는 뜻이에요. 이 두 값이 맞아떨어지는 건 8월 22일 이후 거의 매일 반복됩니다.
사실 다만 명령 2,711개 중 **의도가 붙은 건 1,667개(61.5%)**뿐입니다. 나머지 1,044개가 무엇이었는지는 원문이 우리 손에 없어 말할 수 없습니다.
34초에 명령 48개, 그런데 분류는 0
사실 어제 로그인에 성공하고 명령까지 남긴 세션 5건 중 하나가 눈에 걸립니다. 07시 05분 15초부터 49초까지, 34초짜리 텔넷 세션이었어요. 별칭은 ATK-60E535(218.161.x.x)입니다.
사실 이 세션은 명령 48개, 다운로드 12건입니다. 34초에 명령 48개면 0.7초에 하나꼴이에요. 어제 세션 중 완결성 점수가 가장 높았습니다.
사실 그런데 의도 목록이 비어 있습니다. 어제 가장 많이 움직인 세션인데, 우리 분류기가 명령 48개 중 하나에도 뜻을 붙이지 못했어요. 이유는 데이터로 알 수 없습니다.
사실 이 세션이 받아 간 건 두 종류입니다. 1바이트짜리 빈 파일(11회)과 202바이트 셸 스크립트 하나예요. 1바이트면 글자 하나 분량이고, 202바이트면 문자 메시지 한 줄 반쯤 됩니다.
사실
그 202바이트 스크립트(0c99433c…)는 아카이브 22일치 중 8월 21일과 8월 23일에만 있던 파일입니다. 14일 만에 어제 다시 나타나서 세 번째 관측이 됐습니다.
3.7초 세션, 아홉 번째
사실 11시 19분 01초부터 04초까지, 3.7초짜리 SSH 세션이 하나 있었습니다(ATK-CA5936, 130.12.x.x). 숨 한 번 쉴 시간입니다.
사실 명령은 딱 1개인데 의도는 다섯 가지(정찰 · 파일 다운로드 · 실행 권한 부여 · 다운로드 후 실행 · SSH 키 심기)가 전부 붙었고, 파일 2개를 받아 갔어요. 399바이트 OpenSSH 개인키와 54바이트 텍스트입니다.
사실
두 해시 모두 8월 19일 이후 아카이브 8개 파일에 있습니다. 어제가 아홉 번째예요. 접속 프로그램 표식도 SSH-2.0-Go로 매번 같습니다.
추정 전단지 비유로 돌아가면 이렇습니다. 문 앞을 지나간 264곳이 종이를 붙이는 동안, 어떤 한 곳은 3.7초 만에 들어왔다 나갔습니다. 앞쪽은 세는 게 쉽고, 뒤쪽은 눈에 잘 안 띕니다.
가장 많이 온 표식과, 물건을 놓고 간 표식
사실 접속해 온 프로그램마다 지문이 하나씩 남습니다. 상대 프로그램이 “나는 이런 방식으로 대화한다”고 먼저 알려주는 값들을 한 덩어리로 요약한 값이에요.
사실
어제 기록된 지문 15개 중, 가장 많은 곳에서 온 건 acaa53e0…(SSH-2.0-OpenSSH_7.4)로 199곳이었습니다. 센서 01 전체 출발지 414곳의 **48.1%**예요. 그런데 이 199곳짜리 묶음이 놓고 간 검체는 한 건도 없습니다.
사실
어제 실제로 파일을 놓고 간 표식은 16443846…(SSH-2.0-Go) 하나뿐이고, 이 표식이 달고 온 곳은 2곳이었습니다.
사실 여기서 한 번 멈추겠습니다. 이 값은 프로그램 빌드의 지문이지 사람의 지문이 아닙니다. 같은 배포판이 기본으로 넣어주는 SSH를 쓰는 사람들은 서로 아무 관계가 없어도 같은 값을 갖습니다. 199곳을 한 조직으로 읽으면 안 됩니다. 어제 지문 묶음이 37개라고 해서 주체가 37개라는 뜻도 아닙니다.
어제 하루 전체
사실 문이 실제로 열리는 쪽(센서 01)의 하루 집계입니다.
| 항목 | 어제 | 견줄 것 |
|---|---|---|
| 세션 | 2,207건 | 한 곳당 5.3건 |
| 고유 출발지 | 414곳 | — |
| 로그인 시도 | 1,889회 | 한 곳당 평균 4.6회 · 하루로 46초에 한 번 |
| 명령 | 2,711개 | 의도가 붙은 건 1,667개(61.5%) |
| 포트 2222 (SSH) | 1,883세션 | 전체의 85.3% |
| 포트 2223 (텔넷) | 324세션 | 그런데 완결 세션 5건 중 4건이 이쪽 |
| 화면 녹화 | 1,536건 | — |
사실 포트별 합(1,883 + 324)이 세션 총계 2,207과 정확히 맞습니다. 그제는 2건이 어긋났었는데 어제는 어긋난 값이 없었어요.
사실 그리고 옆 서버(센서 02)의 세션 단위는 이쪽과 달라서 더하지 않습니다. 두 서버의 고유 IP 합도 겹침을 몰라 상한 897곳으로만 적습니다.
시간 순서로 늘어놓으면 이렇게 됩니다. ’아카이브 대조’라고 적힌 줄을 눈여겨보세요 — 어제 하루만 봐서는 안 보이고, 지난 기록과 붙여 놓아야 보이는 것들입니다.
- 사실 접촉 50,417건 / 고유 출발지 483곳. 서비스별로 VNC(5900) 48,605건 · RDP(3389) 1,474건 · SMB(445) 200건 · MSSQL(1433) 77건 · LDAP(389) 14건 · ADB 47건이며, 이 여섯을 더하면 50,417 로 총계와 정확히 일치한다. VNC 가 전체의 96.4%다
- 사실 VNC 고유 출발지 264곳은 관측 12일치(8/26~9/6: 40·38·50·36·45·46·78·62·135·69·100·264) 중 최대이며 직전 최고치 135(9/3)의 1.96배, 어제 100의 2.64배다. 센서 02 전체 고유 출발지 483곳도 12일 밴드 247~327 을 벗어난 값으로 직전 최고 327(9/5)의 1.48배다
- 사실 출발지당 VNC 접촉 수는 48,605 ÷ 264 = 184.1회다. 어제는 33,975 ÷ 100 = 339.8회, 8/29 는 40,525 ÷ 36 = 1,125.7회였다. 접촉 총량은 비슷한데 주체가 늘면서 한 곳당 부담이 계속 얇아지고 있다
- 사실 상위 12개 별칭의 이벤트 합은 44,439건으로 전체 50,417건의 88.1%다. 그중 9곳이 3,499~5,379건씩을 만들었고(합 42,990건, 85.3%), 10위부터는 700 · 514 · 235건으로 뚝 떨어진다. 상위 12곳을 뺀 나머지 471곳은 5,978건, 한 곳당 평균 12.7건이다
- 사실 같은 날 서비스마다 분포가 정반대다 — VNC 는 264곳이 48,605번(출발지당 184.1회), MSSQL 은 46곳이 77번(출발지당 1.67회), LDAP 은 8곳이 14번(출발지당 1.75회) 접촉했다. LDAP 14건은 관측 12일 중 최저다(직전 최저 36건, 9/3)
- 사실 VNC 협상에서 상대가 제안한 RFB 버전은 003.003 이 47,446회, 003.008 이 889회다 — 버전이 기록된 48,335건의 98.2%가 003.003 이다. SMB 방언 제안 243건 중 'SMB 2.???' 는 2건뿐이고 나머지 241건은 NT LM 0.12 · LANMAN1.0 · LM1.2X002 · PC NETWORK PROGRAM 1.0 · Windows for Workgroups 3.1 같은 SMB1 계열 어휘다. RDP 쿠키는 hello 897 · <ip> 427 · Administr 3 · 빈 값 3 · nmap 1 · eltons 1 이다
- 사실 ADB 세션 47건에 저장된 검체는 0 이다. 아카이브상 ADB 는 9/2 에 23세션·검체 1건, 9/3 에 32세션·검체 4건, 8/28 에 87세션·검체 4건을 남긴 채널이다. 오늘은 접촉 건수가 어제(111세션)보다 줄었지만 8/31(52) 이후 두 번째로 많은데도 투입물은 0 이다
- 사실 세션 2,207건 / 고유 출발지 414곳 / 로그인 시도 1,889회 / 명령 2,711개 / TTY 녹화 1,536건. 포트 2222(SSH) 1,883건 + 포트 2223(텔넷) 324건 = 2,207 로 세션 총계와 일치한다(9/5 에는 2건이 어긋났다). SSH 가 85.3%, 텔넷이 14.7%다
- 사실 정찰 — 시스템 1,374 · 실행 권한 부여 192 · 다운로드 후 실행 34 · 파일 다운로드 34 · 지속성(SSH 키 심기) 18 · 흔적 삭제 15. 합계 1,667 로 전체 명령 2,711개의 61.5%이고, 정찰 하나가 전체 명령의 50.7%다. 어제 정찰 770 → 오늘 1,374 로 1.78배이며 8/28(995) 이후 9일 만의 최고치다
- 사실 '파일 다운로드' 34회와 '다운로드 후 실행' 34회가 정확히 같다 — 내려받는 행위는 예외 없이 실행 단계로 이어졌다. 이 두 값이 일치하는 패턴은 8/22 이후 대부분의 날에 반복된다
- 사실 ATK-0B4A6E(122.97.x.x) 텔넷 세션. 로그인 성공, 명령 31개, 다운로드 1건, TTY 녹화 있음. 의도는 파일 다운로드 → 실행 권한 부여 → 다운로드 후 실행 세 단계다. 이 별칭은 hxxp://185[.]93[.]89[.]72/wget 의 306바이트 셸 스크립트를 배달한 9개 별칭 중 하나다
- 사실 ATK-60E535(218.161.x.x) 텔넷 세션. completeness 43 으로 오늘 최고치이고 명령 48개·다운로드 12건인데 intents 배열이 비어 있다 — 로그인에 성공하고 가장 많이 움직인 세션인데 우리 분류기가 의도를 하나도 붙이지 못했다. 이 세션이 받아 간 것은 1바이트 빈 파일(01ba4719…, 11회)과 202바이트 POSIX 셸 스크립트(0c99433c…) 두 종류다
- 사실 202바이트 POSIX 셸 스크립트 0c99433c… 는 아카이브 22일치 중 8/21 과 8/23 에만 기록돼 있다. 14일 만에 다시 나타난 오늘이 세 번째 관측이다
- 사실 ATK-CA5936(130.12.x.x) SSH 세션. 명령 1개로 다섯 가지 의도(정찰 · 파일 다운로드 · 실행 권한 부여 · 다운로드 후 실행 · SSH 키 심기)가 모두 붙었고 다운로드 2건을 남겼다 — 399바이트 OpenSSH 개인키(43728fbf…)와 54바이트 ASCII 텍스트(00b6f15c…)다. 두 해시 모두 8/19 이후 아카이브 8개 파일에 있으며 오늘이 아홉 번째다. 클라이언트는 SSH-2.0-Go, 지문 16443846184eafde36765c9bab2f4397 이다
- 사실 오늘 기록된 지문 15개 중 검체를 배달한 것은 16443846…(SSH-2.0-Go, 오늘 IP 2곳) 하나뿐이다. 오늘 IP 가 가장 많은 지문은 acaa53e0…(SSH-2.0-OpenSSH_7.4)로 199곳 — 01 전체 출발지 414곳의 48.1%인데 검체는 한 건도 배달하지 않았다
- 사실 오늘 저장된 9종 중 7종이 과거 브리프에 있는 해시다 — a8460f44…(389바이트 공개키)는 8/16 이후 22일 연속, a6296a79…(306바이트 셸 스크립트)는 8/17 이후 21일째 동일 해시·동일 URL, 43728fbf…·00b6f15c… 는 8/19 이후 9회째, 4af5a5c9…(9바이트)는 19개 파일에, 01ba4719…(1바이트)와 0c99433c…(202바이트)도 기록이 있다. 신규 해시는 32b813f0… 와 ba9ca1f7… 둘뿐이다
- 사실 신규 2종은 둘 다 hxxp://5[.]182[.]210[.]174/ok 에서 왔고, 둘 다 정확히 1,608바이트 Bourne-Again 셸 스크립트이며, 둘 다 같은 별칭 ATK-99DE57 이 배달했다. 같은 URL·같은 크기·다른 해시가 하루에 두 개 나온 것은 8/29 에도 있었던 일이다. 8/25 브리프가 이 URL 의 해시를 10종으로, 8/29 가 2종을, 9/5 가 1종을 더 기록했으므로 오늘 것까지 최소 14종이며, 크기는 8/17 첫 관측 이후 매번 1,608바이트로 같다
- 사실 서로 다른 IP 3곳 이상에서 관측돼 원문을 인용할 수 있는 조합은 20개다. 최다는 admin/admin(22곳·47회), 다음이 345gs5662d34/345gs5662d34(15곳·15회), support/support(8곳·11회), user/user(7곳·9회), root/3245gs5662d34(7곳·7회)다. 인용하지 않고 개수만 센 단일 출처 조합은 911개다
- 사실 고유 IP 상한 897곳. 센서 간 고유 IP 교집합을 알 수 없어 상한이다. 아카이브 22일 중 최대이며 직전 최대는 9/3 의 777곳이다. 이 서버 두 대는 어디에도 주소를 알린 적이 없다
위에서 눈에 걸리는 건 네 번째 줄과 마지막 줄입니다. 하나는 “얇은 층이 471곳이나 새로 얹혔다”이고, 다른 하나는 “그래서 하루 총합이 22일 최대가 됐다”거든요. 같은 이야기의 앞과 뒤입니다.
문 앞에 놓인 것
사실 방어에 쓰실 수 있게 값을 그대로 옮깁니다. 값을 클릭하면 복사됩니다. 주소는 접속되지 않도록 변형(defang)해 두었으니 그대로 두고 쓰세요. 맨 위 두 줄과 그 아래 두 줄을 견줘 보세요 — 하나는 적자마자 낡는 값이고, 하나는 22일 동안 안 낡은 값입니다.
32b813f04f3249f133b6d5109a41ef9b66cf65e8ed7018c7ba5d109abcf9a7671,608바이트 Bourne-Again 셸 스크립트 · 센서 01 · 별칭 1곳(ATK-99DE57)에서 1회 · 아카이브 22일치에 없던 신규 해시ba9ca1f7995ad2647cab12e384331ceef0047331623371a974b88c4d51cda6271,608바이트 Bourne-Again 셸 스크립트 · 위와 같은 URL·같은 크기·같은 배달 별칭인데 다른 파일이다 · 이 URL 의 누적 해시는 오늘 것까지 최소 14종hxxp://5[.]182[.]210[.]174/ok위 두 파일의 유포지. 8/17 첫 관측 이후 매번 정확히 1,608바이트인데 해시만 계속 바뀐다a6296a79f44e21b76604d2d2bbf795d2cf380f70e39d45fbf166707ff3b4a6a4306바이트 POSIX 셸 스크립트 · 센서 01 · 별칭 9곳에서 9회 · 8/17 첫 관측 이후 21일째 해시·URL 동일hxxp://185[.]93[.]89[.]72/wget위 306바이트 스크립트의 유포지. 21일 동안 파일이 한 비트도 바뀌지 않았다a8460f446be540410004b1a8db4083773fa46f7fe76fa84219c93daa1669f8f2389바이트 OpenSSH RSA 공개키 · 센서 01 · 서로 다른 15곳에서 15회 · URL 없이 세션 안에서 직접 기록됨 · 8/16 이후 22일 연속 같은 해시43728fbfb98bb39ff61a2db0fc2905bd6937997062b05b9ab8b186fdee18c09a399바이트 OpenSSH 개인키 · 센서 01 · 별칭 1곳(ATK-CA5936)에서 1회 · URL 미기록 · 8/19 이후 아홉 번째 관측00b6f15c2274420217ed3098a9f5f00545bf1793d7a324fd18a7809cbbf5b12b54바이트 ASCII 텍스트 · 위 개인키와 같은 세션·같은 날짜 계열 · 8/19 이후 아홉 번째 관측 · URL 미기록0c99433c7d433d65ab890dcee20b330f262379d532bc76f91e18f09ecfa5fb54202바이트 POSIX 셸 스크립트 · 센서 01 · 별칭 1곳(ATK-60E535)에서 1회 · 아카이브에는 8/21·8/23 에만 있고 14일 만의 재등장이다01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b1바이트 빈 파일 · 센서 01 · 11회 · 8/17·8/22 브리프가 다룬 '침입은 성공했는데 배달은 실패한' 계열과 같은 해시다4af5a5c98ad132095c6fbe7b02c242153a190a01cc321e50a916a0ca46fbaa629바이트 ASCII 텍스트 · 센서 01 · 별칭 1곳(ATK-BECAD3)에서 10회 · 아카이브 19개 파일에 기록된 상시 해시다(센서 02 · 해당 없음)센서 02 의 다운로드는 빈 배열이고 저장된 검체는 0 이다. ADB 47세션을 포함해 오늘 02 에서 저장된 파일은 없다사실 크기 감을 붙여 두겠습니다. 1,608바이트는 문자 메시지 열 줄쯤, 389바이트는 두세 줄, 306바이트는 두 줄, 202바이트는 한 줄 반입니다. 54바이트는 짧은 한 문장, 9바이트는 영어 아홉 글자, 1바이트는 글자 하나 분량이에요.
사실
389바이트짜리는 SSH 공개키입니다. 쉽게 말하면 비밀번호 없이 들어올 수 있는 여벌 열쇠예요. 서버의 authorized_keys(허용된 열쇠 목록)라는 파일에 이 값을 한 줄 적어 넣으면, 그 열쇠를 가진 쪽은 이후 비밀번호를 묻지 않아도 들어옵니다. 어제 이 파일은 서로 다른 15곳에서 왔고, 8월 16일 이후 22일 연속 같은 해시입니다.
사실 반대로 399바이트짜리는 개인키입니다. 그런데 이게 심어 두고 간 것인지 서버에 있던 것을 가져가려 한 것인지 데이터가 구분해 주지 않습니다. 8월 19일에 남긴 미해결 항목이 아홉 번째 관측인 어제도 그대로입니다.
추정 그리고 어제 새로 나온 두 파일은 같은 주소에서, 같은 1,608바이트로, 다른 해시로 나왔습니다. 이런 일은 8월 29일에도 있었어요. 이 주소에 대해서만은 해시로 막는 방식이 하루도 못 갑니다. 열세 번 적어 놨는데 열네 번째가 또 나오는 셈이니까요.
사실 어제 저장된 9종에 실행 바이너리는 없었습니다. 다만 그게 “다음 단계가 없다”는 뜻은 아닙니다. 우리에게는 압축을 풀어야만 드러나는 유포 주소 12건이 별도로 확보돼 있어요. 겉면만 봐서는 주소가 한 줄도 안 보이는 것들입니다. 다만 이 12건은 어제 저장된 9종과 연결돼 있지 않습니다. 배경으로만 적습니다.
어떤 비밀번호로 들어오려 했나
사실 어제 시도된 아이디·비밀번호 조합은 최소 931종이었습니다. 그중 여기 싣는 건 20종뿐입니다. 나머지 911종은 개수만 셉니다. 비율로는 1대 45.6이에요.
이유는 하나입니다. 서로 다른 IP 3곳 미만에서만 보인 조합은 실제로 어딘가에서 유출된 진짜 계정일 수 있습니다. 그런 값은 우리 글에 옮기지 않습니다.
아래 20종은 반대쪽입니다. 여러 곳에서 반복돼서 **‘누구의 것도 아닌 출고 기본값’**이라고 볼 수 있는 것들이에요.
| 아이디 | 비밀번호 | 서로 다른 출발지 |
|---|---|---|
| admin | admin | 22곳 |
| 345gs5662d34 | 345gs5662d34 | 15곳 |
| support | support | 8곳 |
| user | user | 7곳 |
| root | 3245gs5662d34 | 7곳 |
| root | admin | 6곳 |
| admin | password | 6곳 |
| root | 12345 | 6곳 |
| root | root | 5곳 |
| backup | backup | 5곳 |
| username | password | 4곳 |
| admin | admin1234 | 4곳 |
| root | qwer1234 | 4곳 |
| gns3 | gns3 | 4곳 |
| root | root1234 | 4곳 |
| root | !QAZ2wsx | 4곳 |
| root | abcd@1234 | 4곳 |
| pi | 123456 | 4곳 |
| alex | 1234 | 4곳 |
| root | 1qaz!QAZ | 4곳 |
사실
admin/admin 하나만 서로 다른 22곳에서 47번 왔습니다. 목록 스무 줄이 거의 다 아이디와 비밀번호가 같거나, 키보드에서 손가락이 지나가는 자리 그대로입니다.
추정 이건 우리를 겨냥해 만든 목록이 아닙니다. 어디서나 통하는 값을 순서대로 넣어 보는 사전이에요. 우리 서버가 열린 이유가 ’우리라서’가 아니라는 뜻입니다.
공격자가 쓴 수법을 국제 분류표에 대응시키면
MITRE ATT&CK은 공격 수법마다 번호를 붙여 놓은 국제 목록입니다. 어제 본 행동을 그 번호에 맞추면 이렇게 됩니다. ID를 누르면 원문 설명으로 갑니다 — 우리 말을 믿지 말고 직접 확인하시라고 링크를 겁니다.
- T1595.001Active Scanning: Scanning IP Blocks — 홍보한 적 없는 서버 두 대에 하루 최대 897곳이 접촉, 22일 중 최대추정
- T1046Network Service Discovery — 센서 02 여섯 서비스에 483곳이 접촉, RDP 쿠키에 nmap 1회추정
- T1110.001Brute Force: Password Guessing — 로그인 시도 1,889회, 서로 다른 조합 최소 931종(인용 20 + 단일출처 911)추정
- T1082System Information Discovery — 정찰(시스템) 1,374회, 전체 명령의 50.7%추정
- T1105Ingress Tool Transfer — 파일 다운로드 34회, 외부 URL 이 기록된 유포지 2곳추정
- T1222.002File and Directory Permissions Modification: Linux and Mac — 실행 권한 부여 192회추정
- T1098.004Account Manipulation: SSH Authorized Keys — SSH 키 심기 18회, 389바이트 공개키가 서로 다른 15곳에서 반입추정
- T1070Indicator Removal — 흔적 삭제 15회추정
여덟 줄 전부 [추정] 배지가 붙은 것을 봐 주세요. 우리 손에 있는 건 명령의 ’의도 분류 결과’와 ’몇 번이었나’까지입니다. 명령 원문은 없습니다. 분류표에 맞추는 일은 언제나 해석이고, 해석에는 해석이라고 적습니다.
전에 이런 일이 있었다
추정
Mirai 봇넷(2016). 텔넷 기본 계정 사전으로 IoT 장비에 들어가던 방식입니다. 공개된 소스코드와 미국 US-CERT 경보(TA16-288A)에 적힌 방식이 어제 센서 01에서 본 형태와 같은 계열이에요. 관리 포트에 admin/admin · root/root · support/support 같은 조합을 사전 순서대로 넣어 보고, 성공하면 곧바로 스크립트를 내려받아 실행 권한을 줍니다. 어제 ’파일 다운로드 34회 = 다운로드 후 실행 34회’가 정확히 맞아떨어진 것도 같은 모양입니다. 다만 어제 접촉이 Mirai 계열이라는 근거는 우리에게 없습니다. 파일 내용도, 검체 분류 결과도 우리 손에 없고 외부 판정 연동도 하지 않습니다. (출처 유형: 공개 소스코드 · 정부 CERT 경보)
추정
RealVNC 4.1.1 인증 우회, CVE-2006-2369(2006). 클라이언트가 제안한 인증 방식을 서버가 그대로 받아들여 인증을 건너뛰게 만든 결함입니다. 어제 화면공유 협상에서 상대가 제안한 버전의 98.2%가 003.003이었는데, 이 옛 버전이 건드리는 지점이 같아요. RFB 3.3은 인증 방식 선택권이 서버 쪽에 있는 구조라, 인증이 약한 화면공유 서버를 넓게 찾는 도구가 낮은 버전을 먼저 제안할 이유는 있습니다. 다만 이건 프로토콜 정의와 공개 CVE에 기댄 배경 설명입니다. 어제 접촉이 이 취약점을 실제로 공격했다는 근거는 없고, 센서 02는 저상호작용이라 인증 단계 다음이 아예 존재하지 않습니다. 게다가 이 분포는 ’상대가 제안한 값’이라, 우리 쪽이 무엇을 먼저 내밀었는지에 따라 달라질 수도 있습니다. (출처 유형: CVE 및 벤더 어드바이저리)
그래서 뭘 해야 하나
전단지 이야기로 돌아가겠습니다. 어제 문 앞을 지나간 사람 수는 최다였지만, 문이 잠겨 있었는지가 실제로 갈린 지점입니다. 아래 항목은 전부 그 얘기예요.
1. 관리 포트를 인터넷에 그대로 열어 두고 있다 · 가능성 높음 홍보한 적 없는 서버 두 대에 하루 최대 897곳이 닿았습니다. 옆 센서만 봐도 화면공유에 264곳 · 원격 데스크톱에 111곳 · 데이터베이스에 46곳 · 파일 공유에 38곳 · 계정 조회에 8곳이 사전 접촉 없이 곧바로 닿았고요. 문이 열리는 쪽에는 414곳이 왔습니다. 스스로 스캐너 이름을 적어 보낸 접촉도 있었어요. 가능성을 ’높음’으로 적는 근거는 옆 센서가 아니라 문이 열리는 쪽입니다. 어제 완결 세션 5건이 전부 로그인에 성공했거든요. VPN이나 점프호스트 뒤로 옮기면 이 접촉 대부분이 인증 단계 앞에서 끊깁니다.
2. 기본 계정·취약 비밀번호를 그대로 쓰고 있다 · 가능성 높음 위 표 20줄이 전부 장비나 배포판이 출고할 때 넣어 두는 값입니다. 하루 1,889회의 시도가 있었고, 어제 완결 세션 다섯은 예외 없이 이 사전으로 문이 열린 뒤 시작됩니다. 열린 다음에 이어진 건 정찰 1,374회 · 실행 권한 부여 192회 · 다운로드 후 실행 34회 · 키 심기 18회예요. 실제 운영 서버였다면 저 스무 줄 중 하나만 남아 있어도 열립니다.
3. 비밀번호 로그인을 허용하고 열쇠 방식을 안 쓰고 있다 · 가능성 높음
어제 시도된 조합의 폭이 최소 931종입니다. 비밀번호 로그인이 열려 있는 한 이 사전은 계속 돕니다. 그런데 침입한 쪽은 성공하자마자 자기 열쇠를 걸어 둡니다. 어제 키 심기가 18회, 389바이트 공개키가 서로 다른 15곳에서 들어왔어요. authorized_keys에 남의 열쇠가 한 줄 들어가면 비밀번호를 바꿔도 그 열쇠로 계속 들어옵니다. 반대로 열쇠 방식만 허용하고 비밀번호를 끄면, 1,889회는 전부 인증 단계에서 끝납니다.
4. 밖으로 나가는 연결을 막지 않고 있다 · 가능성 높음
‘파일 다운로드’ 34회와 ‘다운로드 후 실행’ 34회가 정확히 같았습니다. 어제 외부 주소가 기록된 유포지는 hxxp://185[.]93[.]89[.]72/wget과 hxxp://5[.]182[.]210[.]174/ok 두 곳입니다. 로그인은 이미 뚫린 다음이라, 서버가 밖으로 나가는 연결을 끊는 것이 실제 피해를 막는 마지막 지점이에요. 게다가 /ok 쪽은 크기가 같은 채 해시만 계속 바뀌어 최소 14종이 됐습니다. 해시 차단 목록은 이 유포지에 대해 하루도 유효하지 않습니다.
5. 횟수 기반 차단(fail2ban 등)만 믿고 있다 · 가능성 중간
여기가 어제의 핵심입니다. 센서 02 상위 9곳은 각각 3,4995,379번씩 두드렸으니 어떤 임계값에도 걸립니다. 그런데 문이 열리는 쪽은 한 곳당 평균 4.6회예요. ‘5회 틀리면 잠금’ 같은 흔한 설정은 상당수를 그냥 통과시킵니다. 인용한 20개 조합만 봐도 시도 횟수가 447회인데 관측된 곳은 4~22곳입니다 — 한 곳이 여러 번 때리는 게 아니라, 여러 곳이 한 번씩 나눠 때립니다. 그래서 ’높음’이 아니라 ’중간’입니다. IP 단위 잠금은 굵은 층은 확실히 끊지만 얇게 퍼진 층은 통과시켜요. 결국 비밀번호 로그인 자체를 끄는 쪽이 확실합니다.
6. 로그를 서버 안에만 두고 있다 · 가능성 중간 ‘흔적 삭제’ 의도가 어제 15회 분류됐습니다. 그제 8회의 1.88배지만, 8월 30일의 114회나 8월 25일의 70회에 비하면 낮은 수준이에요. 우리가 그걸 볼 수 있었던 건 화면 1,536건이 서버 밖에서 따로 녹화됐기 때문입니다. 어제 로그인에 성공한 다섯 세션 중 가장 긴 게 98초, 가장 짧은 게 3.7초였어요. 사람이 화면을 보고 알아차릴 수 있는 길이가 아닙니다.
우리가 모르는 것
이 블로그가 다른 곳과 다른 점은 여기입니다. 모르는 것을 모른다고 적습니다.
어제 주제 자체에 대한 의심
- [확인 불가] 화면공유 고유 출발지가 100곳에서 264곳으로 뛴 건 사실입니다. 실제로 출발지가 늘었을 가능성이 높지만, 세는 기준이나 중복 제거 방식이 바뀌었을 가능성을 배제할 수 없습니다. 바로 그제(9/5) 우리는 다른 칸 하나가 ’누적’이 아니라 최근 구간만 세는 값이었다는 걸 발견했어요. 이 데이터의 집계 기준을 의심할 이유가 있습니다. 그런데 세는 창(window)이 어디에도 적혀 있지 않아 확정할 수 없습니다.
- [확인 불가] 센서 02 전체 고유 출발지는 483곳인데, 서비스별 출발지를 다 더하면 467곳입니다. 16곳이 어느 서비스에도 안 잡혔습니다. 서비스 목록에 ADB 행이 없으니 ADB 전용 출발지일 가능성이 높지만, 데이터가 그렇다고 말해 주지는 않습니다.
- [확인 불가] 한 출발지가 여러 문을 함께 훑었는지 계산할 수 없습니다. 출발지별 서비스 짝이 데이터에 없고, 서비스별 합(467)이 전체(483)보다 작아 겹침을 역산할 수도 없어요. 이 값을 0으로 쓰면 거짓이 되므로 ’산출 불가’로 둡니다. 8월 29일에도 같은 처리를 했습니다.
어제 데이터에서 설명이 안 되는 것
- [확인 불가] ATK-60E535는 어제 완결성 최고치이고 로그인 성공·명령 48개·다운로드 12건인데 의도 목록이 비어 있습니다. 우리 분류기가 명령 48개에 뜻을 하나도 못 붙인 이유를 알 수 없어요. 어제 명령 2,711개 중 분류된 게 1,667개(61.5%)뿐인 것과 같은 문제일 수 있습니다.
- [확인 불가] ATK-7F4B44와 ATK-DFBDF7은 의도에 ‘파일 다운로드’·’다운로드 후 실행’이 있는데 다운로드 건수가 0입니다. 다운로드가 실패한 건지 저장 단계에서 빠진 건지 데이터가 구분해 주지 않습니다.
- [확인 불가] ADB 접촉이 47세션인데 저장된 검체는 0건입니다. 9월 2일(23세션·검체 1) · 9월 3일(32세션·검체 4) · 8월 28일(87세션·검체 4)에는 있었어요. 상대가 안 넣은 것인지 우리가 못 받은 것인지 구분할 근거가 없습니다.
- [확인 불가] 화면공유 접촉 48,605건 대비 버전 기록은 48,335건으로 270건이 비고, 원격 데스크톱 접촉 1,474건 대비 쿠키 기록은 1,332건으로 142건이 빕니다. 두 차이의 이유가 설명돼 있지 않습니다.
- [확인 불가] 파일 공유 방언 제안 243건이 세션 200건보다 많습니다. 한 세션이 방언을 여러 개 함께 제안하는 특성으로 보이지만 명시돼 있지 않아, 세션과 제안의 관계를 단정할 수 없습니다.
- [확인 불가] 399바이트 개인키가 심어진 것인지 가져가려 한 것인지 데이터가 구분해 주지 않습니다. 다운로드 목록에 있는데 주소 칸은 비어 있어요. 8월 19일의 미해결 항목이 아홉 번째 관측인 어제도 그대로입니다.
- [확인 불가]
hxxp://5[.]182[.]210[.]174/ok에서 같은 1,608바이트로 서로 다른 해시 두 개가 같은 날 같은 별칭에서 나왔습니다. 무엇이 달랐는지는 파일 내용을 담지 않으므로 확인할 수 없습니다. 요청마다 새로 만들어지는 것인지 짧은 주기로 갈아 끼우는 것인지도 구분할 수 없어요. 8/22 · 8/23 · 8/25 · 8/27 · 8/29 · 9/5의 같은 항목이 그대로입니다. - [확인 불가] 이 주소의 누적 해시 종수는 하한만 말할 수 있습니다. 8/25 10종 + 8/29 2종 + 9/5 1종 + 어제 2종으로 최소 14종이며, 아카이브 22일치를 해시 단위로 전수 대조한 값은 아닙니다.
- [확인 불가] 어제 완결 세션 5건 중 4건이 텔넷인데, 텔넷은 전체 2,207건 중 324건(14.7%)뿐입니다. ’많이 두드리는 문과 실제로 열리는 문이 다르다’는 8월 16일의 관찰과 방향이 같지만, 이건 상위 5건 표본이라 프로토콜별 성공률을 계산할 수는 없습니다.
- [확인 불가] 화면 녹화가 한 곳에는 1,536건, 다른 곳에는 230건으로 적혀 있습니다. 두 값의 관계가 명시돼 있지 않습니다.
- [확인 불가] 지문 묶음 총수는 37개인데 목록에는 15개만 실려 있습니다. 나머지 22개가 어떤 값인지 알 수 없습니다.
일부러 싣지 않은 것 · 연결하지 않은 것
- [제외] 별도 경로로 확보된 Discord 웹훅 주소 1건이 어제 어떤 세션·검체와 연결되는지 데이터가 밝히지 않습니다. 어제 다운로드 어느 항목에도 안 나타나 어제 사건과 연결해 쓰지 않았습니다. 웹훅 토큰은 그 자체가 악용 가능한 값이라 본문에 옮기지 않습니다. 8월 17일 이후 여러 글이 같은 이유로 제외해 왔습니다.
- [제외] 배경 통계로 들어온 CVE 6,622건 · CISA KEV 390건 · 랜섬웨어 확인 98건은 KISA 보안공지에서 뽑은 값입니다. 어제 두 서버의 관측과 연결된 것이 아니라서 서술의 근거로 쓰지 않았습니다.
- [확인 불가] 관측한 유포지·C2는 C-TAS로 신고하지만, 확인되는 건 전송이 성공했다는 것까지입니다. 어제 신고분이 실제로 반영됐는지는 별도 확인이 필요합니다.
- [확인 불가] 압축을 풀어야만 드러나는 유포 주소 12건은 어제 저장된 9종과 연결돼 있지 않습니다. ’어제 실행 바이너리가 0개’라는 사실이 ’다음 단계가 없다’는 뜻은 아니라는 배경으로만 썼습니다.
아예 판단하지 않는 것
- ASN·ISP — 관련 데이터베이스가 없습니다. 추정하지 않습니다. 어제 유포지
185[.]93[.]89[.]72·5[.]182[.]210[.]174의 호스팅 사업자도 확인 불가입니다. - 지리정보 — 위와 같습니다. IP 지리정보는 애초에 귀속의 근거가 되지도 않습니다. 어제 접촉한 최대 897곳의 위치는 확인할 수 없습니다.
- VPN·Tor·클라우드 여부 — 판별 수단이 없습니다. 어제 센서 02 상위 출발지들이 클라우드에서 왔는지도 말할 수 없습니다.
- 검체의 악성 여부 — VirusTotal을 연동하지 않았습니다. 어제 신규 2종의 악성 여부를 외부 판정으로 뒷받침할 수 없습니다.
- 접속 프로그램 표식 — 지문은 빌드의 지문이지 사람의 지문이 아닙니다. 같은 배포판 기본 SSH를 쓰는 무관한 사람도 같은 값을 갖습니다. 199곳짜리 묶음을 한 주체로 읽으면 안 됩니다.
- User-Agent — 두 관측면 다 HTTP가 아닙니다. 센서 01은 SSH·텔넷, 센서 02는 SMB·RDP·VNC·MSSQL·LDAP·ADB입니다.
- CVE 연결 — SSH·텔넷 공격은 대개 CVE를 참조하지 않고, 센서 02도 협상 단계라 마찬가지입니다. 위에 적은 CVE-2006-2369는 배경 설명이지 어제 접촉과의 연결이 아닙니다.
- 명령 원문 · 파일 내용 · 화면 리플레이 — 우리 손에 없습니다. 1,536건이 녹화됐다는 사실만 알고, 화면에 무엇이 있었는지는 여기서 말할 수 없습니다.
- 출발지 신원 — 별칭(ATK-XXXXXX)은 글과 글 사이에서 같은 출발지를 가리키는 표식일 뿐 신원이 아닙니다. 마스킹된 자리는 복원하지 않고, 어떤 국가·기업·개인도 공격자로 지목하지 않습니다.
어제 문 앞에 붙은 종이는 1.4배 늘었는데, 붙이고 간 곳은 2.6배가 됐습니다. 한 곳이 하는 일은 오히려 절반으로 얇아졌고, 471곳은 평균 열두 장만 붙이고 지나갔어요.
그래서 어제 기록은 **“더 세게 맞았다”가 아니라 “더 여럿이 스쳤다”**입니다. 이 둘은 다른 문장이고, 대응도 다릅니다. 여럿이 한 번씩 스치는 형태 앞에서는 “몇 번 틀리면 잠근다”는 규칙이 발동조차 하지 않습니다.
그리고 그 264곳이 문 앞을 지나가는 동안, 옆 서버에서는 3.7초짜리 세션 하나가 열쇠를 걸어 두고 나갔습니다. 문 앞에 다녀간 사람을 세는 일로는 그걸 못 잡습니다. 셀 게 아니라 잠글 문제라서요.
관측일은 2026-09-06이며, 센서 01·02 모두 하루 집계 기준입니다. 출발지 IP는 뒤 두 자리를 가려서 적었고 복원하지 않습니다. 유포 주소는 접속되지 않도록 변형(defang)했습니다. 자격증명은 서로 다른 IP 3곳 이상에서 반복 관측된 20종만 인용했으며, 3곳 미만에서만 보인 911종은 개수만 세고 값은 적지 않았습니다.
