TLS-Attacker - A Java-based Framework for Analyzing

chmood
Perpustakaan TLS-Penyerang adalah kerangka berbasis Java untuk menganalisis TLS perpustakaan. Hal ini dapat mengirim pesan protokol sewenang-wenang dalam urutan yang sewenang-wenang kepada rekan TLS, dan menentukan modifikasi mereka menggunakan antarmuka yang disediakan.
Hal ini memberikan pengembang kesempatan untuk dengan mudah menentukan aliran protokol TLS kustom dan mengujinya terhadap perpustakaan TLS nya.

Harap dicatat: 

TLS-Penyerang adalah alat penelitian ditujukan untuk pengembang TLS dan pentesters. Tidak ada GUI dan tidak ada lampu hijau / merah. Ini adalah versi pertama dan dapat berisi beberapa bug. 


Kompilasi 

Dalam rangka untuk mengkompilasi dan menggunakan TLS-Penyerang, Anda harus memiliki Java diinstal. Jalankan perintah maven dari direktori TLS-Penyerang: 


$ cd TLS-Attacker $ ./mvnw clean package

Atau, jika Anda sedang terburu-buru, Anda dapat melewati tes dengan menggunakan:


$ ./mvnw clean package -DskipTests=true

Struktur kode 

TLS-Penyerang terdiri dari beberapa (maven) proyek:


  • Transportasi:utilitas transportasi untuk TCP dan UDP.
  • ModifiableVariable: Berisi variabel dimodifikasi yang memungkinkan seseorang untuk mengeksekusi modifikasi variabel (tertentu serta random) selama arus protokol. ModifiableVariables digunakan dalam pesan protokol.
  • TLS: implementasi Protokol, saat ini (D) TLS1.2 kompatibel.
  • Serangan:
  • Pelaksanaan beberapa serangan terkenal dan tes untuk serangan ini. Fuzzer: Kerangka Fuzzing diimplementasikan di atas fungsi TLS-Penyerang. 000 Anda dapat menemukan informasi lebih lanjut tentang modul ini di Wiki 










Didukung Standar dan Cipher Suites Saat ini, fitur berikut ini didukung: 

TLS versi 1.0 (RFC-2246), 
1.1 (RFC-4346) dan 1,2 (RFC-5246) DTLS 1.2 (RFC-6347) 

algoritma pertukaran kunci (EC) DH dan RSA AES CBC cipher suite Ekstensi: EC, format titik EC, Heartbeat, Max panjang fragmen, nama Server, Signature dan Hash algoritma TLS klien dan server Penggunaan Berikut ini, kami menyajikan beberapa 

contoh yang sangat sederhana untuk menggunakan TLS-Penyerang. Pertama, Anda perlu untuk memulai server TLS. Anda dapat menggunakan server Java yang disediakan: 



$ cd TLS-Server $ java -jar target/TLS-Server-1.0.jar ../resources/rsa1024.jks password TLS 4433

... Atau Anda dapat menggunakan server yang berbeda, misalnya OpenSSL:



$ cd resources $ openssl s_server -key rsa1024key.pem -cert rsa1024cert.pem

Kedua perintah mulai server TLS pada port 4433. Jika Anda ingin terhubung ke server, Anda dapat menggunakan perintah ini:



$ cd Runnable $ java -jar target/TLS-Attacker-1.0.jar client

Anda dapat menggunakan cipher suite yang berbeda, versi TLS, atau terhubung ke port yang berbeda dengan parameter berikut:


$ java -jar target/TLS-Attacker-1.0.jar client -connect localhost:4433 -cipher TLS_RSA_WITH_AES_256_CBC_SHA -version TLS11

Klien berbasis otentikasi juga didukung, hanya menggunakannya sebagai berikut. Pertama, mulai s_server openssl:


$ cd resources $ openssl s_server -key rsa1024key.pem -cert rsa1024cert.pem -verify ec256cert.pem

Kemudian mulai klien dengan:


$ java -jar target/TLS-Attacker-1.0.jar client -connect localhost:4433 -cipher TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA -keystore ../resources/ec256.jks -password password -alias alias -client_authentication

Untuk lebih parameter, jalankan:


$ java -jar target/TLS-Attacker-1.0.jar client -help

Anda sekarang dapat juga menggunakan server TLS:


$ java -jar target/TLS-Attacker-1.1.jar server -port 4444 -keystore ../resources/rsa1024.jks -password password -alias alias

Saat ini, hanya satu jabat tangan TLS akan diproduksi, setelah itu Anda harus me-restart server lagi. Serangan modul berisi beberapa serangan, Anda bisa untuk tes misalnya untuk kerentanan bantalan oracle:


$ cd Runnable $ java -jar target/TLS-Attacker-1.0.jar padding_oracle

Dalam kasus Anda adalah seorang pengembang yang lebih berpengalaman, Anda dapat membuat aliran pesan TLS sendiri. Sebagai contoh:


GeneralConfig generalConfig = new GeneralConfig(); ConfigHandler configHandler = ConfigHandlerFactory.createConfigHandler("client"); configHandler.initialize(generalConfig); ClientCommandConfig config = new ClientCommandConfig(); config.setConnect("localhost:" + PORT); config.setWorkflowTraceType(WorkflowTraceType.CLIENT_HELLO); TransportHandler transportHandler = configHandler.initializeTransportHandler(config); TlsContext tlsContext = configHandler.initializeTlsContext(config); WorkflowTrace trace = tlsContext.getWorkflowTrace(); trace.add(new ServerHelloMessage(ConnectionEnd.SERVER)); trace.add(new CertificateMessage(ConnectionEnd.SERVER)); trace.add(new ServerHelloDoneMessage(ConnectionEnd.SERVER)); trace.add(new RSAClientKeyExchangeMessage(ConnectionEnd.CLIENT)); trace.add(new ChangeCipherSpecMessage(ConnectionEnd.CLIENT)); trace.add(new FinishedMessage(ConnectionEnd.CLIENT)); trace.add(new ChangeCipherSpecMessage(ConnectionEnd.SERVER)); trace.add(new FinishedMessage(ConnectionEnd.SERVER)); WorkflowExecutor workflowExecutor = configHandler.initializeWorkflowExecutor(transportHandler, tlsContext); workflowExecutor.executeWorkflow(); transportHandler.closeConnection();

Saya tahu banyak dari Anda benci Jawa. Oleh karena itu, Anda juga dapat menggunakan struktur XML dan menjalankan protokol TLS disesuaikan Anda dari XML:


CLIENT SECP192R1 SECP256R1 SECP384R1 SECP521R1 UNCOMPRESSED SHA512 RSA SHA512 ECDSA SHA256 RSA SHA256 ECDSA SHA1 RSA SHA1 ECDSA NULL TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA SERVER SERVER SERVER SERVER CLIENT CLIENT CLIENT SERVER SERVER

Mengingat struktur XML ini terletak di config.xml, Anda hanya akan perlu menjalankan:


$ java -jar target/TLS-Attacker-1.0.jar client -workflow_input config.xml

Variabel dimodifikasi 

TLS-Penyerang bergantung pada konsep variabel dimodifikasi. Variabel dimodifikasi memungkinkan seseorang untuk mengatur modifikasi tipe dasar, misalnya Integer, dan memodifikasi nilai-nilai mereka dengan menjalankan metode getter. Cara terbaik untuk menyajikan fungsi dari konsep ini adalah dengan cara contoh sederhana:  


ModifiableInteger i = new ModifiableInteger(); i.setOriginalValue(30); i.setModification(new AddModification(20)); System.out.println(i.getValue()); // 50

Dalam contoh ini, kita mendefinisikan ModifiableInteger baru dan set nilainya ke 30. Selanjutnya, kita mendefinisikan AddModification modifikasi baru yang hanya mengembalikan jumlah dari dua bilangan bulat. Kami set nilainya ke 20. Jika kita menjalankan program di atas, hasil 50 dicetak. Kami tentu saja dapat menggunakan konsep ini dengan membangun alur kerja TLS kami. Bayangkan Anda ingin menguji server untuk kerentanan Heartbleed. Untuk tujuan ini, Anda perlu meningkatkan panjang payload dalam permintaan sekejap. Dengan TLS-Penyerang, Anda dapat melakukan ini sebagai berikut:


CLIENT PEER_ALLOWED_TO_SEND NULL TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA SERVER SERVER SERVER SERVER CLIENT CLIENT CLIENT SERVER SERVER CLIENT 2000 SERVER

Seperti yang Anda lihat, kita secara eksplisit meningkatkan panjang payload dari pesan Heartbeat oleh 2000. Jika Anda menjalankan serangan terhadap server rentan

(misalnya, OpenSSL 1.0.1f), Anda akan melihat respon Heartbeat valid. Contoh lebih lanjut tentang serangan dan fuzzing berada di Wiki. Ucapan berikut orang kode untuk Proyek TLS-Penyerang kontribusi: Florian Pfützenreuter: 

DTLS 1.2 Felix Lange: EAP-TLS Philip Riese: implementasi Server, TLS Man-in-the-Tengah penanganan Christian Mainka: dukungan Desain dan banyak saran implementasi. Kontribusi lebih lanjut tarik permintaan dipersilakan. 

TLS-Penyerang Proyek TLS-Penyerang telah digunakan dalam karya ilmiah berikut dan proyek-proyek: Tibor Jager, Jörg Schwenk, Juraj Somorovsky. Pada Keamanan TLS 1.3 dan QUIC Terhadap Kelemahan dalam PKCS # 1 v1.5 Enkripsi. CCS'15. 

Https://www.nds.rub.de/research/publications/ccs15Tibor Jager, Jörg Schwenk, Juraj Somorovsky. Praktis Serangan Curve valid pada TLS-ECDH. ESORICS'15. 

Https://www.nds.rub.de/research/publications/ESORICS15 Quellcode-basierte Untersuchung von kryptographisch relevanten Aspekten der OpenSSL-Bibliothek. 

https://www.bsi.bund.de/DE/Publikationen/Studien/OpenSSL-Bibliothek/opensslbibliothek.html . Itu selanjutnya digunakan untuk menemukan bug dalam berbagai implementasi TLS, lihat Wiki Jika Anda punya ide penelitian atau membutuhkan dukungan dengan menggunakan TLS-Penyerang 

(misalnya Anda ingin memasukkannya dalam suite pengujian Anda), jangan ragu untuk menghubungi hackmanit.de . Jika TLS-Penyerang membantu Anda untuk menemukan bug dalam implementasi TLS, silakan mengakui alat ini. Terima kasih!

Download TLS-Attacker


Komentar