So, the USB power spec is a little weird.
Officially, all unnegotiated power devices must operate in low power mode (5v 150mA) unless they talk to the host controller. Unofficially, depending on which docs you read and from some experimentation I've done, most devices can usually do 5v 500mA right off the power rail before the host controller will complain and shut it off.
Now, to get a voltage other than 5v to run your 12v fan, you either need a block that is quickcharge2 compliant, which is a Qualcomm standard of 5v, 9v or 12v for class A; or USB Power Delivery, which allows voltages of 5v, 9v, 15v, and 20v.
The issue with both of these is that they require smart negotiation. A chip in your device has to talk to the host controller and tell it what it can support. So it's not as simple as simply adding a resistor. If you do some googling, there are existing breakout boards for messing with USBPD from companies like Adafruit that could be worth playing with. You'd need a 1-watt resistor of 20ohms to drop your 15v supply down to 12v at 150mA current though.
The better option that you already mentioned would be to use a boost converter to turn 5v into 12v. Per ohm's law P=VxI, 150mA at 12v would need about 360mA at 5v, more like 400-450 after converter inefficiency. Which basic USB can provide (500mA max)