Browse Source

add EternalBlue test

Jens Keim 6 years ago
parent
commit
dc5e42834d
2 changed files with 30 additions and 2 deletions
  1. 3 2
      code/Attack/EternalBlueExploit.py
  2. 27 0
      code/Test/test_EternalBlue.py

+ 3 - 2
code/Attack/EternalBlueExploit.py

@@ -5,6 +5,7 @@ from lea import Lea
 from scapy.utils import RawPcapReader
 from scapy.layers.inet import Ether
 
+from definitions import ROOT_DIR
 from Attack import BaseAttack
 from Attack.AttackParameters import Parameter as Param
 from Attack.AttackParameters import ParameterTypes
@@ -16,8 +17,8 @@ logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
 
 
 class EternalBlueExploit(BaseAttack.BaseAttack):
-    template_scan_pcap_path = "resources/Win7_eternalblue_scan.pcap"
-    template_attack_pcap_path = "resources/Win7_eternalblue_exploit.pcap"
+    template_scan_pcap_path = ROOT_DIR + "/../resources/Win7_eternalblue_scan.pcap"
+    template_attack_pcap_path = ROOT_DIR + "/../resources/Win7_eternalblue_exploit.pcap"
     # Empirical values from Metasploit experiments
     minDefaultPort = 30000
     maxDefaultPort = 50000

+ 27 - 0
code/Test/test_EternalBlue.py

@@ -0,0 +1,27 @@
+import unittest
+import unittest.mock as mock
+
+from Test.GenericTest import GenericTest
+from Test.Lib import test_pcap_ips
+
+# FIXME: create new hashes if new test.pcap is used
+sha_default = 'c115719657b597730ae46b42a05ac979e9d30dcfccfead1424321b1e3288e8b6'
+
+"""
+CURRENT COVERAGE
+Name                             Stmts   Miss  Cover   Missing (lines)
+---------------------------------------------------------------------------
+Attack/EternalBlueExploit.py       246     10    96%   62, 72, 112, 119, 126-127, 133-134, 139, 266
+"""
+# TODO: get 100% coverage
+
+
+class UnitTestEternalBlue(GenericTest):
+
+    def test_default(self):
+        # FIXME: maybe use another seed
+        self.generic_test([['EternalBlueExploit']], sha_default)
+
+
+if __name__ == '__main__':
+    unittest.main()