|
Posted by db on 09/30/05 23:05
"Billy Joe" <see.id.line@invalid.org> wrote in message
news:FYGdndgvcO8PNaDeRVn-gg@adelphia.com...
Bloody hell, here it goes... :)
> db wrote:
>
> <snip>
>
>>> I'm a little handicapped in analyzing the results, as the free
>>> version of Kerio will not write the log to disk. But I can visually
>>> scan across the thousands of log entries and draw some conclusions.
>>
>> If it has the capability of logging out to syslog that could be very
>> useful for tinkering.
>>
>
> Not a freebie feature.
> Unfortunately, the for-a-fee version offers NADA beside the log to disk
> that one could possibly want:-(
I always thought you were a die-hard 2.1.5 person, Billy? :p
>>> a) Virtually all the priority 1) blocks would have been trapped by 2)
>>>
>>> b) The vast majority of priority 2) blocks are using ports well above
>>> 20000, which carries an implication of its own regarding those IPs.
>
>>
>> Yeah, the block-by-source-port seemed very effective when I was using
>> it here, but, I moved away from that after a while as I'm not
>> comfortable with the collateral damage of it (>32768 = blocked). Very
>> good method of taking care of the dynamics, though, IMO.
>>
>> Note: Will only work for one of the systems the fakers appear to be
>> operating (I see 2 in general).
>>
>
> When you've the time to elaborate, I'm ready to read;-0)
> If you already have, and I've missed it, sorry - a ref would help.
Not too sure what you'd like info on there. Giz a shout and I'll see what I
can do answer.
>>> So, what I'm suggesting, since updating the proscribed list is not
>>> automatic, quite unreliable, and possibly inaccurate is that the
>>> second filter be used, if not exclusively, at least as a backup to
>>> the first.
>
>>
>> Maybe the WS2_32.DLL could be a better solution? :P
>>
>
> It would be wonderful, but so far merely implications of its doing so.
> Any details on how it may be doing it? It is certainly a small piece of
> code !!
(now bare in mind I'm not a programmer here!)...
As I understand it it's a Winsock wrapper like;
WinMX <-> WS2_32.DLL (fix) <-> WS2_32.DLL (system)
I think all the DLL does is tap into some of the 'exports' functions of the
actual Windows system WS2_32.DLL in order to work them. The exports are the
following afaik;
111 1A 00001740 WSAGetLastError
1 51 0000868D accept
2 52 00003ECE bind
3 53 00001A6D closesocket
4 54 00003E5D connect
94 55 00003A2C freeaddrinfo
95 56 000033DF getaddrinfo
51 57 0000D755 gethostbyaddr
52 58 00002BBF gethostbyname
57 59 000032CA gethostname
96 5A 0000C076 getnameinfo
5 5B 0000F628 getpeername
53 5C 0000D24E getprotobyname
54 5D 0000D1A2 getprotobynumber
55 5E 0000D969 getservbyname
56 5F 0000D850 getservbyport
6 60 0000157E getsockname
7 61 00004122 getsockopt
8 62 000012A7 htonl
9 63 00001746 htons
11 64 000012F8 inet_addr
12 65 0000401C inet_ntoa
10 66 0000155A ioctlsocket
13 67 00005DE2 listen
14 68 000012A7 ntohl
15 69 00001746 ntohs
16 6A 00005690 recv
17 6B 00001444 recvfrom
18 6C 00001890 select
19 6D 00001AF4 send
20 6E 00001ED3 sendto
21 6F 00003F8D setsockopt
22 70 00008629 shutdown
23 71 00003C22 socket
I think the DLL basically passes most of those straight through without any
manipulation at all on to the actual real Windows WS2_32.DLL, though some
are tapped into, like 'closesocket', 'recv', 'recvfrom', 'send', 'sendfrom',
or whatever, that handles the information we need to manipulate. Afaik once
you have these tapped then it's not too much work to allow or deny traffic
based on the IP being passed through the DLL. The WS2_32.DLL fix online
automatically downloads a blocklist of addresses from
http://www.winmxgroup.com/block_list.txt each time WinMX is started and so
the DLL checks IP addresses that run through it against those in the
downloaded list and simply allows/denies accordingly.
The other function of the DLL I'm aware of is to modify outbound calls from
WinMX for the original 'winmx.com' cache servers to 'winmxgroup.com'
instead, similar to how the hosts file mod works though not directly
translating a domain name to IP, just modifying the domain name as it passes
through the DLL. You can see the domain names listed in plaintext in the
DLL easily enough (as with the exports, btw);
cache9.winmxgroup.com,
cache8.winmxgroup.com,
cache7.winmxgroup.com,
cache6.winmxgroup.com,
etc.
I think that's how it works anyhow... :s
(abysmal explanation there, I know, but hopefully it's basically correct!)
>> I think your list is quite inaccurate as it contains IP addresses
>> that I haven't seen operating of late. I try to keep my own lists as
>> small and accurate as possible now for manageability. I'll leave the
>> various dynamic entries listed for about a week then run through the
>> logs to see which are no longer active (one of the most difficult
>> things for me is discovering when addresses go inactive, as opposed
>> to active).
>
> The list shown is exclusively garnered from posts here - so, it serves my
> point that the average user will NEVER have an accurate list, no?
But they would if they ran the DLL fix, and the list on their site was
accurate (which is my reasoning for pushing it (and the list looks good so
far)), then it'd take all the hard work out. It should require zero
maintenance by the enduser.
>>> This is clearly something that can not be done, at the moment, by PG
>>> & its ilk. And, I'd feel relatively safe with only priority 2) in
>>> place, which would probably also make Kerio happier. If the revised
>>> DLL has this ability, it would seem not only simpler but fairly
>>> reliable.
>
>> Aye, I had a good talk with a dev of PW once about this, though, as
>> you rightly say, PW/PG simply do not have that ability (I don't think
>> it's a particulary good way to block anyway, personally).
>
>> Dunno about the DLL potentially doing that. How about a DLL that has
>> the capability to detect, log & block automatically based on a local
>> 'database' of sorts that counts how often a particular IP has
>> attempted connection during a period of time?
>
>> Just a thought (one
>> striking difference between legitimate & hostile addresses is the
>> massive difference in the number of connection attempts seen by
>> them). Anyway, I don't really wanna talk about this as I'm in no
>> position to create such a thing so it's useless dwelling over it.
>>
>
>
> Now we're back to our philosophical differences;-0)
>
> I believe that the primaries need an add-on that will block OUTBOUND bad
> behavior. With such, IP addresses become moot. When last we exchanged on
> this point, MX seemed on the verge of (OK, on the same mesa as) 4.0. So
> there would have been little value in expending effort on such a program.
> Add to that, the incredible short-fall from 100% of the primaries ever
> doing anything - including becoming aware of the issues.
Block outbound behaviour? Why, and how (realistically)? :P
BTW: note that the closure of the caches and subsequent (is that the right
word?) user requirement for a fix to get online has provided a significant
opportunity to address the issue of getting the users to actually do
something (whereas before, I agree, and ALWAYS HAVE, that it was as good as
futile to try to achieve this (some 'intelligent' people out there still
seem to think they can get everyone to run PG/PW, though...)).
> Now MX is in stasis. So an effort to do something along these lines seems
> more feasible, hoping that there is a way to then achieve primary
> penetration with a solution.
>
> What I know I can do programmatically (therefor anyone can):
> Find the MX client and intercept its Windows message traffic.
>
> What I don't know, until trying it, is:
> Can I see the search reply's secondary ID? If so, then log the number of
> replies per second per secondary (better still, per search, if that can be
> done).
If I understand you correctly you'd still have some fakes returned (though a
lot less), although it'd do nothing to cure DOS type problems seen, and
possibly other happenings (I see things that don't seem related to typical
'faker' type clients).
Anyhow, afaik, you can indeed identify the file server's IP in the search
packets returned (note 'fserv ip' in below);
Search result (primary) id: 0x177A
Packet format:
[Search ID:4][primary ip:4][primary udp:2][Puzzle:5][File path:N]...
....[00:1][hash:20][Size:4][connec:2][options:*][fserv ip:4][username:N]...
....[00:1][queue status:N][00:1]
> If the above can be done, then:
>
> Simple action a) prevent subsequent replies for n time periods from
> abusive secondaries.
All it'd do is filter them from showing locally though?
> More complicated action b) disconnect the secondary
Now you've lost me (not difficult)? Are you still talking about outbound
here, if so, I've lost the plot totally at this point. :p
>>> For those using firewall software that can block by allocated port,
>>> setting up the port filter is certainly easy, not time consuming,
>>> and far less typo prone. It would not obviate the use of PG or
>>> whatever other toys one wants to have running.
>>
>> Or just run the DLL. ;)
>>
>
> You keep saying this, but WTF does it do??? Any details?
Hope the above helped (if even accurate).
>>> Are any valid MXer's being kept from connecting to me via either of
>>> these filters? Sure! However, I am maxed out on primary & secondary
>>> connections. And, those who find themselves unable to connect,
>>> usually shut down (out of frustration) and restart, thus dropping
>>> their OS allocated TCP port value back to 1024. The bad guys NEVER
>>> shut down. Because, they're unattended and if they did, then they'd
>>> also free up a whole lot of secondary slots for the rest of us.
>
>>
>> Well I stopped using that method when I saw legitimate users trying
>> to grab a file or two from me but repeatedly time out due to the
>> source port rule. I don't like that.
>>
>
> On the one hand, folks say: any solution, no matter how imperfect, is
> better than none.
Long path to learning IMO. ;)
> On the other hand you're saying: if at all imperfect, abandon it in favor
> of allowing some incursion.
>
> OK! Whatever ;-0)
>
> BJ
In the infamous words of Don M, long, long ago: "I need to go lie down for a
while".
[Back to original message]
|