Possibility of broadcasting new block to only a fraction of honest nodes? Consider in a block-withholding attack (aka selfish mining attack), attacker after creating a new block decides to broadcast this new block only to a fraction of network, such that eventually only a part of nodes will receive this new block and the rest of network will not receive it. 

In my opinion, it will not be possible, because when attacker sends new block to one or some of host nodes, they eventually broadcast this block to whole of network, meaning that eventually all honest nodes will receive this new block. Am I right? or this attacker is able to prevent a fraction of honest nodes from receiving this new block?
This will generally not work, because as you said, if an honest node receives the block, it will propagate it to all of its peers, who will do the same, and so on. 

Even if the attacker controls a large number of nodes on the network, he/she will have to ban every honest node to have a guarantee of them not receiving the block. If that is done, the attack is basically operating on their own fork of the chain.

The fork may very well be valid, and if broadcasted to the rest of the network later on with more work, it will become the canonical chain. Such attacks of withholding and then broadcasting have been used in the past, usually as part of a double spend attack (like on the Bitcoin Gold chain recently).

If you want to prevent broadcast to a subset of honest nodes, but still broadcast to some honest nodes, you would likely have to use techniques such as BGP rerouting. In short, an attacker reroutes BGP such that two different real world networks cannot communicate. This results in all nodes in each network failing to talk to all nodes in the other one, regardless of if they are honest or not. This will then result in a chain split, since each section of the network will continue functioning as if it is the only version of the network.