
저는 현재 중국에 거주하고 있으며 다양한 VPN 서비스를 사용하여 국제 인터넷에 접속하고 있습니다. 하지만 VPN은 스스로 차단되는 경향이 있어서 자연스럽게 라우터 등을 만지작거렸습니다.
현재 내가 사용하고 있는 ISP는 China Telecom이고 모뎀은 HS8145C5입니다. 그들은 LOID를 사용하여 모뎀을 등록할 때마다 관리자 비밀번호를 변경하고 TR069 ACS를 통해 언제든지 VPN 연결을 차단하며 LOID, PPPoE 비밀번호 및 LOID를 제공하지 않았습니다. PPPoE 계정까지!
하지만 모뎀에 물리적으로 액세스할 수 있으므로 재설정 버튼을 누를 수 있습니다. 모뎀을 재설정할 때마다 인터넷 액세스가 끊어졌지만 ISP가 제공하지 않은 기본 계정 telecomadmin
과 비밀번호를 사용하여 관리자 액세스 권한을 얻습니다.nE7jA%5m
LOID를 얻을 수 있었지만 모뎀을 등록할 때마다 인터넷에 액세스할 수 있게 되었고 모뎀에 대한 관리자 액세스 권한을 잃게 되었습니다. 모뎀을 등록하자마자 관리자 비밀번호가 임의의 문자열로 변경되기 때문입니다.
하지만 제가 발견한 이 엉망진창을 사용하여 텔넷을 활성화하고 웹 관리자 비밀번호를 얻을 수 있었습니다.
telnet 192.168.1.1
root
adminHW
su
shell
cp /mnt/jffs2/hw_ctree.xml /mnt/jffs2/mycfg.xml.gz
cd /mnt/jffs2
aescrypt2 1 mycfg.xml.gz tem
gzip -d mycfg.xml.gz
grep WebUserInfoInstance mycfg.xml
rm mycfg.xml
계정은 root
이고 비밀번호는 입니다 adminHW
. 두 번째 마지막 줄은 다음과 같이 출력됩니다.
<X_HW_WebUserInfoInstance InstanceID="1" ModifyPasswordFlag="0" UserName="useradmin" Password="$2!ZM$Idyl@J~}>8'n6KWMF|-@Koy>C,;ofJBq_'V5$" UserLevel="1" Enable="1" Alias="cpe-1"/>
<X_HW_WebUserInfoInstance InstanceID="2" ModifyPasswordFlag="1" UserName="telecomadmin" Password="$2:8jUNk0n|HenK~CB|'^&Aopi"<v~xJmC&<!TXx`3$" UserLevel="0" Enable="1" Alias="cpe-2" PassMode="0"/>
비밀번호가 암호화되어 있어서 형식은 모르지만 이것을 이용해서 복호화할 수 있었습니다.도구새 관리자 비밀번호를 찾았습니다(텍스트 암호 해독 라벨 아래의 텍스트 상자에 비밀번호를 붙여넣고 클릭 $2).
그런 다음 PPPoE 계정을 찾을 수 있었고 입력 상자를 에서 로 변경 F12한 후 비밀번호를 찾을 수 있었습니다 .type
"password"
"text"
하지만 제가 얻은 비밀번호는 64비트 16진수 문자열이었습니다. 좀 더 조사한 결과 로 밝혀졌습니다 SHA256(MD5(pwd))
. 그래서 저는 비밀번호를 무차별 대입하기 위해 다음 Python 프로그램을 작성했습니다.
from hashlib import md5, sha256
count = 0
reversemap = dict()
def guess(s):
if s in reversemap:
return reversemap[s]
global count
for n in range(count, 1000000000):
i = str(n)
digest = sha256(md5(i.encode()).hexdigest().encode()).hexdigest()
reversemap[digest] = i
if digest == s:
count = n + 1
break
return i
비밀번호는 알아냈으나 TR069 WAN 연결을 아무리 삭제해도 소용이 없네요...
하지만 텔넷 액세스 권한이 있고 su
다음 스크립트를 사용하여 ISP 인터페이스를 공장 인터페이스로 변경할 수 있었습니다.
cp -f /mnt/jffs2/hw_ctree.xml /mnt/jffs2/hw_ctree_bak.xml
cp -f /mnt/jffs2/hw_boardinfo /mnt/jffs2/hw_boardinfo_bak
cp -f /etc/wap/hw_default_ctree.xml /mnt/jffs2/hw_ctree.xml
sed -i 's/^.*obj.id = "0x0000001a" ; obj.value =.*$/obj.id = "0x0000001a" ; obj.value = "COMMON";/' /mnt/jffs2/hw_boardinfo
sed -i 's/^.*obj.id = "0x0000001b" ; obj.value =.*$/obj.id = "0x0000001b" ; obj.value = "COMMON";/' /mnt/jffs2/hw_boardinfo
sed -i 's/^.*obj.id = "0x00000031" ; obj.value =.*$/obj.id = "0x00000031" ; obj.value = "NOCHOOSE";/' /mnt/jffs2/hw_boardinfo
reboot
그런 다음 모뎀을 브리지 모드로 설정하고 라우터를 사용하여 전화를 걸고 TR069 WAN 연결을 삭제하고 ACS 및 정기 보고서를 비활성화하고 자동 보고서 로그인을 무효화하여 인터넷에 액세스할 수 있었습니다...
그리고 방해받지 않는 VPN 연결이 생겼습니다! 하지만 오래가지 못했어요...
어떻게든 ISP가 내 모뎀의 설정을 변경할 수 있는데, 이는 내가 비밀번호를 변경하지 않았고 비밀번호를 변경할 방법을 찾을 수 없었기 때문에 의미가 있습니다...
그러나 코드에 따르면 구성은 /mnt/jffs2/hw_ctree.xml
gzip으로 압축된 다음 암호화된 .xml 파일인 에 저장됩니다. 따라서 해당 한 줄만 변경할 수 있다면 .xml을 gzip으로 압축하고 AES로 암호화한 다음 결과 파일의 이름을 다음으로 바꾸십시오. /mnt/jffs2/hw_ctree.xml
, 작동할 수 있습니다.
다음 줄을 사용하여 aescrypt2(gzip())
원본 파일을 바꿀 수 있다는 것을 알았습니다.
gzip /mnt/jffs2/mycfg.xml
aescrypt2 0 /mnt/jffs2/mycfg.xml.gz tem
cp -f /mnt/jffs2/mycfg.xml.gz /mnt/jffs2/hw_ctree.xml
그런데 파일을 편집하는 방법을 모르겠어요...
그리고 더 중요한 것은 인터페이스를 변경한 후 로그인 정보를 포함하는 두 줄이 다르다는 것입니다.
<X_HW_WebUserInfoInstance InstanceID="1" ModifyPasswordFlag="0" UserName="useradmin" Password="$2*P#<Rm12MIRDkTTWT1NLn01YXTlMwFM]>d=_$|A$0&VND3OIl~fvHI$bbo8Su>jVP)^v]MiPG>.u9'{N6n)]=cIhB0+>tG1IS|9R$" UserLevel="1" Enable="1" Alias="cpe-1" Salt="deeb9e44dc1b96caaa9c312d" PassMode="3"/>
<X_HW_WebUserInfoInstance InstanceID="2" ModifyPasswordFlag="0" UserName="telecomadmin" Password="$2ha17UJ3)&/*k,o-D8Y1PJF:(4b^vWVK}$5:+UQ_0BJLWCDy:AGaY:~!_dBc'*E5DRc#De56S=r'dUHwUMP=b/h3V3:Fd^XB_MQ`N$" UserLevel="0" Enable="1" Alias="cpe-2" Salt="180cf7332c754daddf2d42f2" PassMode="3"/>
비밀번호 암호화는 명백히 솔트 처리되어 있으며 제가 찾은 도구를 사용하여 해독할 수는 없지만 암호화되어 있고 해시되지 않았다는 것을 알고 있으며 첫 번째 암호는 zvsmc
두 번째 암호를 해독 nE7jA%5m
하고 암호화는 AES인 것 같습니다.
모뎀에서 사용하는 것과 동일한 암호화를 사용하여 비밀번호를 암호화하는 방법을 알아야 합니다.
그리고 텔넷 비밀번호도 변경할 수 없습니다. 프롬프트에 따르면 모뎀은 BusyBox v1.26.2(Dopra Linux)이며 비밀번호를 변경하려고 할 때 발생한 상황은 다음과 같습니다.
Login:root
Password:
WAP>passwd
ERROR::Command is not existed
WAP>su
success!
SU_WAP>passwd
ERROR::Command is not existed
SU_WAP>shell
BusyBox v1.26.2 () built-in shell (ash)
Enter 'help' for a list of built-in commands.
profile close core dump
WAP(Dopra Linux) # passwd
passwd: no record of srv_ssmp in /etc/shadow, using /etc/passwd
Changing password for srv_ssmp
Old password:
Incorrect password
passwd: password for srv_ssmp is unchanged
WAP(Dopra Linux) #
WAP(Dopra Linux) # passwd root
passwd: srv_ssmp can't change password for root
모뎀에 있는 명령 목록을 얻었습니다.파일
ISP가 모뎀 설정을 변경할 수 없도록 비밀번호를 어떻게 변경합니까? 모뎀에는 설정을 백업하고 복원하는 데 사용할 수 있는 USB 포트도 있습니다.
모뎀의 구성 파일을 얻을 수 있었고 그것을 다시 넣는 방법을 알고 있습니다.
그 안에서 무엇을 바꿀 수 있나요?
Huawei가 DES 암호화를 사용하고 이를 해독하는 방법을 알아냈습니다.스크립트
리버스엔지니어링을 하려고 합니다.