{"id":474142,"date":"2025-09-07T03:00:13","date_gmt":"2025-09-07T03:00:13","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=474142"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=474142","title":{"rendered":"<span>\u0421\u0442\u0440\u043e\u0438\u043c \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u044e \u043f\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u0438\u0440\u0443\u0441\u043e\u0432 \u0441 eBPF \u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c40\/9d4\/512\/c409d4512965642d224e7914c93bf74a.png\" width=\"856\" height=\"896\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c40\/9d4\/512\/c409d4512965642d224e7914c93bf74a.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c40\/9d4\/512\/c409d4512965642d224e7914c93bf74a.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0425\u0430\u0431\u0440, \u0432\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041a\u043e\u0433\u0434\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u0437\u0440\u0435\u043b\u0430 \u0434\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0435\u0440\u0441\u0438\u043a\u0430 \u0438 \u0443\u0436\u0435 \u043f\u043e\u0440\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 SOC \u0438\u043b\u0438 \u0432\u0430\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0412\u041f\u041e, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a Threat Intelligence! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0441\u0432\u043e\u044e \u043b\u0430\u0431\u0443 \u043f\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u0438\u0440\u0443\u0441\u043d\u0438\/\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440(PoC) \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0434\u043b\u044f Linux-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c.<\/p>\n<p>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f, \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0412\u041f\u041e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u0438\u0442\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u0434\u0435\u0442\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0442\u0438\u0432 \u043d\u0438\u0445, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435! \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u0417\u0430\u0447\u0435\u043c \u043e\u043d\u043e \u043d\u0430\u0434\u043e \u0438 \u0438\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442?<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b, \u0434\u0430\u043c\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u044d\u043c\u043f\u043b\u0430 \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432. <\/p>\n<p><strong>\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430<\/strong> \u0442\u0430\u043a\u043e\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 \u0432\u0438\u0434\u043d\u044b \u0441\u0440\u0430\u0437\u0443:<\/p>\n<ul>\n<li>\n<p>\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0430\u043b\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 SandBox \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u044b\u0440\u043e\u0439 \u043b\u043e\u0433 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f Linux-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u044b\u0447\u043d\u043e SandBox \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0445\u043e\u0434\u044f\u0442, \u0443\u0432\u043e\u0434\u044f \u0432 \u0441\u043e\u043d \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u043b\u043e\u043a\u0430\u0446\u0438\u0438, \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0441\u043f\u0438\u0442 \u043b\u0438 \u0441\u044d\u043c\u043f\u043b, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 500 \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0435\u0441\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p>user execution \u043e\u0447\u0435\u043d\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0447\u0435\u043d \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c, \u0432\u0430\u0448\u0430 \u043b\u0430\u0431\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u0430 \u0432\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u044d\u043c\u043f\u043b\u0430, \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u043a\u0440\u0443\u0442\u043e, \u043d\u043e \u043d\u0435 \u0431\u0435\u0437 <strong>\u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0434\u0432\u0438\u0436\u043a\u0438 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432\u0435\u0440\u0434\u0438\u043a\u0442\u043e\u0432, \u043d\u043e \u043b\u0430\u0431\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0443\u0436\u043d\u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0442\u0430\u043a \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u044f\u0434\u0440\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0437\u0434\u0435\u0441\u044c \u044f\u0434\u0440\u043e \u041e\u0421 \u043e\u0431\u0449\u0435\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0445;<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/strong> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0442\u0443\u0440 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0443\u0437\u043b\u0430, \u0433\u0434\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 pcap, \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 strings, \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 eBPF \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 Python, \u0430 \u0441\u044d\u043c\u043f\u043b \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. <\/p>\n<p>\u0414\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0434\u0432\u0443\u0445 \u0441\u0440\u0435\u0434 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Podman, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 namespace. \u041e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438, \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u0431\u044c\u0435\u043a\u0442\u0430\u043c\u0438. Seccomp \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442 \u0437\u0430\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u044f\u0434\u0440\u0430, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432 bpf, pivot_root, unshare, setns. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u043c\u043e\u0433 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e namespace \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439. \u0421group \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u044b\u0434\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0430 iptables \u0440\u0430\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442 \u043f\u043e \u0441\u0435\u0442\u0438. <\/p>\n<p>\u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u0441 eBPF \u043f\u043e\u0434\u043a\u0430\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435!<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 eBPF<\/summary>\n<div class=\"spoiler__content\">\n<p>eBPF &#8212; \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Linux, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a \u0442\u043e\u0447\u043a\u0430\u043c \u041e\u0421 \u043a\u0440\u0435\u043f\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0439 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043d \u0431\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u043e\u043d\u0430 \u0435\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f &#8212; \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432, \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0442\u043e\u0447\u0435\u043a LSM. \u041a\u0430\u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438 \u0440\u0430\u043d\u043d\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0438 \u0442\u043e\u0447\u043a\u0443 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a:<\/p>\n<ul>\n<li>\n<p>uprobe \/ uretprobe &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430<\/p>\n<\/li>\n<li>\n<p>kprobe \/ kretprobe &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u044f\u0434\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>tracepoint &#8212; \u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u043c\u0438 (syscalls)<\/p>\n<\/li>\n<li>\n<p>network filter &#8212; \u0442\u043e\u0447\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>LSM-hooks &#8212; \u0445\u0443\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (Linux Security Modules)<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b bpf(), \u0430 \u0442\u0430\u043a \u0436\u0435 \u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b bpftrace \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438 bt. \u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0430\u043a\u043e\u0432\u0430:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d23\/d66\/57a\/d23d6657a19c39488101b22b5c7d13ba.png\" width=\"586\" height=\"699\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/d23\/d66\/57a\/d23d6657a19c39488101b22b5c7d13ba.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/d23\/d66\/57a\/d23d6657a19c39488101b22b5c7d13ba.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u0430\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0442\u0440\u0430\u0444\u0438\u043a\u043e\u043c, \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0421\u0417\u0418, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0446\u0435\u043b\u044c\u044e \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u0432.<\/p>\n<\/div>\n<\/details>\n<h3>\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438<\/h3>\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043b\u0430\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0447\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443, \u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d \u043d\u0438\u0436\u0435.<\/p>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Kali Linux \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:<\/p>\n<pre><code class=\"bash\">sudo apt update &amp;&amp; apt install seccomp iptables binutils tcpdump wget podman -y sudo apt-get install -y bpfcc-tools libbpfcc libbpfcc-dev linux-headers-$(uname -r)  sudo wget https:\/\/github.com\/bpftrace\/bpftrace\/releases\/download\/v0.23.5\/bpftrace   sudo cp .\/bpftrace \/usr\/local\/bin\/bpftrace chmod +x \/usr\/local\/bin\/bpftrace wget https:\/\/github.com\/gojue\/ecapture\/releases\/download\/v1.4.1\/ecapture\\_v1.4.1\\_linux\\_amd64.deb sudo apt install .\/ecapture_v1.4.1_linux_amd64.deb<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438. \u0412\u041f\u041e \u0447\u0430\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 Discovery \u0443\u0432\u0438\u0434\u0438\u0442, \u0445\u043e\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 ptrace (PTRACE_SYSCALL, pid, 0, 0) \u043d\u0430 \u0441\u0435\u0431\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043e\u0442\u0432\u0435\u0442 -1, \u0442\u043e \u044d\u0442\u043e\u0442 \u043e\u0442\u043a\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c, \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0435\u0433\u043e \u0443\u0436\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u044e\u0442. \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f 1: \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432<\/p>\n<p>\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 (Namespaces, Cgroups, cap-drop) + Seccomp<\/p>\n<p>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u0438 \u043b\u0438\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0433\u0440\u0430\u043d\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 root, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0435\u0440\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0447\u0435\u0440\u0435\u0437 seccomp. \u0411\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u044d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 \u0438\u043b\u0438 \u043f\u043e\u0431\u0435\u0433\u0430 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f 2: \u041f\u043e\u0434\u043c\u0435\u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 syscall<\/p>\n<p>\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 (Namespaces, Cgroups) + LD_PRELOAD<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c eBPF-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b\/\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0430\u043b\u0432\u0430\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f (uname, stat, openat \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \/proc\/&#8230;, sysinfo). \u0414\u043b\u044f \u044d\u0442\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f, \u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 &#171;\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435&#187; \u0438 &#171;\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435&#187; \u043c\u0430\u043b\u0432\u0430\u0440\u044c\u044e.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f 3: \u0413\u0438\u0431\u0440\u0438\u0434 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438<\/p>\n<p>\u0418\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043e\u0431\u043e\u0439\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e Anti-Debug \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, LD_PRELOAD \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0430 Seccomp \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c \u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 (<strong>&#171;errno&#187;: 2 \/\/ ENOENT &#8212; No such file or directory<\/strong>), \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043d\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439. <\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0432 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0441\u0435\u0442\u044c, \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0433\u0434\u0435 \u0442\u0430\u043a \u0436\u0435 \u0443\u043a\u0430\u0436\u0435\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u044c seccomp.<\/p>\n<p>\u0421\u0435\u0442\u044c \u0434\u043b\u044f Podman:<\/p>\n<pre><code class=\"bash\">sudo podman network create -d bridge \\   --subnet 172.20.0.0\/24 \\   --gateway 172.20.0.1 \\   --ip-range 172.20.0.0\/24 \\   malwarenet<\/code><\/pre>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b22\/8ca\/727\/b228ca727c8b06727fdc05b2d1c67247.png\" width=\"623\" height=\"218\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b22\/8ca\/727\/b228ca727c8b06727fdc05b2d1c67247.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b22\/8ca\/727\/b228ca727c8b06727fdc05b2d1c67247.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0412\u041f\u041e \u043b\u044e\u0431\u044f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 systemd, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0432\u044b\u0441\u043e\u043a\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041f\u0440\u0435\u0432\u0435\u043d\u0442\u0438\u0432\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c podman \u0432\u043c\u0435\u0441\u0442\u043e Docker \u0438\u0437-\u0437\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 cgroup \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c systemd. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u043b\u0443\u0436\u0431\u0443, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0435\u0440\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u0447\u0435\u0440\u0435\u0437 Dockerfile:<\/p>\n<pre><code class=\"json\">FROM fedora:latest  # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Apache \u0438 systemd RUN dnf -y install \\     httpd &amp;&amp; dnf clean all  # \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Apache RUN systemctl enable httpd  # \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u043f\u043e\u0440\u0442\u0430 EXPOSE 80  # \u0421\u0438\u0433\u043d\u0430\u043b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043b\u044f systemd STOPSIGNAL SIGRTMIN+3  # \u0417\u0430\u043f\u0443\u0441\u043a systemd CMD [\"\/sbin\/init\"]<\/code><\/pre>\n<p>\u0421\u0431\u0438\u043b\u0434\u0438\u043c \u0435\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code>sudo podman build -t fedora-systemd .<\/code><\/pre>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0432 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b Seccomp, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u0430\u0442\u0430\u043a\u0438 \u043d\u0430 \u044f\u0434\u0440\u043e, \u043d\u043e \u0438 \u043d\u0435 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 systemd:<\/p>\n<details class=\"spoiler\">\n<summary>Seccomp \u043a\u043e\u043d\u0444\u0438\u0433<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">{   \"defaultAction\": \"SCMP_ACT_ALLOW\",   \"architectures\": [     \"SCMP_ARCH_X86_64\",     \"SCMP_ARCH_X86\",     \"SCMP_ARCH_X32\"   ],   \"syscalls\": [     {       \"names\": [         \"acct\",         \"add_key\",         \"bpf\",         \"clock_adjtime\",         \"clock_settime\",         \"create_module\",         \"delete_module\",         \"finit_module\",         \"get_kernel_syms\",         \"get_mempolicy\",         \"init_module\",         \"ioperm\",         \"iopl\",         \"kcmp\",         \"kexec_file_load\",         \"kexec_load\",         \"keyctl\",         \"lookup_dcookie\",         \"mbind\",         \"mount\",         \"move_pages\",         \"name_to_handle_at\",         \"nfsservctl\",         \"open_by_handle_at\",         \"perf_event_open\",         \"personality\",         \"pivot_root\",         \"process_vm_readv\",         \"process_vm_writev\",         \"ptrace\",         \"query_module\",         \"quotactl\",         \"reboot\",         \"request_key\",         \"set_mempolicy\",         \"setns\",         \"settimeofday\",         \"stime\",         \"swapon\",         \"swapoff\",         \"sysfs\",         \"syslog\",         \"_sysctl\",         \"umount\",         \"umount2\",         \"unshare\",         \"uselib\",         \"userfaultfd\",         \"ustat\",         \"vhangup\"       ],       \"action\": \"SCMP_ACT_ERRNO\"     }   ] }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0433\u0434\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c \u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u043c \u0441\u0435\u0442\u043a\u0443, \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e syscall \u0447\u0435\u0440\u0435\u0437 seccomp:<\/p>\n<details class=\"spoiler\">\n<summary>Podman-\u0441\u0440\u0435\u0434\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">  sudo podman run -d \\   --name malware-analysis-container \\   --network malware-net \\   --ip 172.20.0.100 \\   --security-opt seccomp=.\/file.json \\   --memory=1024m --cpus=1 \\   --systemd=always \\   localhost\/fedora-systemd:latest \/sbin\/init<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c seccomp \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b, \u043d\u0435 \u0434\u0430\u0432\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e5e\/0ae\/44f\/e5e0ae44f11d149bda680c72d4bd3dbd.png\" width=\"1075\" height=\"315\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e5e\/0ae\/44f\/e5e0ae44f11d149bda680c72d4bd3dbd.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e5e\/0ae\/44f\/e5e0ae44f11d149bda680c72d4bd3dbd.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0441\u0445\u0435\u043c\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445 NAT, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e, \u0442\u0430\u043a\u043e\u0432\u0430:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c9c\/283\/daa\/c9c283daaba67db9566008ff1518ceab.png\" width=\"828\" height=\"475\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/c9c\/283\/daa\/c9c283daaba67db9566008ff1518ceab.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/c9c\/283\/daa\/c9c283daaba67db9566008ff1518ceab.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0422\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b DMZ. \u0412\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \u0430\u0442\u0430\u043a\u0438 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0431\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u043f\u0440\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0432\u0430\u0448\u0435\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>Iptables DMZ<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">#!\/bin\/bash  IFACE=\"eth0\" # \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 NETWORK_INTERFACE=$(sudo podman network inspect malware-net -f '{{(index .Plugins 0).InterfaceName}}') DOCKER_IFACE=$NETWORK_INTERFACE CONTAINER_IP=\"172.20.0.100\"  # \u0421\u0431\u0440\u043e\u0441 \u043f\u0440\u0430\u0432\u0438\u043b iptables -F iptables -t nat -F iptables -X iptables -t nat -X  # \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP  # \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c localhost iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT  # DMZ \u043f\u0440\u0430\u0432\u0438\u043b\u0430 iptables -A FORWARD -s $CONTAINER_IP -o $IFACE -j ACCEPT iptables -A FORWARD -d $CONTAINER_IP -i $IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT  # \u0417\u0430\u043f\u0440\u0435\u0442 LAN iptables -A FORWARD -s $CONTAINER_IP -d 192.168.0.0\/16 -j DROP iptables -A FORWARD -s $CONTAINER_IP -d 10.0.0.0\/8 -j DROP iptables -A FORWARD -s $CONTAINER_IP -d 172.16.0.0\/12 -j DROP  echo \"DMZ zone for $CONTAINER_IP has been configured!\"<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 Anti-Debug \u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c eBPF-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0438\u0442 return \u0434\u043b\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 discovery \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u043b\u043e\u0436\u043d\u044b\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043e\u0442\u0432\u0435\u0442 \u0432 syscall, \u0442\u0430\u043c \u0433\u0434\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u044e\u0442 \u043b\u0438\u043c\u0438\u0442 &#8212; \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 userspace \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u0412\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043c\u0438, \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u0432 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/docs.ebpf.io\/linux\/helper-function\/bpf_probe_write_user\/\" rel=\"noopener noreferrer nofollow\">\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0435\u0433\u043e<\/a>, \u043d\u043e \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043a\u0435\u0439\u0441\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c LD_PRELOAD.<\/p>\n<p>\u0423\u043a\u0430\u0437\u0430\u0432 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0447\u0435\u0440\u0435\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e LD_PRELOAD, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u0438\u0442\u044c syscall \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u043c\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438. \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u0444\u0430\u0439\u043b \u0441 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u043c file.c:<\/p>\n<details class=\"spoiler\">\n<summary>LD_PRELOAD<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">#define _GNU_SOURCE #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;sys\/utsname.h&gt; #include &lt;dlfcn.h&gt;  int (*orig_uname)(struct utsname *buf);  int uname(struct utsname *buf) {     if (!orig_uname) {         orig_uname = dlsym(RTLD_NEXT, \"uname\");     }      int ret = orig_uname(buf);      strcpy(buf-&gt;sysname, \"SuperSecureOS\");     strcpy(buf-&gt;nodename, \"fakehost\");     strcpy(buf-&gt;release, \"9.9.9\");     strcpy(buf-&gt;version, \"v999\");     strcpy(buf-&gt;machine, \"x86_999\");     strcpy(buf-&gt;domainname, \"local.lan\");      return ret; }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u044b \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0432\u044b\u0437\u043e\u0432, \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440 \u043c\u0435\u043d\u044f\u0435\u043c \u043f\u043e\u0434 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. <\/p>\n<p>\u0421\u043e\u0431\u0435\u0440\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 \u0441\u0440\u0430\u0437\u0443 \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0438 \u0432\u0435\u0440\u0441\u0438\u0438 glibc \u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0435 \u0441\u0445\u043b\u043e\u043f\u043d\u0443\u043b\u0441\u044f. \u041f\u0435\u0440\u0435\u043a\u0438\u043d\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043d\u0430 \u0445\u043e\u0441\u0442 \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0435\u0440\u0435\u043c \u043e\u0431\u0440\u0430\u0437:<\/p>\n<pre><code>gcc -shared -fPIC -ldl fake_uname.c -o libfakeuname.so<\/code><\/pre>\n<p>\u0410 \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u0438\u043c \u043a \u043d\u0430\u0448\u0435\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443, \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u0440\u043e\u043a\u0438\u043d\u0443\u0432 \u0444\u0430\u0439\u043b \u0432 \u043d\u0435\u0433\u043e \u0438\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043e\u0431\u0440\u0430\u0437 \u0447\u0435\u0440\u0435\u0437 Dockerfile:<\/p>\n<details class=\"spoiler\">\n<summary>Podman-\u0441\u0440\u0435\u0434\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">  sudo podman run -d \\   --security-opt label=disable \\   --name malware-analysis-container \\   --network malware-net \\   --ip 172.20.0.100 \\   --security-opt seccomp=.\/file.json \\   --memory=1024m --cpus=1 \\   --env LD_PRELOAD=\/lib1\/libfakeuname.so \\   --systemd=always \\   localhost\/fedora-systemd:latest \/sbin\/init<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0417\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5a8\/baf\/0ba\/5a8baf0baa6eb540058804c8b96e194c.png\" width=\"734\" height=\"288\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/5a8\/baf\/0ba\/5a8baf0baa6eb540058804c8b96e194c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5a8\/baf\/0ba\/5a8baf0baa6eb540058804c8b96e194c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u0442\u0435\u043f\u0435\u0440\u044c \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043f\u043e\u0434\u043c\u0435\u043d\u044b \u043b\u044e\u0431\u044b\u0445 syscall, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043b\u043e\u0436\u043d\u044b\u0435 \u043e\u0442\u0432\u0435\u0442\u044b \u043d\u0430 \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 Discovery! <\/p>\n<h3>\u0421\u0431\u043e\u0440 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0438\u0437 \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u0438<\/h3>\n<p>\u041d\u0430 \u0434\u0430\u043d\u043d\u043e\u043c \u044d\u0442\u0430\u043f\u0435 \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0441\u0431\u043e\u0440 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 TTP\u2019s, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u0430\u0445, \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u0442\u0440\u0430\u0444\u0438\u043a\u0435, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0432 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u0435. \u0414\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c bpftrace, strings \u0438 mitmproxy\/tcpdump.<\/p>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043c\u044b \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0434\u043b\u044f \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0417\u0434\u0435\u0441\u044c \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0447\u0435\u0440\u0435\u0437 cgroup, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435. \u0422\u0440\u0430\u0441\u0441\u0438\u0440\u0443\u0435\u043c syscall \u0447\u0435\u0440\u0435\u0437 \u0448\u0430\u0431\u043b\u043e\u043d:  <\/p>\n<details class=\"spoiler\">\n<summary>\u0428\u0430\u0431\u043b\u043e\u043d \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">\/\\\\\\* ===================== \u041f\u0420\u041e\u0426\u0415\u0421\u0421\u042b ===================== \\\\\\*\/ tracepoint:syscalls:sys_enter_execve \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\\\\\\\"time\\\\\\\\\":\\\\\\\\\"%s\\\\\\\\\",\\\\\\\\\"probe\\\\\\\\\":\\\\\\\\\"%s\\\\\\\\\",\\\\\\\\\"pid\\\\\\\\\":%d,\\\\\\\\\"ppid\\\\\\\\\":%d,\\\\\\\\\"comm\\\\\\\\\":\\\\\\\\\"%s\\\\\\\\\",\\\\\\\\\"exec\\\\\\\\\":\\\\\\\\\"%s\\\\\\\\\"}\\\\\\\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            curtask-&gt;real_parent-&gt;tgid,   \/\/ &lt;-- ppid            comm,            str(args-&gt;filename)); }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0414\u043b\u044f \u0434\u0430\u043c\u043f\u0430 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043d\u043e \u0438 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 SSL. <\/p>\n<p>eCapture &#8212; \u044d\u0442\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430 eBPF, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u0438\u0442\u044c\u0441\u044f \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 OpenSSL \u0438 \u0435\u0439 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u043c, \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u0435\u0433\u043e \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435, \u043d\u043e \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435. \u041e\u0447\u0435\u043d\u044c \u0432\u0430\u0436\u043d\u043e, \u0447\u0442\u043e\u0431\u044b \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0445\u043e\u0441\u0442\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u043b\u0430 \u0441 \u0432\u0435\u0440\u0441\u0438\u0435\u0439 \u0442\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0438 \u0412\u041f\u041e \u0438\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0442\u0443\u0436\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0430 \u043d\u0435 \u0441\u0432\u043e\u044e \u043f\u0440\u0438\u043d\u0435\u0441\u0435\u043d\u043d\u0443\u044e. \u0422\u0430\u043a\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u043f\u0430\u043b\u0438.<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/25d\/380\/d68\/25d380d685af76829552c9e912bcf841.png\" width=\"1252\" height=\"997\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/25d\/380\/d68\/25d380d685af76829552c9e912bcf841.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/25d\/380\/d68\/25d380d685af76829552c9e912bcf841.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c mitmproxy \u0438 tcpdump, \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0432 \u0444\u0430\u0439\u043b\u044b. \u0412\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0442\u0438 \u0442\u0440\u0430\u0444\u0438\u043a \u0438\u0437 \u043d\u0430\u0448\u0435\u0433\u043e \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430. \u0410 \u0434\u043b\u044f mitm proxy \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 bash.rc \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f:<\/p>\n<pre><code class=\"bash\">NETWORK_INTERFACE=$(sudo podman network inspect malware-net -f '{{(index .Plugins 0).InterfaceName}}') sudo tcpdump -i $NETWORK_ID &gt; .\/net.txt &amp;<\/code><\/pre>\n<p>\u041d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u043f\u0440\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u0430\u0445, \u0430 \u0442\u0430\u043a \u0436\u0435 shellcode \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0441 \u043d\u0438\u0445 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b:<\/p>\n<pre><code>sudo strings filename &gt; strings.txt<\/code><\/pre>\n<p>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u043c \u0432\u0441\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432\u044b\u0448\u0435 \u0432 \u043e\u0434\u0438\u043d \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438:<\/p>\n<details class=\"spoiler\">\n<summary>\u0417\u0430\u043f\u0443\u0441\u043a \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">#!\/bin\/bash if [ $# -eq 0 ]; then     echo \"Usage: $0 &lt;filename&gt;\"     exit 1 fi  if [ ! -f \"$1\" ]; then     echo \"File $1 does not exist!\"     exit 1 fi  CONTAINER_PID=$(sudo podman inspect --format '{{.State.Pid}}' $(sudo podman ps -q | head -n 1)) CGROUP_PATH=$(cut -d: -f3 \/proc\/$CONTAINER_PID\/cgroup) CGROUP_ID=$(stat -c %i \/sys\/fs\/cgroup$CGROUP_PATH) echo \"Tracing container with PID=$CONTAINER_PID, cgroup inode=$CGROUP_ID\"   cat &lt;&lt;EOF &gt; .\/script.bt #!\/usr\/bin\/env bpftrace  \/* ===================== \u041f\u0420\u041e\u0426\u0415\u0421\u0421\u042b ===================== *\/ tracepoint:syscalls:sys_enter_execve \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"ppid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"exec\\\":\\\"%s\\\"}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            curtask-&gt;real_parent-&gt;tgid,   \/\/ &lt;-- ppid \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e            comm,            str(args-&gt;filename)); }  \/* ===================== \u0424\u0410\u0419\u041b\u042b ===================== *\/ tracepoint:syscalls:sys_enter_openat \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"pathname\\\":\\\"%s\\\",\\\"flags\\\":%d}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            comm,            str(args-&gt;filename),            args-&gt;flags); }  tracepoint:syscalls:sys_enter_unlinkat \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"target\\\":\\\"%s\\\"}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            comm,            str(args-&gt;pathname)); }  tracepoint:syscalls:sys_enter_renameat \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"oldpath\\\":\\\"%s\\\",\\\"newpath\\\":\\\"%s\\\"}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            comm,            str(args-&gt;oldname),            str(args-&gt;newname)); }  \/* ===================== \u0421\u0415\u0422\u042c ===================== *\/ tracepoint:syscalls:sys_enter_socket \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"domain\\\":%d,\\\"type\\\":%d,\\\"protocol\\\":%d}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            comm,            args-&gt;family,            args-&gt;type,            args-&gt;protocol); }  tracepoint:syscalls:sys_enter_connect \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"fd\\\":%d,\\\"addrlen\\\":%d}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            comm,            args-&gt;fd,            args-&gt;addrlen); }  tracepoint:syscalls:sys_enter_accept \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"fd\\\":%d}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            comm,            args-&gt;fd); }  \/* ===================== UID\/GID ===================== *\/ tracepoint:syscalls:sys_enter_setuid \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"uid\\\":%d}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            comm,            args-&gt;uid); }  tracepoint:syscalls:sys_enter_setgid \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"gid\\\":%d}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            comm,            args-&gt;gid); }  tracepoint:syscalls:sys_enter_setfsuid \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"fsuid\\\":%d}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            comm,            args-&gt;uid); }  \/* ===================== SECURITY-SENSITIVE ===================== *\/ tracepoint:syscalls:sys_enter_bpf \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"cmd\\\":%d}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            comm,            args-&gt;cmd); }  tracepoint:syscalls:sys_enter_ptrace \/ cgroup == $CGROUP_ID \/ {     printf(\"{\\\"time\\\":\\\"%s\\\",\\\"probe\\\":\\\"%s\\\",\\\"pid\\\":%d,\\\"comm\\\":\\\"%s\\\",\\\"request\\\":%d,\\\"target\\\":%d}\\n\",            strftime(\"%Y-%m-%d %H:%M:%S\", nsecs),            probe,            pid,            comm,            args-&gt;request,            args-&gt;pid); } EOF  echo \"Start tracing...\" sudo bpftrace .\/script.bt &gt; .\/syscall.txt &amp; echo \"Start network dumping...\" NETWORK_INTERFACE=$(sudo podman network inspect malware-net -f '{{(index .Plugins 0).InterfaceName}}') sudo tcpdump -i $NETWORK_ID &gt; .\/net.txt &amp; echo \"Start strings search...\" sudo strings \"$1\" &gt; .\/strings.txt &amp;<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 script &lt;malware.file&gt; \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u043e\u0435 \u041f\u041e, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d\u043e strings \u0438 \u0432\u044b\u0432\u0435\u0434\u0435\u043d\u044b \u0441\u0442\u0440\u043e\u043a\u0438, \u043a\u0430\u043a \u0438 \u0442\u0435\u043b\u0435\u043c\u0435\u0442\u0440\u0438\u044f \u043f\u043e \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u043c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430\u043c. <\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4bf\/ddf\/311\/4bfddf3119747958d735e7578d80a6af.png\" width=\"754\" height=\"224\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/4bf\/ddf\/311\/4bfddf3119747958d735e7578d80a6af.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/4bf\/ddf\/311\/4bfddf3119747958d735e7578d80a6af.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u041d\u0430\u043f\u0438\u0448\u0435\u043c \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0432 \u0435\u0434\u0438\u043d\u044b\u0439 \u0432\u0438\u0434 \u0438 \u0444\u0430\u0439\u043b:<\/p>\n<details class=\"spoiler\">\n<summary>\u041d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">import json import argparse from datetime import datetime import requests  def parse_syscalls(sys_file):     events = []     with open(sys_file) as f:         for line in f:             try:                 ev = json.loads(line)                 ev[\"source\"] = \"syscall\"                 events.append(ev)             except json.JSONDecodeError:                 events.append({\"source\": \"syscall\", \"raw\": line.strip(), \"parse_error\": True})     return events  def parse_network(net_file, date=None):     events = []     with open(net_file) as f:         for line in f:             line = line.strip()             if not line:                 continue             time_str, rest = line.split(\" \", 1)             if date:                 ts = f\"{date} {time_str}\"             else:                 ts = datetime.now().strftime(\"%Y-%m-%d \") + time_str             events.append({                 \"time\": ts,                 \"source\": \"net\",                 \"raw\": line             })     return events  def parse_strings(strings_file, date=None):     events = []     with open(strings_file) as f:         for line in f:             line = line.strip()             if not line:                 continue             ts = date + \" 00:00:00\" if date else datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")             events.append({                 \"time\": ts,                 \"source\": \"strings\",                 \"raw\": line             })     return events  def merge_events(*lists):     all_events = []     for lst in lists:         all_events.extend(lst)     # \u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438     def parse_time(ev):         try:             return datetime.strptime(ev[\"time\"], \"%Y-%m-%d %H:%M:%S.%f\")         except ValueError:             try:                 return datetime.strptime(ev[\"time\"], \"%Y-%m-%d %H:%M:%S\")             except:                 return datetime.min     return sorted(all_events, key=parse_time)  def send_to_ai(events, api_key):     url = \"https:\/\/gpt.serverspace.ru\/v1\/chat\/completions\"     payload = {         \"model\": \"openai\/gpt-4o\",         \"max_tokens\": 16384,         \"top_p\": 0.1,         \"temperature\": 0.6,         \"messages\": [             {                 \"role\": \"user\",                 \"content\": json.dumps(events)             }         ]     }     headers = {         \"Accept\": \"application\/json\",         \"Content-Type\": \"application\/json\",         \"Authorization\": f\"Bearer {api_key}\"     }     r = requests.post(url, headers=headers, data=json.dumps(payload))     return r.json()   parser = argparse.ArgumentParser() parser.add_argument(\"--sys\", required=True, help=\"Syscall JSONL file\") parser.add_argument(\"--net\", required=True, help=\"Network log txt file\") parser.add_argument(\"--strings\", required=True, help=\"Strings output file\") parser.add_argument(\"--date\", help=\"Date for network\/strings events YYYY-MM-DD\") parser.add_argument(\"--out\", help=\"Output JSONL file\") parser.add_argument(\"--api_key\", help=\"GPT API key\") args = parser.parse_args()  sys_events = parse_syscalls(args.sys) net_events = parse_network(args.net, date=args.date) str_events = parse_strings(args.strings, date=args.date)  all_events = merge_events(sys_events, net_events)  if args.out:     with open(args.out, \"w\") as f:         for ev in all_events:                 f.write(json.dumps(ev) + \"\\n\") else:     for ev in all_events:         print(json.dumps(ev))  if args.api_key:     result = send_to_ai(all_events, args.api_key)     print(json.dumps(result, indent=2))<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0439 \u043b\u0430\u0431\u044b \u0432 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u043c \u043b\u043e\u0433\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0434\u0430\u043c\u043f\u0430, \u043d\u043e \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a\u0430 \u0432\u0441\u0435 \u0440\u0430\u0432\u043d\u043e \u043d\u0443\u0436\u043d\u0430. \u041a\u0430\u043a \u0430\u043d\u0430\u043b\u043e\u0433 \u0434\u0432\u0438\u0436\u043a\u043e\u0432 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c GPT-4o, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0434\u0441\u0432\u0435\u0442\u0438\u0442 TTP\u2019s \u0438 \u0441\u0443\u043c\u043c\u0430\u0440\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n<p>\u0421\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0443\u0442\u0438 \u043a \u0432\u0435\u0440\u0434\u0438\u043a\u0442\u0430\u043c \u0438 API, \u043f\u0440\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0435 \u0441\u043a\u0440\u0438\u043f\u0442\u0430:<\/p>\n<pre><code class=\"javascript\">python normalize_and_send.py \\   --sys syscalls.jsonl \\   --net net.txt \\   --strings malware_strings.txt \\   --date 2025-09-02 \\   --out merged.jsonl \\   --api_key \"YOUR_API_KEY\"<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442:<\/p>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e3d\/807\/20f\/e3d80720f5c75fd3f0328996846c8503.png\" width=\"1184\" height=\"652\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/e3d\/807\/20f\/e3d80720f5c75fd3f0328996846c8503.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/e3d\/807\/20f\/e3d80720f5c75fd3f0328996846c8503.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<div class=\"floating-image\">\n<p>\u0412 \u0444\u0430\u0439\u043b\u0435 \u043b\u0435\u0436\u0438\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043b\u043e\u0433 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0432 \u041e\u0421 Linux \u0441 timestamp, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439, \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0432\u0435\u0440\u0434\u0438\u043a\u0442 \u043e\u0442 AI \u043e \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u044b\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u0445. \u0414\u0430\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u044b\u043c, \u0431\u0435\u0437\u0443\u0441\u043b\u043e\u0432\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0434\u0432\u0438\u0436\u043a\u0438, \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u043a\u0443. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043f\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u044d\u043c\u043f\u043b\u043e\u0432 \u043d\u0430 \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441\u043d\u0443\u044e \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c!<\/p>\n<\/div>\n<blockquote>\n<p><strong>\u0421\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439 <\/strong><a href=\"https:\/\/serverspace.ru\/?utm%5C%5C_source=habr&amp;utm%5C%5C_medium=social&amp;utm%5C%5C_campaign=habr%5C%5C_bannerss&amp;utm%5C%5C_term=banner%5C%5C_habr\" rel=\"noopener noreferrer nofollow\"><strong>Serverspace<\/strong><\/a><strong>.<\/strong><\/p>\n<p><a href=\"https:\/\/serverspace.ru\/?utm_source=habr&amp;utm_medium=social&amp;utm_campaign=habr_bannerss&amp;utm_term=banner_habr&quot;&gt;Serverspace&lt;\/a&gt;\" rel=\"noopener noreferrer nofollow\">Serverspace<\/a> \u2014 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0445 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u0432 \u0430\u0440\u0435\u043d\u0434\u0443 <a href=\"https:\/\/serverspace.ru\/services\/cloud-servers\/?utm%5C_source=habr&amp;utm%5C_medium=social&amp;utm%5C_campaign=habr%5C_banner%5C_cloud%5C_servers&amp;utm%5C_term=habr%5C_banner%5C_cloud%5C_servers\" rel=\"noopener noreferrer nofollow\">\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u044b<\/a> \u0441 \u041e\u0421 Linux \u0438 Windows \u0432 8 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445: \u0420\u043e\u0441\u0441\u0438\u044f, \u0411\u0435\u043b\u0430\u0440\u0443\u0441\u044c, \u041a\u0430\u0437\u0430\u0445\u0441\u0442\u0430\u043d, \u041d\u0438\u0434\u0435\u0440\u043b\u0430\u043d\u0434\u044b, \u0422\u0443\u0440\u0446\u0438\u044f, \u0421\u0428\u0410, \u041a\u0430\u043d\u0430\u0434\u0430 \u0438 \u0411\u0440\u0430\u0437\u0438\u043b\u0438\u044f. \u0414\u043b\u044f \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u0418\u0422-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442: \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0435\u0442\u0435\u0439, \u0448\u043b\u044e\u0437\u043e\u0432, \u0431\u044d\u043a\u0430\u043f\u044b, \u0441\u0435\u0440\u0432\u0438\u0441\u044b CDN, DNS, <a href=\"https:\/\/serverspace.ru\/services\/storage\/?utm%5C_source=habr&amp;utm%5C_medium=social&amp;utm%5C_campaign=habr%5C_banner%5C_storage&amp;utm%5C_term=habr%5C_banner%5C_storage\" rel=\"noopener noreferrer nofollow\">\u043e\u0431\u044a\u0435\u043a\u0442\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 S3<\/a>.<\/p>\n<p><strong>IT-\u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 | \u0423\u0434\u0432\u043e\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043b\u0430\u0442\u0435\u0436\u0430 \u043f\u043e \u043a\u043e\u0434\u0443 HABR<\/strong><\/p>\n<\/blockquote>\n<figure class=\"full-width\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2bd\/2ab\/8f8\/2bd2ab8f88ee71effda4314ddca1e664.png\" width=\"1456\" height=\"180\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/2bd\/2ab\/8f8\/2bd2ab8f88ee71effda4314ddca1e664.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/2bd\/2ab\/8f8\/2bd2ab8f88ee71effda4314ddca1e664.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/944614\/\"> https:\/\/habr.com\/ru\/articles\/944614\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u0425\u0430\u0431\u0440, \u0432\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041a\u043e\u0433\u0434\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u0441\u043e\u0437\u0440\u0435\u043b\u0430 \u0434\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u0435\u0440\u0441\u0438\u043a\u0430 \u0438 \u0443\u0436\u0435 \u043f\u043e\u0440\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 SOC \u0438\u043b\u0438 \u0432\u0430\u043c \u0432\u0441\u0435\u0433\u0434\u0430 \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0412\u041f\u041e, \u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a Threat Intelligence! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0441\u043e\u0431\u0435\u0440\u0435\u043c \u0441\u0432\u043e\u044e \u043b\u0430\u0431\u0443 \u043f\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044e \u0432\u0438\u0440\u0443\u0441\u043d\u0438\/\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0438 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440(PoC) \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435 \u0434\u043b\u044f Linux-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c.<\/p>\n<p>\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f, \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0412\u041f\u041e, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u0438\u0442\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u0434\u0435\u0442\u0435\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0442\u0438\u0432 \u043d\u0438\u0445, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432 \u0432 \u0432\u0430\u0448\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435! \u041d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<details class=\"spoiler\">\n<summary>\u0417\u0430\u0447\u0435\u043c \u043e\u043d\u043e \u043d\u0430\u0434\u043e \u0438 \u0438\u0437 \u0447\u0435\u0433\u043e \u0441\u043e\u0441\u0442\u043e\u0438\u0442?<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b, \u0434\u0430\u043c\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0441\u044d\u043c\u043f\u043b\u0430 \u0432 \u043f\u043e\u0438\u0441\u043a\u0430\u0445 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u043e\u0432. <\/p>\n<p><strong>\u041f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430<\/strong> \u0442\u0430\u043a\u043e\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 \u0432\u0438\u0434\u043d\u044b \u0441\u0440\u0430\u0437\u0443:<\/p>\n<ul>\n<li>\n<p>\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u0430\u043b\u043e \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 SandBox \u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0435\u0442\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u044b\u0440\u043e\u0439 \u043b\u043e\u0433 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f Linux-\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c;<\/p>\n<\/li>\n<li>\n<p>\u043e\u0431\u044b\u0447\u043d\u043e SandBox \u043e\u0447\u0435\u043d\u044c \u043b\u0435\u0433\u043a\u043e \u043e\u0431\u0445\u043e\u0434\u044f\u0442, \u0443\u0432\u043e\u0434\u044f \u0432 \u0441\u043e\u043d \u0432\u0440\u0435\u0434\u043e\u043d\u043e\u0441, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u043b\u043e\u043a\u0430\u0446\u0438\u0438, \u0440\u0430\u0441\u043a\u043b\u0430\u0434\u043a\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0441\u043f\u0438\u0442 \u043b\u0438 \u0441\u044d\u043c\u043f\u043b, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0447\u0442\u043e\u0431\u044b \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0432\u0440\u0435\u043c\u044f \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0438 \u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 500 \u0441\u0435\u043a\u0443\u043d\u0434 \u043f\u0435\u0441\u043a\u0430.<\/p>\n<\/li>\n<li>\n<p>user execution \u043e\u0447\u0435\u043d\u044c \u043e\u0440\u0433\u0430\u043d\u0438\u0447\u0435\u043d \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u044f\u0445, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c, \u0432\u0430\u0448\u0430 \u043b\u0430\u0431\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c\u0430 \u0432\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043c\u0438\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 \u0441\u044d\u043c\u043f\u043b\u0430, \u0447\u0430\u0441\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u043a\u0440\u0443\u0442\u043e, \u043d\u043e \u043d\u0435 \u0431\u0435\u0437 <strong>\u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u043e\u0432<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u0442\u044c \u0434\u0432\u0438\u0436\u043a\u0438 \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0432\u0435\u0440\u0434\u0438\u043a\u0442\u043e\u0432, \u043d\u043e \u043b\u0430\u0431\u0430 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u0434\u043b\u044f \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0430;<\/p>\n<\/li>\n<li>\n<p>\u043d\u0443\u0436\u043d\u0430 \u0434\u0440\u0443\u0433\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0430\u0442\u0430\u043a \u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u044f\u0434\u0440\u0430, \u0442\u0430\u043a \u043a\u0430\u043a \u0437\u0434\u0435\u0441\u044c \u044f\u0434\u0440\u043e \u041e\u0421 \u043e\u0431\u0449\u0435\u0435;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0435\u0440\u0432\u0438\u0441\u043d\u044b\u0445;<\/p>\n<\/li>\n<\/ul>\n<p><strong>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/strong> \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0442\u0443\u0440 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0443\u0437\u043b\u0430, \u0433\u0434\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0434\u0440\u0430\u0439\u0432\u0435\u0440\u0430 pcap, \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 strings, \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 eBPF \u0438 \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043d\u0430 Python, \u0430 \u0441\u044d\u043c\u043f\u043b \u0431\u0443\u0434\u0435\u0442 \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. <\/p>\n<p>\u0414\u043b\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0434\u0432\u0443\u0445 \u0441\u0440\u0435\u0434 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Podman, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 namespace. \u041e\u043d\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438, \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043e\u0431\u044c\u0435\u043a\u0442\u0430\u043c\u0438. Seccomp \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442 \u0437\u0430\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u044f\u0434\u0440\u0430, \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432 bpf, pivot_root, unshare, setns. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0435 \u043c\u043e\u0433 \u0432\u044b\u0439\u0442\u0438 \u0438\u0437 \u0441\u0432\u043e\u0435\u0433\u043e namespace \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439. \u0421group \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0432\u044b\u0434\u0430\u0442\u044c \u043d\u0443\u0436\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0430 iptables \u0440\u0430\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442 \u043f\u043e \u0441\u0435\u0442\u0438. <\/p>\n<p>\u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c \u0441 eBPF \u043f\u043e\u0434\u043a\u0430\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435!<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 eBPF<\/summary>\n<div class=\"spoiler__content\">\n<p>eBPF &#8212; \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 Linux, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043a \u0442\u043e\u0447\u043a\u0430\u043c \u041e\u0421 \u043a\u0440\u0435\u043f\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043a\u043e\u0434 \u0434\u043b\u044f \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0439 \u0438\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0420\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043e\u043d \u0431\u0435\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u043e\u043d\u0430 \u0435\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u044f &#8212; \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432, \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a, \u0430 \u0442\u0430\u043a \u0436\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0442\u043e\u0447\u0435\u043a LSM. \u041a\u0430\u043a \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043b\u0438 \u0440\u0430\u043d\u043d\u0435\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0438 \u0442\u043e\u0447\u043a\u0443 \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438, \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u043a:<\/p>\n<ul>\n<li>\n<p>uprobe \/ uretprobe &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430<\/p>\n<\/li>\n<li>\n<p>kprobe \/ kretprobe &#8212; \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u044f\u0434\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>tracepoint &#8212; \u0442\u043e\u0447\u043a\u0438 \u0434\u043b\u044f \u0441\u043e\u0431\u044b\u0442\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430\u043c\u0438 (syscalls)<\/p>\n<\/li>\n<li>\n<p>network filter &#8212; \u0442\u043e\u0447\u043a\u0438 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0442\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>LSM-hooks &#8212; \u0445\u0443\u043a\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 (Linux Security Modules)<\/p>\n<\/li>\n<\/ul>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b bpf(), \u0430 \u0442\u0430\u043a \u0436\u0435 \u0436\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b bpftrace \u0441\u043e \u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438 bt. \u0421\u0445\u0435\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u044b \u0442\u0430\u043a\u043e\u0432\u0430:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0422\u0430\u043a\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u0442\u0440\u0430\u0444\u0438\u043a\u043e\u043c, \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0421\u0417\u0418, \u0430 \u0442\u0430\u043a \u0436\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0446\u0435\u043b\u044c\u044e \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u043e\u0432.<\/p>\n<\/div>\n<\/details>\n<h3>\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0438 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438<\/h3>\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u043b\u0430\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u0430\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f, \u0447\u0442\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443, \u043d\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d \u043d\u0438\u0436\u0435.<\/p>\n<p>\u0414\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Kali Linux \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0438 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438:<\/p>\n<pre><code class=\"bash\">sudo apt update &amp;&amp; apt install seccomp iptables binutils tcpdump wget podman -y sudo apt-get install -y bpfcc-tools libbpfcc libbpfcc-dev linux-headers-$(uname -r)  sudo wget https:\/\/github.com\/bpftrace\/bpftrace\/releases\/download\/v0.23.5\/bpftrace   sudo cp .\/bpftrace \/usr\/local\/bin\/bpftrace chmod +x \/usr\/local\/bin\/bpftrace wget https:\/\/github.com\/gojue\/ecapture\/releases\/download\/v1.4.1\/ecapture\\_v1.4.1\\_linux\\_amd64.deb sudo apt install .\/ecapture_v1.4.1_linux_amd64.deb<\/code><\/pre>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044e \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438. \u0412\u041f\u041e \u0447\u0430\u0441\u0442\u043e \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 Discovery \u0443\u0432\u0438\u0434\u0438\u0442, \u0445\u043e\u0442\u044c \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432\u044b\u0437\u043e\u0432\u0435\u0442 ptrace (PTRACE_SYSCALL, pid, 0, 0) \u043d\u0430 \u0441\u0435\u0431\u044f \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u043e\u0442\u0432\u0435\u0442 -1, \u0442\u043e \u044d\u0442\u043e\u0442 \u043e\u0442\u043a\u0430\u0437 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c, \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0435\u0433\u043e \u0443\u0436\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u0443\u044e\u0442. \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430:<\/p>\n<ul>\n<li>\n<p>\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f 1: \u0411\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432<\/p>\n<p>\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 (Namespaces, Cgroups, cap-drop) + Seccomp<\/p>\n<p>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u0438 \u043b\u0438\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 \u0433\u0440\u0430\u043d\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 root, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0447\u0435\u0440\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0447\u0435\u0440\u0435\u0437 seccomp. \u0411\u043b\u043e\u043a\u0438\u0440\u0443\u0435\u043c \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b \u0434\u043b\u044f \u044d\u0441\u043a\u0430\u043b\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 \u0438\u043b\u0438 \u043f\u043e\u0431\u0435\u0433\u0430 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f 2: \u041f\u043e\u0434\u043c\u0435\u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 syscall<\/p>\n<p>\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 (Namespaces, Cgroups) + LD_PRELOAD<\/p>\n<p>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c eBPF-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b\/\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u0430\u0436\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u0430\u043b\u0432\u0430\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f (uname, stat, openat \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f \/proc\/&#8230;, sysinfo). \u0414\u043b\u044f \u044d\u0442\u0438\u0445 \u0432\u044b\u0437\u043e\u0432\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f, \u0430 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u043c\u0435\u043d\u044f\u0442\u044c \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 &#171;\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435&#187; \u0438 &#171;\u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0435&#187; \u043c\u0430\u043b\u0432\u0430\u0440\u044c\u044e.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u044f 3: \u0413\u0438\u0431\u0440\u0438\u0434 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438 \u0432\u0442\u043e\u0440\u043e\u0439 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438<\/p>\n<p>\u0418\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043e\u0431\u043e\u0439\u0442\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e Anti-Debug \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a, LD_PRELOAD \u0437\u0430\u043c\u0435\u043d\u0438\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0430 Seccomp \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0442\u044c \u0438 \u0432\u044b\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 (<strong>&#171;errno&#187;: 2 \/\/ ENOENT &#8212; No such file or directory<\/strong>), \u0432\u043c\u0435\u0441\u0442\u043e \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043d\u0430 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439. <\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0432 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043c \u0441\u0435\u0442\u044c, \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0433\u0434\u0435 \u0442\u0430\u043a \u0436\u0435 \u0443\u043a\u0430\u0436\u0435\u043c \u043f\u0440\u043e\u0444\u0438\u043b\u044c seccomp.<\/p>\n<p>\u0421\u0435\u0442\u044c \u0434\u043b\u044f Podman:<\/p>\n<pre><code class=\"bash\">sudo podman network create -d bridge \\   --subnet 172.20.0.0\/24 \\   --gateway 172.20.0.1 \\   --ip-range 172.20.0.0\/24 \\   malwarenet<\/code><\/pre>\n<figure class=\"full-width\"><\/figure>\n<p>\u041c\u043d\u043e\u0433\u0438\u0435 \u0412\u041f\u041e \u043b\u044e\u0431\u044f\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 systemd, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0435\u0433\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0432\u044b\u0441\u043e\u043a\u0430 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c, \u0447\u0442\u043e \u043e\u043d\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435. \u041f\u0440\u0435\u0432\u0435\u043d\u0442\u0438\u0432\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c podman \u0432\u043c\u0435\u0441\u0442\u043e Docker \u0438\u0437-\u0437\u0430 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 cgroup \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c systemd. \u041e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0441\u043b\u0443\u0436\u0431\u0443, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0435\u0440\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u0447\u0435\u0440\u0435\u0437 Dockerfile:<\/p>\n<pre><code class=\"json\">FROM fedora:latest  # \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Apache \u0438 systemd RUN dnf -y install \\     httpd &amp;&amp; dnf clean all  # \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Apache RUN systemctl enable httpd  # \u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u043f\u043e\u0440\u0442\u0430 EXPOSE 80  # \u0421\u0438\u0433\u043d\u0430\u043b \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0434\u043b\u044f systemd STOPSIGNAL SIGRTMIN+3  # \u0417\u0430\u043f\u0443\u0441\u043a systemd CMD [\"\/sbin\/init\"]<\/code><\/pre>\n<p>\u0421\u0431\u0438\u043b\u0434\u0438\u043c \u0435\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439:<\/p>\n<pre><code>sudo podman build -t fedora-systemd .<\/code><\/pre>\n<p>\u0422\u0430\u043a \u0436\u0435 \u0432 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b Seccomp, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u043f\u043b\u043e\u0449\u0430\u0434\u044c \u0430\u0442\u0430\u043a\u0438 \u043d\u0430 \u044f\u0434\u0440\u043e, \u043d\u043e \u0438 \u043d\u0435 \u0437\u0430\u043f\u0440\u0435\u0442\u0438\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 systemd:<\/p>\n<details class=\"spoiler\">\n<summary>Seccomp \u043a\u043e\u043d\u0444\u0438\u0433<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">{   \"defaultAction\": \"SCMP_ACT_ALLOW\",   \"architectures\": [     \"SCMP_ARCH_X86_64\",     \"SCMP_ARCH_X86\",     \"SCMP_ARCH_X32\"   ],   \"syscalls\": [     {       \"names\": [         \"acct\",         \"add_key\",         \"bpf\",         \"clock_adjtime\",         \"clock_settime\",         \"create_module\",         \"delete_module\",         \"finit_module\",         \"get_kernel_syms\",         \"get_mempolicy\",         \"init_module\",         \"ioperm\",         \"iopl\",         \"kcmp\",         \"kexec_file_load\",         \"kexec_load\",         \"keyctl\",         \"lookup_dcookie\",         \"mbind\",         \"mount\",         \"move_pages\",         \"name_to_handle_at\",         \"nfsservctl\",         \"open_by_handle_at\",         \"perf_event_open\",         \"personality\",         \"pivot_root\",         \"process_vm_readv\",         \"process_vm_writev\",         \"ptrace\",         \"query_module\",         \"quotactl\",         \"reboot\",         \"request_key\",         \"set_mempolicy\",         \"setns\",         \"settimeofday\",         \"stime\",         \"swapon\",         \"swapoff\",         \"sysfs\",         \"syslog\",         \"_sysctl\",         \"umount\",         \"umount2\",         \"unshare\",         \"uselib\",         \"userfaultfd\",         \"ustat\",         \"vhangup\"       ],       \"action\": \"SCMP_ACT_ERRNO\"     }   ] }<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u043e\u0434\u043d\u0438\u043c\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0433\u0434\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c \u0435\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043f\u0440\u0438\u043a\u0440\u0443\u0442\u0438\u043c \u0441\u0435\u0442\u043a\u0443, \u0432\u044b\u0431\u0435\u0440\u0435\u043c \u043e\u0431\u0440\u0430\u0437 \u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044e syscall \u0447\u0435\u0440\u0435\u0437 seccomp:<\/p>\n<details class=\"spoiler\">\n<summary>Podman-\u0441\u0440\u0435\u0434\u0430<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">  sudo podman run -d \\   --name malware-analysis-container \\   --network malware-net \\   --ip 172.20.0.100 \\   --security-opt seccomp=.\/file.json \\   --memory=1024m --cpus=1 \\   --systemd=always \\   localhost\/fedora-systemd:latest \/sbin\/init<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c seccomp \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0435 \u0432\u044b\u0437\u043e\u0432\u044b, \u043d\u0435 \u0434\u0430\u0432\u0430\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u0441\u0445\u0435\u043c\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0432 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445 NAT, \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e, \u0442\u0430\u043a\u043e\u0432\u0430:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p>\u0422\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0439 \u0441\u0440\u0435\u0434\u044b DMZ. \u0412\u043e \u0438\u0437\u0431\u0435\u0436\u0430\u043d\u0438\u0435 \u0430\u0442\u0430\u043a\u0438 \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u043d\u043e\u0441\u0438\u0442\u044c \u0431\u0435\u043b\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u043f\u0440\u0438 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0438 \u0432\u0430\u0448\u0435\u0439 \u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438.<\/p>\n<details class=\"spoiler\">\n<summary>Iptables DMZ<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"bash\">#!\/bin\/bash  IFACE=\"eth0\" # \u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 NETWORK_INTERFACE=$(sudo podman network inspect malware-net -f '{{(index .Plugins 0).InterfaceName}}') DOCKER_IFACE=$NETWORK_INTERFACE CONTAINER_IP=\"172.20.0.100\"  # \u0421\u0431\u0440\u043e\u0441 \u043f\u0440\u0430\u0432\u0438\u043b iptables -F iptables -t nat -F iptables -X iptables -t nat -X  # \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP  # \u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u043c localhost iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT  # DMZ \u043f\u0440\u0430\u0432\u0438\u043b\u0430 iptables -A FORWARD -s $CONTAINER_IP -o $IFACE -j ACCEPT iptables -A FORWARD -d $CONTAINER_IP -i $IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT  # \u0417\u0430\u043f\u0440\u0435\u0442 LAN iptables -A FORWARD -s $CONTAINER_IP -d 192.168.0.0\/16 -j DROP iptables -A FORWARD -s $CONTAINER_IP -d 10.0.0.0\/8 -j DROP iptables -A FORWARD -s $CONTAINER_IP -d 172.16.0.0\/12 -j DROP  echo \"DMZ zone for $CONTAINER_IP has been configured!\"<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 Anti-Debug \u043c\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c eBPF-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0438\u0442 return \u0434\u043b\u044f \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 discovery \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0430 \u043b\u043e\u0436\u043d\u044b\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0432\u044b\u0437\u043e\u0432\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442 \u043e\u0442\u0432\u0435\u0442 \u0432 syscall, \u0442\u0430\u043c \u0433\u0434\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0432\u044b\u0448\u0430\u044e\u0442 \u043b\u0438\u043c\u0438\u0442 &#8212; \u0441\u0440\u0430\u0437\u0443 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 userspace \u043f\u0430\u043c\u044f\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430. \u0412\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043e \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044f\u043c\u0438, \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438 \u0432 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043c\u043e\u0436\u043d\u043e <a href=\"https:\/\/docs.ebpf.io\/linux\/helper-function\/bpf_probe_write_user\/\" rel=\"noopener noreferrer nofollow\">\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438 \u0435\u0433\u043e<\/a>,<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-474142","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/474142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=474142"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/474142\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=474142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=474142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=474142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}