モデムの Telnet パスワードと Web パスワードを Telnet 経由で変更するにはどうすればよいですか?

モデムの Telnet パスワードと Web パスワードを Telnet 経由で変更するにはどうすればよいですか?

私は現在中国に住んでいて、国際インターネットにアクセスするためにさまざまな VPN サービスを使用しています。しかし、VPN 自体がブロックされる傾向があるため、当然、ルーターなどをいじっていました。

私が現在使用している ISP は China Telecom で、モデムは HS8145C5 です。LOID を使用してモデムを登録するたびに管理者パスワードが変更され、TR069 ACS 経由の VPN 接続が常にブロックされ、LOID、PPPoE パスワード、さらには PPPoE アカウントさえ提供されません。

しかし、私はモデムに物理的にアクセスできるので、リセット ボタンを押すことができます。モデムをリセットするたびに、インターネット アクセスは失われますが、デフォルトのアカウントtelecomadminとパスワードを使用して管理者アクセスを取得できますnE7jA%5m。もちろん、ISP からは提供されていません。

LOID を取得できましたが、モデムを登録するたびにインターネット アクセスが可能になり、モデムへの管理者アクセスが失われます。これは、モデムを登録するとすぐに管理者パスワードがランダムな文字列に変更されるためです。

しかし、私が見つけたこの混乱を利用して、Telnet を有効にし、Web 管理者パスワードを取得することができました:

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。最後から 2 番目の行には次のような出力が出力されます。

<X_HW_WebUserInfoInstance InstanceID="1" ModifyPasswordFlag="0" UserName="useradmin" Password="$2!ZM$Idyl@J~}&gt;8&apos;n6KWMF|-@Koy&gt;C,;ofJBq_&apos;V5$" UserLevel="1" Enable="1" Alias="cpe-1"/>
<X_HW_WebUserInfoInstance InstanceID="2" ModifyPasswordFlag="1" UserName="telecomadmin" Password="$2:8jUNk0n|HenK~CB|&apos;^&amp;Aopi&quot;&lt;v~xJmC&amp;&lt;!TXx`3$" UserLevel="0" Enable="1" Alias="cpe-2" PassMode="0"/>

パスワードは暗号化されており、形式はわかりませんが、これを使用して復号化できました。道具(「テキスト復号化」ラベルの下のテキストボックスにパスワードを貼り付けてクリックする$2)と、新しい管理者パスワードを取得できました。

その後、入力ボックスをからにF12変更すると、PPPoE アカウントとパスワードを見つけることができました。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接続をどうやっても削除できないので無駄です…

しかし、私はsuTelnet にアクセスでき、見つけた次のスクリプトを使用して 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 圧縮されてから aescrypted された .xml ファイルなので、その 1 行を変更して .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

しかし、ファイルの編集方法がわかりません...

さらに重要なのは、インターフェースを変更した後、ログイン情報を含む 2 行が異なることです。

<X_HW_WebUserInfoInstance InstanceID="1" ModifyPasswordFlag="0" UserName="useradmin" Password="$2*P#&lt;Rm12MIRDkTTWT1NLn01YXTlMwFM]&gt;d=_$|A$0&amp;VND3OIl~fvHI$bbo8Su&gt;jVP)^v]MiPG&gt;.u9&apos;{N6n)]=cIhB0+&gt;tG1IS|9R$" UserLevel="1" Enable="1" Alias="cpe-1" Salt="deeb9e44dc1b96caaa9c312d" PassMode="3"/> 
<X_HW_WebUserInfoInstance InstanceID="2" ModifyPasswordFlag="0" UserName="telecomadmin" Password="$2ha17UJ3)&amp;/*k,o-D8Y1PJF:(4b^vWVK}$5:+UQ_0BJLWCDy:AGaY:~!_dBc&apos;*E5DRc#De56S=r&apos;dUHwUMP=b/h3V3:Fd^XB_MQ`N$" UserLevel="0" Enable="1" Alias="cpe-2" Salt="180cf7332c754daddf2d42f2" PassMode="3"/>

パスワードの暗号化にはソルトが使用されているようで、私が見つけたツールでは復号化できませんが、暗号化されていてハッシュ化されていないことはわかっています。最初のパスワードは に復号化され、zvsmc2 番目のパスワードは に復号化されますnE7jA%5m。暗号化は AES であると推測します。

モデムで使用されるのと同じ暗号化を使用してパスワードを暗号化する方法を知る必要があります。

また、Telnet パスワードも変更できません。プロンプトによると、モデムは 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 ポートもあります。


モデムの設定ファイルを入手できたので、それを元に戻す方法もわかりました。

hw_ctree.xml

何を変えればよいでしょうか?


Huawei が DES 暗号化を使用し、それを復号化する方法を確認しました。脚本

リバースエンジニアリングを試みています。

関連情報