Step 1
3D Tornado
Firstly, a straight vertical is created with the CVs placed every 2 grid lines using snap to grids, which totaled up to 8 CVs.

Step 2
3D Tornado
Then, I created a NURBS circle with some of the attributes in Input channel modified.

Translate X: -0.5
Rotate X: 90
Radius: 0.04
Sweep: 90
Sections: 3

Step 3
3D Tornado
Extrude is applied to the NURBS circle and Curve. After that, I selected the Surface and have these attributes modified.

Extrude Type: Distance
Fixed Path: on
Use Component Pivot: on
Use Profile Normal: off
Rotation: 5000
Scale: 6

Step 4
3D Tornado
To give realistic rotating look to the tornado, I selected its surface, and changed the Rotate Y attributed in Expression Editor.

tornado.rotateY = frame * 4

Step 5
3D Tornado
To add some dynamics, I switched to Dynamics Mode. The tornado surface is selected and Particle is created using Emit from Object (Emitter Type: Surface).

Rate: 1000
Speed: 0

Step 6
3D Tornado
To improve the particle and have it stay on the surface, I changed some of the particle attributes.

Lifespan Mode: Random Range
Lifespan Random: 0.25
Lifespan: 0.8
Particle Render Type: Cloud (s/w)
Radius: 0.1
Threshold: 0.661

Step 7
3D Tornado
To make it more interesting, I added a NURBS Cylinder and modified it using the same method.

Lifespan Mode: Random Range
Lifespan Random: 3
Lifespan: 0.8
Particle Render Type: Cloud (s/w)
Radius: 0.05

Result
3D Tornado
The Result.