> Executables should be blocked in order to minimize the attack surface > but most of the droppers are embedded in office documents or pdf files. > They rely of features of these file formats that are quite rarely > used in legit documents: process execution, filesystem access, > internet access, embedded ole objects.
> in documents with active content that performs the operations I described > earlier, the active part is removed and a harmless document is delivered > (pdf without javascript, for example). Do you know an open-source command-line tool for Unix/Linux (besides SpamAssassin and ClamAV - they eat too much RAM for my small VPS) able to detect javascript in a .pdf file? Or may be `grep` is enough? What I use in Exim: P7ZIP = /usr/local/bin/7z # port archivers/p7zip in case of FreeBSD GREP = /usr/bin/grep SHELL = /bin/sh BINFORBIDDEN = Windows-executable attachments forbidden WINBIN = exe|com|js|pif|scr|bat|jse|cpl|vbe|vbs|ace # more cautious: exe|com|js|pif|scr|bat|flv|reg|btm|chm|cmd|cpl|dat|dll|hta|jse|jsp|lnk|msi|prf|sys|vb|vbe|vbs|ace # Perhaps "jar" should be added. # WinRAR can uncompress .ace, so trojans are sometimes compressed .ace COMPREXT = zip|rar|7z|arj|bz2|gz|uue|xz|z check_rfc2047_length = false acl_smtp_mime = acl_check_mime begin acl acl_check_mime: deny message = BINFORBIDDEN log_message = forbidden attachment: filename=$mime_filename, \ content-type=$mime_content_type, recipients=$recipients condition = ${if or{\ {match{$mime_content_type}\ {(?i)executable|application/x-ace-compressed}}\ {match{$mime_filename}{\N(?i)\.(WINBIN)(\.(COMPREXT))*$\N}}\ }} deny message = Compressed BINFORBIDDEN condition = ${if or{\ {match{$mime_content_type}{(?i)application/\ (octet-stream|x(-zip)?-compressed|zip)}}\ {match{$mime_filename}{\N(?i)\.(COMPREXT)$\N}}\ }} condition = ${if <{$message_size}{1500K}} decode = default log_message = forbidden binary in attachment: filename=$mime_filename, \ recipients=$recipients condition = ${if match{${run{P7ZIP l -y $mime_decoded_filename}}}\ {\N(?i)\n[12].+\.(COMPREXT|WINBIN)\n\N}} deny message = Windows-executable inside an Office file attachment condition = ${if or{\ {match{$mime_content_type}{(?i)openxmlformats-officedocument}}\ {match{$mime_filename}{\N(?i)\.(doc|xls|ppt)(x|m)$\N}}\ }} decode = default log_message = forbidden binary in Office file attachment: \ filename=$mime_filename, recipients=$recipients set acl_m_ud = ${sg{$mime_decoded_filename}{[^/]+\$}{}} condition = ${run{SHELL -c \ "cd $acl_m_ud; \ P7ZIP x -y $mime_decoded_filename; \ GREP -r -a -s -E \ 'rundll32|This program cannot be run in DOS mode|\ This program must be run under|Embedded Object|\ WScript\\.Sh|Shell\\.Application|Location: file:' \ $acl_m_ud" >/dev/null}{1}{0}} accept _______________________________________________ mailop mailing list mailop@mailop.org https://chilli.nosignal.org/cgi-bin/mailman/listinfo/mailop