ХИБ; DR: Ман як модули ядро менависам, ки фармонҳоро аз бори ICMP мехонад ва онҳоро дар сервер иҷро мекунад, ҳатто агар SSH-и шумо суқут кунад. Барои аз ҳама бесабр, ҳама рамзи аст Гитуб.
Эзоҳ! Барномасозони ботаҷрибаи C хатари ба ашк рехтанро доранд! Шояд ман ҳатто дар истилоҳот иштибоҳ карда бошам, аммо ҳар гуна интиқод қобили қабул аст. Ин паём барои онҳое пешбинӣ шудааст, ки дар бораи барномасозии C тасаввуроти дағалона доранд ва мехоҳанд ба дохили Linux назар кунанд.
Дар шарҳҳои аввалини ман мақола ёдовар шуд SoftEther VPN, ки метавонад ба баъзе протоколҳои "муқаррарӣ", аз ҷумла HTTPS, ICMP ва ҳатто DNS тақлид кунад. Ман тасаввур карда метавонам, ки танҳо аввалини онҳо кор мекунанд, зеро ман бо HTTP(S) хеле ошно ҳастам ва ман маҷбур будам, ки нақбкаширо тавассути ICMP ва DNS омӯзам.
Бале, дар соли 2020 ман фаҳмидам, ки шумо метавонед ба бастаҳои ICMP боркунии ихтиёрӣ ворид кунед. Аммо дер беҳтар аз ҳаргиз! Ва азбаски дар ин бора коре кардан мумкин аст, пас он бояд анҷом дода шавад. Азбаски дар ҳаёти ҳаррӯзаи худ ман аксар вақт сатри фармонро истифода мебарам, аз ҷумла тавассути SSH, идеяи қабати ICMP аввал ба сари ман омад. Ва барои ҷамъ овардани як бингои мукаммал, ман қарор додам, ки онро ҳамчун модули Linux ба забоне нависам, ки ман танҳо тасаввуроти ноҳамвор дорам. Чунин қабил дар рӯйхати равандҳо намоён нахоҳад шуд, шумо метавонед онро ба ядро бор кунед ва он дар системаи файлӣ нахоҳад буд, шумо дар рӯйхати портҳои гӯшкунӣ ягон чизи шубҳанокро намебинед. Дар робита ба қобилиятҳои он, ин як руткити мукаммал аст, аммо ман умедворам, ки онро такмил медиҳам ва онро ҳамчун як қабати охирин истифода мебарам, вақте ки миёнаи сарборӣ барои ворид шудан тавассути 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:, мо ба он ниёз дорем, то бастаҳоро бо борҳои тасодуфӣ истисно кунем.
Иҷро ва баровардани фармон 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)