
Untitled Post
FGAM: рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рд╕рд╛рдЗрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдлрд╝рд╛рд╕реНрдЯ рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдорд╛рд▓рд╡реЗрдпрд░ рдЬреЗрдирд░реЗрд╢рди
рдПрдлрдЬреАрдПрдПрдо тАУ рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рд╕рд╛рдЗрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдлрд╝рд╛рд╕реНрдЯ рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдорд╛рд▓рд╡реЗрдпрд░ рдЬрдирд░реЗрд╢рди рдореЗрдердб тАУ рдкрд░ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рддрдХрдиреАрдХреА рдмреНрд▓реЙрдЧ-рдкреЛрд╕реНрдЯ
рдорд╛рд▓рд╡реЗрдпрд░ рд╕рд╛рдЗрдмрд░тАЛ-рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдпреЗ рд▓рдЧрд╛рддрд╛рд░ рдЪреБрдиреМрддреА рдмрдирд╛ рд╣реБрдЖ рд╣реИред рдорд╢реАрди-рд▓рд░реНрдирд┐рдВрдЧ рдореЗрдВ рд╣реБрдИ рдкреНрд░рдЧрддрд┐ рдХреЗ рдХрд╛рд░рдг рдЖрдЬ рдХрдИ рдбрд┐рдЯреЗрдХреНрд╢рди рд╕рд┐рд╕реНрдЯрдо рдЧрд╣рд░реЗ рдиреНрдпреВрд░рд▓ рдиреЗрдЯрд╡рд░реНрдХ (рдбреАрдПрд▓) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣реА рдореЙрдбрд▓ рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ (рдЫрд▓рдкреВрд░реНрдг) рдирдореВрдиреЛрдВ рдХреЗ рдкреНрд░рддрд┐ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рднреА рд╣реИрдВред рдЗрд╕ рджреАрд░реНрдШ-рдЖрдХрд╛рд░ рдХреА рддрдХрдиреАрдХреА рдкреЛрд╕реНрдЯ рдореЗрдВ рд╣рдо FGAMтАФFast Generate Adversarial MalwareтАФрдХрд╛ рдЧрд╣рди рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдореЗрдВ рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рд╕рд╛рдЗрди-рдЖрдзрд╛рд░рд┐рдд рдЗрдЯрд░рд╢рди рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдорд╛рд▓рд╡реЗрдпрд░ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдкрдиреА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдбрд┐рдЯреЗрдХреНрдЯрд░ рдХреЛ рдзреЛрдЦрд╛ рджреЗрддрд╛ рд╣реИред рд╣рдо рдкреГрд╖реНрдарднреВрдорд┐, рдХрд╛рд░реНрдп-рд╡рд┐рдзрд┐, рдХреЛрдб рдХреЗ рдЙрджрд╛рд╣рд░рдг, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ-рдкрд░рд┐рджреГрд╢реНрдп рддрдерд╛ рдЗрд╕рдХреА рд╕реАрдорд╛рдПрдБ рд╡ рд╢рдХреНрддрд┐рдпрд╛рдБ тАУ рд╕рдм рдХреБрдЫ рд╣рд┐рдиреНрджреА рдореЗрдВ рдХрд╡рд░ рдХрд░реЗрдВрдЧреЗред
рд╡рд┐рд╖рдп-рд╕реВрдЪреА
- рдкрд░рд┐рдЪрдп
- рд╕рд╛рдЗрдмрд░тАЛ-рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рд╣рдорд▓реЛрдВ рдХреА рдкреГрд╖реНрдарднреВрдорд┐
- FGAM: рдореБрдЦреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдБ рд╡ рдХрд╛рд░реНрдп-рдкреНрд░рдгрд╛рд▓реА
- рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рд╡рд┐рд╡рд░рдг
- рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╡ рдЙрдкрдпреЛрдЧ-рдкрд░рд┐рджреГрд╢реНрдп
- рд╕рд╛рдЗрдмрд░тАЛ-рд╕реБрд░рдХреНрд╖рд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдПрдХреАрдХрд░рдг рд╡ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
- рдЕрдиреНрдп рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдорд╛рд▓рд╡реЗрдпрд░ рдореЗрдердб рд╕реЗ рддреБрд▓рдирд╛
- рдЙрдиреНрдирдд рд╡рд┐рд╖рдп рд╡ рднрд╛рд╡реА рджрд┐рд╢рд╛рдПрдБ
- рдирд┐рд╖реНрдХрд░реНрд╖
- рд╕рдВрджрд░реНрдн
рдкрд░рд┐рдЪрдп
рд╕рд╛рдЗрдмрд░тАЛ-рд╕реБрд░рдХреНрд╖рд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд┐рд░рдиреНрддрд░ рдирдпреЗ рддреМрд░-рддрд░реАрдХреЗ рдЕрдкрдирд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдорд▓рд╛рд╡рд░реЛрдВ рдХреА рдЪрддреБрд░ рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдореБрдХрд╛рдмрд▓рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдбреАрдк-рд▓рд░реНрдирд┐рдВрдЧ рдЖрдзрд╛рд░рд┐рдд рдорд╛рд▓рд╡реЗрдпрд░ рдбрд┐рдЯреЗрдХреНрд╢рди рдиреЗ рд╕рд╣реА-рдЧрд▓рдд рдкрд╣рдЪрд╛рди рдХреА рд╕рдЯреАрдХрддрд╛ рддреЛ рдмрдврд╝рд╛рдИ рд╣реИ, рдкрд░ рд╢реЛрдз рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЗрдиреНрд╣реЗрдВ рд╕реВрдХреНрд╖реНрдо рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рджреНрд╡рд╛рд░рд╛ рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред FGAM (Fast Generate Adversarial Malware) рдкрджреНрдзрддрд┐ рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рд╕рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдмрд╛рдЗрдЯ-рд╕реНрддрд░ рдкрд░ рд╣рд▓реНрдХреА-рдлреБрд▓реНрдХреА рдлреЗрд░-рдмрджрд▓ рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдорд╛рд▓рд╡реЗрдпрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬрд╕-рдХреА-рддрд╕ рд░рд╣рддреА рд╣реИ рд▓реЗрдХрд┐рди рдореЙрдбрд▓ рдЙрд╕реЗ тАШрдмреЗрдирд┐╠ЖрдЧтАЩ рдард╣рд░рд╛ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд╢реЛрдз-рдкрддреНрд░ тАЬFGAM: Fast Adversarial Malware Generation Method Based on Gradient SignтАЭ рдХреЛ рд╕рд░рд▓ рд╣рд┐рдиреНрджреА рдореЗрдВ рд╕рдордЭреЗрдВрдЧреЗ, рд╕рд╛рде рд╣реА рдЗрд╕рдХреЗ рдЕрд╕рд░, рдЪреБрдиреМрддрд┐рдпрд╛рдБ рд╡ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рднреА рджреЗрдЦреЗрдВрдЧреЗред
рд╕рд╛рдЗрдмрд░тАЛ-рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рд╣рдорд▓реЛрдВ рдХреА рдкреГрд╖реНрдарднреВрдорд┐
рдбреАрдк-рд▓рд░реНрдирд┐рдВрдЧ рдХреА рдХрдордЬрд╝реЛрд░рд┐рдпрд╛рдБ
рдбреАрдк-рд▓рд░реНрдирд┐рдВрдЧ рдореЙрдбрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕реЗ рд▓реЗрдХрд░ рдПрдХреНрдЬрд╝рд┐рдХреНрдпреВрдЯреЗрдмрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рддрдХ, рддрд░рд╣-рддрд░рд╣ рдХреЗ рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рдкреИрдЯрд░реНрди рд╕реАрдЦ рдХрд░ рдорд╛рд▓рд╡реЗрдпрд░ рдкрд╣рдЪрд╛рдирддреЗ рд╣реИрдВред рдкрд░рдВрддреБ рдЗрдореЗрдЬ-рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд┐рдХреЗрд╢рди рдХреА рд╣реА рддрд░рд╣ рдЗрди рдореЙрдбрд▓реЛрдВ рдХреЛ рднреА рд╕реВрдХреНрд╖реНрдо рдмрджрд▓рд╛рд╡реЛрдВ рд╕реЗ рдореВрд░реНрдЦ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рд▓рд╡реЗрдпрд░ рдореЗрдВ рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдЙрджрд╛рд╣рд░рдг
рдЗрдореЗрдЬ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдорд╛рд▓рд╡реЗрдпрд░ рдореЗрдВ рджреЛрд╣рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ:
- рдЪреМрдХрд╕реА рд╕реЗ рдмрдЪрд╛рд╡ (Evasion): рдмрджрд▓рд╛ рд╣реБрдЖ рд╕реИрдВрдкрд▓ рдбрд┐рдЯреЗрдХреНрд╢рди рдореЙрдбрд▓ рдХреЛ рдзреЛрдЦрд╛ рджреЗред
- рдХрд╛рд░реНрдп-рд╕реБрд░рдХреНрд╖рд╛ (Functionality): рдЕрд╕рд▓реА рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдХрд╛рдо рдЕрдм рднреА рдЪрд▓рддрд╛ рд░рд╣реЗред
FGAM рдЗрди рджреЛрдиреЛрдВ рдХреЛ рд╕рд╛рде-рд╕рд╛рде рд╕рд╛рдзрддрд╛ рд╣реИ: рдмрд╛рдЗрдЯ-рд╕реНрддрд░ рдХреЗ рдЫреЛрдЯреЗ-рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рд╕реЗ рдбрд┐рдЯреЗрдХреНрдЯрд░ рдлреЗрд▓, рдкрд░ рдорд╛рд▓рд╡реЗрдпрд░ рдЪрд╛рд▓реВред
рдкреНрд░рдореБрдЦ рдЪреБрдиреМрддрд┐рдпрд╛рдБ
- рд╕реАрдорд┐рдд рдмрджрд▓рд╛рд╡ рдмрдЬрдЯ: рдЬрд╝реНрдпрд╛рджрд╛ рдлреЗрд░-рдмрджрд▓ рдлрд╝рд╛рдЗрд▓ рддреЛрдбрд╝ рд╕рдХрддреА рд╣реИред
- рджрдХреНрд╖рддрд╛: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ рддреЗрдЬрд╝реА рдЬрд╝рд░реВрд░реАред
- рдЬрдирд░рд▓рд╛рдЗрдЬрд╝реЗрд╢рди: рдПрдХ рд╣реА рдЯреНрд░рд┐рдХ рдХрдИ рдореЙрдбрд▓реЛрдВ рдкрд░ рдЪрд▓реЗред
FGAM рдЗрди рдЪреБрдиреМрддрд┐рдпреЛрдВ рдХреЛ рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рд╕рд╛рдЗрди-рдЖрдзрд╛рд░рд┐рдд рддреНрд╡рд░рд┐рдд рдЗрдЯрд░рд╢рди рд╕реЗ рд╣рд▓реНрдХрд╛-рдлреБрд▓реНрдХрд╛ рдордЧрд░ рдЕрд╕рд░рджрд╛рд░ рдмрджрд▓рд╛рд╡ рдХрд░рдХреЗ рд╕реБрд▓рдЭрд╛рддрд╛ рд╣реИред
FGAM: рдореБрдЦреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдБ рд╡ рдХрд╛рд░реНрдп-рдкреНрд░рдгрд╛рд▓реА
FGAM, FGSM (Fast Gradient Sign Method) рдЬреИрд╕реА рдХреНрд▓рд╛рд╕рд┐рдХ рддрдХрдиреАрдХреЛрдВ рдХреЛ рдорд╛рд▓рд╡реЗрдпрд░ рдбреЛрдореЗрди рдореЗрдВ рдврд╛рд▓рддрд╛ рд╣реИред
рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рд╕рд╛рдЗрди-рдЖрдзрд╛рд░рд┐рдд рдЗрдЯрд░рд╢рди
рдкрд╣рд▓реЗ, рдЗрдирдкреБрдЯ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд▓реЙрд╕ рдХрд╛ рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдЕрдкрдбреЗрдЯ рдирд┐рдпрдо:
тАГрд╕рдВрд╢реЛрдзрд┐рдд рдмрд╛рдЗрдЯ = рдореВрд▓ рдмрд╛рдЗрдЯ + ╬╡ ├Ч sign(тИЗL(x))
рдЬрд╣рд╛рдБ
╬╡ = рд╕реНрдЯреЗрдк рд╕рд╛рдЗрдЬ,
L(x) = рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░ рдХрд╛ рд▓реЙрд╕ред
рдЫреЛрдЯреЗ-рдЫреЛрдЯреЗ рдмрдврд╝рд╛рд╡ рд╕реЗ рдлреАрдЪрд░-рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ тАШрдмреЗрдирд┐╠ЖрдЧтАЩ рджрд┐рд╢рд╛ рдореЗрдВ рдЦрд┐рд╕рдХрддрд╛ рд╣реИ, рдкрд░ рдХрд╛рдордХрд╛рдЬ рдирд╣реАрдВ рдмрд┐рдЧрдбрд╝рддрд╛ред
рдорд╛рд▓рд╡реЗрдпрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдВрд░рдХреНрд╖рдг
FGAM рджреЛ рд╡рд┐рдкрд░реАрдд рд▓рдХреНрд╖реНрдпреЛрдВ рдХрд╛ рд╕рдВрддреБрд▓рди рд░рдЦрддрд╛ рд╣реИ:
- рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рд╕рдлрд▓рддрд╛ тАУ рдореЙрдбрд▓ рдХреЛ рдореВрд░реНрдЦ рдмрдирд╛рдирд╛ред
- рдСрдкрд░реЗрд╢рдирд▓ рдЕрдЦрдВрдбрддрд╛ тАУ рдорд╛рд▓рд╡реЗрдпрд░ рдпрдерд╛рд╡рдд рдЪрд▓реЗред
рдЗрд╕рдХреЗ рд▓рд┐рдпреЗ рдпрд╣ рд╕рд┐рд░реНрдлрд╝ рдЧреИрд░-рдЬрд░реВрд░реА рд╕реЗрдХреНрд╢рди (рдЬреИрд╕реЗ рдкреИрдбрд┐рдВрдЧ, рдбреЗрдЯрд╛ рд╕реЗрдХреНрд╢рди) рдореЗрдВ рд╣реА рдмрд╛рдЗрдЯ рдмрджрд▓рддрд╛ рд╣реИред
рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯреЗрд╢рди рд╡рд┐рд╡рд░рдг
рдПрд▓реНрдЧреЛрд░рд┐рджреНрдо рд╡реЙрдХ-рдереНрд░реВ
- рдЗрдирдкреБрдЯ рддреИрдпрд╛рд░реА: рдорд╛рд▓рд╡реЗрдпрд░ рдмрд╛рдЗрдирд░реА рдХреЛ рдЙрдкрдпреБрдХреНрдд рдлрд╝реЙрд░реНрдо рдореЗрдВ (рдмрд╛рдЗрдЯ рдРрд░реЗ/рдЯреЗрдиреНрд╕рд░) рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рдЧрдгрдирд╛: рд╕рд░реЛрдЧреЗрдЯ рдореЙрдбрд▓ рд╕реЗ рд▓реЙрд╕ рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рд╣рд╛рд╕рд┐рд▓ред
- рдЗрдЯрд░рдЯрд┐рд╡ рдЕрдкрдбреЗрдЯ: рд╣рд░ рд░рд╛рдЙрдВрдб ╬╡ рд╕реЗ рдмрд╛рдЗрдЯ рдмрджрд▓реЗ, рдлрд┐рд░ рдореЙрдбрд▓ рдЪреЗрдХ; рд╕рдлрд▓ рд╣реЛрддреЗ рд╣реА рд░реБрдХреЗрдВред
- рдЗрдВрдЯреАрдЧреНрд░рд┐рдЯреА рдЬрд╛рдБрдЪ: PE-рд╣реЗрдбрд░, рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд░рди рдЖрджрд┐ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкрдХреНрдХреА рдХрд░реЗрдВред
- рдЖрдЙрдЯрдкреБрдЯ: рдЕрдиреНрддрд┐рдо рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдирдореВрдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЛрдб: рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдорд╛рд▓рд╡реЗрдпрд░ рдмрдирд╛рдирд╛
рдиреАрдЪреЗ рдкрд╛рдпрдерди (PyTorch) рдХрд╛ рд╕рд░рд▓реАрдХреГрдд рдХреЛрдб рд╣реИред рдЕрд╕рд▓реА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдВрдЯреАрдЧреНрд░рд┐рдЯреА рдЪреЗрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИрдВред
import torch
import torch.nn as nn
# рдбреЗрдореЛ рдХреНрд▓рд╛рд╕рд┐рдлрд╝рд╛рдпрд░
class MalwareClassifier(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(1024, 2) # рдорд╛рди рд▓реЗрдВ рдЗрдирдкреБрдЯ рд╕рд╛рдЗрдЬрд╝ 1024
def forward(self, x):
return self.fc(x)
def load_malware(path):
"""рдорд╛рд▓рд╡реЗрдпрд░ рдмрд╛рдЗрдирд░реА рдкрдврд╝рдХрд░ рдЯреЗрдиреНрд╕рд░ рдмрдирд╛рдирд╛ (рд╕рд░рд▓реАрдХреГрдд)"""
with open(path, "rb") as f:
data = f.read()
tensor = torch.tensor([b for b in data[:1024]], dtype=torch.float32)
return tensor.unsqueeze(0)
def save_malware(tensor, path):
"""рдЯреЗрдиреНрд╕рд░ рдХреЛ рджреБрдмрд╛рд░рд╛ рдмрд╛рдЗрдирд░реА рдореЗрдВ рд▓рд┐рдЦрдирд╛ (рд╕рд░рд▓реАрдХреГрдд)"""
byte_arr = bytearray(tensor.squeeze(0).int().tolist())
with open(path, "wb") as f:
f.write(byte_arr)
def fgsm_attack(model, data, target, eps):
"""FGSM-рд╢реИрд▓реА рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрдд рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рд╣рдорд▓рд╛ рд╡рд┐рдзрд┐"""
model.eval()
adv = data.clone().detach().requires_grad_(True)
criterion = nn.CrossEntropyLoss()
for i in range(100):
model.zero_grad()
out = model(adv)
loss = criterion(out, target)
loss.backward()
# рд╕рд╛рдЗрди рджрд┐рд╢рд╛ рдореЗрдВ perturb
adv.data = adv.data + eps * adv.grad.data.sign()
adv.data = torch.clamp(adv.data, 0, 255)
pred = torch.argmax(model(adv), dim=1)
if pred.item() == 0: # 0 = рдмреЗрдирд┐╠ЖрдЧ
print(f"рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рд╕реИрдВрдкрд▓ {i+1} рдЪрдХреНрд░ рдореЗрдВ рддреИрдпрд╛рд░!")
break
adv.grad.data.zero_()
return adv
if __name__ == "__main__":
model = MalwareClassifier()
target = torch.tensor([0]) # рд▓рдХреНрд╖реНрдп: рдмреЗрдирд┐╠ЖрдЧ
orig = load_malware("malware.bin")
eps = 1.0
adv = fgsm_attack(model, orig, target, eps)
save_malware(adv, "adv_malware.bin")
рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╡ рдЙрдкрдпреЛрдЧ-рдкрд░рд┐рджреГрд╢реНрдп
рдкрд░рд┐рджреГрд╢реНрдп 1: рдбрд┐рдЯреЗрдХреНрдЯрд░ рдХреА рдордЬрдмреВрддреА рдЬрд╛рдБрдЪрдирд╛
рдХрд┐рд╕реА рд╕реБрд░рдХреНрд╖рд╛ рдЙрддреНрдкрд╛рдж рдХреА рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдкрд╣рд▓реЗ рдбреЗрд╡рд▓рдкрд░ FGAM рд╕реЗ рдЬрдирд░реЗрдЯреЗрдб рдирдореВрдиреЛрдВ рдкрд░ рдореЙрдбрд▓ рдЪрд▓рд╛ рдХрд░ рдХрдордЬрд╝реЛрд░ рдмрд┐рдВрджреБ рдЦреЛрдЬрддреЗ рд╣реИрдВред
рдкрд░рд┐рджреГрд╢реНрдп 2: рд░реЗрдб-рдЯреАрдо рдЕрднреНрдпрд╛рд╕
рдкреЗрди-рдЯреЗрд╕реНрдЯрд░реНрд╕ FGAM рд╕реЗ рдлреЗрд░-рдмрджрд▓ рдХрд┐рдпреЗ рдорд╛рд▓рд╡реЗрдпрд░ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░ рд╕реБрд░рдХреНрд╖рд╛-рдЯреАрдо рдХреА рддреИрдпрд╛рд░рд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВред
рдкрд░рд┐рджреГрд╢реНрдп 3: рдЕрдХрд╛рджрдорд┐рдХ рд╡ рдФрджреНрдпреЛрдЧрд┐рдХ рд╢реЛрдз
рд╢реЛрдзрдХрд░реНрддрд╛ рдиреНрдпреВрдирддрдо perturbation рдмрдирд╛рдо рдЗрд╡реЗрдЬрд╝рди рд╕рдлрд▓рддрд╛ рдХрд╛ рдЕрдзреНрдпрдпрди FGAM рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ; рдЙрджреНрдпреЛрдЧ рдЗрд╕реЗ рд░реЙрдмрд╕реНрдЯ-рдЯреНрд░реЗрдирд┐рдВрдЧ рд╣реЗрддреБ рдбреЗрдЯрд╛ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИред
рд╕рд╛рдЗрдмрд░тАЛ-рд╕реБрд░рдХреНрд╖рд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рдПрдХреАрдХрд░рдг рд╡ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
Bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ: рд╕реНрдХреИрди
#!/bin/bash
INPUT="adv_malware.bin"
OUTPUT="scan.txt"
echo "рд╕реНрдХреИрди рдЪрд╛рд▓реВ..."
malscan "$INPUT" > "$OUTPUT"
if grep -q "Benign" "$OUTPUT"; then
echo "рдкрд░рд┐рдгрд╛рдо: рдмреЗрдирд┐╠ЖрдЧ"
else
echo "рдкрд░рд┐рдгрд╛рдо: рдорд╛рд▓рд┐рд╢рд╕"
fi
Python рдкрд╛рд░реНрд╕рд░
def parse(path):
with open(path) as f:
for line in f:
if "Benign" in line: return "рдмреЗрдирд┐╠ЖрдЧ"
if "Malicious" in line: return "рдорд╛рд▓рд┐рд╢рд╕"
return "рдЕрдирд┐рд╢реНрдЪрд┐рдд"
print(parse("scan.txt"))
рдПрдХреАрдХрд░рдг рдмрд┐рдВрджреБ
- CI/CD рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ FGAM рдЬреЛрдбрд╝реЗрдВред
- рд╕рднреА рдЗрдЯрд░рд╢рди рдХреЗ рд▓реЙрдЧ рд╡ рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рд╕рд╣реЗрдЬреЗрдВред
- Cuckoo Sandbox рдЬреИрд╕реА рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдЯреЗрд╕реНрдЯ рдХрд░реЗрдВред
рдЕрдиреНрдп рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдорд╛рд▓рд╡реЗрдпрд░ рдореЗрдердб рд╕реЗ рддреБрд▓рдирд╛
рдкрд╛рд░рдореНрдкрд░рд┐рдХ рддрд░реАрдХреЗ
- рд░реИрдВрдбрдо рдмрд╛рдЗрдЯ рдЗрдВрдЬреЗрдХреНрд╢рди
- рдЬреЗрдиреЗрдЯрд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рджреНрдо
- GAN-рдЖрдзрд╛рд░рд┐рдд рдЬреЗрдирд░реЗрд╢рди
FGAM рдХреЗ рд▓рд╛рдн
- рддреЗрдЬрд╝: рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рд╕рд╛рдЗрди рд╕реЗ рд╢реАрдШреНрд░ рдХрдиреНрд╡рд░реНрдЬрдиреНрд╕ред
- рдкреНрд░рднрд╛рд╡реА: рд╕реАрдзрд╛ рд▓реЙрд╕-рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ рдирд┐рд╢рд╛рдирд╛ред
- рдХрдо perturbation: рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣рддреА рд╣реИред
рд╕реАрдорд╛рдПрдБ
- рд╕рд░реЛрдЧреЗрдЯ рдореЙрдбрд▓ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛
- рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЦрд░реНрдЪ
- рдбрд┐рдлреЗрдВрд╕рд┐рд╡ рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓-рдЯреНрд░реЗрдирд┐рдВрдЧ рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛
рдЙрдиреНрдирдд рд╡рд┐рд╖рдп рд╡ рднрд╛рд╡реА рджрд┐рд╢рд╛рдПрдБ
- рд░реАрдЗрдирдлрд╝реЛрд░реНрд╕рдореЗрдВрдЯ рд▓рд░реНрдирд┐рдВрдЧ рд╕рдВрдЧ FGAM
- рд╣рд╛рдЗрдмреНрд░рд┐рдб GA + FGAM рдореЙрдбрд▓
- рдПрдирд╕реЗрдВрдмрд▓-рдЯрд╛рд░реНрдЧреЗрдЯ рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдирдореВрдиреЗ
- рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдЯреНрд░реЗрдирд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд░рдХреНрд╖рд╛
- рд░реАрдпрд▓-рдЯрд╛рдЗрдо рдЬрдирд░реЗрд╢рди рд╣реЗрддреБ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рддреНрд╡рд░рдг
рдирд┐рд╖реНрдХрд░реНрд╖
FGAM рдЧреНрд░реЗрдбрд┐рдпреЗрдВрдЯ-рдЖрдзрд╛рд░рд┐рдд рддреНрд╡рд░рд┐рдд рдкрджреНрдзрддрд┐ рд╕реЗ рдмреЗрд╣рдж рдХрдо рдмрджрд▓рд╛рд╡ рдХрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдорд╛рд▓рд╡реЗрдпрд░ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЧрд╣рд░реЗ рд▓рд░реНрдирд┐рдВрдЧ-рдбрд┐рдЯреЗрдХреНрдЯрд░реЛрдВ рдХреА рдХрдордЬреЛрд░рд┐рдпрд╛рдБ рдЙрдЬрд╛рдЧрд░ рд╣реЛрддреА рд╣реИрдВред рд╕реБрд░рдХреНрд╖рд╛ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдХреЛ FGAM рдХреЛ рд╕рдордЭрдирд╛ рдФрд░ рдЗрд╕рд╕реЗ рдмрдЪрд╛рд╡ рдХреА рд░рдгрдиреАрддрд┐ рдмрдирд╛рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИред рдпрджреНрдпрдкрд┐ рд╕рд░реЛрдЧреЗрдЯ-рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЗрдЯрд░рдЯрд┐рд╡ рд▓рд╛рдЧрдд рдЗрд╕рдХреА рдЪреБрдиреМрддрд┐рдпрд╛рдБ рд╣реИрдВ, FGAM рдиреЗ рд╕рд╛рдмрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдбрд┐рдЯреЗрдХреНрдЯрд░реЛрдВ рдХреЗ рд▓рд┐рдпреЗ рдПрдбрд╡рд░реНрд╕рд░рд┐рдпрд▓ рдордЬрдмреВрддреА рдмрдврд╝рд╛рдирд╛ рд╕рдордп рдХреА рдорд╛рдВрдЧ рд╣реИред
рд╕рдВрджрд░реНрдн
- FGAM: Fast Adversarial Malware Generation Method Based on Gradient Sign (arXiv:2305.12770)
- Fast Gradient Sign Method тАУ Goodfellow et al.
- USENIX Security тАЩ21 тАУ Adversarial Examples in ML
- ClamAV тАУ рдореБрдХреНрдд рд╕реНрд░реЛрдд рдПрдВрдЯреА-рд╡рд╛рдпрд░рд╕
- Cuckoo Sandbox тАУ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдорд╛рд▓рд╡реЗрдпрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг
- PyTorch рдкреНрд░рд▓реЗрдЦрди
рдЗрд╕ рд╡рд┐рд╕реНрддреГрдд рд╣рд┐рдиреНрджреА рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдЖрдк FGAM рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рд╕рдордЭ рдЧрдпреЗ рд╣реЛрдВрдЧреЗред рдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ, рд╕реБрд░рдХреНрд╖рд┐рдд рд░рд╣реЗрдВ, рдФрд░ рдорд╢реАрди-рд▓рд░реНрдирд┐рдВрдЧ рд╡ рд╕рд╛рдЗрдмрд░тАЛ-рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдЗрд╕ рд░реЛрдЪрдХ рд╕рдВрдЧрдо рдХрд╛ рдЕрдиреНрд╡реЗрд╖рдг рдЬрд╛рд░реА рд░рдЦреЗрдВ!
рдЕрдкрдиреЗ рд╕рд╛рдЗрдмрд░ рд╕реБрд░рдХреНрд╖рд╛ рдХрд░рд┐рдпрд░ рдХреЛ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рдПрдВ
рдпрджрд┐ рдЖрдкрдХреЛ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдореВрд▓реНрдпрд╡рд╛рди рд▓рдЧреА, рддреЛ рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рд╡реНрдпрд╛рдкрдХ 47-рд╕рдкреНрддрд╛рд╣ рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред 1,200+ рд╕реЗ рдЕрдзрд┐рдХ рдЫрд╛рддреНрд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдпреВрдирд┐рдЯ 8200 рддрдХрдиреАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХрд░рд┐рдпрд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред
