แƒ‘แƒ˜แƒ แƒ—แƒ•แƒฃแƒšแƒ˜ แƒญแƒฃแƒ แƒ•แƒ˜ ICMP-แƒ–แƒ”

แƒ‘แƒ˜แƒ แƒ—แƒ•แƒฃแƒšแƒ˜ แƒญแƒฃแƒ แƒ•แƒ˜ ICMP-แƒ–แƒ”

TL; DR: แƒ›แƒ” แƒ•แƒฌแƒ”แƒ  แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒก ICMP แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒ›แƒแƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ›แƒแƒจแƒ˜แƒœแƒแƒช แƒ™แƒ˜, แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ SSH แƒแƒ•แƒแƒ แƒ˜แƒฃแƒšแƒ˜แƒ. แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒแƒฃแƒ—แƒ›แƒ”แƒœแƒšแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒ“แƒ˜ แƒแƒ แƒ˜แƒก แƒ’แƒ˜แƒ—แƒฃแƒ‘แƒ˜.

แƒกแƒ˜แƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ˜แƒ—! แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ˜ C แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒขแƒ”แƒ‘แƒ˜ แƒ แƒ˜แƒกแƒ™แƒแƒ•แƒก แƒกแƒ˜แƒกแƒฎแƒšแƒ˜แƒก แƒชแƒ แƒ”แƒ›แƒšแƒ”แƒ‘แƒ˜แƒ— แƒแƒ“แƒ˜แƒ“แƒ”แƒ‘แƒแƒก! แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒแƒšแƒแƒ’แƒ˜แƒแƒจแƒ˜แƒช แƒ™แƒ˜ แƒ•แƒชแƒ“แƒ”แƒ‘แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ™แƒ แƒ˜แƒขแƒ˜แƒ™แƒ แƒ›แƒ˜แƒกแƒแƒกแƒแƒšแƒ›แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. แƒžแƒแƒกแƒขแƒ˜ แƒ’แƒแƒœแƒ™แƒฃแƒ—แƒ•แƒœแƒ˜แƒšแƒ˜แƒ แƒ›แƒแƒ—แƒ—แƒ•แƒ˜แƒก, แƒ•แƒ˜แƒกแƒแƒช แƒแƒฅแƒ•แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒฃแƒฎแƒ”แƒจแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ C แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ“แƒ แƒกแƒฃแƒ แƒก แƒจแƒ”แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒแƒก Linux-แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ—.

แƒฉแƒ”แƒ›แƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜แƒก แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ”แƒ‘แƒจแƒ˜ แƒ›แƒฃแƒฎแƒšแƒ˜ แƒœแƒแƒฎแƒกแƒ”แƒœแƒ”แƒ‘แƒ˜ SoftEther VPN, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒ˜แƒ‘แƒแƒซแƒแƒก แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ โ€žแƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜โ€œ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜, แƒ™แƒ”แƒ แƒซแƒแƒ“, HTTPS, ICMP แƒ“แƒ แƒ—แƒฃแƒœแƒ“แƒแƒช DNS. แƒฌแƒแƒ แƒ›แƒแƒ›แƒ˜แƒ“แƒ’แƒ”แƒœแƒ˜แƒ แƒ›แƒแƒ—แƒ’แƒแƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ•แƒ˜แƒชแƒœแƒแƒ‘ HTTP(S) แƒ“แƒ แƒ›แƒแƒ›แƒ˜แƒฌแƒ˜แƒ แƒ’แƒ•แƒ˜แƒ แƒแƒ‘แƒ˜แƒก แƒกแƒฌแƒแƒ•แƒšแƒ ICMP แƒ“แƒ DNS-แƒ–แƒ”.

แƒ‘แƒ˜แƒ แƒ—แƒ•แƒฃแƒšแƒ˜ แƒญแƒฃแƒ แƒ•แƒ˜ ICMP-แƒ–แƒ”

แƒ“แƒ˜แƒแƒฎ, 2020 แƒฌแƒ”แƒšแƒก แƒ’แƒแƒ•แƒ˜แƒ’แƒ”, แƒ แƒแƒ› แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ—แƒ•แƒ˜แƒ—แƒœแƒ”แƒ‘แƒฃแƒ แƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒฉแƒแƒกแƒ›แƒ ICMP แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒจแƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒฏแƒแƒ‘แƒก แƒ’แƒ•แƒ˜แƒแƒœ แƒ•แƒ˜แƒ“แƒ แƒ” แƒแƒ แƒแƒกแƒ“แƒ แƒแƒก! แƒ“แƒ แƒ แƒแƒ“แƒ’แƒแƒœแƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ แƒแƒฆแƒแƒชแƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ, แƒ›แƒแƒจแƒ˜แƒœ แƒ”แƒก แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ™แƒ”แƒ—แƒ“แƒ”แƒก. แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒช แƒฉแƒ”แƒ›แƒก แƒงแƒแƒ•แƒ”แƒšแƒ“แƒฆแƒ˜แƒฃแƒ  แƒชแƒฎแƒแƒ•แƒ แƒ”แƒ‘แƒแƒจแƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒก, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก SSH-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ ICMP แƒญแƒฃแƒ แƒ•แƒ˜แƒก แƒ˜แƒ“แƒ”แƒ แƒ’แƒแƒ›แƒ˜แƒฉแƒœแƒ“แƒ. แƒ“แƒ แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ”แƒฅแƒ›แƒœแƒ แƒกแƒ แƒฃแƒšแƒ˜ bullshield แƒ‘แƒ˜แƒœแƒ’แƒ, แƒ’แƒแƒ“แƒแƒ•แƒฌแƒงแƒ•แƒ˜แƒขแƒ” แƒ“แƒแƒ›แƒ”แƒฌแƒ”แƒ แƒ แƒ˜แƒก Linux แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ˜แƒ› แƒ”แƒœแƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฃแƒฎแƒ”แƒจแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ แƒ›แƒแƒฅแƒ•แƒก. แƒแƒกแƒ”แƒ—แƒ˜ แƒญแƒฃแƒ แƒ•แƒ˜ แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒฎแƒ˜แƒšแƒฃแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒจแƒ˜, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒจแƒ˜ แƒ“แƒ แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒคแƒแƒ˜แƒšแƒฃแƒ  แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜, แƒ•แƒ”แƒ แƒแƒคแƒ”แƒ แƒก แƒœแƒแƒฎแƒแƒ•แƒ— แƒกแƒแƒ”แƒญแƒ•แƒแƒก แƒ›แƒแƒกแƒแƒกแƒ›แƒ”แƒœ แƒžแƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒแƒจแƒ˜. แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒกแƒแƒ–แƒ แƒ˜แƒกแƒ˜แƒ—, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒ แƒฃแƒšแƒคแƒแƒกแƒแƒ•แƒแƒœแƒ˜ rootkit, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ•แƒ˜แƒ›แƒ”แƒ“แƒแƒ•แƒœแƒ”แƒ‘, แƒ แƒแƒ› แƒ’แƒแƒ•แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘ แƒ“แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘, แƒ แƒแƒ’แƒแƒ แƒช แƒ‘แƒแƒšแƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒฆแƒแƒšแƒ˜แƒ SSH-แƒ˜แƒ— แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒจแƒ”แƒกแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒแƒ“. echo i > /proc/sysrq-triggerแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒแƒฆแƒ“แƒ’แƒ”แƒœแƒ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ แƒ”แƒ“แƒแƒฅแƒขแƒแƒ แƒก, แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“ แƒฃแƒœแƒแƒ แƒ”แƒ‘แƒก Python-แƒจแƒ˜ แƒ“แƒ C-แƒจแƒ˜, Google-แƒจแƒ˜ แƒ“แƒ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ“แƒแƒ“แƒ”แƒ‘แƒแƒช แƒแƒ  แƒ’แƒ”แƒ–แƒแƒ แƒ”แƒ‘แƒแƒ—, แƒ—แƒฃ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ’แƒแƒคแƒฃแƒญแƒ“แƒ (แƒกแƒฃแƒ แƒ•แƒ˜แƒšแƒ˜แƒกแƒแƒ›แƒ”แƒ‘แƒ  - แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ VirtualBox/KVM/แƒ.แƒจ.) แƒ“แƒ แƒฌแƒแƒ•แƒ˜แƒ“แƒ”แƒ—!

แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ”

แƒ›แƒ”แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒแƒ“แƒ, แƒ แƒแƒ› แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ›แƒ˜แƒฌแƒ”แƒ•แƒ“แƒ 80 แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒแƒœแƒ˜ แƒกแƒชแƒ”แƒœแƒแƒ แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒงแƒ•แƒœแƒ”แƒœ แƒ™แƒ”แƒ—แƒ˜แƒšแƒ˜ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ›แƒแƒช แƒ”แƒก แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒก แƒฉแƒ”แƒ›แƒ—แƒ•แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒกแƒแƒ›แƒฃแƒจแƒแƒ. แƒ™แƒแƒ“แƒ˜ แƒ›แƒแƒฃแƒšแƒแƒ“แƒœแƒ”แƒšแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฏแƒ“แƒ”แƒ‘แƒ 10 แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœ แƒฎแƒแƒ–แƒจแƒ˜:

import sys
from scapy.all import sr1, IP, ICMP

if len(sys.argv) < 3:
    print('Usage: {} IP "command"'.format(sys.argv[0]))
    exit(0)

p = sr1(IP(dst=sys.argv[1])/ICMP()/"run:{}".format(sys.argv[2]))
if p:
    p.show()

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒ˜แƒฆแƒ”แƒ‘แƒก แƒแƒ  แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒก, แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒก แƒ“แƒ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒแƒก. แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒ›แƒ“แƒ” แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒแƒก แƒฌแƒ˜แƒœ แƒฃแƒซแƒฆแƒ•แƒ˜แƒก แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ run:, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ˜แƒ—แƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒฅแƒแƒœแƒ” แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ แƒ˜แƒชแƒฎแƒแƒ“.

แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒžแƒ แƒ˜แƒ•แƒ˜แƒšแƒ”แƒ’แƒ˜แƒ”แƒ‘แƒก แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒฃแƒžแƒ”แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜. แƒแƒ  แƒ“แƒแƒ’แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒ— แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒœแƒ”แƒ‘แƒแƒ แƒ—แƒ•แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒชแƒ”แƒ›แƒ แƒ“แƒ แƒ—แƒแƒ•แƒแƒ“ scapy-แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ. Debian-แƒก แƒแƒฅแƒ•แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒ”.แƒฌ python3-scapy. แƒแƒฎแƒšแƒ แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒแƒ— แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜.

แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒขแƒแƒœแƒ
morq@laptop:~/icmpshell$ sudo ./send.py 45.11.26.232 "Hello, world!"
Begin emission:
.Finished sending 1 packets.
*
Received 2 packets, got 1 answers, remaining 0 packets
###[ IP ]###
version = 4
ihl = 5
tos = 0x0
len = 45
id = 17218
flags =
frag = 0
ttl = 58
proto = icmp
chksum = 0x3403
src = 45.11.26.232
dst = 192.168.0.240
options
###[ ICMP ]###
type = echo-reply
code = 0
chksum = 0xde03
id = 0x0
seq = 0x0
###[ Raw ]###
load = 'run:Hello, world!

แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ แƒกแƒœแƒ˜แƒคแƒ”แƒ แƒจแƒ˜
morq@laptop:~/icmpshell$ sudo tshark -i wlp1s0 -O icmp -f "icmp and host 45.11.26.232"
Running as user "root" and group "root". This could be dangerous.
Capturing on 'wlp1s0'
Frame 1: 59 bytes on wire (472 bits), 59 bytes captured (472 bits) on interface wlp1s0, id 0
Internet Protocol Version 4, Src: 192.168.0.240, Dst: 45.11.26.232
Internet Control Message Protocol
Type: 8 (Echo (ping) request)
Code: 0
Checksum: 0xd603 [correct] [Checksum Status: Good] Identifier (BE): 0 (0x0000)
Identifier (LE): 0 (0x0000)
Sequence number (BE): 0 (0x0000)
Sequence number (LE): 0 (0x0000)
Data (17 bytes)

0000 72 75 6e 3a 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 run:Hello, world
0010 21 !
Data: 72756e3a48656c6c6f2c20776f726c6421
[Length: 17]

Frame 2: 59 bytes on wire (472 bits), 59 bytes captured (472 bits) on interface wlp1s0, id 0
Internet Protocol Version 4, Src: 45.11.26.232, Dst: 192.168.0.240
Internet Control Message Protocol
Type: 0 (Echo (ping) reply)
Code: 0
Checksum: 0xde03 [correct] [Checksum Status: Good] Identifier (BE): 0 (0x0000)
Identifier (LE): 0 (0x0000)
Sequence number (BE): 0 (0x0000)
Sequence number (LE): 0 (0x0000)
[Request frame: 1] [Response time: 19.094 ms] Data (17 bytes)

0000 72 75 6e 3a 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 run:Hello, world
0010 21 !
Data: 72756e3a48656c6c6f2c20776f726c6421
[Length: 17]

^C2 packets captured

แƒกแƒแƒžแƒแƒกแƒฃแƒฎแƒ แƒžแƒแƒ™แƒ”แƒขแƒจแƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ แƒแƒ  แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ.

แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ˜

Debian แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒจแƒ˜ แƒฉแƒแƒกแƒแƒ แƒ—แƒแƒ•แƒแƒ“ แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› make ะธ linux-headers-amd64, แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— แƒ›แƒแƒ•แƒ. แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒกแƒ แƒฃแƒš แƒ™แƒแƒ“แƒก แƒแƒ  แƒ›แƒแƒ’แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒ—; แƒ›แƒ˜แƒกแƒ˜ แƒ™แƒšแƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— Github-แƒ–แƒ”.

แƒฐแƒฃแƒ™แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒแƒ แƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒก แƒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒœแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ’แƒแƒœแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ rmmod แƒ˜แƒก แƒแƒ  แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก; แƒ›แƒแƒ“แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒกแƒแƒก.

#include <linux/module.h>
#include <linux/netfilter_ipv4.h>

static struct nf_hook_ops nfho;

static int __init startup(void)
{
  nfho.hook = icmp_cmd_executor;
  nfho.hooknum = NF_INET_PRE_ROUTING;
  nfho.pf = PF_INET;
  nfho.priority = NF_IP_PRI_FIRST;
  nf_register_net_hook(&init_net, &nfho);
  return 0;
}

static void __exit cleanup(void)
{
  nf_unregister_net_hook(&init_net, &nfho);
}

MODULE_LICENSE("GPL");
module_init(startup);
module_exit(cleanup);

แฒ แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒแƒฅ:

  1. แƒแƒ แƒ˜ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒšแƒ˜แƒ แƒ—แƒแƒ•แƒแƒ“ แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒกแƒ แƒ“แƒ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒžแƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.
  2. แƒงแƒ•แƒ”แƒšแƒ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ แƒ’แƒแƒ“แƒ˜แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒจแƒ˜, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒ— แƒ™แƒแƒ™แƒ•แƒ”แƒ‘แƒ˜ แƒ›แƒแƒกแƒจแƒ˜. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒแƒชแƒฎแƒแƒ“แƒแƒ— แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒจแƒ˜แƒช แƒ“แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ™แƒแƒ™แƒแƒšแƒ˜. แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ˜แƒก แƒแƒ แƒ˜แƒก, แƒ แƒแƒ› แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒแƒ— แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ แƒ™แƒแƒฃแƒญแƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—: nfho.hook = icmp_cmd_executor; แƒ—แƒแƒ•แƒแƒ“ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก แƒ›แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒ•แƒ”แƒฎแƒ”แƒ‘แƒ˜.
    แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ” แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ: NF_INET_PRE_ROUTING แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒจแƒ˜. แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ NF_INET_POST_ROUTING แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒกแƒ•แƒšแƒ˜แƒกแƒแƒก.
    แƒ›แƒ” แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ” แƒคแƒ˜แƒšแƒขแƒ แƒ˜ IPv4-แƒ–แƒ”: nfho.pf = PF_INET;.
    แƒ›แƒ” แƒฉแƒ”แƒ›แƒก แƒ™แƒแƒฃแƒญแƒก แƒฃแƒ›แƒแƒฆแƒšแƒ”แƒก แƒžแƒ แƒ˜แƒแƒ แƒ˜แƒขแƒ”แƒขแƒก แƒ•แƒแƒœแƒ˜แƒญแƒ”แƒ‘: nfho.priority = NF_IP_PRI_FIRST;
    แƒ“แƒ แƒ›แƒ” แƒ“แƒแƒ•แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ• แƒฐแƒฃแƒ™แƒก: nf_register_net_hook(&init_net, &nfho);
  3. แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒฎแƒกแƒœแƒ˜แƒก แƒ™แƒแƒ™แƒก.
  4. แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ แƒ›แƒ™แƒแƒคแƒ˜แƒแƒ“ แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜ แƒแƒ  แƒฃแƒฉแƒ˜แƒแƒ“แƒ”แƒก.
  5. แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ module_init() ะธ module_exit() แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— แƒกแƒฎแƒ•แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ แƒ“แƒ แƒจแƒ”แƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒžแƒแƒ•แƒ”แƒ‘แƒ

แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒขแƒ•แƒ˜แƒ แƒ—แƒ˜แƒก แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒ, แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ แƒ—แƒฃแƒšแƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ แƒแƒฆแƒ›แƒแƒฉแƒœแƒ“แƒ. แƒ‘แƒ˜แƒ แƒ—แƒ•แƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒแƒกแƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก; แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒฎแƒแƒšแƒแƒ“ แƒฃแƒคแƒ แƒ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒ“แƒแƒœแƒ˜แƒก แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ—แƒแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ.

#include <linux/ip.h>
#include <linux/icmp.h>

#define MAX_CMD_LEN 1976

char cmd_string[MAX_CMD_LEN];

struct work_struct my_work;

DECLARE_WORK(my_work, work_handler);

static unsigned int icmp_cmd_executor(void *priv, struct sk_buff *skb, const struct nf_hook_state *state)
{
  struct iphdr *iph;
  struct icmphdr *icmph;

  unsigned char *user_data;
  unsigned char *tail;
  unsigned char *i;
  int j = 0;

  iph = ip_hdr(skb);
  icmph = icmp_hdr(skb);

  if (iph->protocol != IPPROTO_ICMP) {
    return NF_ACCEPT;
  }
  if (icmph->type != ICMP_ECHO) {
    return NF_ACCEPT;
  }

  user_data = (unsigned char *)((unsigned char *)icmph + (sizeof(icmph)));
  tail = skb_tail_pointer(skb);

  j = 0;
  for (i = user_data; i != tail; ++i) {
    char c = *(char *)i;

    cmd_string[j] = c;

    j++;

    if (c == '')
      break;

    if (j == MAX_CMD_LEN) {
      cmd_string[j] = '';
      break;
    }

  }

  if (strncmp(cmd_string, "run:", 4) != 0) {
    return NF_ACCEPT;
  } else {
    for (j = 0; j <= sizeof(cmd_string)/sizeof(cmd_string[0])-4; j++) {
      cmd_string[j] = cmd_string[j+4];
      if (cmd_string[j] == '')
	break;
    }
  }

  schedule_work(&my_work);

  return NF_ACCEPT;
}

แฒ แƒ แƒฎแƒ“แƒ”แƒ‘แƒ:

  1. แƒ›แƒ” แƒ›แƒแƒ›แƒ˜แƒฌแƒ˜แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒกแƒ›แƒ, แƒแƒ›แƒฏแƒ”แƒ แƒแƒ“ IP แƒ“แƒ ICMP แƒกแƒแƒ—แƒแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒ˜แƒžแƒฃแƒšแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.
  2. แƒ›แƒ” แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ” แƒฎแƒแƒ–แƒ˜แƒก แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒ’แƒ แƒซแƒ”: #define MAX_CMD_LEN 1976. แƒ แƒแƒขแƒแƒ› แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ”แƒก? แƒ˜แƒ›แƒ˜แƒขแƒแƒ› แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜ แƒฉแƒ˜แƒ•แƒ˜แƒก! แƒ›แƒแƒ— แƒฃแƒ™แƒ•แƒ” แƒจแƒ”แƒ›แƒแƒ›แƒ—แƒแƒ•แƒแƒ–แƒ”แƒก, แƒ แƒแƒ› แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ•แƒ˜แƒ’แƒ แƒกแƒขแƒ”แƒ™แƒ˜ แƒ“แƒ แƒ’แƒ แƒแƒ•แƒ, แƒแƒ“แƒ”แƒกแƒ›แƒ” แƒแƒ›แƒแƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘ แƒ“แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒแƒ แƒ™แƒแƒ“แƒ˜แƒช แƒ’แƒแƒ›แƒแƒ•แƒแƒกแƒฌแƒแƒ แƒ. แƒ›แƒ” แƒ›แƒแƒจแƒ˜แƒœแƒ•แƒ” แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ” แƒฎแƒแƒ–แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒแƒก: char cmd_string[MAX_CMD_LEN];. แƒ”แƒก แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒฎแƒ˜แƒšแƒฃแƒšแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ—; แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒ›แƒ”-9 แƒžแƒฃแƒœแƒฅแƒขแƒจแƒ˜ แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘.
  3. แƒแƒฎแƒšแƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒšแƒ˜แƒ–แƒแƒชแƒ˜แƒ (struct work_struct my_work;) แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ— แƒ˜แƒ’แƒ˜ แƒกแƒฎแƒ•แƒ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒกแƒ—แƒแƒœ (DECLARE_WORK(my_work, work_handler);). แƒ›แƒ” แƒแƒกแƒ”แƒ•แƒ” แƒ•แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒ”แƒ‘ แƒ˜แƒ›แƒแƒ–แƒ”, แƒ—แƒฃ แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก แƒ”แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ›แƒ”แƒชแƒฎแƒ แƒ” แƒแƒ‘แƒ–แƒแƒชแƒจแƒ˜.
  4. แƒแƒฎแƒšแƒ แƒ•แƒแƒชแƒฎแƒแƒ“แƒ”แƒ‘ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ hook. แƒขแƒ˜แƒžแƒ˜ แƒ“แƒ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒœแƒแƒ™แƒแƒ แƒœแƒแƒฎแƒ”แƒ•แƒ˜แƒ netfilter-แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ , แƒฉแƒ•แƒ”แƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ’แƒ•แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒก skb. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒคแƒฃแƒœแƒ“แƒแƒ›แƒ”แƒœแƒขแƒฃแƒ แƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒงแƒ•แƒ”แƒšแƒ แƒแƒ แƒกแƒ”แƒ‘แƒฃแƒš แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒแƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.
  5. แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก, แƒ“แƒแƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒแƒ แƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ แƒ“แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒชแƒ•แƒšแƒแƒ“แƒ˜, แƒ›แƒแƒ— แƒจแƒแƒ แƒ˜แƒก แƒแƒ แƒ˜ แƒ˜แƒขแƒ”แƒ แƒแƒขแƒแƒ แƒ˜.
      struct iphdr *iph;
      struct icmphdr *icmph;
    
      unsigned char *user_data;
      unsigned char *tail;
      unsigned char *i;
      int j = 0;
  6. แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒšแƒแƒ’แƒ˜แƒ™แƒ˜แƒ—. แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ›แƒแƒ“แƒฃแƒšแƒ˜ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก, ICMP Echo-แƒก แƒ’แƒแƒ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒแƒœแƒแƒšแƒ˜แƒ–แƒ”แƒ‘แƒ— แƒ‘แƒฃแƒคแƒ”แƒ แƒก แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ•แƒงแƒ แƒ˜แƒ— แƒงแƒ•แƒ”แƒšแƒ แƒแƒ แƒ-ICMP แƒ“แƒ แƒแƒ แƒ Echo แƒžแƒแƒ™แƒ”แƒขแƒก. แฒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒก NF_ACCEPT แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฉแƒแƒ›แƒแƒแƒ’แƒ“แƒแƒ— แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒ— NF_DROP.
      iph = ip_hdr(skb);
      icmph = icmp_hdr(skb);
    
      if (iph->protocol != IPPROTO_ICMP) {
        return NF_ACCEPT;
      }
      if (icmph->type != ICMP_ECHO) {
        return NF_ACCEPT;
      }

    แƒ›แƒ” แƒแƒ  แƒ’แƒแƒ›แƒแƒ›แƒ˜แƒชแƒ“แƒ˜แƒ แƒ แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ IP แƒกแƒแƒ—แƒแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”. แƒฉแƒ”แƒ›แƒ˜ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒชแƒแƒ“แƒœแƒ C-แƒ–แƒ” แƒ›แƒ”แƒฃแƒ‘แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ แƒแƒฆแƒแƒช แƒกแƒแƒจแƒ˜แƒœแƒ”แƒšแƒ”แƒ‘แƒ แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ. แƒ›แƒแƒฎแƒแƒ แƒฃแƒšแƒ˜ แƒ•แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ˜, แƒ—แƒฃ แƒแƒ›แƒแƒจแƒ˜ แƒ—แƒแƒ•แƒก แƒ“แƒแƒ›แƒแƒ™แƒแƒ•แƒ”แƒ‘แƒ—!

  7. แƒแƒฎแƒšแƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒแƒ แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒ› แƒขแƒ˜แƒžแƒ˜แƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒ. แƒฉแƒแƒจแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฏแƒ”แƒ  แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜. แƒ”แƒก แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒ”แƒ แƒ— แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒ˜แƒฆแƒแƒ— แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ ICMP แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒจแƒ˜ แƒ“แƒ แƒ’แƒแƒ“แƒแƒ˜แƒขแƒแƒœแƒแƒ— แƒ˜แƒ’แƒ˜ แƒแƒ› แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒ–แƒแƒ›แƒแƒ–แƒ”. แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒก icmph: user_data = (unsigned char *)((unsigned char *)icmph + (sizeof(icmph)));
    แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒ‘แƒแƒšแƒ แƒฃแƒœแƒ“แƒ แƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒแƒ“แƒ”แƒก แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒก skbแƒ›แƒแƒจแƒแƒกแƒแƒ“แƒแƒ›แƒ”, แƒ›แƒแƒก แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ‘แƒ˜แƒ แƒ—แƒ•แƒฃแƒšแƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒ“แƒแƒœ: tail = skb_tail_pointer(skb);.

    แƒ‘แƒ˜แƒ แƒ—แƒ•แƒฃแƒšแƒ˜ แƒญแƒฃแƒ แƒ•แƒ˜ ICMP-แƒ–แƒ”

    แƒกแƒฃแƒ แƒแƒ—แƒ˜ แƒ›แƒแƒ˜แƒžแƒแƒ แƒ”แƒก แƒแƒฅแƒ”แƒ“แƒแƒœ แƒ’แƒแƒ›แƒแƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ”,, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ”แƒขแƒ˜ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ‘แƒฃแƒคแƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

  8. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒ”แƒฅแƒœแƒ”แƒ‘แƒแƒ— แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜ แƒ“แƒแƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜แƒกแƒ แƒ“แƒ แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜แƒกแƒ™แƒ”แƒœ, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒ™แƒแƒžแƒ˜แƒ แƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒจแƒ˜ cmd_string, แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒ”แƒ— แƒ˜แƒ’แƒ˜ แƒžแƒ แƒ”แƒคแƒ˜แƒฅแƒกแƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก run: แƒ“แƒ, แƒแƒœ แƒ’แƒแƒ“แƒแƒแƒ’แƒ“แƒ”แƒ— แƒžแƒแƒ™แƒ”แƒขแƒ˜, แƒ—แƒฃ แƒ˜แƒก แƒแƒ™แƒšแƒ˜แƒ, แƒแƒœ แƒ’แƒแƒ“แƒแƒฌแƒ”แƒ แƒ”แƒ— แƒฎแƒแƒ–แƒ˜ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ, แƒแƒ› แƒžแƒ แƒ”แƒคแƒ˜แƒฅแƒกแƒ˜แƒก แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒ˜แƒ—.
  9. แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜, แƒแƒฎแƒšแƒ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒกแƒฎแƒ•แƒ แƒ“แƒแƒ›แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒšแƒ˜แƒก แƒ“แƒแƒ แƒ”แƒ™แƒ•แƒ: schedule_work(&my_work);. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜แƒก แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ แƒแƒกแƒ”แƒ— แƒ–แƒแƒ แƒ–แƒ”, แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ’แƒšแƒแƒ‘แƒแƒšแƒฃแƒ แƒ˜. schedule_work() แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒก แƒ’แƒแƒ•แƒšแƒ˜แƒš แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก แƒ“แƒแƒ•แƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ แƒ˜แƒ’แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒแƒšแƒฃแƒ  แƒ แƒ˜แƒ’แƒจแƒ˜ แƒ“แƒ แƒ“แƒแƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก, แƒ แƒแƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ›แƒแƒ’แƒชแƒ”แƒ›แƒ— แƒแƒ  แƒ“แƒแƒ”แƒšแƒแƒ“แƒแƒ— แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก. แƒ”แƒก แƒแƒฃแƒชแƒ˜แƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ™แƒแƒ™แƒแƒšแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒกแƒฌแƒ แƒแƒคแƒ˜. แƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒแƒ แƒฉแƒ”แƒ•แƒแƒœแƒ˜แƒ, แƒ แƒแƒ› แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒ˜แƒฌแƒงแƒแƒก แƒแƒœ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒ”แƒฅแƒœแƒ”แƒ‘แƒแƒ— แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒžแƒแƒœแƒ˜แƒ™แƒ. แƒ“แƒแƒ’แƒ•แƒ˜แƒแƒœแƒ”แƒ‘แƒ แƒกแƒ˜แƒ™แƒ•แƒ“แƒ˜แƒšแƒก แƒฐแƒ’แƒแƒ•แƒก!
  10. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ˜แƒฆแƒแƒ— แƒžแƒแƒ™แƒ”แƒขแƒ˜ แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒจแƒ˜

แƒ”แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ’แƒแƒกแƒแƒ’แƒ”แƒ‘แƒ˜แƒ. แƒ›แƒ˜แƒกแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒ›แƒ˜แƒ”แƒœแƒ˜แƒญแƒ DECLARE_WORK(), แƒขแƒ˜แƒžแƒ˜ แƒ“แƒ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ. แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒฎแƒแƒ–แƒก แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒชแƒ”แƒ›แƒ— แƒ›แƒแƒก แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ’แƒแƒ แƒกแƒ–แƒ”. แƒ“แƒแƒ”, แƒ›แƒแƒก แƒ’แƒแƒฃแƒ›แƒ™แƒšแƒแƒ•แƒ“แƒ”แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒก, แƒ‘แƒ˜แƒœแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒซแƒ˜แƒ”แƒ‘แƒแƒก แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒก.

static void work_handler(struct work_struct * work)
{
  static char *argv[] = {"/bin/sh", "-c", cmd_string, NULL};
  static char *envp[] = {"PATH=/bin:/sbin", NULL};

  call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
}

  1. แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒ˜แƒ•แƒ–แƒ” argv[]. แƒ›แƒ” แƒ•แƒ˜แƒ•แƒแƒ แƒแƒฃแƒ“แƒ”แƒ‘, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒ› แƒ˜แƒชแƒ˜แƒก, แƒ แƒแƒ› แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ› แƒ’แƒ–แƒ˜แƒ— แƒ“แƒ แƒแƒ แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒฃแƒฌแƒงแƒ•แƒ”แƒขแƒ˜ แƒฎแƒแƒ–แƒ˜ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒ”แƒ‘แƒ˜แƒ—.
  2. แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ. แƒ›แƒ” แƒฉแƒแƒ•แƒ“แƒ” แƒ›แƒฎแƒแƒšแƒแƒ“ PATH แƒ‘แƒ˜แƒšแƒ˜แƒ™แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒ—, แƒ˜แƒ› แƒ˜แƒ›แƒ”แƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒ /bin ั /usr/bin ะธ /sbin ั /usr/sbin. แƒกแƒฎแƒ•แƒ แƒ’แƒ–แƒ”แƒ‘แƒก แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜ แƒ˜แƒจแƒ•แƒ˜แƒแƒ—แƒแƒ“ แƒแƒฅแƒ•แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ.
  3. แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ, แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒแƒ—! แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ call_usermodehelper() แƒ˜แƒฆแƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒ•แƒšแƒแƒก. แƒ’แƒ–แƒ แƒ‘แƒ˜แƒœแƒแƒ แƒแƒ›แƒ“แƒ”, แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒ˜แƒ•แƒ˜, แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒ˜แƒ•แƒ˜. แƒแƒฅ แƒแƒกแƒ”แƒ•แƒ” แƒ•แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒก แƒ”แƒกแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ“แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ’แƒ–แƒ˜แƒก แƒชแƒแƒšแƒ™แƒ” แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒแƒ“ แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ—. แƒ‘แƒแƒšแƒ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก, แƒ“แƒแƒ•แƒ”แƒšแƒแƒ“แƒแƒ— แƒ—แƒฃ แƒแƒ แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก (UMH_WAIT_PROC), แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ (UMH_WAIT_EXEC) แƒแƒœ แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒแƒ  แƒ“แƒแƒ•แƒ”แƒšแƒแƒ“แƒแƒ— (UMH_NO_WAIT). แƒ™แƒ˜แƒ“แƒ”แƒ• แƒแƒ แƒ˜แƒก แƒ™แƒ˜แƒ“แƒ”แƒ• UMH_KILLABLE, แƒแƒ  แƒจแƒ”แƒ›แƒ˜แƒฎแƒ”แƒ“แƒแƒ•แƒก.

แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ

แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒแƒฌแƒงแƒแƒ‘แƒ แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒ™แƒ˜แƒแƒŸแƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒ“แƒแƒฃแƒ แƒ”แƒ™แƒ make แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒกแƒ—แƒแƒœ แƒ›แƒ˜แƒ‘แƒ›แƒฃแƒšแƒ˜ แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ  แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ (แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜ แƒแƒฅ: KERNELDIR:=/lib/modules/$(shell uname -r)/build), แƒ“แƒ แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒก แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒ แƒ’แƒแƒ“แƒแƒ”แƒชแƒ”แƒ›แƒ แƒชแƒ•แƒšแƒแƒ“แƒก M แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒจแƒ˜. icmpshell.ko แƒ“แƒ แƒกแƒฃแƒคแƒ—แƒ แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ”แƒ”แƒ‘แƒ˜ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ แƒแƒ› แƒฉแƒแƒ แƒฉแƒแƒก. IN obj-m แƒ›แƒ˜แƒฃแƒ—แƒ˜แƒ—แƒ”แƒ‘แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ“แƒแƒ˜แƒฅแƒชแƒ”แƒ•แƒ แƒ›แƒแƒ“แƒฃแƒšแƒแƒ“. แƒกแƒ˜แƒœแƒขแƒแƒฅแƒกแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ“แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก main.o ะฒ icmpshell.o (icmpshell-objs = main.o) แƒซแƒแƒšแƒ˜แƒแƒœ แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒแƒ“ แƒแƒ  แƒ›แƒ”แƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒกแƒ”แƒช แƒ˜แƒงแƒแƒก.

KERNELDIR:=/lib/modules/$(shell uname -r)/build

obj-m = icmpshell.o
icmpshell-objs = main.o

all: icmpshell.ko

icmpshell.ko: main.c
make -C $(KERNELDIR) M=$(PWD) modules

clean:
make -C $(KERNELDIR) M=$(PWD) clean

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ—: make. แฒฉแƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ: insmod icmpshell.ko. แƒ“แƒแƒกแƒ แƒฃแƒšแƒ“แƒ, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒแƒ›แƒแƒฌแƒ›แƒแƒ—: sudo ./send.py 45.11.26.232 "date > /tmp/test". แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— แƒคแƒแƒ˜แƒšแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒแƒžแƒแƒ แƒแƒขแƒ–แƒ” /tmp/test แƒ“แƒ แƒ˜แƒก แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ—แƒแƒ แƒ˜แƒฆแƒก, แƒ แƒแƒช แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒกแƒฌแƒแƒ แƒแƒ“ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ— แƒ“แƒ แƒ›แƒ” แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒกแƒฌแƒแƒ แƒแƒ“ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”.

แƒ“แƒแƒกแƒ™แƒ•แƒœแƒ

แƒ‘แƒ˜แƒ แƒ—แƒ•แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒฉแƒ”แƒ›แƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒ˜แƒงแƒ, แƒ•แƒ˜แƒ“แƒ แƒ” แƒ•แƒ”แƒšแƒแƒ“แƒ˜. C-แƒจแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”แƒช, แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ” แƒ“แƒ แƒ’แƒฃแƒ’แƒšแƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ–แƒ” แƒคแƒแƒ™แƒฃแƒกแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ›แƒ” แƒจแƒ”แƒ•แƒซแƒ”แƒšแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ แƒ“แƒ แƒ—แƒแƒ•แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒฐแƒแƒ™แƒ”แƒ แƒแƒ“ แƒ“แƒ แƒแƒ›แƒแƒ•แƒ” แƒ“แƒ แƒแƒก แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒ‘แƒแƒ•แƒจแƒ•แƒแƒ“ แƒ•แƒ’แƒ แƒซแƒœแƒแƒ‘แƒ“แƒ˜. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ›แƒ˜แƒ•แƒ”แƒ“แƒ˜ Kernel Newbies แƒแƒ แƒฎแƒ–แƒ”, แƒกแƒแƒ“แƒแƒช แƒ›แƒ˜แƒ—แƒฎแƒ แƒ”แƒก แƒ’แƒแƒ›แƒแƒ›แƒ”แƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒœแƒ schedule_work() แƒ“แƒแƒ แƒ”แƒ™แƒ•แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ call_usermodehelper() แƒ—แƒแƒ•แƒแƒ“ แƒ™แƒแƒ™แƒ•แƒ˜แƒก แƒจแƒ˜แƒ’แƒœแƒ˜แƒ— แƒ“แƒ แƒจแƒ”แƒแƒ แƒชแƒฎแƒ•แƒ˜แƒœแƒ แƒ˜แƒ’แƒ˜, แƒกแƒแƒ›แƒแƒ แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ”แƒญแƒ•แƒแƒ‘แƒ“แƒ แƒ—แƒแƒฆแƒšแƒ˜แƒ—แƒแƒ‘แƒแƒจแƒ˜. แƒ™แƒแƒ“แƒ˜แƒก แƒแƒกแƒ˜ แƒฎแƒแƒ–แƒ˜ แƒ“แƒแƒ›แƒ˜แƒฏแƒ“แƒ แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒแƒš แƒ“แƒ แƒแƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒแƒฎแƒšแƒแƒ”แƒ‘แƒ˜แƒ— แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒ˜แƒ แƒ. แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒชแƒ“แƒ˜แƒšแƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒ’แƒแƒแƒœแƒแƒ“แƒ’แƒฃแƒ แƒ แƒฉแƒ”แƒ›แƒ˜ แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒ›แƒ˜แƒ—แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒ‘แƒกแƒแƒšแƒฃแƒขแƒฃแƒ แƒ˜ แƒกแƒ˜แƒ แƒ—แƒฃแƒšแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘.

แƒ—แƒฃ แƒ•แƒ˜แƒœแƒ›แƒ” แƒ—แƒแƒœแƒแƒฎแƒ›แƒแƒ Github-แƒ–แƒ” แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒ˜แƒšแƒ•แƒแƒ–แƒ”, แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ”แƒšแƒ˜ แƒ•แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ˜. แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ•แƒแƒ , แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒกแƒฃแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ“แƒแƒ•แƒฃแƒจแƒ•แƒ˜, แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒกแƒ˜แƒ›แƒ”แƒ‘แƒ–แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒกแƒแƒก.

แƒ‘แƒ˜แƒ แƒ—แƒ•แƒฃแƒšแƒ˜ แƒญแƒฃแƒ แƒ•แƒ˜ ICMP-แƒ–แƒ”

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ