MSN Chat
MSN Chat was the Microsoft Network version of IRCX (Internet Relay Chat extensions by Microsoft), which replaced Microsoft Chat, a set of Exchange-based IRCX servers first available in the Microsoft Comic Chat client, although Comic Chat was not required to connect. According to the MSN Chat website, the following were required to use the MSN Chat Service: History. The Microsoft Network Chat Control was developed as an ActiveX Component Object Model (COM) Object. ActiveX, being a Microsoft technology provided limited compatibility for other products. The other major platforms beside Internet Explorer that MSN Chat was supported on , was Netscape Navigator and MSNTV (formerly known as WebTV). To ensure the MSN Chat network was only being connected to by authorized clients, Microsoft created and implemented a SASL based Security Service Provider authentication package known as GateKeeper. This used a randomized session key to authorize users not using the Microsoft Passport (now Microsoft account) system. Microsoft used another SSP known as GateKeeperPassport, that worked from the same method but required certain attributes related to the user's account. There have been various methods through the use of mIRC to access the MSN Chat Network. Most of the methods were  through the use of the MSN Chat Control itself, yet others were more complicated. In the beginning, shortly after the move from Microsoft Chat, the MSN Chat Network could be directly connected to through any IRC Client to irc.msn.com on port 6667. Perhaps because of abuse or other factors, such as the desire to authenticate users based on their Microsoft Passport, Microsoft implemented GateKeeper and GateKeeperPassport, and integrated both into their chat control. The weakness of GateKeeper and the fact the early MSN Chat Controls (1.0−3.0) had public functions for doing GateKeeper authentication seemed to indicate Microsoft wanted third parties  to be able to access their network as before, but they wanted to be able to control automated abuse. In any event, these public functions allowed normal IRC clients to authorize themselves. With the release of the MSN Chat Control 4.0, the public functions were removed. Users found a way to authorize by a "Proxy Method", forcing the Chat Control to bridge connections between mIRC and the Chat Network. With the release of the MSN Chat Control 4.2 and later, they blocked this proxy method by having the chat control hash the IP address of the server to which it  was instructed to connect into the response to the challenge in authentication. If the control was instructed to connect to any address other than the server, it would not match the server's hash and thus authentication would fail. A few later third party clients could authenticate without the control and were adjusted to compensate for this change. Versions. The versions of MSN Chat were designed from IRC3 through to IRC8, Even with the newer versions, MSN Chat still had the possibility to replicate older MSN Chat versions by issuing the IRCVERS command. It is believed that IRC referred to  the original IRC Daemon, and IRC2 referred to IRCX. Third-party applications. The use of third-party applications on the MSN Chat Network was not prohibited, although it was unsupported. Third-party applications were required to use the same Authentication Methods as the MSN Chat Control. The second change was the major part, allowing the Chat Control to bridge the connections between the Client and MSN Chat Service. The most popular third-party applications were mIRC, IRC Dominator and Viperbot. Scripts were often downloaded from sites such as TechGear007. Authentication. GateKeeper. The GateKeeper (and closely related GateKeeperPassport) authentication mechanisms are  SASL authentication mechanisms as defined in the IRCX Drafts. After the introduction of authentication on MSN Chat, Gatekeeper was the only authentication method that the public could use. During the initial handshake, the client would send a packet only containing the 16 byte header to the server, and the server would reply with a header, coupled with a 128 bit Cryptographic nonce. Finally, the client would create a 128 bit cryptographic hash of the nonce received from the server using a secret key, sending this as a subsequent authentication reply after the header, and immediately before a 16 byte GUID . The cryptographic hash function used was hmac-md5, and the secret key was "SRFMKSJANDRESKKC" (case sensitive). Defeating GateKeeper. Early implementations of the GateKeeper authentication mechanism did not create a barrier to entry, as the authentication API that Microsoft had created was available to other program developers. After some time, Microsoft removed the ability for developers to use/see the API that had been embedded in the MSN Chat Control, and it can be safely assumed from this time that Microsoft wanted access to be from the official chat control only. The GateKeeper authentication made an appearance in the WebTV/MSNTV  client. It was quickly realised that it was also possible to connect by creating a proxy that would load the MSN Chat Control temporarily as required, relaying nonce and hashes between the server and control, before closing the chat control. The difficulty with this method is that it was often slow, didn't work, or could crash applications due to requiring the ActiveX control to be used in Microsoft Internet Explorer, or MSIE based web controls. It is likely possibly that an alternative browser (such as Netscape Navigator, Firefox, etc) could have been used to host the MSN Chat Control , as there was a NPAPI version available from Microsoft. In July 2002, a user named zmic reverse engineered the MSN Chat Control, and produced a python script that was able to login without the use of the MSN Chat Control. The python script was buggy, but was later re-written in multiple programming languages by various authors. The user eXonyte had written some code which could be used (via WINE) on Linux. It's believed that this was the first time MSN Chat had been used outside of Windows. When GateKeeper version 3 was introduced, it was a very minor  change that had added the string of the server name (as defined in the Chat Control parameter "Server") to the hash. The additional string would not include a colon or port if they were present. This appeared to be an effort to defeat the proxy method of accessing the service, but was quickly overcome as users shared the information that the IP had been added to the hash. This information was likely leaked from someone in Microsoft, as there were rumours of the upcoming change before the new GateKeeper version was released. It wasn't until around 2018 that the  user JD noticed that the various keys from zmic's reverse engineering were likely derivatives of another key, and he was able to find the plain text key - before finding the algorithm used. Upon sharing this information with Sky, they quickly discovered the underlying cryptographic hash function was HMAC-MD5. There are still just two bytes that are unknown in the GateKeeper authentication header, however it was tested against the MSN Chat Server many times, and the server didn't appear to differentiate between the values of those two bytes. There's a possibility that the two bytes are random  bytes of memory. NTLM. Like GateKeeper, NTLM and NTLMPassport were implemented as SASL authentication mechanisms as defined in the IRCX protocol. NTLM Authentication was not available to be used by the MSN Chat Control, and the only known client implementation is in the MSN Chat Admin Client, which is a very basic client that was created to be used by MSN Chat staff, based on the publicly available MS Chat version 2.5. NTLM credentials were not available to normal users. It is believed that MSN Chat staff used NTLM to authenticate, and that they authenticated through Microsoft's Active Directory . It is possible that MSN Chat staff were connected directly to Microsoft's network, or connected via a virtual private network (VPN). MSN Chat staff also had the ability to login via the less secure USER/PASS method documented in RFC 1459. This was used heavily with the official chat bots, as it required no knowledge of SASL authentication mechanisms. Passport. GateKeeperPassport and NTLMPassport were extensions to the GateKeeper and NTLM authentication mechanisms. The Passport extensions allowed the user to identify with a '.net Passport' (later known as a Windows Live Passport, now known as a Microsoft Passport). When a  client attempted to register using a passport authentication extension, instead of receiving the usual asterisks to indicate that authentication is successful (as noted in IRCX drafts), they would be presented with a further subsequent authentication command, with only the string 'OK' as a parameter. The user would then send back an authentication command without the header, using two variables known as PassportTicket and PassportProfile (taken from the browser cookies MSPAuth and MSPProf) to identify themselves. Both variables were preceded by a string representation of an 8 digit hex number indicating the length of the variable, and must be presented in  the correct order. When using GateKeeperPassport, the GUID specified after the GateKeeper hash should be a null GUID - Literally codice_1. Example PassportTicket and PassportProfile being sent: codice_2 Whilst it is assumed the same format is used with NTLMPassport, it can not be confirmed as NTLMPassport usage has not been witnessed. Active MSN Chat staff were using NTLM and were considered Guests, although the Guest prefix ">" was not enforced, instead a "'" prefix was used, which is noted to be a Unicode nickname prefix in the IRCX Drafts. User levels. MSN Chat had the following user levels: Staff: Users: Similar services . There are many chat networks attempting to simulate the service that was provided by the Microsoft Network, which use the "MSN Chat Control". These simulation chat networks are often referred to as "MSN Chat Clones". These are generally small chat networks, which often rely on home-made IRC servers, or IRCX servers. Many of the "MSN Chat Clones" are non-compliant and do not follow the RFC 1459 (IRC) or the "eXtensions to Internet Relay Chat" (IRCX) standards and often contain many bugs/exploits that may cause a denial of service with the MSN Chat Control. Many of the MSN  Chat Clones started up directly after MSN closed its services (2006), and additional networks have continued to spring up since then. There is speculation that these chat networks may have pulled potential subscribers away from MSN Chat, ultimately bringing on the demise of MSN Subscription Chat Services. While the majority of MSN Clone Chat sites are free, most of them rely on adverts to provide a small income. In addition, some of the clones have begun to charge, or allow for donations. The legality of sites offering the MSN Chat Control has been in question for some time due to  many "Clone Sites" hosting the Chat Control. The Chat Control download is publicly available by Microsoft to download at . Problems with MSN Chat. There were many documented problems from users about the MSN chat function. Most were directed to the “chat host.” This was a person who would enter the chat room under the name “host”, and act accordingly regulating the room. This service was useful for controlling the room, making sure that everyone was behaving accordingly, answering users’ questions about the rooms, and other assorted tasks. While the idea of a supervisor would put a lot of users at  ease, there were reported disagreements between the two with what was considered appropriate. A claim was that there were a multitude of rules which the host didn’t make clear to the users, so many people were booted out of the room for breaking a rule they weren’t aware of. Any content that was viewed as offensive or sexually explicit was immediately removed and the person who wrote it was expelled from the room. Asking other chatters to press certain keys, displaying any kind of URL, or displaying what location you were from were all offenses punishable by temporary  banishment. The convenience of an automated system for MSN led to problems for its users, problems solvable by a person able to interpret positive and negative content. A significant reason for MSN Chat shutting down was that it provided another opportunity for pedophiles and other sex-offenders to have access to youth through the chat rooms. The MSNBC program, "To Catch a Predator", a show about catching child predators, showed children meeting up with online "friends" which they assumed were being truthful about their identity but, on the show, were revealed to be pedophiles. Closure. In 2001, Microsoft closed access  via IRC clients (including Comic Chat), asking users to exclusively use their browser client instead. In 2003, Microsoft announced that it would close "unregulated" MSN Chat rooms in 28 countries, including "most of Asia" due to problems with spam and concerns about child pornography, with plans to convert to a subscription model for "better accountability." Messenger chat services remained open. MSN Chat became a subscription service for $20/year. On August 31, 2006 Microsoft announced that MSN Chat would no longer be provided. On October 16, 2006 MSN Chat shut down their servers at about 11:30 a.m. EST. The  service closed as allegedly MSN no longer deemed it profitable to run as a subscription service.