Some of the researchers publish at least parts of their naming conventions. Mandiant's dull but sensible APT-n is pretty obvious: "APT" for "Advanced Persistent Threat" and they just increment n when they think they might have a new group on their hands. MITRE's scheme is similar, except they just use a "G" for "group" and a four-digit identifier.
The two-word names that end with a mammal such as "Fancy Bear" and "Deep Panda" use a scheme that I think Alperovich came up with, where the animal type identifies the presumed nation hosting the group (Bear for Russia and so on). Other names are assigned based on observed habits of the group; "Sandworm" (aka "Voodoo Bear", etc) was so-named by Hultquist in part because identifiers in their code had a lot of references to Dune.
I have no idea how Microsoft came up with names like "Strontium" (excuse me, "STRONTIUM", because SHOUTING MAKES THINGS BETTER).
The two-word or portmanteau nonsense-phrase names like "Pawn Storm" are reminiscent of the naming convention the NSA and some other US Federal organizations like to use (e.g. "ETERNALBLUE"). Those might just be randomly-chosen word pairs, but they might be the result of Cantor-depairing a single integer representing some sort of serial number or other code. (Cantor pairing is a bijection – in fact the only such bijection – between any one integer and a pair of integers.) The idea here is you have an integer, you compute its corresponding Cantor pair, then you use the first value to index (mod size) an array of adjectives, and the second to index an array of nouns. I wrote a quick implementation of this on a lark some time back, with small word lists of a few dozen adjectives and nouns each.
So let's just use that for a naming scheme, using the MITRE G-number. Fancy Bear is now "Short Advertisement". Remix Kitten is "Local Dream". Gothic Panda is "Big Nest". I expect everyone to use these names in the future; I will supply them at the reasonable cost of $10/query.