One simple way to do this is to cache the body as a property of a class.
You could extend the CCSprite class with a class called Box2DSprite. In Box2DSprite, you include a property for the b2Body * you used to create the physics for your sprite. You can also store a reference to the world if you think you may need it.
@interface Box2DSprite : CCSprite {
b2Body * body;
b2World * world;
} // end ivars
@property (readwrite) b2Body * body;
@property (readwrite) b2World * world;
Also remember to rename your .m file to a .mm file
Edit
In your game loop, to obtain the Box2DSprite you simply need to cast it back to a Box2DSprite.
for (b2Body * b = world->GetBodyList(); b != NULL; b = b->GetNext()) {
Box2DSprite * sprite = (__bridge Box2DSprite*) b->GetUserData();
b2Body * spriteBody = sprite.body;
// Do stuff with body here
}
You just need to ensure that whenever you create a sprite with a physics body, you are creating a Box2DSprite.
Hope this helps