ನಾನು ಹೇಗೆ ಒಂದು ಗುಪ್ತ ಇಂಜೆಕ್ಷನ್ ಅನ್ನು ಪತ್ತೆಹಚ್ಚಿದೆ ಮತ್ತು ಪರಿಸರವನ್ನು ಬಲಪಡಿಸಿದೆ
ನೀವು ಮಾಲ್ವೇರ್ ಸ್ಕ್ಯಾನ್ ಮಾಡಿದ್ದೀರಿ. ನೀವು ಕೋರ್ ಫೈಲ್ಗಳನ್ನು ಬದಲಾಯಿಸಿದ್ದೀರಿ. ನೀವು ಪ್ಲಗಿನ್ಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿದ್ದೀರಿ ಮತ್ತು ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ಬದಲಾಯಿಸಿದ್ದೀರಿ. ಸೈಟ್ ಸ್ವಚ್ಛವಾಗಿ ಕಾಣುತ್ತದೆ.
ಎರಡು ದಿನಗಳ ನಂತರ, ಕ್ಲೈಂಟ್ ಕರೆ ಮಾಡುತ್ತಾರೆ. ಹೊಸ ಅಡ್ಮಿನ್ ಖಾತೆಗಳು ಮತ್ತೆ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತವೆ. ಸಂದರ್ಶಕರು ದುಷ್ಟ ಸೈಟ್ಗಳಿಗೆ (malicious sites) ಮರುನಿರ್ದೇಶಿಸಲ್ಪಡುತ್ತಿದ್ದಾರೆ.
ಇದು ಪರ್ಸಿಸ್ಟೆನ್ಸ್ (persistence) ನಂತಹ ಒಂದು ದುಸ್ವಪ್ನ.
ಸಾಮಾನ್ಯ ಸೆಕ್ಯೂರಿಟಿ ಪ್ಲಗಿನ್ಗಳು ಹೆಚ್ಚಾಗಿ ವಿಫಲವಾಗುತ್ತವೆ. ಸಂಕೀರ್ಣ ದಾಳಿಕೋರರು ಕೇವಲ ಒಂದು ಪೇಲೋಡ್ ಅನ್ನು ಮಾತ್ರ ಬಿಡುವುದಿಲ್ಲ. ಅವರು ಕಾನೂನುಬದ್ಧ ಫೈಲ್ಗಳ ಒಳಗೆ ಅಡಗಿರುವ ನೆಸ್ಟೆಡ್ ಬ್ಯಾಕ್ಡೋರ್ಗಳನ್ನು (nested backdoors) ನಿರ್ಮಿಸುತ್ತಾರೆ.
ನಾನು ಇತ್ತೀಚೆಗೆ ಮೂರು ಕ್ಲೀನಪ್ ಪ್ರಯತ್ನಗಳು ವಿಫಲವಾದ ಪ್ರಕರಣವೊಂದನ್ನು ನಿರ್ವಹಿಸಿದೆ. ಲಕ್ಷಣಗಳು ನಿರ್ದಿಷ್ಟವಾಗಿದ್ದವು:
• ಘೋಸ್ಟ್ ಅಡ್ಮಿನ್ಗಳು (Ghost Admins): ಪ್ರತಿ 48 ಗಂಟೆ마다 ಯಾದೃಚ್ಛಿಕ ಹೆಸರುಗಳೊಂದಿಗೆ ಹೊಸ ಖಾತೆಗಳು ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತಿದ್ದವು. • ಕಂಡೀಷನಲ್ ರಿಡೈರೆಕ್ಟ್ಗಳು (Conditional Redirects): ಸರ್ಚ್ ಇಂಜಿನ್ಗಳಿಂದ ಬರುವ ಹೊಸ ಸಂದರ್ಶಕರು ಮಾತ್ರ ದುಷ್ಟ ಸೈಟ್ ಅನ್ನು ನೋಡುತ್ತಿದ್ದರು. ಡೆವಲಪರ್ಗಳಿಗೆ ಏನೂ ಕಾಣಿಸುತ್ತಿರಲಿಲ್ಲ.
ತಂಡವು ಈಗಾಗಲೇ ವರ್ಡ್ಪ್ರೆಸ್ ಕೋರ್ ಅನ್ನು ಓವರ್ರೈಟ್ ಮಾಡಿತ್ತು ಮತ್ತು ಪ್ಲಗಿನ್ಗಳನ್ನು ಅಪ್ಡೇಟ್ ಮಾಡಿತ್ತು. ಸ್ಕ್ಯಾನರ್ಗಳು ಏನನ್ನೂ ತೋರಿಸಲಿಲ್ಲ. ಮಾಲ್ವೇರ್ ಹೈಡ್ರಾ (hydra) ನಂತೆ ಮತ್ತೆ ಮತ್ತೆ ಹುಟ್ಟಿಕೊಳ್ಳುತ್ತಿತ್ತು.
ದಾಳಿಕೋರರು ಡೇಟಾಬೇಸ್ ಅಥವಾ ಕ್ರೋನ್ ಜಾಬ್ನಲ್ಲಿ (cron job) ಪರ್ಸಿಸ್ಟೆನ್ಸ್ ಮೆಕ್ಯಾನಿಸಂ ಅನ್ನು ಹೊಂದಿದ್ದರು. ಕೋಡ್ ಕಸ್ಟಮ್ ಆಗಿದ್ದರಿಂದ ಆಟೋಮೇಟೆಡ್ ಸ್ಕ್ಯಾನರ್ಗಳು ಅದನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.
ಸತ್ಯವನ್ನು ಕಂಡುಹಿಡಿಯಲು ನಾನು ಕಮಾಂಡ್ ಲೈನ್ ಬಳಸಿದೆ.
ಮೊದಲು, ನಾನು ಚೆಕ್ಸಮ್ಗಳನ್ನು ಬಳಸಿ ಕೋರ್ ಫೈಲ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿದೆ:
wp core verify-checksums
ಕೋರ್ ಸ್ವಚ್ಛವಾಗಿತ್ತು. ಬ್ಯಾಕ್ಡೋರ್ wp-content ಅಥವಾ ಡೇಟಾಬೇಸ್ನಲ್ಲಿ ಇತ್ತು.
ನಾನು ಕಳೆದ 7 ದಿನಗಳಲ್ಲಿ ಮಾರ್ಪಡಿಸಿದ ಫೈಲ್ಗಳಿಗಾಗಿ ಹುಡುಕಿದೆ:
find . -type f -mtime -7 -name "*.php"
ನಂತರ, eval() ಅಥವಾ base64_decode() ನಂತಹ ಅನುಮಾನಾಸ್ಪದ ಫಂಕ್ಷನ್ಗಳಿಗಾಗಿ ಹುಡುಕಿದೆ:
grep -rnw './wp-content/' -e 'eval(' -e 'base64_decode('
ನಾನು ಹಳೆಯ ಪ್ರೀಮಿಯಂ ಪ್ಲಗಿನ್ನಲ್ಲಿ ಅಡಗಿರುವ ಫೈಲ್ ಅನ್ನು ಪತ್ತೆಹಚ್ಚಿದೆ. ಆದರೆ ಪ್ಲಗಿನ್ ಅನ್ನು ಡಿಲೀಟ್ ಮಾಡುವುದು ಸೋಂಕನ್ನು ತಡೆಯಲಿಲ್ಲ.
ದಾಳಿಕೋರರು wp_options ಟೇಬಲ್ನಲ್ಲಿ cron ಆಯ್ಕೆಯ ಅಡಿಯಲ್ಲಿ ಒಂದು ಟ್ರಿಗ್ಗರ್ ಅನ್ನು ಬಿಟ್ಟಿದ್ದರು. ಪ್ರತಿ ಬಾರಿ ವರ್ಡ್ಪ್ರೆಸ್ ಕ್ರೋನ್ (WordPress cron) ರನ್ ಆದಾಗ, ಅದು ಹೊಸ ಪೇಲೋಡ್ ಅನ್ನು ಪಡೆದುಕೊಳ್ಳುತ್ತಿತ್ತು. ಕೋರ್ ಫೈಲ್ಗಳನ್ನು ಕ್ಲೀನ್ ಮಾಡಿದ ಕೆಲವೇ ನಿಮಿಷಗಳಲ್ಲಿ ಅದು ಮತ್ತೆ ಸೋಂಕನ್ನು ಹರಡುತ್ತಿತ್ತು.
ಇದನ್ನು ಸರಿಪಡಿಸಲು, ನೀವು ಕಟ್ಟುನಿಟ್ಟಾದ ಕ್ರಮವನ್ನು ಅನುಸರಿಸಬೇಕು:
- ಡೇಟಾಬೇಸ್ ಸ್ಕ್ರಬ್ಬಿಂಗ್ (Database Scrubbing)
- ದುಷ್ಟ autoload ಡೇಟಾಕ್ಕಾಗಿ
wp_optionsಅನ್ನು ಹುಡುಕಿ. - ಅಜ್ಞಾತ URLಗಳಿಗಾಗಿ
wp_cronಅನ್ನು ಪರಿಶೀಲಿಸಿ. - ಅನಧಿಕೃತ ಬಳಕೆದಾರರನ್ನು ನೇರವಾಗಿ ಡಿಲೀಟ್ ಮಾಡಲು SQL ಬಳಸಿ.
- ಫೈಲ್ ಸಿಸ್ಟಮ್ ಪರ್ಜ್ (File System Purge)
wp-config.phpಮತ್ತುwp-content/uploads/ಹೊರತುಪಡಿಸಿ ಉಳಿದೆಲ್ಲವನ್ನೂ ಡಿಲೀಟ್ ಮಾಡಿ.- ಅಧಿಕೃತ ರೆಪೊಸಿಟರಿಯಿಂದ (official repository) ಹೊಸ ಫೈಲ್ಗಳೊಂದಿಗೆ ಎಲ್ಲವನ್ನೂ ಬದಲಾಯಿಸಿ.
- ಅಪ್ಲೋಡ್ಸ್ ಫೋಲ್ಡರ್ನಲ್ಲಿರುವ ಯಾವುದೇ PHP ಫೈಲ್ಗಳನ್ನು ಡಿಲೀಟ್ ಮಾಡಿ.
- ಕ್ರೆಡೆನ್ಶಿಯಲ್ ರೊಟೇಶನ್ (Credential Rotation)
wp-config.phpನಲ್ಲಿನ ಎಲ್ಲಾ ಅಥೆಂಟಿಕೇಶನ್ ಸಾಲ್ಟ್ಗಳನ್ನು (authentication salts) ಮರುರೂಪಿಸಿ.- ಎಲ್ಲಾ ಡೇಟಾಬೇಸ್, SSH ಮತ್ತು ಹೋಸ್ಟಿಂಗ್ ಪಾಸ್ವರ್ಡ್ಗಳನ್ನು ರಿಸೆಟ್ ಮಾಡಿ.
ಪುನರಾವರ್ತನೆಯನ್ನು ತಡೆಯಲು ನಾನು ಮೂರು ಗಾರ್ಡ್ರೈಲ್ಗಳನ್ನು (guardrails) ಸಹ ಜಾರಿಗೆ ತಂದೆ:
• ಎಡ್ಜ್ ಪ್ರೊಟೆಕ್ಷನ್: ಸೂಕ್ಷ್ಮ ಡೈರೆಕ್ಟರಿಗಳಿಗೆ ಬರುವ ಅನುಮಾನಾಸ್ಪದ POST ವಿನಂತಿಗಳನ್ನು ತಡೆಯಲು ನಾನು Cloudflare WAF ಅನ್ನು ಬಳಸಿದೆ. • ಫೈಲ್ ಪರ್ಮಿಷನ್ಸ್: ನಾನು ಡೈರೆಕ್ಟರಿ ರಚನೆಯನ್ನು ಲಾಕ್ ಮಾಡಿದೆ. ಡೈರೆಕ್ಟರಿಗಳನ್ನು 755 ಮತ್ತು ಫೈಲ್ಗಳನ್ನು 644 ಎಂದು ಬದಲಾಯಿಸಿದೆ. ನಾನು wp-config.php ಅನ್ನು read-only ಆಗಿ ಹೊಂದಿಸಿದೆ. • ಎಡಿಟಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವುದು: ನಾನು wp-config.php ಗೆ DISALLOW_FILE_EDIT ಮತ್ತು DISALLOW_FILE_MODS ಅನ್ನು ಸೇರಿಸಿದೆ. ಇದು ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಮೂಲಕ ಯಾರೂ ಕೋಡ್ ಬದಲಾಯಿಸದಂತೆ ತಡೆಯುತ್ತದೆ.
ಪ್ಲಗ್ಇನ್ನಿಂದ ಬರುವ ಹಸಿರು ಚೆಕ್ಮಾರ್ಕ್ ಅನ್ನು ನಂಬಬೇಡಿ. ಭದ್ರತಾ ಉಲ್ಲಂಘನೆ (breach) ಸಂಭವಿಸಿದೆ ಎಂದು ಭಾವಿಸಿ. ನಿಮ್ಮ ಸೈಟ್ ಅನ್ನು ಒಳಗಿನಿಂದ ಹೊರಭಾಗದವರೆಗೆ ರಕ್ಷಿಸಿ.
ಮೂಲ: https://dev.to/jahidshah/how-i-tracked-a-stealthy-injection-and-hardened-the-environment-4clm