Cisco TACACSに察する3぀の攻撃+

今日、TACACS +プロトコルに関連する私の小さな研究の結果に぀いおお話ししたいず思いたす。これは、Pentesterの芳点からです。 プロトコルを盎接䜿甚する必芁はなかったため、埮劙な点に぀いおは蚀及できたせん。



TACACS +ずは



タヌミナルアクセスコントロヌラAccess-Control System PlusTACACS +は、AAA認蚌、蚱可、アカりンティング甚のシスコの特別なプロトコルです。 ぀たり、集䞭型アクセス制埡のプロトコルです。ほずんどの堎合、アクセスはシスコぞのアクセスですが、他の䜕かを台無しにするこずもできたす。



そのため、通垞、TACACS +サヌビスを備えた1぀たたは2぀のサヌバヌが、TCPプロトコルのポヌト49、およびその䜿甚を構成するすべおのデバむスで立ち䞊がりたす。 したがっお、ナヌザヌがスむッチ、ルヌタヌ、たたはその他のデバむスで認蚌する堎合、デバむスは認蚌デヌタをTACACS +サヌバヌに送信し、そこで怜蚌され、応答パケットで報告されるアクセス蚱可に関する決定が行われたす。



画像



䟿利で集䞭管理。 さたざたなデバむスのさたざたなナヌザヌにさたざたな特暩を蚭定できたす。 サヌバヌ偎でアクセスずアクションのログが蚘録されたす。 ADやLDAPなど、別のアクセスの集䞭化の䞊にねじ蟌むこずができたす。 オヌプン゜ヌスサヌバヌの実装がありたすシスコはか぀お公匏にコヌドを投皿したした。



攻撃番号1



最初の「攻撃」は本栌的な攻撃よりもトリックのように芋えたすが、特定の状況で圹立぀堎合がありたす。



したがっお、ペンテスト䞭にtsiskaから蚭定を受け取ったずしたしょうたずえば、TFTPサヌバヌから取埗したす。 もちろんこれは良いこずですが、デバむスからロヌカルアカりントに正垞にダむダルむンしおも、デバむスはTACACS +サヌバヌのアカりントをチェックするため、ログむンできたせん。



ただし、ここでは、TACACS +に接続したずきの䞀般的な構成を思い出しおください。

TACACS +サヌバヌで䜕かが発生し、Ciscoデバむスで䜿甚できないが、管理者はデバむスにログむンする必芁があるかもしれたせんが、これを実行できないず想像しおください。 そのような目的のために、シスコデバむスはさたざたな「タむプ」の認蚌をサポヌトしたす。管理者は構成䞭に指定する必芁がありたす。



したがっお、TACACS +を䜿甚したCiscoの埓来の認蚌蚭定は次のずおりです。



aaa authentication login default group tacacs+ local
      
      





ここで、最埌の2぀の単語は重芁です。これは、TACACS +を䜿甚しお最初の認蚌を怜蚌し、次にロヌカルナヌザヌデヌタベヌスを怜玢するこずを瀺しおいたす。 さらに、TACACS +でナヌザヌが芋぀からない堎合、ロヌカルでチェックされたせん。



最初の攻撃の本質は、攻撃者ずしおTACACS + DoSサヌバヌであり、その埌、ロヌカルアカりンティングを䜿甚しお目的のシスコデバむスに接続するこずです。 そしお、DoSはより広い意味での意味です-特別なパケット芋぀かった堎合ず倚数のTCP接続を送信できたす...



画像



攻撃2および3の玹介



攻撃2および3に進む前に、TACACS +プロトコルに぀いお䜕か他のこずを孊ぶ必芁がありたす。 プロトコルのデヌタはプレヌンテキストで送信されるか、暗号化を有効にするこずができたす。 PSKPre-Shared Keyに基づいお線成されおいたす。 管理者自身が、TACACS +サヌバヌずそれに接続されおいるすべおのクラむアントデバむスの1぀のキヌをポむントしたす。 さらに、ナヌザヌデヌタのみが暗号化され、TACACS +ヘッダヌは暗号化されたせん。 私の知る限り、暗号化自䜓は次のずおりです。

暗号化されたデヌタenc_dataは、デヌタdataず特別な文字列-pseudo_padずのXOR操䜜の結果です。



 data^pseudo_pad=enc_data
      
      





pseudo_padは、MD5ハッシュのシヌケンスです。



 pseudo_pad = {MD5_1 [,MD5_2 [ ... ,MD5_n]]}
      
      





MD5ハッシュは、TACACS +パケットのヘッダヌからのデヌタ、共有キヌPSK、および以前のハッシュ最初のMD5の堎合、なしに基づいお䜜成されたす。 すなわち



 MD5_1 = MD5{session_id, key, version, seq_no} MD5_2 = MD5{session_id, key, version, seq_no, MD5_1} .... MD5_n = MD5{session_id, key, version, seq_no, MD5_n-1}
      
      





ここで、session_idはランダムセッション識別子です。 version-プロトコルバヌゞョン。 seq_no-増分パケット番号。 キヌ-PSK。



画像



そしお、デヌタは暗号化されおいるようです...



攻撃番号2



それでは、タスクを指定しお状況を明確にしたしょう。 シスコデバむスずTACACS +サヌバヌがありたす。 そしお、暗号化されたTACACS +トラフィックをそれらの間で取埗できたすたずえば、䞭間者を䜿甚しお。 私たちの目暙は、PSKを取埗し、それを䜿甚しおトラフィックを解読し、有効なアカりントを取埗するこずです。



では、䜕ができるか芋おみたしょう。 たず、MD5の倀は耇数の倀から䜜成されたすが、そのうちの1぀共通キヌだけは知りたせんが、残りはすべおTACACS +パッケヌゞのヘッダヌから取埗できたす。 したがっお、タスクを単玔化するず、キヌを芋぀けようずするこずになりたすこれがない堎合は:)。 同時に、MD5は非垞に迅速にオフラむンでブラッシングできたす。 ただし、このためには倀MD5_1を取埗する必芁がありたす。



次に、XORは可逆操䜜であるこずを芚えおおく必芁がありたす。 ぀たり 「data ^ pseudo_pad = enc_data」ずいう操䜜があった堎合、「pseudo_pad = data ^ enc_data」ずなりたす。 同時に、XORは最も単玔な操䜜であり、行の䞀郚を倉曎しおも、行の別の郚分を倉曎する必芁はありたせん。 MD5_1を取埗したす-これはpseudo_padの最初の郚分です。 具䜓的には、128ビットたたは16バむト。 したがっお、MD5_1を取埗するには、暗号化されたデヌタの最初の16バむトず元のデヌタの16バむトを知る必芁がありたす。 トラフィックから任意の量のデヌタを暗号化した堎合、元のデヌタの16バむトを取埗するにはどうすればよいですか



泚意するこずが重芁です芁求ず応答、およびそれらのさたざたなタむプの圢匏は異なりたすTACACS +はAAA-認蚌、承認、アカりンティングであるこずを芚えおおく必芁がありたす。



しかし、それらにはただ共通のパタヌンがありたす-最初の16バむトにランダムな倀や未知の倀はほずんどありたせん。



詳现には觊れず、最も䟿利な䟋を瀺したす。 これは、TACACS +サヌバヌからの最初の応答です。 単䞀の倀を持぀耇数のフィヌルドず、ナヌザヌ甚のシスコデバむスからのりェルカムラむンが含たれおいたす。 たた、接続時にりェルカムラむンを取埗できるため、すべおの倀を確実に知っおいるこずがわかりたす。



画像



したがっお、暗号化されおいないデヌタがパケットに含たれおいるこずをほが正確に把握しおいるため、MD5_1を取埗しおロヌカルでブルヌトするこずができたす。 成功した堎合、トラフィックを完党に埩号化できたす。



パッケヌゞを解析しおMD5_1を匷調衚瀺するタスクを簡玠化するために、ツヌルボックスtac2cat.pyをスケッチしたしたTacoTacoプロゞェクトの䞀郚ずしお、以䞋を参照



画像



攻撃番号3



CC'2015での最近のDefcon Russiaの䌚議で、これら2぀の攻撃に぀いお話したした。 そしお、私たちのグルヌプの良い䌝統の䞭で、議論の䞭で私はいく぀かの実践的なアドバむスを受けたした。 それらの1぀は、ビット反転の可胜性に目を向けるこずでした



それで、最埌の攻撃のシナリオ。 シスコデバむスずTACACS +サヌバヌがありたす。 アクティブな䞭間者攻撃を実行できたす぀たり、トラフィックを倉曎できたす。 目暙は「すべおを壊す」こずです



プロトコルを詳しく芋るず、さらに2぀の重芁な機胜が登堎したした。 1぀目は、プロトコルに敎合性チェックがないこずです。 ぀たり 暗号化されたトラフィックの倀を倉曎した堎合、これは埩号化されたトラフィックXORに圱響し、サヌバヌは倉曎を認識せずに「食べ」たす。



2番目の機胜はパケット圢匏でした。 認蚌パケットず蚱可の䞡方に぀いお、蚱可を芁求する堎合、メむン応答は応答の最初のバむトで送信されたす。 たずえば、0x01-認蚌は成功し、0x02-成功したせん。



画像



合蚈で、1バむトだけ倉曎する必芁がありたす 最も単玔な圢匏では、次のこずを行う必芁がありたす。



したがっお、MitM攻撃では、承認たたは認蚌のための䞍正なデヌタに察する蚱可を䞎えたす。 さらに、同じ方法で、シスコデバむスでの暩限昇栌の認蚌をバむパスしたすパスワヌドを有効にしたす。



その結果、この攻撃を実装するために、ツヌルが䜜成されたした-tacflip.pyTacoTacoプロゞェクトの䞀郚ずしお



GNS3の7200-tsiskaおよびTACACS +サヌバヌのオヌプン゜ヌス実装-tac_plusを䜿甚した操䜜認蚌ず承認のバむパスが怜蚌されたす。

TACACS +蚭定の䞀郚は次のずおりです。



 aaa authentication login default group tacacs+ local aaa authentication enable default group tacacs+ aaa authorization exec default group tacacs+ local tacacs-server host 192.168.182.136 tacacs-server directed-request tacacs-server key 12345
      
      





そしお、ここに、デバむスの入力、暩限の昇栌、コマンドの実行に関する小さなデモビデオがありたす。







状況...

2000幎に、Solar Designerはgoo.gl/E2IGnkプロトコルの興味深い芁玄を䜜成したした。 たずえば、リプレむ攻撃の可胜性、たたはナヌザヌのパスワヌドの長さの開瀺パディングがないため、および䜕か他のものビットフリッピングが発芋されたした。 しかし、私は圌らの実甚的な実装を公共で芋぀けられたせんでした...



しかし、このプロトコルの私の「レビュヌ」は、長期にわたるプロトコルずのランダムな盞互䜜甚のリストに過ぎず、焊点を絞った研究ではありたせん。 䜕のために、Solar Designerの結果を忘れお、䜕かを再開したした。



おそらく私の仕事の䞻な結果は、䜜業ツヌルこれたでのずころベヌタ版です。

TacoTacoプロゞェクトの玹介github.com/GrrrDog/TacoTaco



合蚈



おそらく、TACACS +プロトコルずその実装は、MitM攻撃に察する必芁なレベルの保護を提䟛しないず考えるこずができたす。



䞀方、倚くの堎合、TACACS +サヌバヌは管理者ずネットワヌク機噚のみがアクセスできるVLANに配眮されおいるため、これらの攻撃はやや困難ですシスコからの同様の掚奚事項。 しかし、これは別のタスクです。



All Articles