ಒಳಬರುವ SSH ಸಂಪರ್ಕಗಳಿಗಾಗಿ ಟ್ರ್ಯಾಪ್ (ಟಾರ್ಪಿಟ್).

ಇಂಟರ್ನೆಟ್ ತುಂಬಾ ಪ್ರತಿಕೂಲ ವಾತಾವರಣವಾಗಿದೆ ಎಂಬುದು ರಹಸ್ಯವಲ್ಲ. ನೀವು ಸರ್ವರ್ ಅನ್ನು ಹೆಚ್ಚಿಸಿದ ತಕ್ಷಣ, ಅದು ತಕ್ಷಣವೇ ಬೃಹತ್ ದಾಳಿಗಳು ಮತ್ತು ಬಹು ಸ್ಕ್ಯಾನ್‌ಗಳಿಗೆ ಒಳಗಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ ಭದ್ರತಾ ಸಿಬ್ಬಂದಿಯಿಂದ ಹನಿಪಾಟ್ ಈ ಕಸದ ದಟ್ಟಣೆಯ ಪ್ರಮಾಣವನ್ನು ನೀವು ಅಂದಾಜು ಮಾಡಬಹುದು. ವಾಸ್ತವವಾಗಿ, ಸರಾಸರಿ ಸರ್ವರ್‌ನಲ್ಲಿ, 99% ಟ್ರಾಫಿಕ್ ದುರುದ್ದೇಶಪೂರಿತವಾಗಿರಬಹುದು.

ಟಾರ್ಪಿಟ್ ಒಳಬರುವ ಸಂಪರ್ಕಗಳನ್ನು ನಿಧಾನಗೊಳಿಸಲು ಬಳಸಲಾಗುವ ಟ್ರ್ಯಾಪ್ ಪೋರ್ಟ್ ಆಗಿದೆ. ಮೂರನೇ ವ್ಯಕ್ತಿಯ ವ್ಯವಸ್ಥೆಯು ಈ ಪೋರ್ಟ್‌ಗೆ ಸಂಪರ್ಕಗೊಂಡರೆ, ಸಂಪರ್ಕವನ್ನು ತ್ವರಿತವಾಗಿ ಮುಚ್ಚಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಅವಳು ತನ್ನ ಸಿಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ವ್ಯರ್ಥ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಮತ್ತು ಸಂಪರ್ಕದ ಅವಧಿ ಮುಗಿಯುವವರೆಗೆ ಕಾಯಬೇಕು ಅಥವಾ ಹಸ್ತಚಾಲಿತವಾಗಿ ಅದನ್ನು ಕೊನೆಗೊಳಿಸಬೇಕು.

ಹೆಚ್ಚಾಗಿ, ಟಾರ್ಪಿಟ್ಗಳನ್ನು ರಕ್ಷಣೆಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಕಂಪ್ಯೂಟರ್ ವರ್ಮ್‌ಗಳಿಂದ ರಕ್ಷಿಸಲು ತಂತ್ರವನ್ನು ಮೊದಲು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಯಿತು. ಮತ್ತು ಈಗ ಇದನ್ನು ಸತತವಾಗಿ ಎಲ್ಲಾ IP ವಿಳಾಸಗಳ ವಿಶಾಲ ಸ್ಕ್ಯಾನಿಂಗ್‌ನಲ್ಲಿ ತೊಡಗಿರುವ ಸ್ಪ್ಯಾಮರ್‌ಗಳು ಮತ್ತು ಸಂಶೋಧಕರ ಜೀವನವನ್ನು ಹಾಳುಮಾಡಲು ಬಳಸಬಹುದು (ಹಬ್ರೆಯಲ್ಲಿ ಉದಾಹರಣೆಗಳು: ಆಸ್ಟ್ರಿಯಾ, ಉಕ್ರೇನ್).

ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಎಂಬ ಹೆಸರಿನ ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರಲ್ಲಿ ಒಬ್ಬರು ಈ ಅವಮಾನವನ್ನು ವೀಕ್ಷಿಸಲು ಸುಸ್ತಾಗಿದ್ದರು - ಮತ್ತು ಅವರು ಸಣ್ಣ ಕಾರ್ಯಕ್ರಮವನ್ನು ಬರೆದರು ಅಂತ್ಯವಿಲ್ಲದ, SSH ಗಾಗಿ ಟಾರ್ಪಿಟ್ ಒಳಬರುವ ಸಂಪರ್ಕಗಳನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತದೆ. ಪ್ರೋಗ್ರಾಂ ಪೋರ್ಟ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ (ಪರೀಕ್ಷೆಗಾಗಿ ಡೀಫಾಲ್ಟ್ ಪೋರ್ಟ್ 2222) ಮತ್ತು SSH ಸರ್ವರ್ ಎಂದು ನಟಿಸುತ್ತದೆ, ಆದರೆ ವಾಸ್ತವದಲ್ಲಿ ಅದು ಕೈಬಿಡುವವರೆಗೆ ಒಳಬರುವ ಕ್ಲೈಂಟ್‌ನೊಂದಿಗೆ ಅಂತ್ಯವಿಲ್ಲದ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ. ಕ್ಲೈಂಟ್ ಬೀಳುವವರೆಗೆ ಇದು ಹಲವಾರು ದಿನಗಳವರೆಗೆ ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚು ಕಾಲ ಮುಂದುವರಿಯಬಹುದು.

ಉಪಯುಕ್ತತೆಯ ಸ್ಥಾಪನೆ:

$ make
$ ./endlessh &
$ ssh -p2222 localhost

ಸರಿಯಾಗಿ ಅಳವಡಿಸಲಾದ ಟಾರ್ಪಿಟ್ ನಿಮ್ಮಿಂದ ಹೆಚ್ಚು ಸಂಪನ್ಮೂಲಗಳನ್ನು ಆಕ್ರಮಣಕಾರರಿಂದ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಆದರೆ ಇದು ಸಂಪನ್ಮೂಲಗಳ ವಿಷಯವೂ ಅಲ್ಲ. ಲೇಖಕ ಅವರು ಬರೆಯುತ್ತಾರೆಕಾರ್ಯಕ್ರಮವು ವ್ಯಸನಕಾರಿಯಾಗಿದೆ ಎಂದು. ಇದೀಗ 27 ಕ್ಲೈಂಟ್‌ಗಳು ಸಿಕ್ಕಿಬಿದ್ದಿದ್ದಾರೆ, ಅವರಲ್ಲಿ ಕೆಲವರು ವಾರಗಳವರೆಗೆ ಸಂಪರ್ಕ ಹೊಂದಿದ್ದಾರೆ. ಚಟುವಟಿಕೆಯ ಉತ್ತುಂಗದಲ್ಲಿ, 1378 ಗ್ರಾಹಕರು 20 ಗಂಟೆಗಳ ಕಾಲ ಸಿಕ್ಕಿಬಿದ್ದರು!

ಆಪರೇಟಿಂಗ್ ಮೋಡ್‌ನಲ್ಲಿ, ಎಂಡ್ಲೆಶ್ ಸರ್ವರ್ ಅನ್ನು ಸಾಮಾನ್ಯ ಪೋರ್ಟ್ 22 ನಲ್ಲಿ ಸ್ಥಾಪಿಸಬೇಕಾಗಿದೆ, ಅಲ್ಲಿ ಗೂಂಡಾಗಳು ಸಾಮೂಹಿಕವಾಗಿ ನಾಕ್ ಮಾಡುತ್ತಾರೆ. ಪ್ರಮಾಣಿತ ಭದ್ರತಾ ಶಿಫಾರಸುಗಳು ಯಾವಾಗಲೂ SSH ಅನ್ನು ಬೇರೆ ಪೋರ್ಟ್‌ಗೆ ಸರಿಸಲು ಸಲಹೆ ನೀಡುತ್ತವೆ, ಇದು ತಕ್ಷಣವೇ ಲಾಗ್‌ಗಳ ಗಾತ್ರವನ್ನು ಪರಿಮಾಣದ ಕ್ರಮದಿಂದ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಅವರ ಪ್ರೋಗ್ರಾಂ ನಿರ್ದಿಷ್ಟತೆಯ ಒಂದು ಪ್ಯಾರಾಗ್ರಾಫ್ ಅನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ ಎಂದು ಹೇಳುತ್ತಾರೆ RFC 4253 SSH ಪ್ರೋಟೋಕಾಲ್ಗೆ. TCP ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಿದ ತಕ್ಷಣವೇ, ಆದರೆ ಕ್ರಿಪ್ಟೋಗ್ರಫಿಯನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು, ಎರಡೂ ಪಕ್ಷಗಳು ಗುರುತಿನ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಕಳುಹಿಸಬೇಕು. ಮತ್ತು ಒಂದು ಟಿಪ್ಪಣಿ ಕೂಡ ಇದೆ: "ಆವೃತ್ತಿ ಸಾಲನ್ನು ಕಳುಹಿಸುವ ಮೊದಲು ಸರ್ವರ್ ಡೇಟಾದ ಇತರ ಸಾಲುಗಳನ್ನು ಕಳುಹಿಸಬಹುದು"... ಮತ್ತು ಯಾವುದೇ ಮಿತಿಯಿಲ್ಲ ಈ ಡೇಟಾದ ಪರಿಮಾಣದ ಮೇಲೆ, ನೀವು ಪ್ರತಿ ಸಾಲನ್ನು ಪ್ರಾರಂಭಿಸಬೇಕು SSH-.

ಎಂಡ್ಲೆಶ್ ಪ್ರೋಗ್ರಾಂ ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತದೆ: ಇದು ಕಳುಹಿಸುತ್ತದೆ ಅಂತ್ಯವಿಲ್ಲದ ಯಾದೃಚ್ಛಿಕವಾಗಿ ರಚಿಸಲಾದ ಡೇಟಾದ ಸ್ಟ್ರೀಮ್, ಇದು RFC 4253 ಅನ್ನು ಅನುಸರಿಸುತ್ತದೆ, ಅಂದರೆ, ದೃಢೀಕರಣದ ಮೊದಲು ಕಳುಹಿಸಿ, ಮತ್ತು ಪ್ರತಿ ಸಾಲು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ SSH- ಮತ್ತು ಸಾಲಿನ ಅಂತ್ಯದ ಅಕ್ಷರ ಸೇರಿದಂತೆ 255 ಅಕ್ಷರಗಳನ್ನು ಮೀರುವುದಿಲ್ಲ. ಸಾಮಾನ್ಯವಾಗಿ, ಎಲ್ಲವೂ ಮಾನದಂಡದ ಪ್ರಕಾರ.

ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಪ್ಯಾಕೆಟ್ಗಳನ್ನು ಕಳುಹಿಸುವ ನಡುವೆ ಪ್ರೋಗ್ರಾಂ 10 ಸೆಕೆಂಡುಗಳ ಕಾಲ ಕಾಯುತ್ತದೆ. ಇದು ಕ್ಲೈಂಟ್‌ಗೆ ಸಮಯ ಮೀರದಂತೆ ತಡೆಯುತ್ತದೆ, ಆದ್ದರಿಂದ ಕ್ಲೈಂಟ್ ಶಾಶ್ವತವಾಗಿ ಸಿಕ್ಕಿಬೀಳುತ್ತದೆ.

ಕ್ರಿಪ್ಟೋಗ್ರಫಿಯನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು ಡೇಟಾವನ್ನು ಕಳುಹಿಸಲಾಗಿರುವುದರಿಂದ, ಪ್ರೋಗ್ರಾಂ ತುಂಬಾ ಸರಳವಾಗಿದೆ. ಇದು ಯಾವುದೇ ಸೈಫರ್‌ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಅಗತ್ಯವಿಲ್ಲ ಮತ್ತು ಬಹು ಪ್ರೋಟೋಕಾಲ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.

ಉಪಯುಕ್ತತೆಯು ಕನಿಷ್ಟ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಯಂತ್ರದಲ್ಲಿ ಸಂಪೂರ್ಣವಾಗಿ ಗಮನಿಸದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಲೇಖಕರು ಪ್ರಯತ್ನಿಸಿದರು. ಆಧುನಿಕ ಆಂಟಿವೈರಸ್ಗಳು ಮತ್ತು ಇತರ "ಭದ್ರತಾ ವ್ಯವಸ್ಥೆಗಳು" ಭಿನ್ನವಾಗಿ, ಇದು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ನಿಧಾನಗೊಳಿಸಬಾರದು. ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಕುತಂತ್ರದ ಸಾಫ್ಟ್‌ವೇರ್ ಅಳವಡಿಕೆಯಿಂದಾಗಿ ಅವರು ಟ್ರಾಫಿಕ್ ಮತ್ತು ಮೆಮೊರಿ ಬಳಕೆ ಎರಡನ್ನೂ ಕಡಿಮೆ ಮಾಡಲು ನಿರ್ವಹಿಸುತ್ತಿದ್ದರು. ಹೊಸ ಸಂಪರ್ಕದಲ್ಲಿ ಪ್ರತ್ಯೇಕ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿದರೆ, ಸಂಭಾವ್ಯ ದಾಳಿಕೋರರು ಗಣಕದಲ್ಲಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಹೊರಹಾಕಲು ಬಹು ಸಂಪರ್ಕಗಳನ್ನು ತೆರೆಯುವ ಮೂಲಕ DDoS ದಾಳಿಯನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು. ಪ್ರತಿ ಸಂಪರ್ಕಕ್ಕೆ ಒಂದು ಥ್ರೆಡ್ ಉತ್ತಮ ಆಯ್ಕೆಯಾಗಿಲ್ಲ, ಏಕೆಂದರೆ ಕರ್ನಲ್ ಥ್ರೆಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಸಂಪನ್ಮೂಲಗಳನ್ನು ವ್ಯರ್ಥ ಮಾಡುತ್ತದೆ.

ಅದಕ್ಕಾಗಿಯೇ ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಎಂಡ್ಲೆಶ್‌ಗಾಗಿ ಅತ್ಯಂತ ಹಗುರವಾದ ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿಕೊಂಡರು: ಏಕ-ಥ್ರೆಡ್ ಸರ್ವರ್ poll(2), ಬಲೆಯಲ್ಲಿರುವ ಕ್ಲೈಂಟ್‌ಗಳು ವಾಸ್ತವಿಕವಾಗಿ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುವುದಿಲ್ಲ, ಕರ್ನಲ್‌ನಲ್ಲಿರುವ ಸಾಕೆಟ್ ಆಬ್ಜೆಕ್ಟ್ ಮತ್ತು ಎಂಡ್‌ಲೆಶ್‌ನಲ್ಲಿ ಟ್ರ್ಯಾಕಿಂಗ್ ಮಾಡಲು ಮತ್ತೊಂದು 78 ಬೈಟ್‌ಗಳನ್ನು ಲೆಕ್ಕಿಸುವುದಿಲ್ಲ. ಪ್ರತಿ ಕ್ಲೈಂಟ್‌ಗೆ ಸ್ವೀಕರಿಸಲು ಮತ್ತು ಕಳುಹಿಸಲು ಬಫರ್‌ಗಳನ್ನು ನಿಯೋಜಿಸುವುದನ್ನು ತಪ್ಪಿಸಲು, Endlessh ನೇರ ಪ್ರವೇಶ ಸಾಕೆಟ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ ಮತ್ತು TCP ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ನೇರವಾಗಿ ಭಾಷಾಂತರಿಸುತ್ತದೆ, ಬಹುತೇಕ ಸಂಪೂರ್ಣ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ TCP/IP ಸ್ಟಾಕ್ ಅನ್ನು ಬೈಪಾಸ್ ಮಾಡುತ್ತದೆ. ಒಳಬರುವ ಬಫರ್ ಅಗತ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ನಾವು ಒಳಬರುವ ಡೇಟಾದಲ್ಲಿ ಆಸಕ್ತಿ ಹೊಂದಿಲ್ಲ.

ಲೇಖಕರು ತಮ್ಮ ಕಾರ್ಯಕ್ರಮದ ಸಮಯದಲ್ಲಿ ಹೇಳುತ್ತಾರೆ ತಿಳಿದಿರಲಿಲ್ಲ ಪೈಥಾನ್‌ನ ಅಸಿಸಿಯೊ ಮತ್ತು ಇತರ ಟಾರ್ಪಿಟ್‌ಗಳ ಅಸ್ತಿತ್ವದ ಬಗ್ಗೆ. ಅವರು asycio ಬಗ್ಗೆ ತಿಳಿದಿದ್ದರೆ, ಅವರು ಪೈಥಾನ್‌ನಲ್ಲಿ ಕೇವಲ 18 ಸಾಲುಗಳಲ್ಲಿ ತಮ್ಮ ಉಪಯುಕ್ತತೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು:

import asyncio
import random

async def handler(_reader, writer):
try:
while True:
await asyncio.sleep(10)
writer.write(b'%xrn' % random.randint(0, 2**32))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 2222)
async with server:
await server.serve_forever()

asyncio.run(main())

ಅಸಿನ್ಸಿಯೊ ಟಾರ್ಪಿಟ್ಗಳನ್ನು ಬರೆಯಲು ಸೂಕ್ತವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಈ ಹುಕ್ ಫೈರ್‌ಫಾಕ್ಸ್, ಕ್ರೋಮ್ ಅಥವಾ ನಿಮ್ಮ HTTP ಸರ್ವರ್‌ಗೆ ಸಂಪರ್ಕಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ ಯಾವುದೇ ಕ್ಲೈಂಟ್ ಅನ್ನು ಹಲವು ಗಂಟೆಗಳ ಕಾಲ ಫ್ರೀಜ್ ಮಾಡುತ್ತದೆ:

import asyncio
import random

async def handler(_reader, writer):
writer.write(b'HTTP/1.1 200 OKrn')
try:
while True:
await asyncio.sleep(5)
header = random.randint(0, 2**32)
value = random.randint(0, 2**32)
writer.write(b'X-%x: %xrn' % (header, value))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 8080)
async with server:
await server.serve_forever()

asyncio.run(main())

ಆನ್‌ಲೈನ್ ಬೆದರಿಸುವವರನ್ನು ಶಿಕ್ಷಿಸಲು ಟಾರ್ಪಿಟ್ ಉತ್ತಮ ಸಾಧನವಾಗಿದೆ. ನಿಜ, ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ, ನಿರ್ದಿಷ್ಟ ಸರ್ವರ್ನ ಅಸಾಮಾನ್ಯ ನಡವಳಿಕೆಗೆ ಅವರ ಗಮನವನ್ನು ಸೆಳೆಯುವ ಅಪಾಯವಿದೆ. ಯಾರೋ ಪ್ರತೀಕಾರದ ಬಗ್ಗೆ ಯೋಚಿಸಬಹುದು ಮತ್ತು ನಿಮ್ಮ IP ಮೇಲೆ ಉದ್ದೇಶಿತ DDoS ದಾಳಿ. ಆದಾಗ್ಯೂ, ಇಲ್ಲಿಯವರೆಗೆ ಅಂತಹ ಯಾವುದೇ ಪ್ರಕರಣಗಳಿಲ್ಲ, ಮತ್ತು ಟಾರ್ಪಿಟ್ಗಳು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ.

ಕೇಂದ್ರಗಳು:
ಪೈಥಾನ್, ಮಾಹಿತಿ ಭದ್ರತೆ, ಸಾಫ್ಟ್‌ವೇರ್, ಸಿಸ್ಟಮ್ ಆಡಳಿತ

ಟ್ಯಾಗ್ಗಳು:
SSH, ಎಂಡ್ಲೆಶ್, ಟಾರ್ಪಿಟ್, ಟಾರ್ಪಿಟ್, ಟ್ರ್ಯಾಪ್, ಅಸಿಸಿಯೋ
ಒಳಬರುವ SSH ಸಂಪರ್ಕಗಳಿಗಾಗಿ ಟ್ರ್ಯಾಪ್ (ಟಾರ್ಪಿಟ್).

ಇಂಟರ್ನೆಟ್ ತುಂಬಾ ಪ್ರತಿಕೂಲ ವಾತಾವರಣವಾಗಿದೆ ಎಂಬುದು ರಹಸ್ಯವಲ್ಲ. ನೀವು ಸರ್ವರ್ ಅನ್ನು ಹೆಚ್ಚಿಸಿದ ತಕ್ಷಣ, ಅದು ತಕ್ಷಣವೇ ಬೃಹತ್ ದಾಳಿಗಳು ಮತ್ತು ಬಹು ಸ್ಕ್ಯಾನ್‌ಗಳಿಗೆ ಒಳಗಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ ಭದ್ರತಾ ಸಿಬ್ಬಂದಿಯಿಂದ ಹನಿಪಾಟ್ ಈ ಕಸದ ದಟ್ಟಣೆಯ ಪ್ರಮಾಣವನ್ನು ನೀವು ಅಂದಾಜು ಮಾಡಬಹುದು. ವಾಸ್ತವವಾಗಿ, ಸರಾಸರಿ ಸರ್ವರ್‌ನಲ್ಲಿ, 99% ಟ್ರಾಫಿಕ್ ದುರುದ್ದೇಶಪೂರಿತವಾಗಿರಬಹುದು.

ಟಾರ್ಪಿಟ್ ಒಳಬರುವ ಸಂಪರ್ಕಗಳನ್ನು ನಿಧಾನಗೊಳಿಸಲು ಬಳಸಲಾಗುವ ಟ್ರ್ಯಾಪ್ ಪೋರ್ಟ್ ಆಗಿದೆ. ಮೂರನೇ ವ್ಯಕ್ತಿಯ ವ್ಯವಸ್ಥೆಯು ಈ ಪೋರ್ಟ್‌ಗೆ ಸಂಪರ್ಕಗೊಂಡರೆ, ಸಂಪರ್ಕವನ್ನು ತ್ವರಿತವಾಗಿ ಮುಚ್ಚಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಅವಳು ತನ್ನ ಸಿಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ವ್ಯರ್ಥ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಮತ್ತು ಸಂಪರ್ಕದ ಅವಧಿ ಮುಗಿಯುವವರೆಗೆ ಕಾಯಬೇಕು ಅಥವಾ ಹಸ್ತಚಾಲಿತವಾಗಿ ಅದನ್ನು ಕೊನೆಗೊಳಿಸಬೇಕು.

ಹೆಚ್ಚಾಗಿ, ಟಾರ್ಪಿಟ್ಗಳನ್ನು ರಕ್ಷಣೆಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಕಂಪ್ಯೂಟರ್ ವರ್ಮ್‌ಗಳಿಂದ ರಕ್ಷಿಸಲು ತಂತ್ರವನ್ನು ಮೊದಲು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಯಿತು. ಮತ್ತು ಈಗ ಇದನ್ನು ಸತತವಾಗಿ ಎಲ್ಲಾ IP ವಿಳಾಸಗಳ ವಿಶಾಲ ಸ್ಕ್ಯಾನಿಂಗ್‌ನಲ್ಲಿ ತೊಡಗಿರುವ ಸ್ಪ್ಯಾಮರ್‌ಗಳು ಮತ್ತು ಸಂಶೋಧಕರ ಜೀವನವನ್ನು ಹಾಳುಮಾಡಲು ಬಳಸಬಹುದು (ಹಬ್ರೆಯಲ್ಲಿ ಉದಾಹರಣೆಗಳು: ಆಸ್ಟ್ರಿಯಾ, ಉಕ್ರೇನ್).

ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಎಂಬ ಹೆಸರಿನ ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರಲ್ಲಿ ಒಬ್ಬರು ಈ ಅವಮಾನವನ್ನು ವೀಕ್ಷಿಸಲು ಸುಸ್ತಾಗಿದ್ದರು - ಮತ್ತು ಅವರು ಸಣ್ಣ ಕಾರ್ಯಕ್ರಮವನ್ನು ಬರೆದರು ಅಂತ್ಯವಿಲ್ಲದ, SSH ಗಾಗಿ ಟಾರ್ಪಿಟ್ ಒಳಬರುವ ಸಂಪರ್ಕಗಳನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತದೆ. ಪ್ರೋಗ್ರಾಂ ಪೋರ್ಟ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ (ಪರೀಕ್ಷೆಗಾಗಿ ಡೀಫಾಲ್ಟ್ ಪೋರ್ಟ್ 2222) ಮತ್ತು SSH ಸರ್ವರ್ ಎಂದು ನಟಿಸುತ್ತದೆ, ಆದರೆ ವಾಸ್ತವದಲ್ಲಿ ಅದು ಕೈಬಿಡುವವರೆಗೆ ಒಳಬರುವ ಕ್ಲೈಂಟ್‌ನೊಂದಿಗೆ ಅಂತ್ಯವಿಲ್ಲದ ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸುತ್ತದೆ. ಕ್ಲೈಂಟ್ ಬೀಳುವವರೆಗೆ ಇದು ಹಲವಾರು ದಿನಗಳವರೆಗೆ ಅಥವಾ ಅದಕ್ಕಿಂತ ಹೆಚ್ಚು ಕಾಲ ಮುಂದುವರಿಯಬಹುದು.

ಉಪಯುಕ್ತತೆಯ ಸ್ಥಾಪನೆ:

$ make
$ ./endlessh &
$ ssh -p2222 localhost

ಸರಿಯಾಗಿ ಅಳವಡಿಸಲಾದ ಟಾರ್ಪಿಟ್ ನಿಮ್ಮಿಂದ ಹೆಚ್ಚು ಸಂಪನ್ಮೂಲಗಳನ್ನು ಆಕ್ರಮಣಕಾರರಿಂದ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ಆದರೆ ಇದು ಸಂಪನ್ಮೂಲಗಳ ವಿಷಯವೂ ಅಲ್ಲ. ಲೇಖಕ ಅವರು ಬರೆಯುತ್ತಾರೆಕಾರ್ಯಕ್ರಮವು ವ್ಯಸನಕಾರಿಯಾಗಿದೆ ಎಂದು. ಇದೀಗ 27 ಕ್ಲೈಂಟ್‌ಗಳು ಸಿಕ್ಕಿಬಿದ್ದಿದ್ದಾರೆ, ಅವರಲ್ಲಿ ಕೆಲವರು ವಾರಗಳವರೆಗೆ ಸಂಪರ್ಕ ಹೊಂದಿದ್ದಾರೆ. ಚಟುವಟಿಕೆಯ ಉತ್ತುಂಗದಲ್ಲಿ, 1378 ಗ್ರಾಹಕರು 20 ಗಂಟೆಗಳ ಕಾಲ ಸಿಕ್ಕಿಬಿದ್ದರು!

ಆಪರೇಟಿಂಗ್ ಮೋಡ್‌ನಲ್ಲಿ, ಎಂಡ್ಲೆಶ್ ಸರ್ವರ್ ಅನ್ನು ಸಾಮಾನ್ಯ ಪೋರ್ಟ್ 22 ನಲ್ಲಿ ಸ್ಥಾಪಿಸಬೇಕಾಗಿದೆ, ಅಲ್ಲಿ ಗೂಂಡಾಗಳು ಸಾಮೂಹಿಕವಾಗಿ ನಾಕ್ ಮಾಡುತ್ತಾರೆ. ಪ್ರಮಾಣಿತ ಭದ್ರತಾ ಶಿಫಾರಸುಗಳು ಯಾವಾಗಲೂ SSH ಅನ್ನು ಬೇರೆ ಪೋರ್ಟ್‌ಗೆ ಸರಿಸಲು ಸಲಹೆ ನೀಡುತ್ತವೆ, ಇದು ತಕ್ಷಣವೇ ಲಾಗ್‌ಗಳ ಗಾತ್ರವನ್ನು ಪರಿಮಾಣದ ಕ್ರಮದಿಂದ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ.

ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಅವರ ಪ್ರೋಗ್ರಾಂ ನಿರ್ದಿಷ್ಟತೆಯ ಒಂದು ಪ್ಯಾರಾಗ್ರಾಫ್ ಅನ್ನು ಬಳಸಿಕೊಳ್ಳುತ್ತದೆ ಎಂದು ಹೇಳುತ್ತಾರೆ RFC 4253 SSH ಪ್ರೋಟೋಕಾಲ್ಗೆ. TCP ಸಂಪರ್ಕವನ್ನು ಸ್ಥಾಪಿಸಿದ ತಕ್ಷಣವೇ, ಆದರೆ ಕ್ರಿಪ್ಟೋಗ್ರಫಿಯನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು, ಎರಡೂ ಪಕ್ಷಗಳು ಗುರುತಿನ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಕಳುಹಿಸಬೇಕು. ಮತ್ತು ಒಂದು ಟಿಪ್ಪಣಿ ಕೂಡ ಇದೆ: "ಆವೃತ್ತಿ ಸಾಲನ್ನು ಕಳುಹಿಸುವ ಮೊದಲು ಸರ್ವರ್ ಡೇಟಾದ ಇತರ ಸಾಲುಗಳನ್ನು ಕಳುಹಿಸಬಹುದು"... ಮತ್ತು ಯಾವುದೇ ಮಿತಿಯಿಲ್ಲ ಈ ಡೇಟಾದ ಪರಿಮಾಣದ ಮೇಲೆ, ನೀವು ಪ್ರತಿ ಸಾಲನ್ನು ಪ್ರಾರಂಭಿಸಬೇಕು SSH-.

ಎಂಡ್ಲೆಶ್ ಪ್ರೋಗ್ರಾಂ ನಿಖರವಾಗಿ ಏನು ಮಾಡುತ್ತದೆ: ಇದು ಕಳುಹಿಸುತ್ತದೆ ಅಂತ್ಯವಿಲ್ಲದ ಯಾದೃಚ್ಛಿಕವಾಗಿ ರಚಿಸಲಾದ ಡೇಟಾದ ಸ್ಟ್ರೀಮ್, ಇದು RFC 4253 ಅನ್ನು ಅನುಸರಿಸುತ್ತದೆ, ಅಂದರೆ, ದೃಢೀಕರಣದ ಮೊದಲು ಕಳುಹಿಸಿ, ಮತ್ತು ಪ್ರತಿ ಸಾಲು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ SSH- ಮತ್ತು ಸಾಲಿನ ಅಂತ್ಯದ ಅಕ್ಷರ ಸೇರಿದಂತೆ 255 ಅಕ್ಷರಗಳನ್ನು ಮೀರುವುದಿಲ್ಲ. ಸಾಮಾನ್ಯವಾಗಿ, ಎಲ್ಲವೂ ಮಾನದಂಡದ ಪ್ರಕಾರ.

ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಪ್ಯಾಕೆಟ್ಗಳನ್ನು ಕಳುಹಿಸುವ ನಡುವೆ ಪ್ರೋಗ್ರಾಂ 10 ಸೆಕೆಂಡುಗಳ ಕಾಲ ಕಾಯುತ್ತದೆ. ಇದು ಕ್ಲೈಂಟ್‌ಗೆ ಸಮಯ ಮೀರದಂತೆ ತಡೆಯುತ್ತದೆ, ಆದ್ದರಿಂದ ಕ್ಲೈಂಟ್ ಶಾಶ್ವತವಾಗಿ ಸಿಕ್ಕಿಬೀಳುತ್ತದೆ.

ಕ್ರಿಪ್ಟೋಗ್ರಫಿಯನ್ನು ಅನ್ವಯಿಸುವ ಮೊದಲು ಡೇಟಾವನ್ನು ಕಳುಹಿಸಲಾಗಿರುವುದರಿಂದ, ಪ್ರೋಗ್ರಾಂ ತುಂಬಾ ಸರಳವಾಗಿದೆ. ಇದು ಯಾವುದೇ ಸೈಫರ್‌ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಅಗತ್ಯವಿಲ್ಲ ಮತ್ತು ಬಹು ಪ್ರೋಟೋಕಾಲ್‌ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ.

ಉಪಯುಕ್ತತೆಯು ಕನಿಷ್ಟ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಯಂತ್ರದಲ್ಲಿ ಸಂಪೂರ್ಣವಾಗಿ ಗಮನಿಸದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಲೇಖಕರು ಪ್ರಯತ್ನಿಸಿದರು. ಆಧುನಿಕ ಆಂಟಿವೈರಸ್ಗಳು ಮತ್ತು ಇತರ "ಭದ್ರತಾ ವ್ಯವಸ್ಥೆಗಳು" ಭಿನ್ನವಾಗಿ, ಇದು ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ನಿಧಾನಗೊಳಿಸಬಾರದು. ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಕುತಂತ್ರದ ಸಾಫ್ಟ್‌ವೇರ್ ಅಳವಡಿಕೆಯಿಂದಾಗಿ ಅವರು ಟ್ರಾಫಿಕ್ ಮತ್ತು ಮೆಮೊರಿ ಬಳಕೆ ಎರಡನ್ನೂ ಕಡಿಮೆ ಮಾಡಲು ನಿರ್ವಹಿಸುತ್ತಿದ್ದರು. ಹೊಸ ಸಂಪರ್ಕದಲ್ಲಿ ಪ್ರತ್ಯೇಕ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಪ್ರಾರಂಭಿಸಿದರೆ, ಸಂಭಾವ್ಯ ದಾಳಿಕೋರರು ಗಣಕದಲ್ಲಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಹೊರಹಾಕಲು ಬಹು ಸಂಪರ್ಕಗಳನ್ನು ತೆರೆಯುವ ಮೂಲಕ DDoS ದಾಳಿಯನ್ನು ಪ್ರಾರಂಭಿಸಬಹುದು. ಪ್ರತಿ ಸಂಪರ್ಕಕ್ಕೆ ಒಂದು ಥ್ರೆಡ್ ಉತ್ತಮ ಆಯ್ಕೆಯಾಗಿಲ್ಲ, ಏಕೆಂದರೆ ಕರ್ನಲ್ ಥ್ರೆಡ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಸಂಪನ್ಮೂಲಗಳನ್ನು ವ್ಯರ್ಥ ಮಾಡುತ್ತದೆ.

ಅದಕ್ಕಾಗಿಯೇ ಕ್ರಿಸ್ ವೆಲ್ಲೋನ್ಸ್ ಎಂಡ್ಲೆಶ್‌ಗಾಗಿ ಅತ್ಯಂತ ಹಗುರವಾದ ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿಕೊಂಡರು: ಏಕ-ಥ್ರೆಡ್ ಸರ್ವರ್ poll(2), ಬಲೆಯಲ್ಲಿರುವ ಕ್ಲೈಂಟ್‌ಗಳು ವಾಸ್ತವಿಕವಾಗಿ ಯಾವುದೇ ಹೆಚ್ಚುವರಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುವುದಿಲ್ಲ, ಕರ್ನಲ್‌ನಲ್ಲಿರುವ ಸಾಕೆಟ್ ಆಬ್ಜೆಕ್ಟ್ ಮತ್ತು ಎಂಡ್‌ಲೆಶ್‌ನಲ್ಲಿ ಟ್ರ್ಯಾಕಿಂಗ್ ಮಾಡಲು ಮತ್ತೊಂದು 78 ಬೈಟ್‌ಗಳನ್ನು ಲೆಕ್ಕಿಸುವುದಿಲ್ಲ. ಪ್ರತಿ ಕ್ಲೈಂಟ್‌ಗೆ ಸ್ವೀಕರಿಸಲು ಮತ್ತು ಕಳುಹಿಸಲು ಬಫರ್‌ಗಳನ್ನು ನಿಯೋಜಿಸುವುದನ್ನು ತಪ್ಪಿಸಲು, Endlessh ನೇರ ಪ್ರವೇಶ ಸಾಕೆಟ್ ಅನ್ನು ತೆರೆಯುತ್ತದೆ ಮತ್ತು TCP ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ನೇರವಾಗಿ ಭಾಷಾಂತರಿಸುತ್ತದೆ, ಬಹುತೇಕ ಸಂಪೂರ್ಣ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ TCP/IP ಸ್ಟಾಕ್ ಅನ್ನು ಬೈಪಾಸ್ ಮಾಡುತ್ತದೆ. ಒಳಬರುವ ಬಫರ್ ಅಗತ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ನಾವು ಒಳಬರುವ ಡೇಟಾದಲ್ಲಿ ಆಸಕ್ತಿ ಹೊಂದಿಲ್ಲ.

ಲೇಖಕರು ತಮ್ಮ ಕಾರ್ಯಕ್ರಮದ ಸಮಯದಲ್ಲಿ ಹೇಳುತ್ತಾರೆ ತಿಳಿದಿರಲಿಲ್ಲ ಪೈಥಾನ್‌ನ ಅಸಿಸಿಯೊ ಮತ್ತು ಇತರ ಟಾರ್ಪಿಟ್‌ಗಳ ಅಸ್ತಿತ್ವದ ಬಗ್ಗೆ. ಅವರು asycio ಬಗ್ಗೆ ತಿಳಿದಿದ್ದರೆ, ಅವರು ಪೈಥಾನ್‌ನಲ್ಲಿ ಕೇವಲ 18 ಸಾಲುಗಳಲ್ಲಿ ತಮ್ಮ ಉಪಯುಕ್ತತೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು:

import asyncio
import random

async def handler(_reader, writer):
try:
while True:
await asyncio.sleep(10)
writer.write(b'%xrn' % random.randint(0, 2**32))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 2222)
async with server:
await server.serve_forever()

asyncio.run(main())

ಅಸಿನ್ಸಿಯೊ ಟಾರ್ಪಿಟ್ಗಳನ್ನು ಬರೆಯಲು ಸೂಕ್ತವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಈ ಹುಕ್ ಫೈರ್‌ಫಾಕ್ಸ್, ಕ್ರೋಮ್ ಅಥವಾ ನಿಮ್ಮ HTTP ಸರ್ವರ್‌ಗೆ ಸಂಪರ್ಕಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ ಯಾವುದೇ ಕ್ಲೈಂಟ್ ಅನ್ನು ಹಲವು ಗಂಟೆಗಳ ಕಾಲ ಫ್ರೀಜ್ ಮಾಡುತ್ತದೆ:

import asyncio
import random

async def handler(_reader, writer):
writer.write(b'HTTP/1.1 200 OKrn')
try:
while True:
await asyncio.sleep(5)
header = random.randint(0, 2**32)
value = random.randint(0, 2**32)
writer.write(b'X-%x: %xrn' % (header, value))
await writer.drain()
except ConnectionResetError:
pass

async def main():
server = await asyncio.start_server(handler, '0.0.0.0', 8080)
async with server:
await server.serve_forever()

asyncio.run(main())

ಆನ್‌ಲೈನ್ ಬೆದರಿಸುವವರನ್ನು ಶಿಕ್ಷಿಸಲು ಟಾರ್ಪಿಟ್ ಉತ್ತಮ ಸಾಧನವಾಗಿದೆ. ನಿಜ, ಇದಕ್ಕೆ ವಿರುದ್ಧವಾಗಿ, ನಿರ್ದಿಷ್ಟ ಸರ್ವರ್ನ ಅಸಾಮಾನ್ಯ ನಡವಳಿಕೆಗೆ ಅವರ ಗಮನವನ್ನು ಸೆಳೆಯುವ ಅಪಾಯವಿದೆ. ಯಾರೋ ಪ್ರತೀಕಾರದ ಬಗ್ಗೆ ಯೋಚಿಸಬಹುದು ಮತ್ತು ನಿಮ್ಮ IP ಮೇಲೆ ಉದ್ದೇಶಿತ DDoS ದಾಳಿ. ಆದಾಗ್ಯೂ, ಇಲ್ಲಿಯವರೆಗೆ ಅಂತಹ ಯಾವುದೇ ಪ್ರಕರಣಗಳಿಲ್ಲ, ಮತ್ತು ಟಾರ್ಪಿಟ್ಗಳು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ.

ಒಳಬರುವ SSH ಸಂಪರ್ಕಗಳಿಗಾಗಿ ಟ್ರ್ಯಾಪ್ (ಟಾರ್ಪಿಟ್).

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ