Hi Kevin,

Very well explained. Thank you so much.

In the case of Case #6 I did not see any trace of "UNKNOWN COMMAND" either
in clamd terminal logs or strace.

Here is the terminal logs from clamd in debug mode.
 

$fds_poll_recv: timeout after 600 seconds
$Received POLLIN|POLLHUP on fd 6
$Got new connection, FD 11
$Received POLLIN|POLLHUP on fd 7
$fds_poll_recv: timeout after 5 seconds
$Received POLLIN|POLLHUP on fd 11
$Receveived a file descriptor: 12
$got command FILDES (7, 11), argument:
$RECVTH: FILDES command complete
$THRMGR: queue (single) crossed low threshold -> signaling
$THRMGR: queue (bulk) crossed low threshold -> signaling
$mode -> MODE_WAITREPLY
LibClamAV debug: in cli_magic_scandesc (reclevel: 0/16)
LibClamAV debug: Recognized ASCII text
LibClamAV debug: cache_check: 43146aa1f85ee7fabf908998d8d8c4a0 is negative
$Breaking command loop, mode is no longer MODE_COMMAND
LibClamAV debug: hashtab: Freeing hashset, elements: 0, capacity: 0
LibClamAV debug: in cli_scanscript()
LibClamAV debug: cli_scanscript: saving normalized file to
/var/tmp/clamav-014eb26dadbb9124c9a4f342fc4a3bfc.tmp
$Consumed entire command
LibClamAV debug: cli_magic_scandesc: returning 0  at line 2470
LibClamAV debug: cache_add: 43146aa1f85ee7fabf908998d8d8c4a0 (level 0)
$Number of file descriptors polled: 1 fds
$fds_poll_recv: timeout after 600 seconds
$Closed fd 12
$Finished scanthread
$Scanthread: connection shut down (FD 11)
$THRMGR: queue (single) crossed low threshold -> signaling
$THRMGR: queue (bulk) crossed low threshold -> signaling
$Received POLLIN|POLLHUP on fd 6
$Got new connection, FD 11
$Received POLLIN|POLLHUP on fd 7
$fds_poll_recv: timeout after 5 seconds
$Received POLLIN|POLLHUP on fd 11
$Receveived a file descriptor: 12
$got command FILDES (7, 11), argument:
$RECVTH: FILDES command complete
$mode -> MODE_WAITREPLY
$Breaking command loop, mode is no longer MODE_COMMAND
$Consumed entire command
$Number of file descriptors polled: 1 fds
$fds_poll_recv: timeout after 600 seconds
$THRMGR: queue (single) crossed low threshold -> signaling
$THRMGR: queue (bulk) crossed low threshold -> signaling
LibClamAV debug: in cli_magic_scandesc (reclevel: 0/16)
LibClamAV debug: Recognized ASCII text
LibClamAV debug: Matched signature for file type HTML data at 51
LibClamAV debug: cache_check: 8c8b4137fd8974c6be208a43461e19a6 is positive
LibClamAV debug: cli_magic_scandesc: returning 0  at line 2681 (no post,
no cache)
$Closed fd 12
$Finished scanthread
$Scanthread: connection shut down (FD 11)
$THRMGR: queue (single) crossed low threshold -> signaling
$THRMGR: queue (bulk) crossed low threshold -> signaling
$fds_poll_recv: timeout after 600 seconds



And the temporary file written as. Note: I removed the actual virus
signature with "<EICAR SIGNATURE>"

------------------------------df07680798a9 content-disposition: form-data;
name="attachment"; filename="eicar.com" content-type:
application/octet-stream <EICAR SIGNATURE>
------------------------------df07680798a9-- [r


If clamd doesn't support parsing HTTP Messages then that explains all NOT
WORKING cases, I think. What is your thought about this?


Regards

Manoj Ramakrishnan





On 18/02/15 6:09 AM, "Kevin Lin" <k...@sourcefire.com> wrote:

>There are a number of reasons for the differences in the detection cases.
>
>The first of which is how ClamAV identifies the file type of file being
>scanned. ClamAV determines the file type of a scanned file using the 'ftm'
>signature files. The important signatures follow:
>
>type:offset:magic:rtype:type
>
>0:0:504b0304:ZIP:CL_TYPE_ANY:CL_TYPE_ZIP
>0:0:504b3030504b0304:ZIP:CL_TYPE_ANY:CL_TYPE_ZIP
>1:*:504b0304:ZIP-SFX:CL_TYPE_ANY:CL_TYPE_ZIPSFX
>
>0:0:1f8b:GZip:CL_TYPE_ANY:CL_TYPE_GZ
>
>There ZIP archive file type signatures, two of which look for a specific
>magic at offset 0. However, the last signature uses a '*' offset which
>indicates the magic can be located anywhere within the file. Do note that
>the signature is meant to detect the specific variant of ZIPSFX.
>
>The GZ file, on the other hand, only has one magic that only triggers if
>found at offset 0.
>
>While an argument could be to extend the GZ file type signature file to
>search the entire file, there are a number of important counter arguments:
>
>   1. The GZ file magic is only 2 bytes long, this means that the
>extension
>   over the whole file would result in a large number of false positives
>   2. In theory, by modifying the original GZ file, the file may no longer
>   be a valid GZ file. Thus it's likely that ClamAV would not be able to
>   correctly parse the file.
>
>Argument 2 may also result in the lack of detection as the file may not be
>possible to parse with modifications.
>
>
>As for the reason for the curl POST issue in case #6, can I ask how you
>what response you get back from clamd when you upload the file using curl
>POST?
>
>clamd is designed to handle a specific of commands that are described in
>the clamdoc.pdf that comes with the ClamAV source distribution. From what
>I
>can see, clamd does not natively support parsing HTTP messages. When I
>send
>a file to scan to clamd using curl, clamd fails to understand the message
>and sends back the message:
>
>UNKNOWN COMMAND
>
>-Kevin
>
>On Tue, Feb 17, 2015 at 1:23 PM, Noel Jones <njo...@megan.vbhcs.org>
>wrote:
>
>> On 2/17/2015 12:11 AM, Manoj Ramakrishnan wrote:
>> > Hi Al,
>> >
>> > Thanks for replying.
>> > It is exactly what I thought. But why is it different from ZIP file?
>> > I added extra characters in the beginning of the ZIP file but no
>>issues
>> in
>> > scanning that and finding eicar signature.
>>
>> zip and gzip are very different formats.  I suppose you added your
>> random character at a point where unzip ignored it.
>>
>>
>> >
>> > Also curious to see why is it not working in case #4 and #6?
>>
>> Either broke the eicar file with leading or trailing characters, or
>> maybe the squid plugin didn't recognize the file as a gzip.  Use the
>> clam debug tools to examine the files extracted and scanned.
>>
>> The eicar signature is *very* specific, anchored at both the
>> beginning and end allowing only for a few extra spaces at the end of
>> the payload, no other extra characters.
>> _______________________________________________
>> Help us build a comprehensive ClamAV guide:
>> https://github.com/vrtadmin/clamav-faq
>>
>> http://www.clamav.net/contact.html#ml
>>
>_______________________________________________
>Help us build a comprehensive ClamAV guide:
>https://github.com/vrtadmin/clamav-faq
>
>http://www.clamav.net/contact.html#ml

_______________________________________________
Help us build a comprehensive ClamAV guide:
https://github.com/vrtadmin/clamav-faq

http://www.clamav.net/contact.html#ml

Reply via email to