skip to content

An SMBv1 session fails against every host you try - does that prove the feature is removed?

level: seniorimportance: should knowfreq 42%

answer

  1. a decline is not an absence
  2. identical from the client side
  3. the negotiation reruns every connection
  4. ask what is installed, not what happened
  5. the hosts you reached are not the estate

basics

~10 s

No. A refused negotiation shows the dialect was declined by the hosts you reached, at that moment. Disabled and removed look identical from the client side, so the failure cannot tell them apart.

solid answer

~40 s

A failed negotiation proves an offer was declined - nothing more. It says the hosts you actually reached were not serving that dialect at that moment; it says nothing about whether the component is installed, nothing about the hosts you did not reach, and nothing about tomorrow, because the dialect is re-agreed per connection and the configuration behind it is writable. To settle the claim 'SMBv1 is gone from our estate' you need two different things: which hosts still have the optional feature installed, and which consumer is forcing every exception you find. Both are questions about what is present, not about what a connection did. The claim you can honestly defend from a set of failed connections is much smaller: 'these hosts declined it when asked'.

code

text · 12 lines
text
Client -> Server   SMB_COM_NEGOTIATE (0x72)
    Dialects offered: "NT LM 0.12"        <- SMB1 only

Host A   feature installed, service start type = disabled
    Server: no SMB1 response, session fails
    ... one configuration write to the start type and the same offer succeeds

Host B   optional feature uninstalled, responder absent
    Server: no SMB1 response, session fails
    ... the same configuration write changes nothing; software has to be installed

(from the client the two outcomes are indistinguishable)

go deeper

for a junior

Know that a connection failing tells you the other end declined right now, and that declining is not the same as being unable to.

for a middle

Explain why a disabled feature and an uninstalled one look identical to a client, and what you would ask the host instead to tell them apart.

for a senior

Show that you bound the claim by the population you reached and by time, and that you go looking for the consumer behind every exception rather than reporting a count.

for a principal

Own the wording of the assurance itself: a programme that reports 'protocol retired' on the strength of connection attempts has committed to something it cannot defend later.

## What a refused negotiation actually asserts SMB, like most of the protocols this question comes up about, begins with a negotiation: the client offers the dialects it is willing to speak, the server picks one or refuses. If the server does not serve SMBv1, the offer is declined and the session never forms. The direction of that claim matters and candidates routinely get it backwards. A failed negotiation proves **an offer was declined**. It does not prove: - that the component is absent - a disabled feature declines exactly the same way; - that the host will decline the next offer - the negotiation is re-run per connection against configuration that is writable; - anything at all about hosts you did not reach, including everything behind a device that answered for something else, everything powered off, and everything you never had a route to. ## Disabled and removed are indistinguishable from the outside This is the crux. From the client's position, a host with SMBv1 installed-but-disabled and a host with SMBv1 uninstalled behave the same: no response to the dialect, no session. The difference between them is entirely a fact about what is present on the host, and there is no way to read that fact off a refused connection. So any claim that rests on connection attempts is a claim about **current configuration of the hosts you reached**, and it decays. A single write on one host, one policy scope change, one vendor engineer restoring a scanner, and the same attempts start succeeding again with nothing in the estate having been installed. ## What would settle it Two separate questions, and they are both about presence rather than behaviour: 1. **Is the optional feature installed on this host?** Answered per host from the host's own installed-feature state. This is the question that distinguishes disabled from removed, and it is the only one that does. 2. **Which consumer requires the exception?** Wherever the answer to (1) is 'installed', there is usually a reason, and the reason is a device or an application. Naming it converts a vague 'some hosts still have it' into a specific, ownable item - and it is the question that tells you whether removal is even achievable. A third, weaker check is worth mentioning because it comes up: watching which dialect two ends actually agree on tells you what is being used today. That is useful for finding the last consumer, but it still cannot prove absence. A capability that is not exercised is not a capability that is gone. ## The scope trap The other half of the failure is population. 'Every host I tried' is not 'the estate'. On a flat site segment full of multifunction scanners, badge controllers and cameras, the hosts most likely to be holding the protocol open are the ones least likely to appear in whatever list you drew your targets from: they are appliances, they are owned by facilities rather than by the platform team, and they are frequently missing from the inventory that a hardening programme is measured against. So a defensible answer states the population explicitly: 'of the 612 hosts in the domain, 611 have the feature uninstalled and one scanner fleet controller has it installed and enabled; here are the appliances I could not enumerate.' ## How to say this in an interview Start by refusing the inference: connection failures show declines, not absence. Then give the reason - disabled and removed are identical from the client side. Then say what settles it: per-host installed-feature state, plus the named consumer behind each exception. Then bound the claim by the population you actually reached. Candidates who do all four are demonstrating exactly the habit this area is testing - knowing the difference between what a result shows and what people want it to mean.

  • You find one host that still negotiates SMBv1. What does that tell you about the other 611?
    Nothing directly. It tells you at least one exception exists and someone owns it. The valuable next question is which consumer required it, because that consumer is very likely the reason the same exception exists elsewhere and it is the thing that has to be retired for removal to be possible.
  • Why does the claim decay over time even if every host declines today?
    Because a disabled dialect is a statement about configuration at a moment, and the negotiation consults that configuration on every new connection. One write, one policy scope change, or one vendor engineer restoring a device flips it back. A removal claim does not decay the same way, because reversing it requires installing software.
  • What is the honest wording for the claim you can defend?
    Something like: 'the feature is uninstalled on the 611 domain-joined hosts we enumerated; one scanner controller has it installed and serving; these fourteen appliances we could not query.' It names the population, distinguishes installed from serving, and does not present a set of failed connections as proof of absence.

saying these in an interview costs you the question

  • Treats a failed connection as proof the component is absent
  • Says the estate is clean based on the hosts that answered
  • Cannot name what distinguishes disabled from removed on a host
  • Ignores appliances because they are not in the domain
  • Assumes a protocol nobody uses today is a protocol that is gone

context